реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Тактирование внешнего устройства с ПЛИС, OBUFDS на 3.3
ADA007
сообщение Nov 6 2014, 09:50
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 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-й день ищу.... wacko.gif
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Nov 6 2014, 11:08
Сообщение #2


отэц
*****

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
ADA007
сообщение Nov 6 2014, 12:02
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 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 нет ничего подходящего. И как быть?
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Nov 6 2014, 12:50
Сообщение #4


отэц
*****

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
ADA007
сообщение Nov 6 2014, 13:15
Сообщение #5


Местный
***

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



Цитата(Lmx2315 @ Nov 6 2014, 15:50) *
..вы же lvds выводите, зачем в свойствах ног вы пишете LVCMOS33 ?

А что нужно написать?...на LVDS_33 он тоже ругается, что не поддреживается! rolleyes.gif
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Nov 6 2014, 13:29
Сообщение #6


отэц
*****

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



QUOTE (ADA007 @ Nov 6 2014, 16:15) *
А что нужно написать?...на LVDS_33 он тоже ругается, что не поддреживается! rolleyes.gif

попробуйте - LVDS_25


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
ADA007
сообщение Nov 6 2014, 13:32
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Nov 6 2014, 14:11
Сообщение #8


отэц
*****

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



..значит не судьба.


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
Zig
сообщение Nov 6 2014, 19:10
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 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, чтобы убрать разность времени прохождения сигнала по связям кристалла.

Go to the top of the page
 
+Quote Post
ADA007
сообщение Nov 6 2014, 20:26
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 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, я правильно понял?
Go to the top of the page
 
+Quote Post
dm.pogrebnoy
сообщение Nov 6 2014, 22:44
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 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В


--------------------
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Nov 7 2014, 05:10
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(dm.pogrebnoy @ Nov 7 2014, 04:44) *
На сколько я помню выходные триггеры в IOB не имеют обратной связи в логику, чтобы можно было сделать на них делитель. Тем не менее все остальное верно, лучше всего использовать ODDR. На один информационный вход подать единицу, на другой ноль и затактировать требуемой частотой, как я понял 50 МГц. На соседнем ODDR ноль и единицу поменять местами. Судя по даташиту на ДДС такое подключение возможно если банк в ПЛИС питается от 3.3В

И мои 5 копеек : мудохаться с поворачиванием фазы на 180 градусов на DCM совсем необязательно - в примитивах есть встроенный инвертор клока.
Go to the top of the page
 
+Quote Post
Timmy
сообщение Nov 7 2014, 05:33
Сообщение #13


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Создаём на внутренней логике двухбитный счётчик-делитель на 4(выходная частота будет 50МГц), его выход подаём на SDR триггер в IOB, инверсированный выход подаём на SDR триггер во втором IOB и всё. Будет работать от 200МГц по одному фронту без инверсий клока, сдвигов фаз, DDR-ов и обратной связи через IOB.
Go to the top of the page
 
+Quote Post
dm.pogrebnoy
сообщение Nov 7 2014, 08:32
Сообщение #14


Знающий
****

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



Цитата(Bad0512 @ Nov 7 2014, 08:10) *
И мои 5 копеек : мудохаться с поворачиванием фазы на 180 градусов на DCM совсем необязательно - в примитивах есть встроенный инвертор клока.

Дык я и не предлагаю поворачивать фазу при помощи DCM.


--------------------
Go to the top of the page
 
+Quote Post
FakeDevice
сообщение Nov 7 2014, 08:52
Сообщение #15


Частый гость
**

Группа: Свой
Сообщений: 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. нужно оставить что-то одно. у вас вообще есть лвдс-ные банки? есть возможность перекинуть туда?
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 21:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.01495 секунд с 7
ELECTRONIX ©2004-2016