Jump to content

    

Линия асинхронного сброса и потребление энергии

Добрый день.

 

Прошу прощения, если этот вопрос где-то рассматривался, но у меня просто не получается сформулировать правильный поисковой запрос на эту тему :)

 

Есть два описания триггера с асинхронным сбросом на 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 не меняется. Но я не уверен, что прав на этот счёт.

Насколько влияет на схему активный сигнал асинхронного сброса с точки зрения энергопотребления?

Share this post


Link to post
Share on other sites
Вопрос такой: отличаются ли эти два описания по потреблению энергии на кристалле, пусть даже незначительно?

Если Вы внимательно посмотрите на то, что написали,

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

 

Share this post


Link to post
Share on other sites

Функционально они ничем не отличаются, и сигнал Reset, который попадает во втором варианте на вход ClockEnable триггера избыточен. Однако его наличие может сказываться на потребление энергии триггером. В случае, когда Reset большую часть времени активен, к примеру.

Share this post


Link to post
Share on other sites
Функционально они ничем не отличаются, и сигнал Reset, который попадает во втором варианте на вход ClockEnable триггера избыточен.

 

Наверно также подумает и синтезатор и не задействует ClockEnable.

В железе обе рализации должны быть идентичны.

Share this post


Link to post
Share on other sites
сигнал Reset, который попадает во втором варианте на вход ClockEnable триггера...

Почему Вы считаете, что во втором случае будет использован тригер с разрешением счета ?

Попробуйте прогнать оба варианта через синтезатор, я уверен, что на выходе получится

одно и тоже: D-тригер с асинхронным сбросом.

Я не работаю с VHDL и проверить не могу, к сожалению. На Veriloge это синтезируется в один и тот же тригер.

 

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

В тех ПЛИС что я использую, сигнал тактовой частоты никогда не отключается от входа тригера.

Разрешение счета реализуется установкой мультиплексора на D входе, который, при запрете счета,

подает на вход тригера сигнал с его же выхода.

 

Share this post


Link to post
Share on other sites

Epikur, чтобы снизить потребление при неактивном enable нужно использовать clock gating cell, а эти описания синтезируются одинаково.

Share this post


Link to post
Share on other sites
Epikur, чтобы снизить потребление при неактивном enable нужно использовать clock gating cell, а эти описания синтезируются одинаково.

Спасибо!

 

Да, действительно убедился, что синтезатор всё равно не пихает инвертированную копию сигнала Reset на ClockEnable.

К тому же в процессе чтения разных материалов по теме обнаружил, что на нужном мне кристалле (спартаны) D-триггер может быть сконфигурирован как для асинхронных сброса-предустановки, так и для синхронных. Раньше я думал почему-то, что триггеры все асинхронные, а цепи синхронного сброса/предустановки синтезируются дополнительной логикой перед D-входом триггера. И в синхронном режиме сброс имеет приоритет над предустановкой, и оба - над ClockEnable. Это "открытие" практически снимает проблему, так как реально сброс у меня всё равно синхронен тактовой частоте.

Share this post


Link to post
Share on other sites
Если Вы внимательно посмотрите на то, что написали,

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

 

Справедливости ради, можно было показать, что оба флопа синтезируются в одну и ту же конструкцию (см. рисунок). Единсвенным подозрительным моментом тут есть 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this