ПЛИС Приостановит ли пауза объекты (делая паузу на входе тактовых импульсов) общее энергопотребление? - PullRequest
0 голосов
/ 05 мая 2018

В настоящее время я создаю проект с несколькими объектами, в котором все объекты имеют синхронизирующую синхронизацию архитектуру (без поведенческих характеристик), и большинство объектов работают с производными часами. Я использую DE0 Nano, поэтому мой тактовый генератор составляет 50 МГц, и у меня есть 4 производных тактовых сигнала: 1 МГц, 500 кГц, 10 Гц и 1 Гц.

Disclamer: хотя я осознаю, что такие действия гораздо менее энергоэффективны, мне было интересно, можно ли что-нибудь сделать, чтобы хоть как-то это исправить (я открыт для идей).

Теперь в сущности верхнего уровня у меня есть «обработчик событий», который может решить, какие сущности должны работать в любой данный момент. Поэтому мне пришла в голову идея подключить переключатель часов включения / выключения для полученных входных сигналов часов к объектам более низкого уровня и отключить некоторые из них (входы часов), когда мне не нужен определенный объект для работы некоторое время. (как я понимаю, это должно помешать их процессам запускаться в течение этого времени).

Поскольку у меня нет простого способа проверить эту идею (я предполагаю, что это потребует умеренного объема работы и времени, особенно настройки измерения энергопотребления), я хотел спросить, пробовал ли кто-нибудь что-то подобное и / или знает стоит ли выстрел?

К вашему сведению, в настоящее время, когда сущности находятся в "спящем" режиме, их процессы запускаются по каждому нарастающему фронту тактовой частоты, проверяют внутреннее состояние или помечают переменную / сигнал и останавливаются, например ::

process (1MHz clock) is
    variable ...
begin
    if rising_edge(clk) then
        if state = ready and enable = '1' then
             ...
        end if;
    end if;
end process;

Или, может быть, есть другой, лучший способ сделать это?

...