|
Тактирование внешнего устройства с ПЛИС, OBUFDS на 3.3 |
|
|
|
Nov 6 2014, 09:50
|

Местный
  
Группа: Свой
Сообщений: 218
Регистрация: 2-02-09
Из: Харьков
Пользователь №: 44 266

|
Доброго всем времени суток. Столкнулся с задачей выдачи дифференциального тактового импульса на внешнюю микруху. Вроде бы ниечго такого, а как это сделать правильно? ПЛИС использую Virtex4 тактовая 200 МГц тактировать надо AD9854asq частотой 50 МГц двумя развернутыми относительно друг друга на 180 сигналами.... в ДШ написано 3,3 CMOS level. Банк ПЛИС, подключенный к ногам такторования питается от 3.3В. 1) Думал в начале использовать OBUFDS - который преобразовует singl ended в differential - но тут оказался облом, походу 3,3 он не поддерживает! или я что-то упустил? 2) Можно конечно же прям с DCM взять CLK0 и CLK180 и пустить их на ноги ПЛИС, но надо фронты чем-то выровнять в таком случае. Как это правильно сделать? На форуме наткнулся на подобную тему .. но у меня не получилось LVDS_25 запихать в LVCMOS33 ... Кто в курсе, подскажите, как правильно...а то я уже 2-й день ищу....
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 14)
|
Nov 6 2014, 11:08
|

отэц
    
Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684

|
QUOTE (ADA007 @ Nov 6 2014, 12:50)  Доброго всем времени суток. Столкнулся с задачей выдачи дифференциального тактового импульса на внешнюю микруху. ..выводите lVDS сигнал через OBUFDS, в свойствах выставьте LVDS_25 , банк питайте от 3.3. з.ы. Только плохо это очень - делать в ПЛИС клоки для DDS синтезаторов.
--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0 SHA-256
|
|
|
|
|
Nov 6 2014, 12:02
|

Местный
  
Группа: Свой
Сообщений: 218
Регистрация: 2-02-09
Из: Харьков
Пользователь №: 44 266

|
Цитата(Lmx2315 @ Nov 6 2014, 14:08)  ..выводите lVDS сигнал через OBUFDS, в свойствах выставьте LVDS_25 , банк питайте от 3.3. з.ы. Только плохо это очень - делать в ПЛИС клоки для DDS синтезаторов. Да...я понимаю, что плохо..но эт требование заказчика. Написал в коде = Код i_OBUFDS_50 : OBUFDS generic map ( CAPACITANCE => "NORMAL", -- "LOW", "NORMAL", "DONT_CARE" IOSTANDARD => "LVDS_25") -- "DEFAULT" port map ( O => RCLK_P_50_OUTP, -- Diff_p output OB => RCLK_N_50_OUTP, -- Diff_n output I => clk_50_s -- Buffer input ); При этом в UCF = Код NET "RCLK_P_50_OUTP" LOC = B15 | IOSTANDARD = LVCMOS33 | SLEW = FAST; NET "RCLK_N_50_OUTP" LOC = A15 | IOSTANDARD = LVCMOS33 | SLEW = FAST; Получил FAIL в MAP два аналогичных для P и N сигнала = Код ERROR:Pack:2907 - The I/O component "RCLK_N_50_OUTP" has an illegal IOSTANDARD value. The IOBS component is configured to use differential signaling and can not use single-ended IOSTANDARD value LVCMOS33. Two ways to rectify this issue are: 1) Change the IOSTANDARD value to a differential standard. 2) Correct the I/O connectivity by instantiating a single-ended I/O buffer. В Pin Planer-e можно выбрать стандарты только на 2,5 LVDS и др. ... а на 3.3 нет ничего подходящего. И как быть?
|
|
|
|
|
Nov 6 2014, 12:50
|

отэц
    
Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684

|
QUOTE (ADA007 @ Nov 6 2014, 15:02)  При этом в UCF = CODE NET "RCLK_P_50_OUTP" LOC = B15 | IOSTANDARD = LVCMOS33 | SLEW = FAST; NET "RCLK_N_50_OUTP" LOC = A15 | IOSTANDARD = LVCMOS33 | SLEW = FAST; ..вы же lvds выводите, зачем в свойствах ног вы пишете LVCMOS33 ?
--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0 SHA-256
|
|
|
|
|
Nov 6 2014, 13:32
|

Местный
  
Группа: Свой
Сообщений: 218
Регистрация: 2-02-09
Из: Харьков
Пользователь №: 44 266

|
Цитата(Lmx2315 @ Nov 6 2014, 16:29)  попробуйте - LVDS_25 тогда на PAR fail-ится Код ERROR:Place:864 - Incompatible IOB's are locked to the same bank 5 Conflicting IO Standards are: IO Standard 1: Name = LVDS_25, VREF = NR, VCCO = 2.50, TERM = NONE, DIR = OUTPUT, DRIVE_STR = NR List of locked IOB's: RCLK_N_50_OUTP RCLK_P_50_OUTP
IO Standard 2: Name = LVCMOS33, VREF = NR, VCCO = 3.30, TERM = NONE, DIR = OUTPUT, DRIVE_STR = NR List of locked IOB's: MRST_OUTP
|
|
|
|
|
Nov 6 2014, 19:10
|
Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 30-12-04
Пользователь №: 1 761

|
Не вижу никакой проблемы. AD9854 может работать как с Single-Ended Reference Clock так и с Differential Clock Signals. Причём Differential Clock Signals могут быть уровня LVCMOS. Первое решение. Single-Ended. Подайте 50МГц с делителы на ногу REFCLK, а ногу notREFCLK заземлите. Как рекомендовано в datasheet стр.10. Второе решение. Ести решите использовать Differential Clock Signals, то при помощи двух ODDR2 и двух OBUF типа LVCMOS33 выдайте через два вывода такты наружу. Можно даже не использовать ODDR2. Достаточно разместить два триггера (для 0 и 180°) делителя частоты 200 МГц так, чтобы они оказались в IOB, чтобы убрать разность времени прохождения сигнала по связям кристалла.
|
|
|
|
|
Nov 6 2014, 20:26
|

Местный
  
Группа: Свой
Сообщений: 218
Регистрация: 2-02-09
Из: Харьков
Пользователь №: 44 266

|
Цитата(Zig @ Nov 6 2014, 22:10)  Достаточно разместить два триггера (для 0 и 180°) делителя частоты 200 МГц так, чтобы они оказались в IOB, чтобы убрать разность времени прохождения сигнала по связям кристалла. Т.е. правильно будет, если я возьму с DCM CLK0 и CLK180 ...пропущу их через два триггра, тактируя их частотой 200 МГц и запихаю их в IOB? Если для выходных сигналов, кот. выходят из триггеров указать в ucf INST "signal_name" IOB = TRUE; - от это значит, что он будет запихнут в IOB, я правильно понял?
|
|
|
|
|
Nov 6 2014, 22:44
|

Знающий
   
Группа: Свой
Сообщений: 747
Регистрация: 11-04-07
Пользователь №: 26 933

|
Цитата( @ Nov 6 2014, 22:10)  Не вижу никакой проблемы. AD9854 может работать как с Single-Ended Reference Clock так и с Differential Clock Signals. Причём Differential Clock Signals могут быть уровня LVCMOS. Первое решение. Single-Ended. Подайте 50МГц с делителы на ногу REFCLK, а ногу notREFCLK заземлите. Как рекомендовано в datasheet стр.10. Второе решение. Ести решите использовать Differential Clock Signals, то при помощи двух ODDR2 и двух OBUF типа LVCMOS33 выдайте через два вывода такты наружу. Можно даже не использовать ODDR2. Достаточно разместить два триггера (для 0 и 180°) делителя частоты 200 МГц так, чтобы они оказались в IOB, чтобы убрать разность времени прохождения сигнала по связям кристалла. На сколько я помню выходные триггеры в IOB не имеют обратной связи в логику, чтобы можно было сделать на них делитель. Тем не менее все остальное верно, лучше всего использовать ODDR. На один информационный вход подать единицу, на другой ноль и затактировать требуемой частотой, как я понял 50 МГц. На соседнем ODDR ноль и единицу поменять местами. Судя по даташиту на ДДС такое подключение возможно если банк в ПЛИС питается от 3.3В
--------------------
|
|
|
|
|
Nov 7 2014, 08:52
|

Частый гость
 
Группа: Свой
Сообщений: 81
Регистрация: 31-10-14
Из: Воронеж
Пользователь №: 83 452

|
Цитата(ADA007 @ Nov 6 2014, 16:32)  тогда на PAR fail-ится Код ERROR:Place:864 - Incompatible IOB's are locked to the same bank 5 Conflicting IO Standards are: IO Standard 1: Name = LVDS_25, VREF = NR, VCCO = 2.50, TERM = NONE, DIR = OUTPUT, DRIVE_STR = NR List of locked IOB's: RCLK_N_50_OUTP RCLK_P_50_OUTP
IO Standard 2: Name = LVCMOS33, VREF = NR, VCCO = 3.30, TERM = NONE, DIR = OUTPUT, DRIVE_STR = NR List of locked IOB's: MRST_OUTP так и правильно оно фейлится. вы же ведь в одном банке, 5-м, завели и лвдс25, и кмоп33. нужно оставить что-то одно. у вас вообще есть лвдс-ные банки? есть возможность перекинуть туда?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|