Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как ClkIn с обычного пина передать на GBUF
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Костян
Есть обычный порт ввода/вывода. На него поступает сигнал тактирования ClkIn. Как его передать на GBUF внутри плис так, чтобы фаза тактового сигнала на порте совпадала с фазой GBUF ?
DCM есть в наличии.
Boris_TS
Цитата(Костян @ Oct 28 2011, 16:25) *
Есть обычный порт ввода/вывода. На него поступает сигнал тактирования ClkIn. Как его передать на GBUF внутри плис так, чтобы фаза тактового сигнала на порте совпадала с фазой GBUF ?
DCM есть в наличии.

Т.к. телепаты после летних отпусков сразу впали в зимнюю спячку, то прийдётся задать ряд вопросов:
1. И главное: какая ПЛИС используется ?
2. С какой точностью необходимо обеспечить совпадение фронтов ?
3. Какая частота сигнала ?
4. Сколько и каких линий данных привязано к этому тактовому сигналу ?
5. На какой частоте передаются данные (т.е. есть там DDR/QDR и пр. заморочи) ?
6. Какая среда используется ?
Kirill_Good
Цитата(Костян @ Oct 28 2011, 16:25) *
Есть обычный порт ввода/вывода. На него поступает сигнал тактирования ClkIn. Как его передать на GBUF внутри плис так, чтобы фаза тактового сигнала на порте совпадала с фазой GBUF ?
DCM есть в наличии.


А зачем выравнивать фазу на входе, и после gbuf? От него и DCM в центре плис идет ветвления на тактирование элементов же.
Костян
QUOTE (Boris_TS @ Oct 28 2011, 14:41) *
Т.к. телепаты после летних отпусков сразу впали в зимнюю спячку, то прийдётся задать ряд вопросов:
1. И главное: какая ПЛИС используется ?

Ну дело не совсем в типе ПЛИС , а в идеи подключения.
Использую Virtex4..6

QUOTE
2. С какой точностью необходимо обеспечить совпадение фронтов ?

до градуса.

QUOTE
3. Какая частота сигнала ?

50Мгц

QUOTE
4. Сколько и каких линий данных привязано к этому тактовому сигналу ?

1

QUOTE
5. На какой частоте передаются данные (т.е. есть там DDR/QDR и пр. заморочи) ?

SDR и DDR

QUOTE
6. Какая среда используется ?

ISE.


Еще раз опишу проблему более раскрыто.
Допустим есть АЦП, которая гонит поток данных и сигнал синхронизации.
Сигнал синхронизации заходит в ПЛИС на обычный пин I/O (не GCLK). Внутри ПЛИС он расспространяется по линиям до GBUF и затем до DCM. C выхода DCM сигнал clk0 тактирует входные триггеры(стоят в лапах), которые принимают поток данных от АЦП.

Учитывает ли ISE задержку распространения от порта I/O до GBUF тактового сигнала ? Либо эту задержку нужно вручную смотреть и корректировать фазу в DCM?
VladimirB
Цитата(Костян @ Oct 31 2011, 19:09) *
Ну дело не совсем в типе ПЛИС , а в идеи подключения.
Использую Virtex4..6
...
Учитывает ли ISE задержку распространения от порта I/O до GBUF тактового сигнала ? Либо эту задержку нужно вручную смотреть и корректировать фазу в DCM?

Конечно не учитывает, иначе зачем тогда нужны клоковые ноги.
DCM выравнивает фазу выходного клокового дерева относительно своего входа.

Но если вы используете V4-6, то там во всех банках полно пинов типа "Clock Capable" (CC, SRСС и MRCC) и вполне логично тактовые сигналы от всяких АЦП заводить на них - даже лучше будет работать для высокочастотных клоков т.к. Clock Skew будет меньше и драгоценные DCM не тратятся. Схема тактирования конечно отличается, но почитайте Clocking Resources User Guide и всё получится.
Костян
QUOTE (VladimirB @ Oct 31 2011, 16:24) *
Но если вы используете V4-6, то там во всех банках полно пинов типа "Clock Capable" (CC, SRСС и MRCC) и вполне логично тактовые сигналы от всяких АЦП заводить на них

Насколько я помню. Эти пины обеспечивают только Low Capacitance и Low inductance.
Вопрос остается открытым, как рассчитать задержку от входного пина до GBUF и , что более важно, сделать ее постоянной от сборки к сборке проекта ?
Boris_TS
Цитата(Костян @ Nov 1 2011, 17:02) *
Насколько я помню. Эти пины обеспечивают только Low Capacitance и Low inductance.
Вопрос остается открытым, как рассчитать задержку от входного пина до GBUF и , что более важно, сделать ее постоянной от сборки к сборке проекта ?
Боюсь, вы не уловили ситу... тогда, попробую донести мыль, поэтапно.

Цитата(Костян @ Nov 1 2011, 17:02) *
Насколько я помню. Эти пины обеспечивают только Low Capacitance и Low inductance.
Нет, Вы помните совсем не правильно, сейчас (т.е. в V-4, V-5 и тем более V-6) всё по другому...
Clock Capable ноги имеют короткий dedicated routing resource, позволяющий доставить тактовый сигнал в разные полезные места с малой предопределённой задержкой и микроскопическим разбросом этой задержки.
Например, для V-5 этими "полезными местами" являются BUFIO и BUFR, предназначенные для тактирования IOB и близлежащих Clock Region соответственно.
Более того, задержки в этих трассах практически такие же, как и в соседних трассах у обычных IOB, что позволяет более точно компенсировать эти задержки. Скажу больше, в больших V-6 при тактировании IOB от BUFG уже практически невозможно принять 300 МГц DDR сигнал. В тоже время, при использовании BUFIO + BUFG можно принять 500 МГц DDR сигнал.

Цитата(Костян @ Nov 1 2011, 17:02) *
Вопрос остается открытым, как рассчитать задержку от входного пина до GBUF и , что более важно, сделать ее постоянной от сборки к сборке проекта ?
А так делать вообще неправильно, для ПЛИС такой способ тактирования - противоестественный.
При таком подходе вылезают следующие проблемы:
1. И главная: любой разводочный ресурс имеет технологический разброс параметров, зависящий от разных факторов: кривизна изготовления самого кристалла; температура выходного каскада, питающего текущий участок соединительной линии; питание ядра, от которого питается эта же пара транзисторов и пр. Следовательно, эти параметры - имеют заведомо неизвестное текущее значение. Среда проектирования может только прикинуть предельные значения этих параметров, и указать, выполнятся ли наложенные ограничения - или нет.
2. Соответственно получаем, статическую составляющую задержки и динамическую. Статическую и медленно изменяющуюся динамическую задержки возможно худо-бедно компенсировать при помощи DLL/PLL. А вот быстро меняющуюся динамическую составляющую - невозможно компенсировать. Следовательно, чем длиннее трасса - тем больше некомпенсируемый разброс, собственно он и определяет предельную частоту стабильной передачи данных.
3. А теперь посмотрим, что же Вы делаете в свете этих соображений:

1) У Вас тактовый сигнал от обычной IO ножки проходит через кучу обычных линий (может быть и длинных линий, но сути дела это не меняет), соответственно, сигнал, пришедший на вход BUFG имеет некоторые заметно большие и задержку и разброс задержки, чем тот, который пришел бы от специальной ноги, через специальные связи. Да, эти связи имеют низкие ёмкость/индуктивность/сопротивление и мощный driver.
2) Т.к. все Virtex - относительно большие ПЛИС, то и задержка распространения clock по глобальному дереву тактирования - тоже большая. Поэтому, чем больше кристалл, тем больше разбежка фронтов между различными элементами ПЛИС. При использовании компенсации, компенсируется время задержки только в одной точке прихода сигнала... в остальных - как повезёт: статическая составляющая почти полностью подавлена, динамическая приобретает первостепенную роль.
3) задержки и, в особенности, разбросы описанные в предыдущих пунктах складываются... и может стать очень даже тоскливо !

С другой стороны, если Вам необходимо ввести всего лишь 100 МГц сигнал, то даже в жирных V-6, еще есть шанс с этим справиться при таком противоестественном подходе. Для этого необходимо:
1) правильно задать constraint OFFSET IN, что позволит среде проанализировать работоспособность проекта и сообщить об этом после разводки.
2) подобрать задержку в IDELAY элементах, что даст возможность скомпенсировать смещение окна setup/hold.

Также, для любителей острых ощущений, есть возможность локального тактирования, без использования BUFR и BUFG. Т.к. Вы говорили о последовательном сигнале - если не получится через BUFG, то так может случиться, что локальное тактирование будет наилучшим выходом. Однако, закладывать оба этих решения в серийное устройство я бы не рискнул.

Цитата(Костян @ Oct 31 2011, 18:09) *
Учитывает ли ISE задержку распространения от порта I/O до GBUF тактового сигнала ?
Да, ISE учитывает и эту задержку, и, что гораздо более важно, предельный разброс этой задержки. Хотя, за древние версии, вроде 9.2 и 10.1 – не поручусь. Использовать 11.5 для V-6 крайне чревато... поэтому, в настоящее время, для V-5/V-6 остаются только 12.2 - 13.3 (а вот эти среды анализируют эти параметры).

Цитата(Костян @ Oct 31 2011, 18:09) *
Либо эту задержку нужно вручную смотреть и корректировать фазу в DCM?
Из-за различного рода зависимостей этой задержки от кучи параметров, Вам прийдётся проводить большую серию измерений, на большом количестве кристаллов из разных партий... А зачем всё это проделывать, если всю эту нудную кропотливую работу сделал Xilinx и результаты измерений внёс в среду разработки ?
VladimirB
Цитата(Boris_TS @ Nov 1 2011, 22:28) *
Боюсь, вы не уловили ситу... тогда, попробую донести мыль, поэтапно....

+500
Примерно это же я и хотел сказать, только набивать лень было, думал человек сам прочитает в UserGuide.
bb-offtopic.gif
Вот к вопросу о том нужно ли знать архитектуру ПЛИС.
А то как обычно: есть программисты умеющие запускать Matlab DSP Builder, нажимать там кнопки и наизусть знающие стандарт VHDL-2008, и есть схемотехники и проектировщики печатных плат, читающие только книги по трассировке и умеющие на миллиметровке "развести" многослойку.
И только когда первые получают большой лог с кучей ошибок от ISE, а вторые получают по мягкому месту от первых - тогда только все начинают читать UG, даташиты и книги про устройство ПЛИС.
SFx
еще хочу заметить, (в Virtex 5, точно) что не на все ножки которые "Clock Capable" можно заводить Single-Ended Clock (не дифференциальный). В случае, если Clock односигнальный, его нужно заводить на "_P" вход, (ни в коем случае не на "_N" ) потому, что к связке BUFIO + BUFG можно его только присоединить только сигнал с положительного входа *СС*_P.


иначе только на BUFG с констрейном NET "_CLK_" CLOCK_DEDICATED_ROUTE = FALSE; и наедятся, что на серии ничего не поплывет....
yuri_d
Цитата(Костян @ Oct 31 2011, 19:09) *
Цитата
2. С какой точностью необходимо обеспечить совпадение фронтов ?

до градуса.

Цитата
3. Какая частота сигнала ?

50Мгц

1e12/50e6/360=55.(5)пс
Вы действительно надеетесь совместить фронты с такой точностью? А что будете делать с джиттером синтезатора ПЛИС?
Victor
Небольшое дополнение по Virtex 5 - будьте внимательны! Не во всех банках есть Bufr, в "центральных" нет.
По поводу учета задержки тоже небольшое имхо - при наличии OFFSET IN - её будет учитывать любой ISE, но DCM/PLL по умолчанию корректирует так, как если бы тактовая была подключена к "клоковому" входу. Остальное надо допиливать вручную (задавая фазу DCM). Ну и действительно, для АЦП - лучшего решения, чем bufr/bufio - не придумали )

P.S. BorisTS, respect!
P.P.S. Думаю автору не нужна точность до градуса wink.gif (если мои телепатические возможности не подводят, и 50МГц DDR с АЦП - это правда sm.gif )
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.