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

 
 
 
Reply to this topicStart new topic
> Синхронный ввод данных в ПЛИС
Ethereal
сообщение Jul 22 2009, 13:32
Сообщение #1


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

Группа: Свой
Сообщений: 114
Регистрация: 7-05-08
Из: РФ, Москва
Пользователь №: 37 354



Здравствуйте.
Может ли кто-нибудь подсказать какой-либо конкретный пример констрейнов для входных данных от синхронного источника для стратиксов.
"Source-syncronous <...>" читал, использую данные оттуда, но в связи со слабым знанием технического английского при возникновении иных странностей в работе системы начинают грызть определенные сомнения относительно правильности понимания мной написанного.
То есть, допустим имеется параллельный АЦП на 100 МГц с центрированным тактовым выходом.
Сигналы заводятся на согласующий FIFO внутри ПЛИС.

Я правильно понимаю, что для описания констрейнов на вход необходимо (и достаточно)
1) Указать базовый виртуальный клок на 100 МГц;
2) Указать наследованный клок на 100 МГц с 180 градусным сдвигом и привязать его ко входу сигнала готовности АЦП;
3) Задать th, tsu данных АЦП относительно наследованного клока;
4) Запретить анализ путей из домена АЦП в глобальный домен и обратно;
5) Сделать сигнал готовности данных АЦП глобальным (по совету Design Assistant).

Какие th и tsu нужно указать для такого случая? Я указываю, со скидкой на tco АЦП, трассировку платы и создание примерно наносекундного запаса, th=3.5 и tsu=3.5.


--------------------
SystemVerilog - язык, заточенный Альтерой под свои кристаллы теми же приемами использования примитивов, что и AHDL. ©
Go to the top of the page
 
+Quote Post
murmel1
сообщение Jul 22 2009, 17:07
Сообщение #2


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

Группа: Свой
Сообщений: 166
Регистрация: 2-11-08
Из: Ростов-на-Дону
Пользователь №: 41 331



В общем все верно, только не совсем понял, зачем Вам пункт 2. Что за такой хитрый сигнал готовности АЦП, который еще и глобальным должен быть ?
tsu и th считаете на основе даташита на ваш АЦП, по tco min, tco max. Вот в этой теме я уже писал, как это делается http://electronix.ru/forum/index.php?act=f...&pid=520219
Go to the top of the page
 
+Quote Post
Ethereal
сообщение Jul 24 2009, 07:31
Сообщение #3


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

Группа: Свой
Сообщений: 114
Регистрация: 7-05-08
Из: РФ, Москва
Пользователь №: 37 354



Цитата(murmel1)
зачем Вам пункт 2


По совету из руководства к обконстрейнивании синхронного входа. Виртуальный клок - это launch clock, реальный клок - latch clock.

Цитата(murmel1)
Что за такой хитрый сигнал готовности АЦП

Выходной клок АЦП. Design assistant пишет, что клоки нужно делать глобальными. И даже если не сделать глобальным, то квартус им делает автопромоут. Или для входных клоков синхронного входа глобальность стоит запрещать?

Цитата(murmel1)
tsu и th считаете на основе даташита на ваш АЦП

В описании АЦП есть среднее время задержки вх. клок-данные и вх. клок- вых. клок. Плюс есть skew в виде диапазона (min; typ; max) между выходными данными и выходным клоком. Как я понимаю, это то самое tco и есть?


А если выходной клок АЦП не center-alligned, а edge-alligned? В том же руководстве указано, что в этом случае для высокоскоростного синхронного входа необходимо ставить PLL на входе и двигать сигнал в ПЛИС, чтобы подогнать фронт синхросигнала под центр данных. Как в этом случае считать и задавать констрейны данных? Относительно входного клока или относительно сгенеренного PLL?

Или тогда проще перейти к описанию через делеи относительно исходного виртуального клока?

Сообщение отредактировал Ethereal - Jul 24 2009, 07:53


--------------------
SystemVerilog - язык, заточенный Альтерой под свои кристаллы теми же приемами использования примитивов, что и AHDL. ©
Go to the top of the page
 
+Quote Post
axalay
сообщение Jul 24 2009, 13:32
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 388
Регистрация: 27-02-06
Из: Москва
Пользователь №: 14 759



Цитата(Ethereal @ Jul 22 2009, 17:32) *
Здравствуйте.
Может ли кто-нибудь подсказать какой-либо конкретный пример констрейнов для входных данных от синхронного источника для стратиксов.
"Source-syncronous <...>" читал, использую данные оттуда, но в связи со слабым знанием технического английского при возникновении иных странностей в работе системы начинают грызть определенные сомнения относительно правильности понимания мной написанного.
То есть, допустим имеется параллельный АЦП на 100 МГц с центрированным тактовым выходом.
Сигналы заводятся на согласующий FIFO внутри ПЛИС.

Я правильно понимаю, что для описания констрейнов на вход необходимо (и достаточно)
1) Указать базовый виртуальный клок на 100 МГц;
2) Указать наследованный клок на 100 МГц с 180 градусным сдвигом и привязать его ко входу сигнала готовности АЦП;
3) Задать th, tsu данных АЦП относительно наследованного клока;
4) Запретить анализ путей из домена АЦП в глобальный домен и обратно;
5) Сделать сигнал готовности данных АЦП глобальным (по совету Design Assistant).

Какие th и tsu нужно указать для такого случая? Я указываю, со скидкой на tco АЦП, трассировку платы и создание примерно наносекундного запаса, th=3.5 и tsu=3.5.

Я бы завел клок через BUFG, а входы данных защелкивал бы используя триггеры в IO и с констрейнами не парился бы. При необходимости можно и клок подвигать ПЛЛом. Это не та частота для стратикса, чтобы констрейны писать. Это конечно только мое мнение smile.gif
Go to the top of the page
 
+Quote Post
murmel1
сообщение Jul 24 2009, 19:36
Сообщение #5


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

Группа: Свой
Сообщений: 166
Регистрация: 2-11-08
Из: Ростов-на-Дону
Пользователь №: 41 331



Просто не встречался еще с такими проектами, где и launch clock и latch clock (по вашей терминологии) заводятся на ПЛИС. В констрейнах нужно указывать только те клоки, которые попадут в ПЛИС.

Считать tsu и th надо по tco вашего АЦП. Грубо говоря:
если период тактовой равен T,
tsu должно быть < T - tcomax
th должно быть < tcomin

Align не играет никакой роли, рассчитывается точно также, только исходные данные (tco) меняются. Применять PLL может и не потребоваться. Синтезатор легко крутит задержки на входных регистрах +- ~10 нс (в 90% случаев).

Разберитесь со знаком th. В квартусах th иметт обратный знак от tsu.
То есть отсчитываются они в таких направлениях:
<---------------|---------------->
tsu фронт тактовой th
положительное значение tsu - до фронта, положительное значение th - после фронта

Если хотите в понедельник могу привести рисунки из которых вам уже все станет ясно.

Цитата(axalay @ Jul 24 2009, 17:32) *
Я бы завел клок через BUFG, а входы данных защелкивал бы используя триггеры в IO и с констрейнами не парился бы. При необходимости можно и клок подвигать ПЛЛом. Это не та частота для стратикса, чтобы констрейны писать. Это конечно только мое мнение smile.gif

Ошибаетесь. Величина частоты здесь не играет роли, можно и на низких частотах попасть впросак. Нужно посчитать и установить констрейны. При ручном переборе можно выбрать положение "на грани", когда схема "кажется" работает, но при нагреве/изменении напряжении питания начнет сбоить.
Да и сборка "толстого" проекта (а для стратикса он таким и будет) слишком много времени занимает.

Можно определить правильность захвата данных в регистре с помощью 2-лучевого осциллографа. Но эта методика на целую статью тянет.

Сообщение отредактировал murmel1 - Jul 24 2009, 19:43
Go to the top of the page
 
+Quote Post
axalay
сообщение Jul 25 2009, 08:52
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 388
Регистрация: 27-02-06
Из: Москва
Пользователь №: 14 759



Цитата(murmel1 @ Jul 24 2009, 23:36) *
Просто не встречался еще с такими проектами, где и launch clock и latch clock (по вашей терминологии) заводятся на ПЛИС. В констрейнах нужно указывать только те клоки, которые попадут в ПЛИС.

Считать tsu и th надо по tco вашего АЦП. Грубо говоря:
если период тактовой равен T,
tsu должно быть < T - tcomax
th должно быть < tcomin

Align не играет никакой роли, рассчитывается точно также, только исходные данные (tco) меняются. Применять PLL может и не потребоваться. Синтезатор легко крутит задержки на входных регистрах +- ~10 нс (в 90% случаев).

Разберитесь со знаком th. В квартусах th иметт обратный знак от tsu.
То есть отсчитываются они в таких направлениях:
<---------------|---------------->
tsu фронт тактовой th
положительное значение tsu - до фронта, положительное значение th - после фронта

Если хотите в понедельник могу привести рисунки из которых вам уже все станет ясно.


Ошибаетесь. Величина частоты здесь не играет роли, можно и на низких частотах попасть впросак. Нужно посчитать и установить констрейны. При ручном переборе можно выбрать положение "на грани", когда схема "кажется" работает, но при нагреве/изменении напряжении питания начнет сбоить.
Да и сборка "толстого" проекта (а для стратикса он таким и будет) слишком много времени занимает.

Можно определить правильность захвата данных в регистре с помощью 2-лучевого осциллографа. Но эта методика на целую статью тянет.

Ясень пень надо клок при необходимости подвинуть чтобы не было на грани. по поводу того что частота не играет роли-это Вы зря. Вот если на 250 и по обоим фронтам-то констрейны нужны. А тут как Вы и сами сказали-2х лучевым осцилом убедиться что не на грани - и все будет пучком, если клок заведен на глобальную линию.
Go to the top of the page
 
+Quote Post
murmel1
сообщение Jul 25 2009, 09:42
Сообщение #7


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

Группа: Свой
Сообщений: 166
Регистрация: 2-11-08
Из: Ростов-на-Дону
Пользователь №: 41 331



Цитата(axalay @ Jul 25 2009, 12:52) *
Ясень пень надо клок при необходимости подвинуть чтобы не было на грани. по поводу того что частота не играет роли-это Вы зря. Вот если на 250 и по обоим фронтам-то констрейны нужны. А тут как Вы и сами сказали-2х лучевым осцилом убедиться что не на грани - и все будет пучком, если клок заведен на глобальную линию.

Если Вам так проще - дело Ваше. Все далее написанное - это не спор с Вами, а совет от чистого сердца.

Однако посчитать и задать констрейны будет и методолигически правильнее (как сказал-то а?) и проще сделать. 1 рассчет = 1 минута, 10 компиляций + 10 проверок = ?.

Однажды проведя 10 компиляций по 20 минут (согласитесь, это еще не так долго, как могло бы быть), я бы вам не советовал действовать так же.

"На грани" я имел в виду в более широком смысле. Например у всех микросхем есть part-to-part skew. А еще времена ползут в зависимости от температуры. +25 и -40 градусов - будет существенная разница. Провести испытания на серии с разными температурами ?
Тут стоить довериться авторам микросхем. Они уже померяли характеристики серий своих изделий в разных режимах.

И самое главное !!! Если констрейны не заданы !!!, то квартус будет считать, что времена не важны !!! И есть вероятность, что при перекомпиляции времена ПОМЕНЯЮТСЯ.
Несколько лет назад сам действовал, как предлагаете Вы, нашел оптимальную фазу PLL, проверил осциллографом и функционально. Более того - залочил всю логику, отвечающую за ввод. Несколько раз перекомпилировал - все было нормально, но после энного раза - перестало работать. Поскольку я не каждый раз проверял именно этот узел осциллографом, начал грешить на другую часть проекта, с которой в тот момент работал. Не сразу понял, где ошибка.
И что же вы думаете ? Оказывается, квартус переставил мою PLL на другое место. И времена tsu, th сместились на 2 нс.

Отсюда либо:
1) Иметь тесты, проверяющие работоспособность всех узлов ввода-вывода и запускать их в каждой новой версии.
2) Посомтреть на наличие красных строк в отчете временного анализатора.
Что проще - подумайте. Я уже подумал.

Проверка осциллографом - последняя стадия... Если проект грамотно сдеалан, проверка только подтверждает правильность работы.

Сообщение отредактировал murmel1 - Jul 25 2009, 09:44
Go to the top of the page
 
+Quote Post
axalay
сообщение Jul 27 2009, 07:21
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 388
Регистрация: 27-02-06
Из: Москва
Пользователь №: 14 759



Цитата(murmel1 @ Jul 25 2009, 13:42) *
Если Вам так проще - дело Ваше. Все далее написанное - это не спор с Вами, а совет от чистого сердца.

Однако посчитать и задать констрейны будет и методолигически правильнее (как сказал-то а?) и проще сделать. 1 рассчет = 1 минута, 10 компиляций + 10 проверок = ?.

Однажды проведя 10 компиляций по 20 минут (согласитесь, это еще не так долго, как могло бы быть), я бы вам не советовал действовать так же.

"На грани" я имел в виду в более широком смысле. Например у всех микросхем есть part-to-part skew. А еще времена ползут в зависимости от температуры. +25 и -40 градусов - будет существенная разница. Провести испытания на серии с разными температурами ?
Тут стоить довериться авторам микросхем. Они уже померяли характеристики серий своих изделий в разных режимах.

И самое главное !!! Если констрейны не заданы !!!, то квартус будет считать, что времена не важны !!! И есть вероятность, что при перекомпиляции времена ПОМЕНЯЮТСЯ.
Несколько лет назад сам действовал, как предлагаете Вы, нашел оптимальную фазу PLL, проверил осциллографом и функционально. Более того - залочил всю логику, отвечающую за ввод. Несколько раз перекомпилировал - все было нормально, но после энного раза - перестало работать. Поскольку я не каждый раз проверял именно этот узел осциллографом, начал грешить на другую часть проекта, с которой в тот момент работал. Не сразу понял, где ошибка.
И что же вы думаете ? Оказывается, квартус переставил мою PLL на другое место. И времена tsu, th сместились на 2 нс.

Отсюда либо:
1) Иметь тесты, проверяющие работоспособность всех узлов ввода-вывода и запускать их в каждой новой версии.
2) Посомтреть на наличие красных строк в отчете временного анализатора.
Что проще - подумайте. Я уже подумал.

Проверка осциллографом - последняя стадия... Если проект грамотно сдеалан, проверка только подтверждает правильность работы.

Сдвиговый регистр работает по следующим соображениям всегда без констрейнов (ну если конечно клок на глобальной линии): время распространения данных всегда больше или равно времени распространиния клока (что куда и откуда писать не буду-и так ясно). Это и без констрейнов.
Ну а по поводу того что выставив фазу клока однажды нормально она из-за температуры или чего то другого уйдет в красную зону (период тактового сигнала 10 нан)-значит ничего не выставлено. Ну а расчитывать то что производитель микрухи поменяет что то там в характеристиках... Да и обычно защелкивается все прекрасно и без сдвига фазы. У каждого свои соображения. Удачи!
Go to the top of the page
 
+Quote Post
Ethereal
сообщение Jul 28 2009, 22:42
Сообщение #9


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

Группа: Свой
Сообщений: 114
Регистрация: 7-05-08
Из: РФ, Москва
Пользователь №: 37 354



Цитата("murmel1")
Просто не встречался еще с такими проектами, где и launch clock и latch clock (по вашей терминологии) заводятся на ПЛИС. В констрейнах нужно указывать только те клоки, которые попадут в ПЛИС.

Они не заводятся. Просто дана методика описания latch клока и данных относительно виртуального клока запуска. Я так понимаю, что для описания распространения в виде задержек сигналов относительно исходного клока.
Терминология не моя, списана из an433 и какого-то там qts smile.gif

Цитата("murmel1")
положительное значение tsu - до фронта, положительное значение th - после фронта

А если после компиляции получаются отрицательные величины?

Цитата
Сдвиговый регистр работает по следующим соображениям всегда без констрейнов

АЦП с параллельной шиной.


--------------------
SystemVerilog - язык, заточенный Альтерой под свои кристаллы теми же приемами использования примитивов, что и AHDL. ©
Go to the top of the page
 
+Quote Post
murmel1
сообщение Jul 29 2009, 17:08
Сообщение #10


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

Группа: Свой
Сообщений: 166
Регистрация: 2-11-08
Из: Ростов-на-Дону
Пользователь №: 41 331



Цитата(Ethereal @ Jul 29 2009, 02:42) *
А если после компиляции получаются отрицательные величины?

Соответственно, отсчитывайте по осям, что я нарисовал, в обратную сторону. Для tsu это означает, что данные должны быть задержаны после фронта, а для th - что их можно снимать еще до фронта. Это нормально.

Цитата(Ethereal @ Jul 29 2009, 02:42) *
АЦП с параллельной шиной.

Да вы его не слушайте. То что он написал - про потроха ПЛИС, а у вас - связь потроха-внешний мир. Эти случаи существенно различаются.
Go to the top of the page
 
+Quote Post
Ethereal
сообщение Jul 30 2009, 14:33
Сообщение #11


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

Группа: Свой
Сообщений: 114
Регистрация: 7-05-08
Из: РФ, Москва
Пользователь №: 37 354



Спасибо.
А еще два вопроса можно?

1) Имеет ли смысл использовать PLL для входных частот от 200 МГц в режиме компенсации синхронного источника? Или это лишняя блажь?
2) Если я использую PLL со сдвигом фазы клока источника для защелкивание входного сигнала, то надо ли смещать th и tsu?


--------------------
SystemVerilog - язык, заточенный Альтерой под свои кристаллы теми же приемами использования примитивов, что и AHDL. ©
Go to the top of the page
 
+Quote Post
murmel1
сообщение Jul 30 2009, 16:11
Сообщение #12


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

Группа: Свой
Сообщений: 166
Регистрация: 2-11-08
Из: Ростов-на-Дону
Пользователь №: 41 331



1) Использование PLL всего лишь позволяет легко сдвигать фазу внутри. Если времена без PLL удовлетворительны, то смысла использовать его нет. Как Вы понимаете, это зависит от изначального сдвига фазы в источнике, частоты, на какие ноги сигналы поступают и т.д.
2) При назначениях в квартусе - нет. В таймквесте, при указании относительно "оригинального" клока - тоже не надо.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 06:25
Рейтинг@Mail.ru


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