我目前正在创建一个多实体项目,其中所有实体都具有时钟同步架构(无行为),并且大多数实体都在派生时钟上工作。 我正在使用DE0 Nano,所以我的源时钟是50MHz,我有4个派生时钟:1 MHz,500 kHz,10 Hz和1 Hz。
Disclamer:虽然我知道以这种方式做事的能效要低得多,但我一直想知道是否有一些事情可以做到至少可以解决这个问题(我对这些想法持开放态度)。< / p>
现在,在顶级实体中,我有一个“事件处理程序”,它可以决定哪些实体应该在任何给定时刻工作。 因此,当我不需要给定实体工作一段时间时,我想出了将导出时钟输入信号的开/关时钟开关连接到较低级别实体并禁用其中一些(时钟输入)的想法。 (据我所知,这应该会阻止他们的进程在那段时间内被解雇)。
由于我没有简单的方法来测试这个想法(我估计需要花费大量的工作和时间,特别是设置功耗测量)我想问一下是否有人尝试过类似的东西和/或知道它是否值得一试?
为了您的信息,当前实体处于“休眠”模式时,它们的进程在每个上升的时钟边沿触发,检查内部状态或标记变量/信号并停止,例如:
process (1MHz clock) is
variable ...
begin
if rising_edge(clk) then
if state = ready and enable = '1' then
...
end if;
end if;
end process;
或许还有其他更好的方法吗?