实现一个led灯前0.5s点亮,后0.5s熄灭这样的状态。
首先画出系统框图和结构图。
计算1s的时间需要多少个时间间隔?
f=50MHz=5*10^4KHz=5*10^7Hz
t=1/f=1/5*10^7=2*10^-8=20ns
间隔的最大值M=1s/20ns=5*10^7
M-1=5*10^7-1
用代码实现:
module counter
#(
parameter CNT_MAX = 25'd24_999_999
)
(
input wire sys_clk , //系统时钟50Mhz
input wire sys_rst_n , //全局复位
output reg led_out //输出控制led灯
);
reg [24:0] cnt; //经计算得需要25位宽的寄存器才够500ms
reg cnt_flag;
//cnt:计数器计数,当计数到CNT_MAX的值时清零
always@(posedge sys_clk or