ADA007 0 6 ноября, 2014 Опубликовано 6 ноября, 2014 · Жалоба Доброго всем времени суток. Столкнулся с задачей выдачи дифференциального тактового импульса на внешнюю микруху. Вроде бы ниечго такого, а как это сделать правильно? ПЛИС использую 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-й день ищу.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 5 6 ноября, 2014 Опубликовано 6 ноября, 2014 · Жалоба Доброго всем времени суток. Столкнулся с задачей выдачи дифференциального тактового импульса на внешнюю микруху. ..выводите lVDS сигнал через OBUFDS, в свойствах выставьте LVDS_25 , банк питайте от 3.3. з.ы. Только плохо это очень - делать в ПЛИС клоки для DDS синтезаторов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ADA007 0 6 ноября, 2014 Опубликовано 6 ноября, 2014 · Жалоба ..выводите 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 нет ничего подходящего. И как быть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 5 6 ноября, 2014 Опубликовано 6 ноября, 2014 · Жалоба При этом в UCF = NET "RCLK_P_50_OUTP" LOC = B15 | IOSTANDARD = LVCMOS33 | SLEW = FAST; NET "RCLK_N_50_OUTP" LOC = A15 | IOSTANDARD = LVCMOS33 | SLEW = FAST; ..вы же lvds выводите, зачем в свойствах ног вы пишете LVCMOS33 ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ADA007 0 6 ноября, 2014 Опубликовано 6 ноября, 2014 · Жалоба ..вы же lvds выводите, зачем в свойствах ног вы пишете LVCMOS33 ? А что нужно написать?...на LVDS_33 он тоже ругается, что не поддреживается! :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 5 6 ноября, 2014 Опубликовано 6 ноября, 2014 · Жалоба А что нужно написать?...на LVDS_33 он тоже ругается, что не поддреживается! :rolleyes: попробуйте - LVDS_25 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ADA007 0 6 ноября, 2014 Опубликовано 6 ноября, 2014 · Жалоба попробуйте - 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 5 6 ноября, 2014 Опубликовано 6 ноября, 2014 · Жалоба ..значит не судьба. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zig 34 6 ноября, 2014 Опубликовано 6 ноября, 2014 · Жалоба Не вижу никакой проблемы. 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, чтобы убрать разность времени прохождения сигнала по связям кристалла. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ADA007 0 6 ноября, 2014 Опубликовано 6 ноября, 2014 · Жалоба Достаточно разместить два триггера (для 0 и 180°) делителя частоты 200 МГц так, чтобы они оказались в IOB, чтобы убрать разность времени прохождения сигнала по связям кристалла. Т.е. правильно будет, если я возьму с DCM CLK0 и CLK180 ...пропущу их через два триггра, тактируя их частотой 200 МГц и запихаю их в IOB? Если для выходных сигналов, кот. выходят из триггеров указать в ucf INST "signal_name" IOB = TRUE; - от это значит, что он будет запихнут в IOB, я правильно понял? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dimidrol 0 6 ноября, 2014 Опубликовано 6 ноября, 2014 · Жалоба Не вижу никакой проблемы. 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В Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bad0512 2 7 ноября, 2014 Опубликовано 7 ноября, 2014 · Жалоба На сколько я помню выходные триггеры в IOB не имеют обратной связи в логику, чтобы можно было сделать на них делитель. Тем не менее все остальное верно, лучше всего использовать ODDR. На один информационный вход подать единицу, на другой ноль и затактировать требуемой частотой, как я понял 50 МГц. На соседнем ODDR ноль и единицу поменять местами. Судя по даташиту на ДДС такое подключение возможно если банк в ПЛИС питается от 3.3В И мои 5 копеек : мудохаться с поворачиванием фазы на 180 градусов на DCM совсем необязательно - в примитивах есть встроенный инвертор клока. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Timmy 1 7 ноября, 2014 Опубликовано 7 ноября, 2014 · Жалоба Создаём на внутренней логике двухбитный счётчик-делитель на 4(выходная частота будет 50МГц), его выход подаём на SDR триггер в IOB, инверсированный выход подаём на SDR триггер во втором IOB и всё. Будет работать от 200МГц по одному фронту без инверсий клока, сдвигов фаз, DDR-ов и обратной связи через IOB. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dimidrol 0 7 ноября, 2014 Опубликовано 7 ноября, 2014 · Жалоба И мои 5 копеек : мудохаться с поворачиванием фазы на 180 градусов на DCM совсем необязательно - в примитивах есть встроенный инвертор клока. Дык я и не предлагаю поворачивать фазу при помощи DCM. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FakeDevice 0 7 ноября, 2014 Опубликовано 7 ноября, 2014 · Жалоба тогда на 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. нужно оставить что-то одно. у вас вообще есть лвдс-ные банки? есть возможность перекинуть туда? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться