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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Гуру посоветуйте!, какой подоход к мультиклокову дизайну лучше (+)
des00
сообщение Jan 24 2006, 06:21
Сообщение #1


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

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



Добрый день господа!

у меня сложилась ситуация, когда вычислительной мощности блока не хватает, и я хочу часть блока (15-20% по объему), в которой происходит наибольщий затык заставить работать на удвоеной/утроеной частоте.

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

Можно посадить "низкочастотную" часть просто на 1/2, 1/3 клока, но ИМХО здесь появитсья асинхронность клоков во всей красе.

Вариант с асинхронным фифо (у Xilinx аппаратным), не очень подходит,
т.к. вызовет проблемы последующей увязки выхода с остальной частью схемы.

Если вам не сложно, по собственному опыту посоветуте как лучше реализовать "локальное" увеличение тактовой частоты работы, или 1 вариант это самый оптимум ?

С уважением des00.


--------------------
Go to the top of the page
 
+Quote Post
vikk
сообщение Jan 24 2006, 07:12
Сообщение #2


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

Группа: Свой
Сообщений: 98
Регистрация: 13-01-06
Пользователь №: 13 134



Altera.
двухклоковое фифо the best of the best biggrin.gif .
на мой взгляд самый правильный выход, если количество сигналов большое и есть шины данных.
хотя добавляется латентности канешна, ибо фифо на памяти тормозные на больших частотах. Но компенсируется все при большой нагрузке (пакеты). А сигналы разрешения применимы отнюдь не всегда.
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 24 2006, 07:25
Сообщение #3


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

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



Цитата(vikk @ Jan 24 2006, 02:12) *
Altera.
двухклоковое фифо the best of the best biggrin.gif .
на мой взгляд самый правильный выход, если количество сигналов большое и есть шины данных.
хотя добавляется латентности канешна, ибо фифо на памяти тормозные на больших частотах. Но компенсируется все при большой нагрузке (пакеты). А сигналы разрешения применимы отнюдь не всегда.


Вот это как раз то решение пробелемы, которого я пытаюсь избежать smile.gif

двухклочное фифо на высокие частоты, даст большие латентности + привязка к расположению блочной памяти на чипе. sad.gif
Хотя с точки зреня локализации ВЧ клок домена согласен, что это лучшее решение .


--------------------
Go to the top of the page
 
+Quote Post
v_mirgorodsky
сообщение Jan 24 2006, 08:11
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 342
Регистрация: 21-02-05
Пользователь №: 2 804



Всегда решали подобные проблемы через clock-enables. Да, получается high-fanout сигнал разрешения, однако он обычно триггерный, потому Synplify просто дублирует выходной триггер несколько раз, удерживая временные показатели на должном уровне. Еще одна неприятность связана с низкоскоростной частью схемы. Часть ее обычно не работает на столь высоких частотах и синтезатор начинает ругаться, однако этот момент при необходимости прибивается мультициклами. В результате получается абсолютно синхронный дизайн.

В Вашем случае еще можно попробовать поднять частоту на DCM. Если моя память мне не изменяет, то DCM может генерить синфазные клоковые сигналы удвоенной частоты практически на шару. В этом случае даже clock-enables не понадобятся smile.gif


--------------------
WBR,
V. Mirgorodsky
Go to the top of the page
 
+Quote Post
Camelot
сообщение Jan 24 2006, 08:13
Сообщение #5


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

Группа: Свой
Сообщений: 182
Регистрация: 10-01-05
Пользователь №: 1 872



Использовал первый подход, подавал на модуль максимальный клок с последующим делением. Разные блоки работают от нескольких клоков. Правда вот фифо на 2 клоках тоже пришлось использовать, для передачи данных другому модулю. Вроде все работает.
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 24 2006, 08:16
Сообщение #6


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

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



Цитата
Всегда решали подобные проблемы через clock-enables. Да, получается high-fanout сигнал разрешения, однако он обычно триггерный, потому Synplify просто дублирует выходной триггер несколько раз, удерживая временные показатели на должном уровне. Еще одна неприятность связана с низкоскоростной частью схемы. Часть ее обычно не работает на столь высоких частотах и синтезатор начинает ругаться, однако этот момент при необходимости прибивается мультициклами. В результате получается абсолютно синхронный дизайн.

спасибо вы подтвердили мои подозрения

Цитата
В Вашем случае еще можно попробовать поднять частоту на DCM. Если моя память мне не изменяет, то DCM может генерить синфазные клоковые сигналы удвоенной частоты практически на шару. В этом случае даже clock-enables не понадобятся smile.gif

Вот меня всегда интересовал вопрос, на сколько можно считать эти клоки синфазными ?

Ведь все равно разбег по фазе будет, хотя по идее Xilinx смело рекомендует дробить блоки на клок домены, но при этом ничего о согласовании фаз клоков не говорит.

Или я что не так понимаю glare.gif

Сообщение отредактировал des00 - Jan 24 2006, 08:19


--------------------
Go to the top of the page
 
+Quote Post
v_mirgorodsky
сообщение Jan 24 2006, 08:53
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 342
Регистрация: 21-02-05
Пользователь №: 2 804



Цитата(des00 @ Jan 24 2006, 10:16) *
Цитата

В Вашем случае еще можно попробовать поднять частоту на DCM. Если моя память мне не изменяет, то DCM может генерить синфазные клоковые сигналы удвоенной частоты практически на шару. В этом случае даже clock-enables не понадобятся smile.gif

Вот меня всегда интересовал вопрос, на сколько можно считать эти клоки синфазными ?

Ведь все равно разбег по фазе будет, хотя по идее Xilinx смело рекомендует дробить блоки на клок домены, но при этом ничего о согласовании фаз клоков не говорит.

Или я что не так понимаю glare.gif


Угу, и правильно не говорит smile.gif Синтезатор вместе с PAR'ом умные, если и есть небольшой разбег фаз, то он остается постоянным и может быть легко учтен при вычислении setup/hold триггеров, работающих на границах клоковых доменов cheers.gif Оба клока генерятся одним блоком. BTW, Xilinx DCM позволяет компенсировать задержку от входного пина до входа DCM, эффективно выравнивая фазы тактовых сигналов внутри и вне микросхемы. Если включить его в такой режим, то его выходы CLK0 и CLK2X должны удовлетворять всем Вашим требованиям. Единственное что Вы теряете в этом случае - это одну или две глобальных плоскости, что в современных чипах не критично.


--------------------
WBR,
V. Mirgorodsky
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 24 2006, 09:03
Сообщение #8


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

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



Цитата(v_mirgorodsky @ Jan 24 2006, 03:53) *
Угу, и правильно не говорит smile.gif Синтезатор вместе с PAR'ом умные, если и есть небольшой разбег фаз, то он остается постоянным и может быть легко учтен при вычислении setup/hold триггеров, работающих на границах клоковых доменов cheers.gif Оба клока генерятся одним блоком. BTW, Xilinx DCM позволяет компенсировать задержку от входного пина до входа DCM, эффективно выравнивая фазы тактовых сигналов внутри и вне микросхемы. Если включить его в такой режим, то его выходы CLK0 и CLK2X должны удовлетворять всем Вашим требованиям. Единственное что Вы теряете в этом случае - это одну или две глобальных плоскости, что в современных чипах не критично.


Спасибо попробую и этот режим


--------------------
Go to the top of the page
 
+Quote Post
vikk
сообщение Jan 24 2006, 13:16
Сообщение #9


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

Группа: Свой
Сообщений: 98
Регистрация: 13-01-06
Пользователь №: 13 134



Сори. не правильно понял вопрос smile.gif .
Именно для вашей ситуации подходит система с разрешениями.
Хотя фифо может спасти в ситуации 1/1.8 к примеру ))))
я просто в основном думал про интерфейсные разноклоковые блоки, между которыми разрешений быть не может. и тада тока фифо. ну вообщем вы и сами все понимаете.))
Go to the top of the page
 
+Quote Post
leevv
сообщение Jan 28 2006, 20:45
Сообщение #10


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

Группа: Свой
Сообщений: 100
Регистрация: 4-01-05
Пользователь №: 1 799



Цитата(v_mirgorodsky @ Jan 24 2006, 03:53) *
Цитата(des00 @ Jan 24 2006, 10:16) *

Цитата

В Вашем случае еще можно попробовать поднять частоту на DCM. Если моя память мне не изменяет, то DCM может генерить синфазные клоковые сигналы удвоенной частоты практически на шару. В этом случае даже clock-enables не понадобятся smile.gif

Вот меня всегда интересовал вопрос, на сколько можно считать эти клоки синфазными ?

Ведь все равно разбег по фазе будет, хотя по идее Xilinx смело рекомендует дробить блоки на клок домены, но при этом ничего о согласовании фаз клоков не говорит.

Или я что не так понимаю glare.gif


Угу, и правильно не говорит smile.gif Синтезатор вместе с PAR'ом умные, если и есть небольшой разбег фаз, то он остается постоянным и может быть легко учтен при вычислении setup/hold триггеров, работающих на границах клоковых доменов cheers.gif Оба клока генерятся одним блоком. BTW, Xilinx DCM позволяет компенсировать задержку от входного пина до входа DCM, эффективно выравнивая фазы тактовых сигналов внутри и вне микросхемы. Если включить его в такой режим, то его выходы CLK0 и CLK2X должны удовлетворять всем Вашим требованиям. Единственное что Вы теряете в этом случае - это одну или две глобальных плоскости, что в современных чипах не критично.



Ja moget tut ne prav no esli dage s vyhoda CLK0 i CLK2X signaly synfasny to oni dolgny doiti do svoih GBUF svoimi putjami i tam mogut nabrat' nebolshoj razbeg phasy. Hotja moget soft eto uchityvaet ne znaju. V Virtex4 est' special'nye clk buffers poddergivajushie synfasnost' CLK , CLK/2, CLK/4 i t.d.

Po povodu soglasovanija nizkochastotnoj (N) i vysokochastotonoj (V) chastej shemy.
U vas ja tak ponjal N i V ne sovsem asyncronny. Oni privjazany k odnomu clocku i tolko imejut razlichnuju fasu.

Est' mnogo sposobov kak eto sdelat', poskolku eto proshe chem sovsem async clks.

Vo pervyh, esli nugno peredat' tol'ko odin signal, to eto mogno sdellat' na pare triggerov s avtosbrosom.
Po moemu mnogokratno obsugdalos'.

Esli eto bus, to tut nugno akkuratnee. No esli, k primeru, u vas izvestno chto sootnoshenie clockov 1 k 3 to tut sovsem prosto - delaete peredachu dannyh po vtoromu clocku, ostavljaja po odnomu clocku na razbeg fas.

Est' i drugie sposoby, no vse zavisit ot konkretnoj situacii i chto vam izvestno o clk zaranee.

Dopolnitel'no posmotrite reshenie ot Peter Alfike na Xilinx tech exclusive, kogda on rassugdaet o
"crossing async boundaries" - chto to v etom rode.
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 29 2006, 08:16
Сообщение #11


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

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



Цитата
Ja moget tut ne prav no esli dage s vyhoda CLK0 i CLK2X signaly synfasny to oni dolgny doiti do svoih GBUF svoimi putjami i tam mogut nabrat' nebolshoj razbeg phasy. Hotja moget soft eto uchityvaet ne znaju. V Virtex4 est' special'nye clk buffers poddergivajushie synfasnost' CLK , CLK/2, CLK/4 i t.d.

Po povodu soglasovanija nizkochastotnoj (N) i vysokochastotonoj (V) chastej shemy.
U vas ja tak ponjal N i V ne sovsem asyncronny. Oni privjazany k odnomu clocku i tolko imejut razlichnuju fasu.

Est' mnogo sposobov kak eto sdelat', poskolku eto proshe chem sovsem async clks.

Vo pervyh, esli nugno peredat' tol'ko odin signal, to eto mogno sdellat' na pare triggerov s avtosbrosom.
Po moemu mnogokratno obsugdalos'.

Esli eto bus, to tut nugno akkuratnee. No esli, k primeru, u vas izvestno chto sootnoshenie clockov 1 k 3 to tut sovsem prosto - delaete peredachu dannyh po vtoromu clocku, ostavljaja po odnomu clocku na razbeg fas.

Est' i drugie sposoby, no vse zavisit ot konkretnoj situacii i chto vam izvestno o clk zaranee.

Dopolnitel'no posmotrite reshenie ot Peter Alfike na Xilinx tech exclusive, kogda on rassugdaet o
"crossing async boundaries" - chto to v etom rode.


Спасибо за ответ, я читал статии Peter на сайте, он рассуждает об асинхронных клоках.

У меня не много другая ситуация и по поводу первых "пристрелок" лучшим вариантов выглядит вариант с сигналом разрешения.
Насчет вопроса про CLK, CLK2 меня вот что интересовало,
в своей схеме я делаю сигнал разрешения (CLK) на тригере, и потом сигнал с этого тригера идет на входы разрешения блока работающего на частоте CLK2.

Вот я и по думал а нужен ли этот тригер, если можно снять этот сигнал с DCM(CLK) и так же подать на входы enable блока работающего на частоте CLK2. Плюсы такого решения в том, что для сигнала разрешения используеться линия с большим fan-out.

Потом я подумал, а что если просто тактировать НЧ часть от CLK, а ВЧ от CLK2, если бы клоки были синхронны то проблем с метастабильностью не было бы и просто потребовалась бы перетактирование сигналов от НЧ к ВЧ части на 1ом тригере, а не на 2-х.

Не могли бы вы прояснить данную ситуацию ?


--------------------
Go to the top of the page
 
+Quote Post
Gate
сообщение Jan 29 2006, 15:25
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 859
Регистрация: 7-04-05
Из: Санкт-Петербург
Пользователь №: 3 943



Когда у Вас клоки синхронизированы между собой (являются производными от одного клока), то синтезатор обладает всей информацией для вычисления задержек. Для этого нужно только поместить это клоки в одну clock group. Если эти клоки генерятся pll, то у них есть совпадающий фронт к каком-то такте - условно первом (кстати, синплифай утверждает, что понимает описание альтеровского и ксайлинского плл и сам вычисляет и ставит клоки в одну группу). Если Вы делите клок триггером, и в первом такте фронты не совпадают, а сдвинуты, то для этого случая есть констрейн clock-to-clock.
(Есть правда одна смешная тонкость, связанная с тем, что человек обычно задает частоту в МГЦ, а синтезатор пользуется длительностью. Если при вычислении длительности число знаков не конечно, то две длительности, соотв. двум кратным частотам, не будут иметь общего делителя, и синтезатор выдаст кучу ошибок. См. прикрепленный док.)
Все что осталось - это правильно перевести одноклоковые стробы из одного клокового домена в другой. Метастабильностью здесь заниматься не нужно, повторяю, клоки не асинхронны, и синтезатор сам вычислит наихудший случай расстояния между фронтами двух клоков. Это работает в синплифае и прецизионе.
Возможно также , что на границах кл.доменов придется поставить регистры в путь данных, смотрите отчет синтезатора по времянке.

Что касается предложения завести сигналы enable и прописать для медленного клокового домена мультиклоковые пути, то так делать можно, но неизящно - если у Вас сбалансированный дизайн и запас по частоте мал, то придется прописывать чуть ли не все цепи в мультиклоковые. Ручками.
Прикрепленные файлы
Прикрепленный файл  20050329_clocking.pdf ( 73.79 килобайт ) Кол-во скачиваний: 346
 


--------------------
"Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается." (с) С.Лем
Go to the top of the page
 
+Quote Post
leevv
сообщение Jan 29 2006, 18:45
Сообщение #13


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

Группа: Свой
Сообщений: 100
Регистрация: 4-01-05
Пользователь №: 1 799



Цитата(des00 @ Jan 29 2006, 03:16) *
Цитата

Ja moget tut ne prav no esli dage s vyhoda CLK0 i CLK2X signaly synfasny to oni dolgny doiti do svoih GBUF svoimi putjami i tam mogut nabrat' nebolshoj razbeg phasy. Hotja moget soft eto uchityvaet ne znaju. V Virtex4 est' special'nye clk buffers poddergivajushie synfasnost' CLK , CLK/2, CLK/4 i t.d.

Po povodu soglasovanija nizkochastotnoj (N) i vysokochastotonoj (V) chastej shemy.
U vas ja tak ponjal N i V ne sovsem asyncronny. Oni privjazany k odnomu clocku i tolko imejut razlichnuju fasu.

Est' mnogo sposobov kak eto sdelat', poskolku eto proshe chem sovsem async clks.

Vo pervyh, esli nugno peredat' tol'ko odin signal, to eto mogno sdellat' na pare triggerov s avtosbrosom.
Po moemu mnogokratno obsugdalos'.

Esli eto bus, to tut nugno akkuratnee. No esli, k primeru, u vas izvestno chto sootnoshenie clockov 1 k 3 to tut sovsem prosto - delaete peredachu dannyh po vtoromu clocku, ostavljaja po odnomu clocku na razbeg fas.

Est' i drugie sposoby, no vse zavisit ot konkretnoj situacii i chto vam izvestno o clk zaranee.

Dopolnitel'no posmotrite reshenie ot Peter Alfike na Xilinx tech exclusive, kogda on rassugdaet o
"crossing async boundaries" - chto to v etom rode.


Спасибо за ответ, я читал статии Peter на сайте, он рассуждает об асинхронных клоках.

У меня не много другая ситуация и по поводу первых "пристрелок" лучшим вариантов выглядит вариант с сигналом разрешения.
Насчет вопроса про CLK, CLK2 меня вот что интересовало,
в своей схеме я делаю сигнал разрешения (CLK) на тригере, и потом сигнал с этого тригера идет на входы разрешения блока работающего на частоте CLK2.

Вот я и по думал а нужен ли этот тригер, если можно снять этот сигнал с DCM(CLK) и так же подать на входы enable блока работающего на частоте CLK2. Плюсы такого решения в том, что для сигнала разрешения используеться линия с большим fan-out.

Потом я подумал, а что если просто тактировать НЧ часть от CLK, а ВЧ от CLK2, если бы клоки были синхронны то проблем с метастабильностью не было бы и просто потребовалась бы перетактирование сигналов от НЧ к ВЧ части на 1ом тригере, а не на 2-х.

Не могли бы вы прояснить данную ситуацию ?




Variant s signalom clk enable samyj bezopasnyj i rekomenduemyj. Esli ego mogno ispol'zovat' ja by na vashem meste postupil imenno tak. Voobshe v voprosah clk syncronizacii ja vsegda sleduju principu izvastnoj frazy is "Pervogo Otdela" "Luchshe perebdet' chem nedobdet'", esli konechno kto pomnit chto eto takoe. (Srazu ogovorjus' chto krome etoj frazy ja nichego obshego s 1 otdelom ne imel ;-) )
To est' drugimi slovami ochen' konservativen v voprosah clk'ov.

Drugoe delo kogda odin kusok koda uge napisan i ne podgotovlen dlja signala clk enable. Togda dannyj nugno peredavat' iz odnogo clk domain v drugoj.

V vashem sluchae , kogda "clks are synchronous" mogno, naprimer primenit' sledujushij izvestnyj sposob.
Pust' naprimer vy peredaete dannye iz CLK1 v CLK2, gde CLK1=CLK2, np fronta ih ne synfasny. (Clks, konechno, mogut otlichatsja drug ot druga no v N=integer chislo ras, Togda my ispol'zuem kagdyj N-tyj front bolee vysokochastotnogo CLKa).
Dannye iz CLK1 domain poocheredno sohranjaete v dvyh ( ili bolee ) registrah (odd and even dlja 2h registrov). V rezul'tate v kagdom iz registrov dannye activny v techenii 2h perodov CLK1, chto garantiruet kak minimum odin "valid edge of ClK2" po kotoromu i registriruete dannye iz oboih registrov.
Ostaetsja pravilno opredelit' kakoj imenno "edge of CLK2" nugno ispol'zovat' v dannom konkretnom takte i potom sobrat' dannye v odim stream.

Chto kasaetsja ispol'zovanija "constraints" pri "Synthesis and PAR", ochevidno mogno dobitsja trebuemogo resul'tata, no lichno ja predpochitaju ispol'zovat' snachala vse "logicheskie" sposoby , a esli ug sovsem nel'zja obojtis', to togda konechno ispol'zovat' vsjakie hitrosti s "constraints". Inache poluchennye reshenia trudnee ispol'zovat' v budushm pri perehode s kristala na kristal. I potom men'she zavisish' ot vsevozmognyh "tools bugs".


Da, zabyl eshe dobavit' naschet clk enable fanout.
V4 (i pomoemy Virtex, Virtex E toge) pozvoljaet ispolzovat' "Global CLK nets" dlaj rasprostranenija signala CE. I "PAR tool" sam ispol'suet etot "net" esli vidit bol'shoj "fanout". Virtex 2 po moemu ne pozvoljaet.

Hotja vse eto nugno utochnit' v "datasheets".
Go to the top of the page
 
+Quote Post
makc
сообщение Jan 29 2006, 20:42
Сообщение #14


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Могут быть интересны эти ссылочки по теме:
http://www.asic-world.com/tidbits/clock_domain.html
http://www.asic-world.com/tidbits/metastablity.html
http://www.e-insite.net/ednmag/contents/images/310388.pdf


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 30 2006, 09:05
Сообщение #15


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

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



спасибо всем за участие!

2 Gate
Цитата
Все что осталось - это правильно перевести одноклоковые стробы из одного клокового домена в другой. Метастабильностью здесь заниматься не нужно, повторяю, клоки не асинхронны, и синтезатор сам вычислит наихудший случай расстояния между фронтами двух клоков. Это работает в синплифае и прецизионе


Спасибо. Вы подтвердили мои подозрения, насчет поведения синтезаторов smile.gif

2 leevv
Спасибо за исчерпывающий ответ, ваша концепция мне понятна

2 makc

статьи с asic-world я уже читал,
а вот 3 я статья, еще не встречалась, ИМХО хорошо написанна, спасибо


--------------------
Go to the top of the page
 
+Quote Post

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

 


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


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