|
Пересечение сигналом разных клоковых доменов, нужны ли синхронизаторы? |
|
|
|
Dec 10 2014, 13:46
|
Участник

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

|
Доброго времени суток! Есть управляющий автомат работающий на частоте 400 кГц и есть логика обработки данных работающая на частоте 120 МГц. Соответственно автомат управления посылает различные сигналы в остальную логику. Частота 400 кГц формируется из основной частоты 120 МГц (без использования PLL, с помощью обыкновенного счетчика), т.е. клоки в общем-то связанные. Вопросы: 1) Правильно ли я мыслю, что в моем случае можно обойтись без синхронизаторов(тех самых, что используются для борьбы с метастабильностью)? 2) Если так, то что для этого нужно сделать?
Заранее спасибо!
ps Cyclone III
Сообщение отредактировал ig_f - Dec 10 2014, 13:47
|
|
|
|
|
 |
Ответов
|
Dec 11 2014, 08:36
|
Участник

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

|
Цитата Делать клоки низкой частоты без использования PLL с помощью счётчика очень неправильно. Это называется gated clock и порождает в будущем массу разнообразных проблем. Тема не раз обсуждалась - поищите на форуме. Правильно делать (как вам тут уже не один раз советовали) так : на счётчике формируем импульс в один такт 120МГц с периодом 400КГц. Этот импульс подаем на CE вход всех триггеров автомата (но ни в коем случае не на клоковый вход!!!). Тактируем всё от одного 120МГц клока. В результате избегаем все CDC(clock dmain crossing) проблемы, а автомат у нас работает на 400кГц Теперь понял. Сперва подумал, что предлагают чтоб автомат постоянно щелкал на 120 МГц. Думаю можно поправить автомат, добавить в него разрешающих сигналов. Наверное такое будет более красивым. А вообще мне казалось, что gated clok это когда сигнал тактовой смешивается с некоторыми управляющими сигналами через комбинационную логику. В моем случае я формирую сигнал довольно низкой частоты с помощью восьмиразрядного счетчика и компаратора который формирует сигнал разрешения для T-триггера, на тактовый вход которого подается 120 МГц. То есть моменты переключения вполне детерминированы и связаны с основной тактовой. Далее выход триггера заводится на Clock Control Block и поступает на GCLK. В описании Clock Control Block такая схема тактирования подразумевается. Мне она видется вполне безопасной на частоте 400 КГц, разве нет?. Ни в коем разе не спорю, что предложенное вами решении выглядит лучше и порождает меньше проблем, как для меня, так и для САПРа. Просто хочу узнать возможно ли в принципе использовать такое тактирование?
|
|
|
|
|
Dec 11 2014, 11:53
|
Знающий
   
Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650

|
Цитата(ig_f @ Dec 11 2014, 14:36)  А вообще мне казалось, что gated clok это когда сигнал тактовой смешивается с некоторыми управляющими сигналами через комбинационную логику. В моем случае я формирую сигнал довольно низкой частоты с помощью восьмиразрядного счетчика и компаратора который формирует сигнал разрешения для T-триггера, на тактовый вход которого подается 120 МГц. То есть моменты переключения вполне детерминированы и связаны с основной тактовой. Далее выход триггера заводится на Clock Control Block и поступает на GCLK. В описании Clock Control Block такая схема тактирования подразумевается. Мне она видется вполне безопасной на частоте 400 КГц, разве нет?. Ни в коем разе не спорю, что предложенное вами решении выглядит лучше и порождает меньше проблем, как для меня, так и для САПРа. Просто хочу узнать возможно ли в принципе использовать такое тактирование? Про Gated clock вы всё правильно понимаете, однако ваш механизм как раз и является таким случаем (ведь с выхода T-триггера вы же потом через буфера подаёте на клоковые входы - так?). Главная тут неприятность вот какая : Для клоковых цепей в ПЛИС предусмотрены специальные ресурсы. Главная особенность этих ресурсов в том, что время распространения сигнала по клоковым цепям значительно меньше, чем по обычным и очень мало отличается для синхронных элементов, расположенных в разных частях кристалла. Если в цепь распространения клока (в вашем случае от выхода Т триггера до клокового буфера) попадает обычный интерконнект, то во-первых сразу задержка по клоку увеличивается сильно, во-вторых при переходе с медленного клока (400кГц) на быстрый (120МГц) у вас сильно сокращается допустимая задержка за счёт задержки в цепи генерации медленного клока. В итоге оба клока у вас фактически являются синхронными, но сдвинутыми по фазе за счёт вышеуказанной задержки. Все эти обстоятельства сильно усложняют жизнь тайминг аналайзеру, иногда это даже приводит к тому, что он не может свести тайминги в ноль. Возможно что в вашем случае все тайминги сойдутся, однако принципиально этот путь тупиковый, когда вам придётся "выжимать из дизайна мегагерцы" это может стать большой проблемой.
|
|
|
|
|
Dec 11 2014, 14:41
|
Участник

Группа: Участник
Сообщений: 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
|
|
|
|
Сообщений в этой теме
ig_f Пересечение сигналом разных клоковых доменов Dec 10 2014, 13:46 Kuzmi4 2 ig_f
вообще то всегда надо ставить переходники, ... Dec 10 2014, 14:09 TRILLER Цитата(ig_f @ Dec 10 2014, 16:46) 1) Прав... Dec 10 2014, 16:08 des00 Цитата(TRILLER @ Dec 11 2014, 00:08) Нет,... Dec 10 2014, 16:30  TRILLER Цитата(des00 @ Dec 10 2014, 19:30) ..Но в... Dec 10 2014, 19:28 SM Цитата(ig_f @ Dec 10 2014, 16:46) т.е. кл... Dec 10 2014, 16:55 Maverick Цитата(ig_f @ Dec 10 2014, 15:46) Доброго... Dec 10 2014, 18:21 ig_f ЦитатаПрошу прощения, если ненароком оскорбил ТС. ... Dec 10 2014, 21:37 Bad0512 Делать клоки низкой частоты без использования PLL ... Dec 11 2014, 05:32 SM Цитата(ig_f @ Dec 11 2014, 00:37) Нет ник... Dec 11 2014, 08:50  SM Цитата(Bad0512 @ Dec 11 2014, 14:53) это ... Dec 11 2014, 12:01   Bad0512 Цитата(SM @ Dec 11 2014, 18:01) Может, но... Dec 11 2014, 12:09    SM Цитата(Bad0512 @ Dec 11 2014, 15:09) поэт... Dec 11 2014, 12:37   blackfin Цитата(ig_f @ Dec 11 2014, 17:41) Что-то ... Dec 11 2014, 14:49 dxp В каком-то альтеровском документе видел описание п... Dec 11 2014, 13:19 SM Цитата(dxp @ Dec 11 2014, 16:19) ну, чтоб... Dec 11 2014, 13:26  des00 Цитата(SM @ Dec 11 2014, 20:26) А вот кст... Dec 11 2014, 13:40   SM Цитата(des00 @ Dec 11 2014, 16:40) CLKCTR... Dec 11 2014, 13:46    des00 Цитата(SM @ Dec 11 2014, 21:46) Хм. А где... Dec 12 2014, 05:53 blackfin Цитата(dxp @ Dec 11 2014, 16:19) В каком-... Dec 11 2014, 13:44 Torpeda Цитата(ig_f @ Dec 10 2014, 17:46) 1) Прав... Dec 12 2014, 10:05 SM Цитата(Torpeda @ Dec 12 2014, 13:05) каки... Dec 12 2014, 10:10  Torpeda Цитата(SM @ Dec 12 2014, 14:10) Где Вы ту... Dec 12 2014, 10:16   SM Цитата(Torpeda @ Dec 12 2014, 13:16) хмм.... Dec 12 2014, 10:54    Torpeda Цитата(SM @ Dec 12 2014, 14:54) 2) в корн... Dec 12 2014, 14:44     SM Цитата(Torpeda @ Dec 12 2014, 17:44) PS. ... Dec 12 2014, 15:34      Torpeda Цитата(SM @ Dec 12 2014, 18:34) Вот именн... Dec 12 2014, 16:13 SM Он должен был туда и derive_clocks записать. Видим... Dec 12 2014, 16:23 Torpeda Цитата(SM @ Dec 12 2014, 19:23) Он должен... Dec 12 2014, 16:27  SM Цитата(Torpeda @ Dec 12 2014, 19:27) Имен... Dec 12 2014, 16:48   Torpeda Цитата(SM @ Dec 12 2014, 19:48) PADI_DEL ... Dec 12 2014, 17:25    SM Цитата(Torpeda @ Dec 12 2014, 20:25) Похо... Dec 12 2014, 17:45
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|