時鐘使能電路是同步設(shè)計的重要基本電路,在很多設(shè)計中,雖然內(nèi)部不同模塊的處理速度不同,但是由于這些時鐘是同源的,可以將它們轉(zhuǎn)化為單一的時鐘電路處理。在FPGA的設(shè)計中,分頻時鐘和源時鐘的skew不容易控制,難以保證分頻時鐘和源時鐘同相。故此推薦采用使用時鐘使能的方法,通過使用時鐘使能可以避免時鐘“滿天飛”的情況,進(jìn)而避免了不必要的亞穩(wěn)態(tài)發(fā)生,在降低設(shè)計復(fù)雜度的同時也提高了設(shè)計的可靠性。
我們可以利用帶有使能端的D觸發(fā)器來實現(xiàn)時鐘使能的功能。

在上圖中clk1x是CLK的四分頻后產(chǎn)生的時鐘,clk1x_en是與clk1x同頻的時鐘使能信號,用clk1x_en作為DFF的使能端,D端的數(shù)據(jù)只有在clk1x_en有效地時候才能打入D觸發(fā)器,從而在不引入新時鐘的前提,完成了下圖電路一致的邏輯功能。

在某系統(tǒng)中,前級數(shù)據(jù)輸入位寬為8,而后級的數(shù)據(jù)輸出位寬32,我們需要將8bit的數(shù)據(jù)轉(zhuǎn)換成32bit的數(shù)據(jù),因此后級處理的時鐘頻率為前級的1/4,若不使用時鐘時能,則就要將前級時鐘進(jìn)行4分頻來作為后級處理的時鐘,這種設(shè)計方法會引入新的時鐘域,為了避免這種情況,我們采用了時鐘時能的方法來減少設(shè)計的復(fù)雜度。
module gray
(
input clk,
input rst_n,
input [7:0] data_in,
output reg [31:0] data_out,
output reg clk1x_en
);
reg [1:0] cnt;
reg [31:0] shift_reg;
always @ (posedge clk,negedge rst_n)
begin
if(!rst_n)
cnt <= 2'b0;
else
cnt <= cnt +1'b1;
end
always @ (posedge clk,negedge rst_n)
begin
if(!rst_n)
clk1x_en <= 1'b0;
else if(cnt ==2'b01)
clk1x_en <= 1'b1;
else
clk1x_en <= 1'b0;
end
always @ (posedge clk,negedge rst_n)
begin
if(!rst_n)
shift_reg <= 32'b0;
else
shift_reg <= {shift_reg[23:0],data_in};
end
always @ (posedge clk,negedge rst_n)
begin
if(!rst_n)
data_out<= 32'b0;
else if(clk1x_en==1'b1)//僅在clk1x_en為1時才將shift_reg的值賦給data_out
data_out<=shift_reg;
end
endmodule

編輯:hfy
-
FPGA
+關(guān)注
關(guān)注
1650文章
22220瀏覽量
628089 -
D觸發(fā)器
+關(guān)注
關(guān)注
3文章
180瀏覽量
49449 -
時鐘電路
+關(guān)注
關(guān)注
10文章
245瀏覽量
52009
發(fā)布評論請先 登錄
瑞薩RA系列FSP庫開發(fā)實戰(zhàn)指南(29)CGC(時鐘生成電路)時鐘控制
PLL技術(shù)在FPGA中的動態(tài)調(diào)頻與展頻功能應(yīng)用
Leadway電源模塊的使能信號是如何作用的
電容在時鐘電路中的應(yīng)用有哪些
時鐘電路的組成與設(shè)計要點介紹
FPGA時序約束之設(shè)置時鐘組

FPGA的設(shè)計中的時鐘使能電路
評論