Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: DDS
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
cerg19
Здравствуйте. Встала задача сформировать синус на выходе стороннего ЦАП при помощи ПЛИС Spartan 3. Частота синуса 1 МГц. Для формирования сразу же было выбрано ядро DDS. Всё было замечательно, пока я не стал моделировать проект в ModelSim в режиме Post-Route(с учётом распиновки ПЛИС, задержек внутри кристалла и т.д.). Проблема заключается в том, что сигнал на выходе DDS формируется каждый восходящий фронт тактовой частоты, при этом сигнал на параллельной выходной шине с выхода DDS принимает истинное значение с задержкой почти равной одна трети периода. Тактовая частота ПЛИС 50 МГц. Ниже привидён рисунок тактового сигнала и сигнала на выходе DDS в аналоговом представлении

Проблема в том, что данные у меня в ЦАП защёлкиваются по заднему фронту, в некоторых местах защёлкиваются непрвильно
Может кто нибудь сталкивался с этим, как можно уменьшить задержку сигнала на выходе? Заранее спасибо за ответ
ivanoffer
Если правильно понял, то показано изменение данных на пинах ПЛИС. Неплохо бы посмотреть и сам такт на выходе (а может это он есть?).
При формировании шины данных из Spartan3 приходится несколько шаминить, хотя другие это называют "научным подходом к решению проблемы".
И связано это с обрезанностью по сравнению с Virtex, в даном случае с отсутствием выходных триггеров (OFD). Что можно предложить - поставьте
несколько (может быть будет достаточно и одной) линии задержки данных от выхода DDS до OBUF и наложите ограничение относительно выходного
такта. Как правило, этого достаточно для обеспечения временных соотношений данных и такта. Да, иногда можно добавить инвертор в цепочку такта,
тоже помогает "вытянуть" пару необходимых ns. Но в любом случае необходимо моделирование.
RobFPGA
Приветствую!

А ка у вас тактируется ЦАП и FPGA?

В простейшем случае инвертируйте входного clk внутри fpga,
в правильном случае используйте DCM и двигайте фазу внутреннего clk относительно входного чтобы компенсировать задержку.
Есть еще несколько вариантов но в любом случае надо знать что и как тактируется.

Удачи! Rob.

disel
Прочитайте wp237.
cerg19
Цитата
Неплохо бы посмотреть и сам такт на выходе (а может это он есть?).

на рисунке тактовый сигнал с ножки ЦАП

Цитата
А ка у вас тактируется ЦАП и FPGA?

Тактирование ПЛИС и ЦАП происходит от одного и тогоже генератора, но работу DDS я организовал от тактового сигнала с выхода ЦАП, который используется для синхронизвции передачи данных от ПЛИС в ЦАП.

Цитата
в правильном случае используйте DCM и двигайте фазу внутреннего clk относительно входного чтобы компенсировать задержку.

идея, попробую
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.