本文提供用Verilog設計秒脈衝發生器的代碼,且在Basys2開發板上驗證通過,本代碼產生的脈衝週期爲1s,可通過改變if語句中的m的判定值來改變脈衝週期。
代碼如下:
module pps_1(
input wire clr,//手動復位
input wire clk,//外部時鐘,所用時鐘爲50MHz,週期近似爲20ns
output reg q//脈衝信號
);
reg [25:0] m;//用於時間計數
//reg n;
//initial n=0;
initial m=26'b0;
always@(posedge clk or posedge clr)//計數,若m=25000000,q取非
begin
if(clr==1)
m<=0;
else if(m==25000001)//可通過更改條件值改變脈衝週期
m<=0;
else
m<=(m+1);
end
always@(posedge clk)
begin
if(m==25000000) //可通過更改條件值改變脈衝週期
q<=!q;
else
q<=q;
end
endmodule
約束條件如下:
NET"clr"LOC=P11;
NET"clk"LOC=B8;
NET"q"LOC=M5;
若有問題可以評論,我儘量回覆,覺得有用就點個贊~