本文提供用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;
若有问题可以评论,我尽量回复,觉得有用就点个赞~