Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Соблюсти временные диаграммы на 200 Мгц
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
sysel
Здравствуйте!

Делаю связку EP4CGX22BF14C8 (Cyclone IV) + AD9913 (DDS). Тактирую AD9913 частотой 200 МГц. Питание у AD9913 1.8В, заведу сигналы управления ей на один банк ПЛИС, который тоже буду питать 1.8В.

На ПЛИС будет приходить SYNC_CLK от AD9913 (200МГц, период 5 нс), CMOS 1.8V
От ПЛИС будет идти сигнал IO_UPDATE на AD9913 (setup time(rising edge) 0.5ns, hold time 1 cycle), CMOS 1.8V

В дизайне IO_UPDATE выставляю по фронту (rising_edge) SYNC_CLK.

Как мне соблюсти требования Tsu 0.5ns на входе AD9913?

Пробовал заводить SYNC_CLK на CLK лапу банка, пробовал на обычную. Пробовал включать Fast Register Output на IO_UPDATE, пробовал без этого.
Писал скрипты в TimeQuest (честно говоря, мог и накосячить).

Результат без мультицикла: по Fast-corner – успеваю, по Slow – опаздываю.
Результат с мультициклом: по Fast – бегу вперёд паровоза, по Slow – всё ок.
Со встроенной PLL не пробовал играться.

Возможно, нужно как-то хитро назначить лапы сигналам? Не исключаю вариант, что я намудрил с констрейнами.
Timmy
Цитата(sysel @ May 28 2015, 14:39) *
На ПЛИС будет приходить SYNC_CLK от AD9913 (200МГц, период 5 нс), CMOS 1.8V
От ПЛИС будет идти сигнал IO_UPDATE на AD9913 (setup time(rising edge) 0.5ns, hold time 1 cycle), CMOS 1.8V

Интересно, как следует понимать hold time 1 cycle? По идее, setup+hold должна быть меньше периода, иначе ширина окна для валидных данных получается отрицательной. Возможно, тут имеется ввиду возможность асинхронной установки IO_UPDATE. Если же надо сделать синхронную, то для точной синхронизации потребуется PLL в режиме zero delay buffer и статический сдвиг фазы клока, тактирующего выход IO_UPDATE c FPGA. Но надо знать реальный hold для синхронного режима.
sysel
Цитата(Timmy @ May 30 2015, 06:45) *
Интересно, как следует понимать hold time 1 cycle?

В даташите на AD9913 написано имеено "hold time 1 cycle", нашел пояснения далее по даташиту и в app.note, что они имели ввиду: надо удерживать сигнал io_update два цикла. Если не соблюсти требования по "setup", то получим ассинхронный режим обновления, это тоже допустимо. Но мне хотелось бы получить синхронный, а для этого требуется соблюсти setup time.
Timmy
Цитата(sysel @ May 30 2015, 20:13) *
В даташите на AD9913 написано имеено "hold time 1 cycle", нашел пояснения далее по даташиту и в app.note, что они имели ввиду: надо удерживать сигнал io_update два цикла. Если не соблюсти требования по "setup", то получим ассинхронный режим обновления, это тоже допустимо. Но мне хотелось бы получить синхронный, а для этого требуется соблюсти setup time.

Я понимаю это так, что в даташите указан setup для только восходящего фронта IO_UPDATE, а hold - только для нисходящего фронта. А вторая пара setup/hold не указана, так что полные констрейны по этому даташиту не написать. Даже если hold для восходящего фронта будет 0.5нс, для синхронного режима потребуется PLL, как я выше писал.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.