Jump to content
    

Тактирование схем производным сигналом

и можно считать, что состояние на выходе "защелкнется" быстрее, чем установится новое на входе? А если нет, то Time Analyzer сообщит мне об этом?

Да. Сами триггеры ведь переключаются не мгновенно (а с задержкой распространения). И пока переключится предыдущий триггер, следующий уже воспримет то, что предыдущий выдавал до переключения.

И, как уже говорили (и я надеюсь, это 100% верно), сами программы-раскладчики строго выполняют требования, чтобы изменение данных на входе триггера не происходило раньше фронта тактового сигнала. Для того и существуют специальные цепи для распространения тактовых сигналов в ПЛИС.

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

Share this post


Link to post
Share on other sites

Я прямо вижу луч света, озаряющий дебри моего сознания

 

ViKo, то есть когда я использовал оба фронта, то по сути проект работал на удвоенной частоте? Значит, для получения той же скорости обработки данных, при работе всех триггеров по одному фронту, потребуется увеличить частоту в 2 раза? Или это все зависит от проекта и проч? Вообще есть ли какие то выгоды от использования обоих фронтов, или это только лишняя головная боль?

Share this post


Link to post
Share on other sites

то есть когда я использовал оба фронта, то по сути проект работал на удвоенной частоте?

Ну, можно как-то и так думать. Точнее - времени для работы оставалось только половина периода.

И если такой проект работал, то если перевести всю схему на переключение только по одному фронту тактов, можно надеяться, что быстродействие всей схемы удвоится. И можно будет подавать тактовую частоту в два раза больше. Если нужно, конечно. Иначе, зачем? Только ток жрать зря.

И большие зазоры (slacks) по предустановке и удержанию будут придавать спокойствия, что проект будет работать при любых условиях без сбоев.

От обоих фронтов выгод нет. ("За рубежом грибных лесов нет!"). В ПЛИС уж точно. На рассыпной логике, когда сигналы по плате бегают неизвестно как, можно "поизвращаться" с фронтами. Если требования ко временам предустановки и удержания для каких-то микросхем слишком уж тяжелые специфические.

Share this post


Link to post
Share on other sites

Очень содержательный ответ :-)

 

А как лучше делать, если нужны буферы по переднему и по заднему?

Забыть про тактирование по разным фронтам. Это плохо как минмум потому что :

1. Времянка по сравнению с обычным тактированием в два раза хуже получается при переходе с одного фронта к другому - об этом вам уже писали.

2. Отладка такого кода, использование другими разработчиками в своих проектах значительно усложняется.

3. Там где действительно нужна работа по двум фронтам (ДДР интерфейсы, к примеру) на пинах у производителей специально предусмотрены ДДР триггеры.Используйте их. Внутри ПЛИС сразу же распараллеливайте такие шины в 2 раза и работайте по одному фронту.

4. Какой смысл в таких финтах? Большинство алгоритмов допускает конвеерную задержку, т.е. "овчинка выделки не стОит".

 

Share this post


Link to post
Share on other sites

Ага, понял.

Просто мне так объясняли на работе, я так и делал. Теперь буду делать по уму, всем спасибо!

 

По поводу времянок, да задержка сокращается в 2 раза и получается, что я работаю на скорости в "полтакта", т.е. как будто частота в 2 раза выше.

Но физическое повышение частоты в 2 раза приведет к увеличению энергопотребления, разве не так?

Share this post


Link to post
Share on other sites

По поводу времянок, да задержка сокращается в 2 раза и получается, что я работаю на скорости в "полтакта", т.е. как будто частота в 2 раза выше.

Но физическое повышение частоты в 2 раза приведет к увеличению энергопотребления, разве не так?

Вы сами себя запутываете - не частота в два раза выше, а схема работает в 2 раза медленнее!

Средняя потребляемая мощность останется та же. Отличия будут в импульсе тока на момент переключения триггеров.

Share this post


Link to post
Share on other sites

Можно здесь несколько поподробней? А конкретно о триггере для переброса данных с одного клока на другой? Когда ставится, чем тактируется, было бы замечательно если бы Вы привели небольшой пример (можно фрагмент на verilog). Спасибо!

Мне когда-то это очень помогло, спасибо тому человеку - читать тут

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...