module flew_led(
input sys_clk, //定义系统时钟为输入
input sys_rst_n, //定义复位为输入
output reg [3:0] led //定义输出位宽为4的reg型led
);
reg [23:0] cnt; //定义24位的计数器 0.2s/20ns 至少24位byet
always @(posedge sys_clk or negedge sys_rst_n) //时钟信号上升沿或复位信号下降沿的触发
begin
if(!sys_rst_n) //条件语句复位信号为低时
cnt <= 1'b0; //计数器为0
else
if(cnt < 24'd10000000) //如果时间小于0.2s
cnt <= cnt+ 1'b1; //计数器自动加1
else
cnt <= 1'd0; //否则计数器为0
end
always @(posedge sys_clk or negedge sys_rst_n)
begin
if(!sys_rst_n)
led <= 4'b0001; //led【3】亮
else
if(cnt == 24'd10000000) //如果时间为0.2秒
led <= {led[2:0],led[3]}; //向左移动一位
else
led <= led; //否则等于自身
end
endmodule
建议独热键 因为逻辑清晰 if/else 要配对 case 要完全 避免latch的产生 这样会出现