开头,也感谢各位朋友关注!
看到了一些interesting的题,和大家分享一下,如果大家有什么额外的见解欢迎大家公众号后台留言!
题目:
修改下面的电路,使其功耗最小,同时保持功能不变
怎么做暂且不讲,老样子,容我先念叨一下这类题的原理!
首先要明确的是:
在同步数据电路设计中,降低动态功耗最有效以及使用最广的技术是在默写指定区域数据流的特定阶段在不需要时钟处于活动状态时禁止时钟活动,因为FPGA的功耗大多数是与系统时钟的翻转有关,所以临时性的停止系统设计中某些处于非活动区域的时钟往往是最小化这类功耗最直接的方法。为了达成此目的,有两种推荐方法,一种是在触发器中使用时钟使能,另外一种是使用全局时钟多路选择器(Xilinx器件中称为BUFGMUX单元)。
怎么做:
本案例中,在EN==1时,D触发器的输出是一个翻转信号,在EN==0时,D触发器的输出进行保持,所以使用门控时钟使能的方式:
代码:
代码语言:javascript复制module gh(
input D,
input EN,
input clk,
output reg Q
);
wire clk1;
assign clk1=EN&clk;
always@(posedge clk1)
Q<=D;
endmodule
电路图:
~~~~感谢阅读~~~~谢谢!