Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: D-триггер c входами С и ENA.
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Serhiy_UA
Может, у кого есть схема с логическими элементами внутри D-триггера c входами С и ENA (Clock Enable), то просьба поделиться, а то не могу никак найти.
Ситуация с переключениями на входе С при постоянных уровнях 0 или 1 на входе ENA понятна по определению самих этих входов.
Но интересует такая вещь. Как будет вести себя D-триггер при переключениях на входе ENA, при постоянных уровнях 0 или 1 на входе С…
Провожу небольшой курс по синтезу цифровых автоматов, вот и запнулся…
Amurak
https://www.fairchildsemi.com/datasheets/74/74F377.pdf

Внутри есть схема.
Александр77
Цитата(Serhiy_UA @ Apr 29 2015, 13:28) *
Как будет вести себя D-триггер при переключениях на входе ENA, при постоянных уровнях 0 или 1 на входе С…

А разве он может вести себя иначе, чем просто хранить одно и тоже состояние?! Ведь предпосылок для переключения (фронтов на входе С) нет никаких.
Serhiy_UA
Цитата(Amurak @ Apr 29 2015, 17:48) *
Внутри есть схема.

Спасибо! Теперь понятно.
Krys
вот тут книжку триггеры советовали: https://disk.yandex.ru/public/?hash=NTX%2B1...0Ye3OY3izHyY%3D
Serhiy_UA
Цитата(Krys @ May 20 2015, 14:13) *
вот тут книжку триггеры советовали: https://disk.yandex.ru/public/?hash=NTX%2B1...0Ye3OY3izHyY%3D
В этой книге искомого D-триггера нет, хотя книга хорошая. Речь была немного о другом. Посмотрите на рисунок, там два D-триггера, они работают почти одинаково, но второй, что с коммутатором, удобней при синтезе цифровых автоматов (ЦА). Под ЦА понимается совокупность конечного автомата (КА) и операционного устройства (ОУ). Преимущество второго из D-триггеров в том, что синхронизировать микрооперации в ОУ можно одной и той же фазой, что в КА. В то время, как для первого D-триггера потребовалась бы многофазная синхронизация, иначе были бы гонки.
Просто в ПЛИС при синтезе FSM используется именно второй из этих триггеров. А когда я в свое время проектировал ЦА на микросхемах, я использовал первый из них, а о втором не догадывался, по этому применял многофазную синхронизацию… Такие вот тонкости...
Krys
Поздно увидел сообщение. В ПЛИС по первой схеме вообще не принято делать триггеры, т.е. должна быть идеология синхронного дизайна. На это даже синтезатор должен ругнуться и сказать, что это gated clock или ripple clock. Т.е. тактовая должна подаваться всегда прямо на тактовый вход, безо всяких комбинационных схем. Аналогичную идеологию синхронного дизайна можно применять и для цифровых микросхем
Lerk
Вообще для gated-clock есть совершенно "безопасный" дизайн, поэтому не вижу причин его не использовать. Картинка из Титце Шенка.
Нажмите для просмотра прикрепленного файла

Ну и все таки 'clock enable' это одно, а mux на входе - совсем другое. И собственно изменение данных на выходе mux'a в момент фронта тактового импульса может привести к самым разным последствиям.
Krys
Цитата(Lerk @ Jun 10 2015, 17:14) *
Вообще для gated-clock есть совершенно "безопасный" дизайн, поэтому не вижу причин его не использовать
и в ПЛИС тоже? Это всё устарело )) безопасный он до тех пор, пока задержки не начинают быть сравнимы с периодом сигналов.


Цитата(Lerk @ Jun 10 2015, 17:14) *
Ну и все таки 'clock enable' это одно, а mux на входе - совсем другое
По какому параметру совсем другое? Понятно, что буквы названия другие. А по потреблению ресурсов - примерно та же байда ))


Цитата(Lerk @ Jun 10 2015, 17:14) *
И собственно изменение данных на выходе mux'a в момент фронта тактового импульса может привести к самым разным последствиям.
Дак по идеологии синхронного дизайна не надо так делать (в момент фронта). Либо ставьте на сигнал управления мультиплексором такой же синхронизатор, как на Вашей картинке.
Lerk
Цитата(Krys @ Jun 11 2015, 06:56) *
и в ПЛИС тоже? Это всё устарело )) безопасный он до тех пор, пока задержки не начинают быть сравнимы с периодом сигналов.


По какому параметру совсем другое? Понятно, что буквы названия другие. А по потреблению ресурсов - примерно та же байда ))


Дак по идеологии синхронного дизайна не надо так делать (в момент фронта). Либо ставьте на сигнал управления мультиплексором такой же синхронизатор, как на Вашей картинке.


Не надо сравнивать ПЛИС с ASIC'ами. У ПЛИС много плюсов, но не надо ориентироваться на применяемые там решения, как на парадигму.

Совсем другое оно по смыслу. У вас от этого клока может быть целый блок затактирован, и гораздо проще(и выгоднее) управлять одним клоком блока, чем всеми входами этого блока, не находите?

Что касается синхронного дизайна, то автор о нем не упоминал. А я же скажу так: всякий инструмент нужен к месту.
Krys
Цитата(Lerk @ Jun 11 2015, 14:46) *
Не надо сравнивать ПЛИС с ASIC'ами
А в асиках не так как в плисах? Насколько я знаю, логика для асиков сначала отлаживается на плис, следовательно, применяются все те же методологии, в т.ч. и синхронного дизайна.


Цитата(Lerk @ Jun 11 2015, 14:46) *
Совсем другое оно по смыслу. У вас от этого клока может быть целый блок затактирован, и гораздо проще(и выгоднее) управлять одним клоком блока, чем всеми входами этого блока, не находите?
Выгоднее, но в доках от производителей плис рекомендуется всё же обходиться без gated clock. А там где это действительно требуется - существует специальный элемент типа BUFGCE, который обеспечивает примерно то же, что на Вашей картинке. Тем более речь идёт об одном триггере, о его схеме с CE.


Цитата(Lerk @ Jun 11 2015, 14:46) *
Что касается синхронного дизайна, то автор о нем не упоминал.
Я так думаю, если не упоминал - то это хуже. Скорее всего, для него это открытие )) Зато я упоминал, что асинхронщина устарела. А не устарел - синхронный дизайн.
Lerk
Цитата(Krys @ Jun 11 2015, 12:26) *
А в асиках не так как в плисах? Насколько я знаю, логика для асиков сначала отлаживается на плис, следовательно, применяются все те же методологии, в т.ч. и синхронного дизайна.

Не надо мешать в кучу логику и схемотехнику.

Цитата(Krys @ Jun 11 2015, 12:26) *
Выгоднее, но в доках от производителей плис рекомендуется всё же обходиться без gated clock. А там где это действительно требуется - существует специальный элемент типа BUFGCE, который обеспечивает примерно то же, что на Вашей картинке. Тем более речь идёт об одном триггере, о его схеме с CE.

Да мне, в общем, не важно, что там рекомендуют производители плис: у самого голова на плечах есть.


Цитата(Krys @ Jun 11 2015, 12:26) *
Я так думаю, если не упоминал - то это хуже. Скорее всего, для него это открытие )) Зато я упоминал, что асинхронщина устарела. А не устарел - синхронный дизайн.


Вы слишком категоричны. Асинхронный дизайн может быть в десятки раз компактнее, чем синхронный, и при этом не проигрывать по скорости. Просто это сложнее и менее предсказуемо. Вот только когда вы ограничены сверху по емкости кристалла, как в случае с БМК, то вы сразу наплюёте на свои убеждения о асинхронном дизайне. Потому что работа должна быть сделана, и в конечном итоге роляет только одно: деньги. И если можно на маленьком и дешевом БМК сделать то же самое, что на большом и дорогом, то выбор вполне очевиден. Разве что вы сами себе начальник и можете себе позволить тратить лишние бабки на угоду своим убеждениям.
Serhiy_UA
Как обустроен D-триггер для синхронных FSM мне уже понятно: там перед его D-входом двухвходовой коммутатор, управляемый сигналом микрооперации. Понятно и то, что период синхроимпульсов должен быть таким, что бы исключить гонки. При этом синтез FSM на HDL построен так, что пользователь об этом коммутаторе может даже и не знать, все делается за него.
Не понятным остается только вопрос, как распределяется синхросигнал на все синхровходы D-триггеров для больших FSM, ведь там этих триггеров может быть несколько сотен и даже тысяч. А фаза при этом должна быть у всех одинакова. И так для каждой из FSM, работающей на своей частоте, которых в ПЛИС тоже может быть немало.
Понятно, что среда программирования делает все автоматически, но на каких идеях…


Maverick
Цитата(Serhiy_UA @ Jun 11 2015, 14:47) *
Как обустроен D-триггер для синхронных FSM мне уже понятно: там перед его D-входом двухвходовой коммутатор, управляемый сигналом микрооперации. Понятно и то, что период синхроимпульсов должен быть таким, что бы исключить гонки. При этом синтез FSM на HDL построен так, что пользователь об этом коммутаторе может даже и не знать, все делается за него.
Не понятным остается только вопрос, как распределяется синхросигнал на все синхровходы D-триггеров для больших FSM, ведь там этих триггеров может быть несколько сотен и даже тысяч. А фаза при этом должна быть у всех одинакова. И так для каждой из FSM, работающей на своей частоте, которых в ПЛИС тоже может быть немало.
Понятно, что среда программирования делает все автоматически, но на каких идеях…

как это делает среда разработки находится под большим секретом (мое мнение)
Lerk
Цитата(Serhiy_UA @ Jun 11 2015, 14:47) *
Не понятным остается только вопрос, как распределяется синхросигнал на все синхровходы D-триггеров для больших FSM, ведь там этих триггеров может быть несколько сотен и даже тысяч. А фаза при этом должна быть у всех одинакова. И так для каждой из FSM, работающей на своей частоте, которых в ПЛИС тоже может быть немало.
Понятно, что среда программирования делает все автоматически, но на каких идеях…


Очень многое на плисине уже сделано архитектурно. Можете почитать гугл на тему 'clock distribution network' - достаточно много интересных материалов есть в открытом доступе. Так что зная параметры тех. процесса программе остается сделать не так много.
Krys
Цитата(Serhiy_UA @ Jun 11 2015, 18:47) *
Не понятным остается только вопрос, как распределяется синхросигнал на все синхровходы D-триггеров для больших FSM, ведь там этих триггеров может быть несколько сотен и даже тысяч. А фаза при этом должна быть у всех одинакова. И так для каждой из FSM, работающей на своей частоте, которых в ПЛИС тоже может быть немало.
Понятно, что среда программирования делает все автоматически, но на каких идеях…
На идеях того, что тактовый сигнал по тактовой цепи всегда дойдёт быстрее любого не тактового сигнала, т.е. для этого по кристаллу проброшена соответствующая быстродействующая сеть. Далее... все задержки по кристаллу заранее известны программе-разводчику, и она всегда знает, какие у неё задержки распространения конкретного сигнала от выхода одного триггера до входа другого.


Цитата(Lerk @ Jun 11 2015, 16:35) *
Не надо мешать в кучу логику и схемотехнику.
Ну почему же... это всё очень тесно взаимосвязано. Логика без схемотехники никуда. А схемотехника в принципе одна и та же, что в ПЛИС, что на рассыпухе, что в ASIC.


Цитата(Lerk @ Jun 11 2015, 16:35) *
Да мне, в общем, не важно, что там рекомендуют производители плис: у самого голова на плечах есть.
...
Вы слишком категоричны. Асинхронный дизайн может быть в десятки раз компактнее, чем синхронный, и при этом не проигрывать по скорости.
Вот мне стало интересно: Вы теоретик или практик? "Прошивки" для БМК разрабатывали? Спрашиваю не с целью помериться пиписьками. Просто чувствуется у Вас фундаментальный, энциклопедический подход.


Цитата(Lerk @ Jun 11 2015, 16:35) *
Вы слишком категоричны. Асинхронный дизайн может быть в десятки раз компактнее, чем синхронный, и при этом не проигрывать по скорости. Просто это сложнее и менее предсказуемо. Вот только когда вы ограничены сверху по емкости кристалла, как в случае с БМК, то вы сразу наплюёте на свои убеждения о асинхронном дизайне. Потому что работа должна быть сделана, и в конечном итоге роляет только одно: деньги. И если можно на маленьком и дешевом БМК сделать то же самое, что на большом и дорогом, то выбор вполне очевиден. Разве что вы сами себе начальник и можете себе позволить тратить лишние бабки на угоду своим убеждениям.
Честно признаюсь: мало знаком с кухней подготовки ASIC, поэтому вопрос: неужели и вправду делают сейчас такие вот асики на основе асинхронного дизайна? А как же его верифицировать? Есть для этого инструменты?
Я конечно когда-то давно слышал статьи, что вот новая технология асинхронного дизайна - хорошо забытое старое - что мол позволяет выжать всё возможное из логики, работает однозначно быстрее синхронного дизайна. Особенность в этом забытом старом было в том, что для достижения предельного быстродействия и отсутствия сбоев нужно было вводить обратные связи типа "сигнал принят". Но уже много лет прошло, а что-то я так и не заметил адаптации структуры ПЛИС под асинхронные дизайны.
Lerk
Цитата(Krys @ Jun 15 2015, 13:40) *
Ну почему же... это всё очень тесно взаимосвязано. Логика без схемотехники никуда. А схемотехника в принципе одна и та же, что в ПЛИС, что на рассыпухе, что в ASIC.

Связано, да только не совсем. Вот есть базовая для вычислительного asic'а штука: полный сумматор. Логически - строго детерминированная штука. Вариантов реализаций будет за два десятка точно.

Цитата(Krys @ Jun 15 2015, 13:40) *
Вот мне стало интересно: Вы теоретик или практик? "Прошивки" для БМК разрабатывали? Спрашиваю не с целью помериться пиписьками. Просто чувствуется у Вас фундаментальный, энциклопедический подход.

Практик. Разрабатывал и всё еще.

Цитата(Krys @ Jun 15 2015, 13:40) *
Честно признаюсь: мало знаком с кухней подготовки ASIC, поэтому вопрос: неужели и вправду делают сейчас такие вот асики на основе асинхронного дизайна? А как же его верифицировать? Есть для этого инструменты?
Я конечно когда-то давно слышал статьи, что вот новая технология асинхронного дизайна - хорошо забытое старое - что мол позволяет выжать всё возможное из логики, работает однозначно быстрее синхронного дизайна. Особенность в этом забытом старом было в том, что для достижения предельного быстродействия и отсутствия сбоев нужно было вводить обратные связи типа "сигнал принят". Но уже много лет прошло, а что-то я так и не заметил адаптации структуры ПЛИС под асинхронные дизайны.


Я не работаю на глубоком субмикроне, поэтому по этой части однозначно сказать не могу. Статьи говорят, что да, но вопрос надо изучать глубже, чтобы что-то заявлять.
Shivers
Цитата(Serhiy_UA @ Jun 11 2015, 15:47) *
Как обустроен D-триггер для синхронных FSM мне уже понятно: там перед его D-входом двухвходовой коммутатор, управляемый сигналом микрооперации. Понятно и то, что период синхроимпульсов должен быть таким, что бы исключить гонки. При этом синтез FSM на HDL построен так, что пользователь об этом коммутаторе может даже и не знать, все делается за него.
Не понятным остается только вопрос, как распределяется синхросигнал на все синхровходы D-триггеров для больших FSM, ведь там этих триггеров может быть несколько сотен и даже тысяч. А фаза при этом должна быть у всех одинакова. И так для каждой из FSM, работающей на своей частоте, которых в ПЛИС тоже может быть немало.
Понятно, что среда программирования делает все автоматически, но на каких идеях…

В синхронном дизайне клок маскирует переходные процессы (гонки). Если метастабильность в сигнале закончилась раньше снятия маски - все хорошо. То же касается и входа Ena - он должен переключиться за определенное время. Т.е. есть опредленное "окно", во время которого сигнал не имет право переключаться.
Что касается распределения синхросигнала по триггерам в схеме, то разброс присутствует, но это самое "окно" покрывает все вариации разброса прихода фронтов клока. Вот и весь фокус.

По поводу FSM есть три типа автоматов, изучите их: автоматы Мура и Мили наиболее известны, автомат Хаффмана менее. Последний годится только для асинхронных стейт-машин, первые два - для асинхронных и синхронных.

p.s. по поводу ПЛИС и асинхронных дизайнов - никто адаптировать ПЛИС под такое не будет, потому что асинхронных схем разрабатывают - капля в море. Правда, есть ПЛИС с асинхронной начинкой -фирма Achronix. Но сделан он для работы с синхронными дизайнами.
Krys
Цитата(Shivers @ Jun 16 2015, 02:36) *
По поводу FSM есть три типа автоматов, изучите их
Человек сам обучать будет, а Вы ему говорите ещё учиться и учиться )))


Цитата(Shivers @ Jun 16 2015, 02:36) *
p.s. по поводу ПЛИС и асинхронных дизайнов - никто адаптировать ПЛИС под такое не будет, потому что асинхронных схем разрабатывают - капля в море.
Дак если бы эта асинхронная технология завоевала сердца - то и пользовались бы ей не капли в море.


Цитата(Shivers @ Jun 16 2015, 02:36) *
Правда, есть ПЛИС с асинхронной начинкой -фирма Achronix. Но сделан он для работы с синхронными дизайнами.
Как так получилось? Плис с асинхронной начинкой, но предназначена для синхронных дизайнов.
Shivers
Цитата(Krys @ Jun 16 2015, 13:19) *
Как так получилось? Плис с асинхронной начинкой, но предназначена для синхронных дизайнов.

Если управление асинхронной схемы делать с помощью синхроимпульса, схема станет синхронной ;-)

p.s.
асинхронная схема отличается от синхронной тем, что асинхронная работает в логическом времени, а синхронная в физическом. Добавление синхроимпульса к асинхронной схеме связывает логические отсчеты времени с физическим временем - получается синхронная схема.
Serhiy_UA
Цитата(Krys @ Jun 16 2015, 14:19) *
Человек сам обучать будет, а Вы ему говорите ещё учиться и учиться )))

Что касается FSM, что в жесткой логике, то за пределы синхронных автоматов Мура никогда не выходил. Автоматы Мили никогда не применял, хотя, как мне кажется, автоматы Мура это подмножество автоматов Мили. Но это уже отдельная тема…
Krys
Цитата(Serhiy_UA @ Jun 17 2015, 12:16) *
Просто мой сын, после 7 лет работы разработчиком РЭА решил укрепить свои знания по теории арифметических и логических основ цифровых автоматов:
Вот тут будет точно звучать иронично, что учиться никогда не поздно, даже после вуза и 7 лет разработчиком )))


Цитата(Serhiy_UA @ Jun 17 2015, 12:16) *
И если бы тогда в перечне заказчика были D-триггеры с двухвходовым коммутатором на входе как сейчас
Вы про рассыпушные говорите? Можно для примера? В ПЛИС то триггеры и сейчас без коммутатора на входе. Коммутатор отдельно на LUT.


Цитата(Shivers @ Jun 16 2015, 18:00) *
асинхронная схема отличается от синхронной тем, что асинхронная работает в логическом времени, а синхронная в физическом. Добавление синхроимпульса к асинхронной схеме связывает логические отсчеты времени с физическим временем - получается синхронная схема.
Ничего не понял, ну да ладно )) А где про это почитать можно?



Цитата(Shivers @ Jun 16 2015, 18:00) *
Если управление асинхронной схемы делать с помощью синхроимпульса, схема станет синхронной ;-)
А оно надо, синхроимпульс этот? В тех современных "каверах" на тему асинхронной логики, которые я подразумевал выше, предельное быстродействие при отсутствии ложных срабатываний достигается, как я писал, за счёт введения обратной связи по сигналу типа "импульс принят". А если вводить синхроимпульс, то он будет гробить все достижения предельного быстродействия, полученные таким вот образом.
Serhiy_UA
На рисунке логический элемент LE от Cyclone III (можно посмотреть в cyc3_ciii51002.pdf). По моему, уже теперь глубокому убеждению, узел Programmable Register и есть тот самый D-триггер с двухвходовым коммутатором на входе. То есть коммутатор скрыт внутри этого прямоугольника, он не в LUT, а сразу перед триггером. Функционально только так...

И еще схема из ece428_logcell.pdf...
Krys
Цитата(Serhiy_UA @ Jun 17 2015, 15:25) *
По моему, уже теперь глубокому убеждению, узел Programmable Register и есть тот самый D-триггер с двухвходовым коммутатором на входе. То есть коммутатор скрыт внутри этого прямоугольника, он не в LUT, а сразу перед триггером. Функционально только так...
А откуда следует такое убеждение?
Serhiy_UA
Цитата(Krys @ Jun 17 2015, 11:58) *
А откуда следует такое убеждение?

Тогда посмотрите мой пост от May 22 2015, и попробуйте соотнести входы D, С и ENA к одной из приведенных схем, или приведите свою.
А убеждение мое как раз из того, что в одном случае, где элемент И, при работе цифрового автомата потребуется многофазная синхронизация отдельно для конечного автомата и операционного устройства, иначе гонки. А для другого, что с коммутатором, достаточно одной фазы.

Вопрос бы не возник, раскрой Altera этот самый узел Programmable Register….
Shivers
Цитата(Krys @ Jun 17 2015, 09:40) *
Ничего не понял, ну да ладно )) А где про это почитать можно?

Скачать не знаю где, но лучшая из современных книжек эта - Моделирование параллельных процессов. Сети Петри. Курс для системных архитекторов, программистов, системных аналитиков, проектировщиков сложных систем управления

Цитата(Krys @ Jun 17 2015, 09:40) *
А оно надо, синхроимпульс этот?

Я только хотел сказать, что синхронный автомат - это тот же асинхронный (способный работать вообще без внешних управляющих сигналов, как кольцевой генератор на инверторах), но с внешним (синхронным) управлением. Надо или нет - зависит от ТЗ.

Serhiy_UA
Прошу извинить, я вовсе не хотел проявить неуважение.

На самом деле, теория автоматов намного глубже, чем FSM Мура на синхронных D-триггерах. Машина Тьюринга была изобретена в 30х годах, а автоматы Мура/Мили в 50х. И синтез автоматов по уму надо начинать с графовой спецификации, минимизируя потом кодирование вершин - эти техники хорошо описаны в учебниках 60-80х годов. Но надо ли во все это залезать, работая с ПЛИС? По видимому, нет. Современные синтезаторы пытаются автоматически минимизировать графы автоматов, и у них это иногда получается. Правда, для соотвествия RTL-ю иногда имеет смысл отключать опцию минимизации FSM, иначе в нетлисте после мэппера бывает трудно разобраться.
Krys
Цитата(Serhiy_UA @ Jun 17 2015, 16:17) *
Тогда посмотрите мой пост от May 22 2015, и попробуйте соотнести входы D, С и ENA к одной из приведенных схем, или приведите свою.
Свою приводить не буду, представлял именно так, что реализовано одним из показанных способов. Просто подозревал, что правый вариант реализует мультиплексор на отдельном внешнем LUT, а левый вариант - это и есть ENA "в лоб".



Цитата(Serhiy_UA @ Jun 17 2015, 16:17) *
А убеждение мое как раз из того, что в одном случае, где элемент И, при работе цифрового автомата потребуется многофазная синхронизация отдельно для конечного автомата и операционного устройства, иначе гонки. А для другого, что с коммутатором, достаточно одной фазы.
Вот тут я не понимаю, откуда гонки. Признаюсь, "плаваю" в теоретических вопросах конечных автоматов, и про многофазную синхронизацию не понимаю. Если нетрудно, можно примерчик (я так понял, Вам всё равно в академических целях примерчики потребуются). Думаю, при применении идеологии синхронного дизайна термин "гонки" должен отсутствовать как класс, поэтому я про него и думать уже давно забыл.


Цитата(Serhiy_UA @ Jun 17 2015, 16:17) *
Вопрос бы не возник, раскрой Altera этот самый узел Programmable Register….
Ну раскрыла бы она на уровне транзисторов, а что это изменит? Главное, что инструмент гарантирует выполнение временных ограничений. А как он этого добивается - его дело ))
Shivers
Цитата(Serhiy_UA @ Jun 17 2015, 11:25) *
На рисунке логический элемент LE от Cyclone III (можно посмотреть в cyc3_ciii51002.pdf). По моему, уже теперь глубокому убеждению, узел Programmable Register и есть тот самый D-триггер с двухвходовым коммутатором на входе.

До истины докопаться сложно без подробной схемы, но есть кое какие соображения.
1. Современные чипы делают с использованием техник LowPower, которые в т.ч. используют и clock-gating (левый рисунок из вашего поста от 22 мая).
2. XC3000 - очень старая ПЛИСина, в то время как циклон новая. Поэтому в зайлинксе я вполне допускаю, что выход триггера может быть заведен на вход. А вот у циклона вполне опредленно нарисовано, что такой связи нет. Т.е. внутри Programmable Register встроен именно clock-gate. Но не такой , как вы нарисовали (левый рисунок из вашего поста от 22 мая), а еще и с защелкой по уровню () - как раз, чтобы избежать гонок. Так что многофазной синхронизации не нужно, достаточно обычной двуфазной однопроводной.

Можете посмотреть, какие еще бывают варианты схематехники http://www.pldworld.com/html/technote/Tour_of_PLDs.htm
dvladim
Цитата(Serhiy_UA @ Jun 17 2015, 11:25) *
На рисунке логический элемент LE от Cyclone III (можно посмотреть в cyc3_ciii51002.pdf). По моему, уже теперь глубокому убеждению, узел Programmable Register и есть тот самый D-триггер с двухвходовым коммутатором на входе. То есть коммутатор скрыт внутри этого прямоугольника, он не в LUT, а сразу перед триггером. Функционально только так...


Цитата(Shivers @ Jun 17 2015, 13:13) *
До истины докопаться сложно без подробной схемы, но есть кое какие соображения.

Т.е. внутри Programmable Register встроен именно clock-gate. Но не такой , как вы нарисовали (левый рисунок из вашего поста от 22 мая), а еще и с защелкой по уровню ..

Именно так и сделано, что и подтверждается тем же даташитом, но про глобальные сигналы LAB-а:

Цитата
Each LAB can use two clocks and two clock enable signals. The clock and clock enable
signals of each LAB are linked. For example, any LE in a particular LAB using the
labclk1 signal also uses the labclkena1. If the LAB uses both the rising and falling
edges of a clock, it also uses both LAB-wide clock signals. Deasserting the clock
enable signal turns off the LAB-wide clock.
Krys
Цитата(Shivers @ Jun 17 2015, 17:13) *
А вот у циклона вполне опредленно нарисовано, что такой связи нет. Т.е. внутри Programmable Register встроен именно clock-gate. Но не такой , как вы нарисовали (левый рисунок из вашего поста от 22 мая), а еще и с защелкой по уровню
Скажите, пожалуйста, откуда информация про "вполне определённо" (датащит и страницу желательно) и откуда приведённая картинка?


Цитата(Shivers @ Jun 17 2015, 17:13) *
Можете посмотреть, какие еще бывают варианты схематехники http://www.pldworld.com/html/technote/Tour_of_PLDs.htm
А это всё не устарело? Так уже может и не делают в современных FPGA...



Цитата(dvladim @ Jun 17 2015, 23:10) *
Именно так и сделано, что и подтверждается тем же даташитом, но про глобальные сигналы LAB-а:
Код
Each LAB can use two clocks and two clock enable signals. The clock and clock enable
signals of each LAB are linked. For example, any LE in a particular LAB using the
labclk1 signal also uses the labclkena1. If the LAB uses both the rising and falling
edges of a clock, it also uses both LAB-wide clock signals. Deasserting the clock
enable signal turns off the LAB-wide clock.
Да ничего это толком не подтверждает. Возможно фраза Deasserting the clock
enable signal turns off the LAB-wide clock.
приведена тут иносказательно, чтобы было образное понимание работы. Потому что по своему логическому действию сигнал CE делает отключение клока. А как это реализовано физически - 2 варианта выше.
Аналогичная песня и у хилых: тактовый сигнал и разрешение общие для всего слайса, это там называется control set, поэтому нельзя разные триггеры одного слайса подключать к разным цепям управления. Из-за этого в некоторых проектах возникает предел по утилизации слайсов, хотя реально они заняты далеко не все. Но из-за указанного ограничения триггеры приходится раскидывать по одному в разные слайсы, кпд 25% )))
Shivers
Цитата(Krys @ Jun 18 2015, 05:38) *
Скажите, пожалуйста, откуда информация про "вполне определённо" (датащит и страницу желательно) и откуда приведённая картинка?

Название разрешающего сигнала с левой картинки Serhiy_UA выше. clkena называется, что говорит о использовании гейта.
Гейтованный клок работает как мультиплексор на данные (о чем писал и Serhiy_UA на прошлой странице), но потребляет меньше, поскольку меньше триггеров переключается.

А картинка просто из гугла. Такие склок гейты сейчас повсеместно используются в суб-100нм библиотеках.

Цитата(Krys @ Jun 18 2015, 05:38) *
А это всё не устарело? Так уже может и не делают в современных FPGA...

Устарело конечно. Но для расширения кругозора может оказаться любопытным
Serhiy_UA
Цитата(Krys @ Jun 17 2015, 12:45) *
...Если нетрудно, можно примерчик (я так понял, Вам всё равно в академических целях примерчики потребуются). Думаю, при применении идеологии синхронного дизайна термин "гонки" должен отсутствовать как класс, поэтому я про него и думать уже давно забыл.

Полностью согласен, что, проектируя FSM на ПЛИС эти подробности никому не нужны, там все работает как надо, главное не ошибаться А на рассыпной логике уже никто подобное не делает. Все это только для уяснения некоторых тонкостей по данной теме…
На прилагаемом рисунке, представлены три варианта.
На первом изображены четыре эпюры. Общий для конечного автомата и операционного устройства тактовый сигнал Clk. По фронту этого сигнала последовательно меняется внутреннее состояние КА (или выбираются микрокоманды). В n-ом состоянии формируется сигнал микрооперации MOi, и ее единичный сигнал поступает на вход ENA одного из триггеров в ОУ, и микрооперация по фронту тактируется в этом D-триггере. Пока все нормально, но допустим, после MK n+1 возникают гонки на переходных процессах (комбинационные схемы часто гоняются без противогоночного кодирования), и формируется ложный пик на линии MOi. Так как в этот момент Clk единичный, может произойти неверная запись в D-триггер, т.е. глюк.
На втором рисунке уже два тактовых сигнала, один для КА, а другой для ОУ, они сдвинуты относительно друг друга и не перекрываются (многофазная синхронизация), За счет этого глюк не проходит и здесь все в норме.
На третьем рисунке уже используется триггер с коммутатором на входе, благодаря этому там всегда все нормально и достаточно одной фазы тактового сигнала.
Krys
Цитата(Shivers @ Jun 18 2015, 14:45) *
Название разрешающего сигнала с левой картинки Serhiy_UA выше. clkena называется, что говорит о использовании гейта.
Это говорит о его функциональном назначении, но не о способе реализации. А реализовано это может быть двумя способами, про которые было выше.


Цитата(Shivers @ Jun 18 2015, 14:45) *
Гейтованный клок работает как мультиплексор на данные
В каком плане они похоже, я чото не понял? А то выглядит примерно как "работает почти как это, но совсем не так" )))
Shivers
Цитата(Krys @ Jun 18 2015, 12:55) *
Это говорит о его функциональном назначении, но не о способе реализации. А реализовано это может быть двумя способами, про которые было выше.
В каком плане они похоже, я чото не понял? А то выглядит примерно как "работает почти как это, но совсем не так" )))

Между разрешением записи и разрешением тактирования две большие разницы. А результат похожий: выход переключается только при разрешении.

Цитата(Serhiy_UA @ Jun 18 2015, 11:56) *
На прилагаемом рисунке, представлены три варианта.

Первые два рисунка никуда не годятся. С помощью логики никто клок давно уже не пережимает - используют защелку, которая и маскирует переходной процесс который вы показали.

Посмотрите мой рисунок: защелка находится в хранении по высокому уровню клока, и прохрачна по низкому. В результате по высокому уровню глитч пройти не может. А после защелки стоит уже логика, как у вас. В результате клок пережимается число и гладко -потребности в двупроводной синхронизации (как у вас на рисунке) не возникает.
dvladim
Цитата(Krys @ Jun 18 2015, 05:38) *
Да ничего это толком не подтверждает. Возможно фраза Deasserting the clock
enable signal turns off the LAB-wide clock.
приведена тут иносказательно, чтобы было образное понимание работы.

Смотря что для Вас является подтверждением. Если это бумага с подписью, датой и печатью - то да, это не подтверждение. Если Вы считаете, что фраза тут приведена иносказательно, то можно считать, что и схема регистра приведена "иносказательно".
Однако, я, проанализировав аналогичные фразы из даташитов циклонов и стратиксов разных серий, а также подумав как можно построить подобный узел с минимальным количеством элементов и потреблением, пришел к выводу, который и озвучил.
Дальше дело каждого какую из реализаций считать логичной, приемлемой и т.д. Логически они эквивалентны.
Serhiy_UA
Цитата(Shivers @ Jun 18 2015, 16:12) *
Посмотрите мой рисунок: защелка находится в хранении по высокому уровню клока, и прохрачна по низкому. В результате по высокому уровню глитч пройти не может. А после защелки стоит уже логика, как у вас. В результате клок пережимается число и гладко -потребности в двупроводной синхронизации (как у вас на рисунке) не возникает.

Спасибо, разобрался! В свое время я этой схемы не знал, да и понял только сейчас.
То есть, здесь уже имеются два альтернативных варианта. Двухвходовой мультиплексор перед входом D, и схема с защелкой с последующим gated_clk перед входом C.
Чему в ПЛИС сейчас отдают предпочтение? Все таки ключ перед входом С хоть и маленькая, но задержка, уже в схеме тактирования.
Krys
Цитата(Serhiy_UA @ Jun 18 2015, 15:56) *
На третьем рисунке уже используется триггер с коммутатором на входе, благодаря этому там всегда все нормально и достаточно одной фазы тактового сигнала.
Да тут тоже только иллюзия, что "всё нормально": предположим, ваша иголка сигнала ENA попала на фронт клока, на триггере возникнет метастабильность. Регистр состояния состоит из нескольких триггеров, на несколько тактов вперёд гарантировано непредсказуемое состояние...

В сухом неутешительном остатке: ни одна из схем не защищена от метастабильности на 100% при неправильном с ней обращении. Чтобы от метастабильности защититься нужно в любой из схем гарантировать отсутствие смены управляющих сигналов вблизи фронта клока. В ПЛИС это автоматически делает STA, учитывая задержки по каждой цепи. В рассыпухе - остаётся работать на частотах с периодом, много большим задержек переключения и прохождения сигналов... Ну либо тоже что-то выдумывать и рассчитывать время прохождения.


Цитата(Shivers @ Jun 18 2015, 19:12) *
Посмотрите мой рисунок: защелка находится в хранении по высокому уровню клока, и прохрачна по низкому. В результате по высокому уровню глитч пройти не может.
Не может. Но если он придётся на фронт клока, то может привести этот вспомогательный триггер в метастабильное состояние, и к следующему клоку триггер может ещё не очухаться, передав метастабильное состояние на основной триггер. А если и не передав, то снизив вероятность записи в основной триггер: может записать, а может и не записать, фиг его знает. КА будет сбоить.

Вывод аналогичен - просто не надо доводить до того, что иголка может появиться в момент фронта клока.
Krys
Цитата(Serhiy_UA @ Jun 19 2015, 11:06) *
Все таки ключ перед входом С хоть и маленькая, но задержка, уже в схеме тактирования.
Вот именно!


Цитата(dvladim @ Jun 18 2015, 23:40) *
а также подумав как можно построить подобный узел с минимальным количеством элементов и потреблением, пришел к выводу, который и озвучил
Вот если кто-то видел где-то в доках рекомендацию использовать слайсовый CE для уменьшения потребления, то это и будет неоспоримым доказательством его прямой реализации как отключение тактовой, а не как мультиплексор на входе данных.
Serhiy_UA
Есть книга "The Art of Hardware Architecture: Design Methods and Techniques for Digital". Автор: Mohit Arora.
Всю пока не нашел, но ее часть, что в приложении, очень даже по этой теме. В частности, стр. 30, 31 и 37.


Еще она здесь: https://books.google.com.ua/books?id=uEs8Jb...2op&f=false
dvladim
Цитата(Serhiy_UA @ Jun 19 2015, 07:06) *
Чему в ПЛИС сейчас отдают предпочтение? Все таки ключ перед входом С хоть и маленькая, но задержка, уже в схеме тактирования.

Предпочтение отдают clock enable, а задержка - да хрен с ней, главное что бы одинаково было. Задержка по клоковому дереву может запросто превышать несколько тактов.

Цитата(Krys @ Jun 19 2015, 12:28) *
Вот если кто-то видел где-то в доках рекомендацию использовать слайсовый CE для уменьшения потребления, то это и будет неоспоримым доказательством его прямой реализации как отключение тактовой, а не как мультиплексор на входе данных.

А я смотрю Вы упёртый. Вот выдержка из доков по стратиксу 4 (по-моему очевидно):
Цитата
Clocks represent a significant portion of dynamic power consumption due to their
high switching activity and long paths. The LAB clock that distributes a clock
signal to registers within an LAB is a significant contributor to overall clock power
consumption. Each LAB’s clock and clock enable signal are linked. For example, a
combinational ALUT or register in a particular LAB using the labclk1 signal also
uses the labclkena1 signal. To disable LAB-wide clock power consumption
without disabling the entire clock tree, use LAB-wide clock enable to gate the
LAB-wide clock. The Quartus II software automatically promotes register-level
clock enable signals to the LAB-level. All registers within the LAB that share a
common clock and clock enable are controlled by a shared, gated clock. To take
advantage of these clock enables, use a clock-enable construct in your HDL code
for the registered logic.
Krys
Да, упёртый ) Но Вы меня убедили. Действительно говорится о снижении потребления. Интересно бы найти то же самое для хилых, вдруг технологии разные.
dvladim
Умеренная упёртость, я считаю, полезна. Позволяет добраться до деталей.
По поводу хилых. Когда они сделали виртексы 7, то там в статьях много говорилось о снижении потребления. И это не только задача железа, но и софта. Позиционировалось что в современных ПЛИС элементов уже столько, и частоты такие, что основным ограничивающим фактором является потребляемая мощность. И что все эти технологии снижения потребления позволяют разместить больше элементов (т.е. увеличить проект).
Krys
Новое развитие получила тема снижения энергопотребления:
Цитата(blackfin @ Aug 26 2015, 14:00) *
Quartus II Handbook Version 15.0.0, page 738:
Цитата
From a functional point of view, you can shut down a clock domain in a purely synchronous manner using a synchronous clock enable signal.
However, when using a synchronous clock enable scheme, the clock network continues toggling.
This practice does not reduce power consumption as much as gating the clock at the source does.


Получается, не всё так однозначно хорошо у всех ПЛИС с применением Clock Enabke, как мы это сначала порешали.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.