Epikur 0 6 февраля, 2012 Опубликовано 6 февраля, 2012 · Жалоба Добрый день. Прошу прощения, если этот вопрос где-то рассматривался, но у меня просто не получается сформулировать правильный поисковой запрос на эту тему :) Есть два описания триггера с асинхронным сбросом на VHDL. TRIGGER_ONE: process (Reset, Clock) begin if Reset = '1' then Q_out <= '0'; elsif rising_edge(Clock) then Q_out <= D_in; end if; end process; TRIGGER_TWO: process (Reset, Clock) begin if Reset = '1' then Q_out <= '0'; elsif rising_edge(Clock) and Reset = '0' then Q_out <= D_in; end if; end process; Вопрос такой: отличаются ли эти два описания по потреблению энергии на кристалле, пусть даже незначительно? Если таких триггеров тысячи, то может набежать немаленькая разница. По моим представлениям, если на входе CE триггера есть запрещающий низкий уровень, то сигнал тактовой частоты отключается от остальной схемы триггера, и триггер потребляет немножко меньше энергии, даже если сигнал на входе данных D_in не меняется. Но я не уверен, что прав на этот счёт. Насколько влияет на схему активный сигнал асинхронного сброса с точки зрения энергопотребления? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shamil 2 6 февраля, 2012 Опубликовано 6 февраля, 2012 · Жалоба Вопрос такой: отличаются ли эти два описания по потреблению энергии на кристалле, пусть даже незначительно? Если Вы внимательно посмотрите на то, что написали, то увидите, что второй вариант, вообще, ничем не отличается от первого. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Epikur 0 7 февраля, 2012 Опубликовано 7 февраля, 2012 · Жалоба Функционально они ничем не отличаются, и сигнал Reset, который попадает во втором варианте на вход ClockEnable триггера избыточен. Однако его наличие может сказываться на потребление энергии триггером. В случае, когда Reset большую часть времени активен, к примеру. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 3 7 февраля, 2012 Опубликовано 7 февраля, 2012 · Жалоба Функционально они ничем не отличаются, и сигнал Reset, который попадает во втором варианте на вход ClockEnable триггера избыточен. Наверно также подумает и синтезатор и не задействует ClockEnable. В железе обе рализации должны быть идентичны. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shamil 2 7 февраля, 2012 Опубликовано 7 февраля, 2012 · Жалоба сигнал Reset, который попадает во втором варианте на вход ClockEnable триггера... Почему Вы считаете, что во втором случае будет использован тригер с разрешением счета ? Попробуйте прогнать оба варианта через синтезатор, я уверен, что на выходе получится одно и тоже: D-тригер с асинхронным сбросом. Я не работаю с VHDL и проверить не могу, к сожалению. На Veriloge это синтезируется в один и тот же тригер. По моим представлениям, если на входе CE триггера есть запрещающий низкий уровень, то сигнал тактовой частоты отключается от остальной схемы триггера... В тех ПЛИС что я использую, сигнал тактовой частоты никогда не отключается от входа тригера. Разрешение счета реализуется установкой мультиплексора на D входе, который, при запрете счета, подает на вход тригера сигнал с его же выхода. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Poluektovich 0 7 февраля, 2012 Опубликовано 7 февраля, 2012 · Жалоба Epikur, чтобы снизить потребление при неактивном enable нужно использовать clock gating cell, а эти описания синтезируются одинаково. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Epikur 0 7 февраля, 2012 Опубликовано 7 февраля, 2012 · Жалоба Epikur, чтобы снизить потребление при неактивном enable нужно использовать clock gating cell, а эти описания синтезируются одинаково. Спасибо! Да, действительно убедился, что синтезатор всё равно не пихает инвертированную копию сигнала Reset на ClockEnable. К тому же в процессе чтения разных материалов по теме обнаружил, что на нужном мне кристалле (спартаны) D-триггер может быть сконфигурирован как для асинхронных сброса-предустановки, так и для синхронных. Раньше я думал почему-то, что триггеры все асинхронные, а цепи синхронного сброса/предустановки синтезируются дополнительной логикой перед D-входом триггера. И в синхронном режиме сброс имеет приоритет над предустановкой, и оба - над ClockEnable. Это "открытие" практически снимает проблему, так как реально сброс у меня всё равно синхронен тактовой частоте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mttphreak 0 11 февраля, 2012 Опубликовано 11 февраля, 2012 · Жалоба Если Вы внимательно посмотрите на то, что написали, то увидите, что второй вариант, вообще, ничем не отличается от первого. Справедливости ради, можно было показать, что оба флопа синтезируются в одну и ту же конструкцию (см. рисунок). Единсвенным подозрительным моментом тут есть INV (Reset). Так что если ваш design = десяток флопов, то тут можно еще подумать, но если вы делаете SOC на 100M+ gates, эти INV фигня по сравнению с тем, что инсертит Tool во время Clock Tree Synthesis PS: If Low Power is a REAL concern for you, find my next topic on Low Power Implementation Techniques Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться