Перейти к содержанию
    

Как ClkIn с обычного пина передать на GBUF

Есть обычный порт ввода/вывода. На него поступает сигнал тактирования ClkIn. Как его передать на GBUF внутри плис так, чтобы фаза тактового сигнала на порте совпадала с фазой GBUF ?

DCM есть в наличии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть обычный порт ввода/вывода. На него поступает сигнал тактирования ClkIn. Как его передать на GBUF внутри плис так, чтобы фаза тактового сигнала на порте совпадала с фазой GBUF ?

DCM есть в наличии.

Т.к. телепаты после летних отпусков сразу впали в зимнюю спячку, то прийдётся задать ряд вопросов:

1. И главное: какая ПЛИС используется ?

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть обычный порт ввода/вывода. На него поступает сигнал тактирования ClkIn. Как его передать на GBUF внутри плис так, чтобы фаза тактового сигнала на порте совпадала с фазой GBUF ?

DCM есть в наличии.

 

А зачем выравнивать фазу на входе, и после gbuf? От него и DCM в центре плис идет ветвления на тактирование элементов же.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Т.к. телепаты после летних отпусков сразу впали в зимнюю спячку, то прийдётся задать ряд вопросов:

1. И главное: какая ПЛИС используется ?

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

Использую Virtex4..6

 

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

до градуса.

 

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

50Мгц

 

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

1

 

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

SDR и DDR

 

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

ISE.

 

 

Еще раз опишу проблему более раскрыто.

Допустим есть АЦП, которая гонит поток данных и сигнал синхронизации.

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

 

Учитывает ли ISE задержку распространения от порта I/O до GBUF тактового сигнала ? Либо эту задержку нужно вручную смотреть и корректировать фазу в DCM?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Использую Virtex4..6

...

Учитывает ли ISE задержку распространения от порта I/O до GBUF тактового сигнала ? Либо эту задержку нужно вручную смотреть и корректировать фазу в DCM?

Конечно не учитывает, иначе зачем тогда нужны клоковые ноги.

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но если вы используете V4-6, то там во всех банках полно пинов типа "Clock Capable" (CC, SRСС и MRCC) и вполне логично тактовые сигналы от всяких АЦП заводить на них

Насколько я помню. Эти пины обеспечивают только Low Capacitance и Low inductance.

Вопрос остается открытым, как рассчитать задержку от входного пина до GBUF и , что более важно, сделать ее постоянной от сборки к сборке проекта ?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Насколько я помню. Эти пины обеспечивают только Low Capacitance и Low inductance.

Вопрос остается открытым, как рассчитать задержку от входного пина до GBUF и , что более важно, сделать ее постоянной от сборки к сборке проекта ?

Боюсь, вы не уловили ситу... тогда, попробую донести мыль, поэтапно.

 

Насколько я помню. Эти пины обеспечивают только 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 сигнал.

 

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

 

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

 

Либо эту задержку нужно вручную смотреть и корректировать фазу в DCM?
Из-за различного рода зависимостей этой задержки от кучи параметров, Вам прийдётся проводить большую серию измерений, на большом количестве кристаллов из разных партий... А зачем всё это проделывать, если всю эту нудную кропотливую работу сделал Xilinx и результаты измерений внёс в среду разработки ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Боюсь, вы не уловили ситу... тогда, попробую донести мыль, поэтапно....

+500

Примерно это же я и хотел сказать, только набивать лень было, думал человек сам прочитает в UserGuide.

:bb-offtopic:

Вот к вопросу о том нужно ли знать архитектуру ПЛИС.

А то как обычно: есть программисты умеющие запускать Matlab DSP Builder, нажимать там кнопки и наизусть знающие стандарт VHDL-2008, и есть схемотехники и проектировщики печатных плат, читающие только книги по трассировке и умеющие на миллиметровке "развести" многослойку.

И только когда первые получают большой лог с кучей ошибок от ISE, а вторые получают по мягкому месту от первых - тогда только все начинают читать UG, даташиты и книги про устройство ПЛИС.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

еще хочу заметить, (в Virtex 5, точно) что не на все ножки которые "Clock Capable" можно заводить Single-Ended Clock (не дифференциальный). В случае, если Clock односигнальный, его нужно заводить на "_P" вход, (ни в коем случае не на "_N" ) потому, что к связке BUFIO + BUFG можно его только присоединить только сигнал с положительного входа *СС*_P.

 

 

иначе только на BUFG с констрейном NET "_CLK_" CLOCK_DEDICATED_ROUTE = FALSE; и наедятся, что на серии ничего не поплывет....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

до градуса.

 

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

50Мгц

1e12/50e6/360=55.(5)пс

Вы действительно надеетесь совместить фронты с такой точностью? А что будете делать с джиттером синтезатора ПЛИС?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Небольшое дополнение по Virtex 5 - будьте внимательны! Не во всех банках есть Bufr, в "центральных" нет.

По поводу учета задержки тоже небольшое имхо - при наличии OFFSET IN - её будет учитывать любой ISE, но DCM/PLL по умолчанию корректирует так, как если бы тактовая была подключена к "клоковому" входу. Остальное надо допиливать вручную (задавая фазу DCM). Ну и действительно, для АЦП - лучшего решения, чем bufr/bufio - не придумали )

 

P.S. BorisTS, respect!

P.P.S. Думаю автору не нужна точность до градуса ;) (если мои телепатические возможности не подводят, и 50МГц DDR с АЦП - это правда :) )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...