门控时钟设计002—门控时钟模块使用

2019-04-14 17:29发布

门控时钟设计002—门控时钟模块 Gvi在IC设计中,经常会用掉门控时钟单元,在不使用某些模块的时候使用门控时钟单元锁定时钟,使得时钟不跳变,从而降低功耗。 1、门控时钟单元代码verilog 模块输入信号分别为输入时钟,clk_in,输出时钟clk_out,使能信号en。 当使能信号en==1时,表示时钟不锁定,输入信号直接输出,模块功能类似:assign clk_in = clk_out。 当使能信号en==0时,表示时钟锁定,输出时钟不跳变。 xxxxx_phy_lib_name是后端厂商提供的定制时钟门控单元 2、门控时钟单元使用注意事项: 1)使能信号en可配置,复位默认值必须为1, 2)驱动en的时钟不能是被锁定后的时钟,即驱动信号的时钟要求永远是存在的 module clk_gate ( input clk_in , input clk_en, output clk_out ); `ifdef ASIC_DESIGN wire clk_out ; xxxxx_phy_lib_name xxxxx_phy_lib_name_u0 ( .O (clk_out ), .phi (clk_in ), .io (1'b0 ), .i1 (clk_en ) ); else `ifdef FPGA_DESIGN assign clk_out = clk_in ; else reg clk_en_d1 ; wire clk_out ; always@(*) begin if(!clk_in) clk_en_d1=clk_en ; end assign clk_out= clk_en_d1&clkin; `endif `endif endmodule