/*
代码中晶振的频率为50MHz,定义的间隔时间为0.5s
*/
module water_led (
input clk,
input rstn,
output reg[3:0] led
);
reg[27:0] cnt; //用于计数
reg[1:0] led_on; //循环点亮流水灯
parameter clk_all = 50000000; //总的晶振频率
parameter clk_cnt = clk_all/2-1;//定义间隔时间为0.5s
always @(posedge clk or negedge rstn) begin
if (!rstn) begin
cnt <= 28'd0;
led_on <= 2'd0;
end
else begin
cnt <= cnt + 1'b1; //开始计数
if(cnt==clk_cnt) begin
cnt<=28'd0;
led_on <= led_on + 1'b1;
end
end
end
always @(led_on) begin //根据case语句,来达到循环点亮流水灯的效果
case(led_on)
0:led <= 4'b0001;
1:led <= 4'b0010;
2:led <= 4'b0100;
3:led <= 4'b1000;
endcase
end
endmodule
流水灯设计
最新推荐文章于 2024-08-17 23:54:07 发布