時(shí)鐘使能電路是同步設(shè)計(jì)的基本電路。在很多設(shè)計(jì)中,雖然內(nèi)部不同模塊的處理速度不同,但由于這些時(shí)鐘是同源的,可以將它們轉(zhuǎn)化為單一時(shí)鐘處理。在ASIC中可以通過STA約束讓分頻始終和源時(shí)鐘同相,但FPGA由于器件本身和工具的限制,分頻時(shí)鐘和源時(shí)鐘的Skew不容易控制(使用鎖相環(huán)分頻是個(gè)例外),難以保證分頻時(shí)鐘和源時(shí)鐘同相,因此推薦的方法是使用時(shí)鐘使能,通過使用時(shí)鐘使能可以避免時(shí)鐘“滿天飛”的情況,進(jìn)而避免了不必要的亞穩(wěn)態(tài)發(fā)生,在降低設(shè)計(jì)復(fù)雜度的同時(shí)也提高了設(shè)計(jì)的可靠性。
禁止用計(jì)數(shù)器分頻后的信號做其它模塊的時(shí)鐘,而要用改成時(shí)鐘使能的方式。否則這種時(shí)鐘滿天飛的方式對設(shè)計(jì)的可靠性極為不利,也大大增加了靜態(tài)時(shí)序分析的復(fù)雜性。
帶使能端的D觸發(fā)器,比一般D觸發(fā)器多了使能端,只有在使能信號EN有效時(shí),數(shù)據(jù)才能從D端被打入D觸發(fā)器,否則Q端輸出不改變。
我們可以用帶使能端的D觸發(fā)器來實(shí)現(xiàn)時(shí)鐘使能的功能。
verilog模型舉例
在某系統(tǒng)中,前級數(shù)據(jù)輸入位寬為8位,而后級的數(shù)據(jù)輸出位寬為32,我們需要將8bit數(shù)據(jù)轉(zhuǎn)換為32bit,由于后級的處理位寬為前級的4倍,因此后級處理的時(shí)鐘頻率也將下降為前級的1/4,若不使用時(shí)鐘使能,則要將前級的時(shí)鐘進(jìn)行4分頻來作后級處理的時(shí)鐘。這種設(shè)計(jì)方法會引入新的時(shí)鐘域,處理上需要采取多時(shí)鐘域處理的方式,因而在設(shè)計(jì)復(fù)雜度提高的同時(shí)系統(tǒng)的可靠性也將降低。為了避免以上問題,我們采用了時(shí)鐘使能以減少設(shè)計(jì)復(fù)雜度。
例1:采用時(shí)鐘使能
module clk_en(clk, rst_n, data_in, data_out); input clk; input rst_n; input [7:0] data_in; output [31:0] data_out; reg [31:0] data_out; reg [31:0] data_shift; reg [1:0] cnt; reg clken; always @(posedge clk or negedge rst_n) begin if (!rst_n) cnt <= 0; else cnt <= cnt + 1; end always @(posedge clk or negedge rst_n) begin if (!rst_n) clken <= 0; else if (cnt == 2'b01) clken <= 1; else clken <= 0; end always @(posedge clk or negedge rst_n) begin if (!rst_n) data_shift <= 0; else data_shift <= {data_shift[23:0],data_in}; end always @(posedge clk or negedge rst_n) begin if (!rst_n) data_out <= 0; else if (clken == 1'b1) data_out <= data_shift; end endmodule
例2:采用分頻方法
module clk_en1(clk, rst_n, data_in, data_out);
input clk;
input rst_n;
input [7:0] data_in;
output [31:0] data_out;
reg [31:0] data_out;
reg [31:0] data_shift;
reg [1:0] cnt;
wire clken;
always @(posedge clk or negedge rst_n)
begin
if (!rst_n)
cnt <= 0;
else
cnt <= cnt + 1;
end
assign clken = cnt[1];
always @(posedge clk or negedge rst_n)
begin
if (!rst_n)
data_shift <= 0;
else
data_shift <= {data_shift[23:0],data_in};
end
always @(posedge clken or negedge rst_n)
begin
if (!rst_n)
data_out <= 0;
else
data_out <= data_shift;
end
endmodule
編輯:hfy
-
FPGA
+關(guān)注
關(guān)注
1660文章
22394瀏覽量
635409 -
asic
+關(guān)注
關(guān)注
34文章
1273瀏覽量
124451 -
Verilog
+關(guān)注
關(guān)注
30文章
1373瀏覽量
114459 -
時(shí)鐘
+關(guān)注
關(guān)注
11文章
1966瀏覽量
134895 -
D觸發(fā)器
+關(guān)注
關(guān)注
3文章
181瀏覽量
49690
發(fā)布評論請先 登錄
CDx4HC74 具有清零和預(yù)設(shè)功能的雙路D類正邊沿觸發(fā)的觸發(fā)器數(shù)據(jù)表
CD4013BNSR CMOS 雙通道 D 類觸發(fā)器
SN74HCS574QPWRQ1 8 通道 D 型觸發(fā)器
MC74VHCT374A Octal D型觸發(fā)器技術(shù)解析與應(yīng)用指南
?SN74AHCT374-Q1 汽車級八路邊沿觸發(fā)D型觸發(fā)器數(shù)據(jù)手冊摘要
?SN74LV8T273-Q1 汽車級八路D型觸發(fā)器數(shù)據(jù)手冊總結(jié)
?SN74LV8T273 八路D型觸發(fā)器技術(shù)文檔總結(jié)
Texas Instruments SN74HCT574八通道邊緣觸發(fā)D型觸發(fā)器數(shù)據(jù)手冊
Texas Instruments CD74AC174六路D型觸發(fā)器數(shù)據(jù)手冊
Texas Instruments CD74ACT174六路D型觸發(fā)器數(shù)據(jù)手冊
Texas Instruments SN74ACT174-Q1六路D型觸發(fā)器數(shù)據(jù)手冊
Texas Instruments SN74AC174-Q1六路D型觸發(fā)器數(shù)據(jù)手冊
ON Semiconductor MC14013BDTR2G 雙D型觸發(fā)器參數(shù)特性 EDA模型 數(shù)據(jù)手冊
verilog模型舉例:利用D觸發(fā)器實(shí)現(xiàn)時(shí)鐘使能
評論