?? confirmpulse.v
字號:
/***************************************************************************************
實現功能簡述
本模塊主要功能是產生一個確定時鐘周期長度(最長為256個時鐘周期)的脈沖信號,可以自己設定脈沖長度,輸出的脈沖信號與時鐘上升沿同步
脈沖寬度 = pulsewide + 1 時鐘周期;
輸入一個啟動信號后,可以產生一個固定時鐘周期長度的脈沖信號,與啟動信號的長短無關!脈沖寬度可調!
1、可以調整輸出脈沖寬度
2、只要輸入一個啟動信號,不論啟動信號寬度——需要能夠觸發設計,就輸出脈沖
3、再輸出一個完整的脈沖過程中,不論輸入多少個啟動信號,都只會輸出一個脈沖
4、不論啟動脈沖的寬度多大,輸出的脈沖寬度恒定
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
***************************************************************************************/
module confirmpulse ( clk, reset, start, pulse, pulsewide );
input clk, reset, start;
input [7:0] pulsewide;
output pulse;
reg pulse;
reg counten;
reg [7:0] count;
//計數器啟動標記,表示一次延時計數開始
always @ ( posedge clk )
begin
if (!reset)
counten <= 1'b0;
else
begin
if ( start == 1'b1 )
counten <= 1'b1;
else if ( start == 1'b0 && count > pulsewide )
counten <= 1'b0;
end
end
//延時計數器,保證延時 pulsewide 個時鐘周期
always @ ( posedge clk )
begin
if (!reset)
count <= 8'b00000000;
else
begin
if ( counten == 1'b0 )
count <= 8'b00000000;
else if ( counten == 1'b1 && count <= pulsewide )
count <= count + 1'b1;
else if ( counten == 1'b0 && start == 1'b0 )
count <= 8'b00000000;
end
end
//輸出定寬脈沖
always @ ( negedge clk )
begin
if ( reset == 1'b0 || count >= pulsewide )
pulse <= 1'b0;
else if ( counten == 1'b1 )
pulse <= 1'b1;
end
endmodule
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -