天天看點

門控時鐘:Clock fating1.門控時鐘定義2.普通門控時鐘電路3.改進的門控電路  4.生成寄存器門控的代碼風格

1.門控時鐘定義

門控時鐘是低功耗設計的一種方法,在資料無效時将寄存器的時鐘關閉,以此來降低動态功耗。主要應用于低功耗領域。具體實作為:在寄存器輸入資料無效時,将寄存器輸入時鐘置0。 門控時鐘在 ASIC 中使用較多,在 FPGA 使用較少,使用門控時鐘會影響時序分析。

2.普通門控時鐘電路

1.與門門控

CLK上升沿有效,en為高電平時,時鐘開啟,為了避免輸出時鐘不完整,en應該在低電平跳變,否則門控時鐘輸出品質變差,比如占空比不良或産生毛刺。

門控時鐘:Clock fating1.門控時鐘定義2.普通門控時鐘電路3.改進的門控電路  4.生成寄存器門控的代碼風格

2.或門門控

CLK下降沿有效,en為高時,時鐘開啟,為了避免輸出時鐘不完整,en應該在高電平跳變。 否則門控時鐘輸出品質變差,比如占空比不良或産生毛刺。

門控時鐘:Clock fating1.門控時鐘定義2.普通門控時鐘電路3.改進的門控電路  4.生成寄存器門控的代碼風格

 是以:

    對上升沿有效的 clk,使用與門進行門控,ena 使能信号跳變隻能發生在時鐘的低電平區;

    對下降沿有效的 clk,使用或門進行門控,ena 使能信号跳變隻能發生在時鐘的高電平區;

3.改進的門控電路 

 已知,要想提高輸出時鐘品質,en信号需要在特定的電平區才能發生跳變,如何控制en在特定條件下跳變?以下給出了鎖存門控與寄存門控兩種方法:

3.1鎖存門控

對于與門門控,需要控制en在低電平跳變,是以使用鎖存器對en進行鎖存,clk取反作為鎖存器使能端 。

門控時鐘:Clock fating1.門控時鐘定義2.普通門控時鐘電路3.改進的門控電路  4.生成寄存器門控的代碼風格

同理,對于或門門控,要使en跳變發生在clk的高電平區間,也要對en信号鎖存,使用clk信号作為鎖存器使能端。

門控時鐘:Clock fating1.門控時鐘定義2.普通門控時鐘電路3.改進的門控電路  4.生成寄存器門控的代碼風格

 盡管鎖存門控可以消除毛刺,但是en信号是一個異步信号,en變化時可能會不滿足鎖存器的建立時間或保持時間,進而造成輸出亞穩态。此外,如果鎖存器和與門相隔很遠,到達鎖存器的時鐘與到達與門的時鐘有較大的延遲,則仍會出現毛刺。

3.2寄存門控

 将鎖存門控的鎖存器換成D觸發器即可。

門控時鐘:Clock fating1.門控時鐘定義2.普通門控時鐘電路3.改進的門控電路  4.生成寄存器門控的代碼風格

 4.生成寄存器門控的代碼風格

always@(posedge clk or negedge rst_n)begin
  if(!rst_n)
    data_out<=0;
  else if(data_vld)//該if是實作門控的主要代碼
    data_out<=data_in;
end
           
門控時鐘:Clock fating1.門控時鐘定義2.普通門控時鐘電路3.改進的門控電路  4.生成寄存器門控的代碼風格

 注意:下面的代碼不能實作門控時鐘

always@(posedge clk or negedge rst_n)
if(!rst_n)
  data_out<=8’b0;
else if(data_vld)
   data_out<=data_in;
else
    data_out<=8’b0;//該else多餘,因為寄存門控實作的功能是,當使能信号無效時,輸出不變,而非置零。
           

繼續閱讀