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

 
 
> Пересечение сигналом разных клоковых доменов, нужны ли синхронизаторы?
ig_f
сообщение Dec 10 2014, 13:46
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 18-11-11
Пользователь №: 68 381



Доброго времени суток!
Есть управляющий автомат работающий на частоте 400 кГц и есть логика обработки данных работающая на частоте 120 МГц. Соответственно автомат управления посылает различные сигналы в остальную логику. Частота 400 кГц формируется из основной частоты 120 МГц (без использования PLL, с помощью обыкновенного счетчика), т.е. клоки в общем-то связанные.
Вопросы:
1) Правильно ли я мыслю, что в моем случае можно обойтись без синхронизаторов(тех самых, что используются для борьбы с метастабильностью)?
2) Если так, то что для этого нужно сделать?

Заранее спасибо!

ps
Cyclone III

Сообщение отредактировал ig_f - Dec 10 2014, 13:47
Go to the top of the page
 
+Quote Post
3 страниц V  < 1 2 3 >  
Start new topic
Ответов (15 - 29)
dxp
сообщение Dec 11 2014, 13:19
Сообщение #16


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



В каком-то альтеровском документе видел описание приёма с gated clock, с помощью которого боролись за энергопотребление - ну, чтоб не клокало по входам неработающего модуля. Вроде как декларировалось, что при правильном подходе всё корректно и хорошо. Под рукой нет этой доки, поищу на досуге.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
SM
сообщение Dec 11 2014, 13:26
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(dxp @ Dec 11 2014, 16:19) *
ну, чтоб не клокало

А вот кстати, у альтер есть такая штука, как у латиса - DCS (Dynamic Clock Select) - железные блоки - безглитчевые мультиплексоры/гейтилки, встроенные в распределительный узел клоковых деревьев?
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 11 2014, 13:40
Сообщение #18


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(SM @ Dec 11 2014, 20:26) *
А вот кстати, у альтер есть такая штука, как у латиса - DCS (Dynamic Clock Select) - железные блоки - безглитчевые мультиплексоры/гейтилки, встроенные в распределительный узел клоковых деревьев?

CLKCTRL блок


--------------------
Go to the top of the page
 
+Quote Post
blackfin
сообщение Dec 11 2014, 13:44
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(dxp @ Dec 11 2014, 16:19) *
В каком-то альтеровском документе видел описание приёма с gated clock, с помощью которого боролись за энергопотребление - ну, чтоб не клокало по входам неработающего модуля. Вроде как декларировалось, что при правильном подходе всё корректно и хорошо. Под рукой нет этой доки, поищу на досуге.

Это в Quartus II Handbook, стр. 13–11
Цитата
Recommended Clock-Gating Methods Use gated clocks only when your target application requires power reduction and when gated clocks are able to provide the required reduction in your device architecture.
If you must use clocks gated by logic, implement these clocks using the robust clock-gating technique shown in Figure 13–8 and ensure that the gated clock signal uses dedicated global clock routing.


Хотя ТСу, вероятно, нужен раздел "Internally Generated Clocks", стр. 13-8:
Цитата
Divided Clocks
Designs often require clocks that you create by dividing a master clock. Most Altera FPGAs provide dedicated phase-locked loop (PLL) circuitry for clock division.
Using dedicated PLL circuitry can help you to avoid many of the problems that can be introduced by asynchronous clock division logic.
When you must use logic to divide a master clock, always use synchronous counters or state machines. Additionally, create your design so that registers always directly
generate divided clock signals, as described in “Internally Generated Clocks”, and route the clock on global clock resources. To avoid glitches, do not decode the outputs
of a counter or a state machine to generate clock signals.
Go to the top of the page
 
+Quote Post
SM
сообщение Dec 11 2014, 13:46
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(des00 @ Dec 11 2014, 16:40) *
CLKCTRL блок


Хм. А где он описан, сама железяка, а не соотв. ей мегафункция (в рамках Cyclone-ii, например)? Что-то не пойму, сколько их штук в EP2C8F256C8N.... Или это все таки мегафункция-генератор безглитчевого мукса на логике?
Go to the top of the page
 
+Quote Post
ig_f
сообщение Dec 11 2014, 14:41
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 18-11-11
Пользователь №: 68 381



Цитата(Bad0512 @ Dec 11 2014, 14:53) *
Про Gated clock вы всё правильно понимаете, однако ваш механизм как раз и является таким случаем (ведь с выхода T-триггера вы же потом через буфера подаёте на клоковые входы - так?). Главная тут неприятность вот какая :
Для клоковых цепей в ПЛИС предусмотрены специальные ресурсы. Главная особенность этих ресурсов в том, что время распространения сигнала по клоковым цепям значительно меньше, чем по обычным и очень мало отличается для синхронных элементов, расположенных в разных частях кристалла. Если в цепь распространения клока (в вашем случае от выхода Т триггера до клокового буфера) попадает обычный интерконнект, то во-первых сразу задержка по клоку увеличивается сильно, во-вторых при переходе с медленного клока (400кГц) на быстрый (120МГц) у вас сильно сокращается допустимая задержка за счёт задержки в цепи генерации медленного клока.
В итоге оба клока у вас фактически являются синхронными, но сдвинутыми по фазе за счёт вышеуказанной задержки. Все эти обстоятельства сильно усложняют жизнь тайминг аналайзеру, иногда это даже приводит к тому, что он не может свести тайминги в ноль.
Возможно что в вашем случае все тайминги сойдутся, однако принципиально этот путь тупиковый, когда вам придётся "выжимать из дизайна мегагерцы" это может стать большой проблемой.


Спасибо, что пояснили суть проблемы. В общем буду допиливать проект, а потом смотреть на тайминги и отчеты place and route. Если не сойдутся тогда буду смотреть на вариант с защелкиванием по заднему фронту.
А как можно проверить тайминги раньше, чем весь проект будет готов?

Цитата(blackfin @ Dec 11 2014, 16:44) *
Хотя ТСу, вероятно, нужен раздел "Internally Generated Clocks", стр. 13-8:

Что-то в моем хэндбуке на этих страницах совсем о другом написано и вообще нет таких разделов... может версии разные
PS
Нашлось в другой главе с другим названием. В целом я так и сделал, как там описано.

Сообщение отредактировал ig_f - Dec 11 2014, 14:56
Go to the top of the page
 
+Quote Post
blackfin
сообщение Dec 11 2014, 14:49
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(ig_f @ Dec 11 2014, 17:41) *
Что-то в моем хэндбуке на этих страницах совсем о другом написано и вообще нет таких разделов... может версии разные

Это из Quartus II Handbook Version 13.0.
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 12 2014, 05:53
Сообщение #23


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(SM @ Dec 11 2014, 21:46) *
Хм. А где он описан, сама железяка, а не соотв. ей мегафункция (в рамках Cyclone-ii, например)? Что-то не пойму, сколько их штук в EP2C8F256C8N.... Или это все таки мегафункция-генератор безглитчевого мукса на логике?

в сыклоне 2 такого нет. а сама железяка в хендбуке, часть хендбука вставлена в описание мегафункции http://www.altera.com/literature/ug/ug_altclock.pdf


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


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424



Цитата(ig_f @ Dec 10 2014, 17:46) *
1) Правильно ли я мыслю, что в моем случае можно обойтись без синхронизаторов(тех самых, что используются для борьбы с метастабильностью)?
2) Если так, то что для этого нужно сделать?

1) правильно
2) ничего ненадо если.....
Если дизайн сделан синхронным - т.е. к каждому тригеру (и в той и другой части) подведён один и тот-же провод CLK


Цитата(SM @ Dec 10 2014, 20:55) *
2) Ничего для этого не надо делать. Только корректно описать клок 400 кгц как generated из 120 MHz - остальное сделает PAR.

..тоже можна...но зачем так сложно?

Цитата(ig_f @ Dec 11 2014, 01:37) *
В альтеровских руководствах сказано, что если клоки завязанные, то их можно считать синхронными и, соответственно, можно обойтись без синхронизатора. Поэтому вариант, который предложил уважаемый SM мне кажется более естественным для решения данной задачи.

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


Цитата(Bad0512 @ Dec 11 2014, 09:32) *
Правильно делать (как вам тут уже не один раз советовали) так : на счётчике формируем импульс в один такт 120МГц с периодом 400КГц. Этот импульс подаем на CE вход всех триггеров автомата (но ни в коем случае
не на клоковый вход!!!). Тактируем всё от одного 120МГц клока. В результате избегаем все CDC(clock dmain crossing) проблемы, а автомат у нас работает на 400кГц клоке.

да - это и называется синхронный дизайн!!!


Цитата(SM @ Dec 11 2014, 12:50) *
...А грамотное описание связанных клоков, без разницы, как сгенерированных, хоть с помощью PLL, хоть с помощью триггеров, гарантирует полное отсутствие метастабильных состояний. Поэтому предпочтительнее правильно описать клоки и не ставить синхронизаторы, нежели объявить клоки независимыми и поставить синхронизаторы.


какими клоками не описывай физически асинхронную схему - такой она и останется.
Другое дело - это написать правильные констрейны, чтобы они гарантировали правильную физическую реализацию изначально синхронной схемы.
Go to the top of the page
 
+Quote Post
SM
сообщение Dec 12 2014, 10:10
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Torpeda @ Dec 12 2014, 13:05) *
какими клоками не описывай физически асинхронную схему - такой она и останется.

Где Вы тут нашли асинхронную систему? Сами придумали?
Go to the top of the page
 
+Quote Post
Torpeda
сообщение Dec 12 2014, 10:16
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424



Цитата(SM @ Dec 12 2014, 14:10) *
Где Вы тут нашли асинхронную систему? Сами придумали?


хмм.....
1) этот случай абсолютно тривиальный и синхронный по сути но...
2) автор его сделал на generated_clock и при этом тулзе не описал SDC констрейнами, как результат - получил асинхронную
Go to the top of the page
 
+Quote Post
SM
сообщение Dec 12 2014, 10:54
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Torpeda @ Dec 12 2014, 13:16) *
хмм.....
1) этот случай абсолютно тривиальный и синхронный по сути но...
2) автор его сделал на generated_clock и при этом тулзе не описал SDC констрейнами, как результат - получил асинхронную

2) в корне неверно, так как и синтез, и PAR сам видит все сгенерированные клоки, и без доп. SDC-описаний считает их клоками тех же частот, что и генерирующая сторона, но сдвинутых по времени на какое-то значение, определяемое физическими задержками генерации и разводки. И, соответственно, корректирует длины путей между этими клоками, и по сетапам, и по холдам. Дополнительные констрейны нужны только в том случае, если необходимо указать, что сгенерированный клок имеет другую частоту, нежели сторона, его сгенерировавшая.
Go to the top of the page
 
+Quote Post
Torpeda
сообщение Dec 12 2014, 14:44
Сообщение #28


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424



Цитата(SM @ Dec 12 2014, 14:54) *
2) в корне неверно, так как и синтез, и PAR сам видит все сгенерированные клоки, и без доп. SDC-описаний считает их клоками тех же частот, что и генерирующая сторона, но сдвинутых по времени на какое-то значение, определяемое физическими задержками генерации и разводки. И, соответственно, корректирует длины путей между этими клоками, и по сетапам, и по холдам. Дополнительные констрейны нужны только в том случае, если необходимо указать, что сгенерированный клок имеет другую частоту, нежели сторона, его сгенерировавшая.


1) без доп. SDC-описаний тул видит все тригеры висящие на выходе FF.Q generated_clock как unconstrained
Собственно, всё чего нет в SDC - unconstrained
2) Я уже про констрейны для правильного построяния клок-три молчу в этом случае

Таким образом, ничего автоматически не происходит.
PS. Это я правда в Encounter проверил...
Как минимум от входных пинов FPGA тулза автоматически распознаёт клоки и даже назначение на пины предлагает, а вот generated_clock я не уверен.....
опять-же, функция автораспознавания некоторых тулзов не есть общее правило...
Go to the top of the page
 
+Quote Post
SM
сообщение Dec 12 2014, 15:34
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Torpeda @ Dec 12 2014, 17:44) *
PS. Это я правда в Encounter проверил...
Как минимум от входных пинов FPGA тулза автоматически распознаёт клоки и даже назначение на пины предлагает, а вот generated_clock я не уверен.....
опять-же, функция автораспознавания некоторых тулзов не есть общее правило...

Вот именно, что про энкаунтер, он тут не причем. Предупреждать надо, что в оффтопик уходим. С этим я спорить не буду, так там и есть. Синопсис DC/ICC/Astro тоже не распознает. И то, там есть set_propagate_clock для этого (кажется, или derive_clocks, плохо помню)

Но мы то говорим про FPGA, а там это беспрекословное правило для всех (известных мне) PAR-тулов. Да и синтезаторы тоже generated clock-и сами вытаскивают и автораспространяют, и квартус, и синплифай.
Go to the top of the page
 
+Quote Post
Torpeda
сообщение Dec 12 2014, 16:13
Сообщение #30


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424



Цитата(SM @ Dec 12 2014, 18:34) *
Вот именно, что про энкаунтер, он тут не причем. Предупреждать надо, что в оффтопик уходим. С этим я спорить не буду, так там и есть. Синопсис DC/ICC/Astro тоже не распознает. И то, там есть set_propagate_clock для этого (кажется, или derive_clocks, плохо помню)

Но мы то говорим про FPGA, а там это беспрекословное правило для всех (известных мне) PAR-тулов. Да и синтезаторы тоже generated clock-и сами вытаскивают и автораспространяют, и квартус, и синплифай.

проверил в квартусе.
Он распознал 2 клока но....
В SDC записал 2 create_clock от CLK пина и соответственно от FF.Q делителя
Это означает что таки квартус лепит асинхронщину ибо... insertion_delay делёного клока начинает отсчёт с FF.Q, а не CLK пина!
Нам-же надо именно generated_clock от FF.Q и create_clock от CLK
Go to the top of the page
 
+Quote Post

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

 


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


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