原理是将板载时钟进行改变。
module timer_500ms(input clk,output reg clk_500ms);
reg [24:0] cnt;//要表示的最大的数是12500500initial begin//initial语句:此语句只执行一次。
cnt [24:0] <=0;//<=是非阻塞性赋值clk_500ms <= 0;
endalways@(posedge clk)//上升沿触发循环,板载时钟是50MHzif(cnt>=12_500_000) begin//忽略下划线,12_500_000/50MHZ=0.25s
cnt<=0;clk_500ms <= ~clk_500ms;//0.25S发生一次变化,产生脉冲信号
endelse begincnt<=cnt+1;end
endmodule