文章目录
- 前言
- 一、流水灯介绍
- 二、系统设计
- 1.模块框图
- 2.RTL视图
- 三、源码
- 四、效果
- 五、总结
- 六、参考资料
前言
环境:
1、Quartus18.0
2、vscode
3、板子型号:EP4CE6F17C8
要求:
每隔0.2s循环亮起LED灯
一、流水灯介绍
从LED0开始亮起到LED3又回到LED0循环往复。
二、系统设计
1.模块框图
2.RTL视图
三、源码
module led #(
parameter MAX_NUM = 26'd9_999_999
)(
input clk,
input rst_n,
output reg [3:0] led
);//每间隔1s,实现led的亮灭
//parameter MAX_NUM = 26'd9_999_999;
reg [25:0] cnt;
always @(posedge clk or negedge rst_n) begin
if(!rst_n)begin
cnt <= 26'd0;
end
else if(cnt == MAX_NUM)begin
cnt <= 26'd0;
end
else begin
cnt <= cnt + 1'd1;
end
end
//LED控制
always @(posedge clk or negedge rst_n) begin
if(!rst_n)begin
led <= 4'b0001;
end
else if(cnt == MAX_NUM)begin//cnt == 26'd09_999_999
led <= {led[2:0],led[3]};
end
else begin
led <= led;
end
end
endmodule
四、效果
流水灯
五、总结
这里使用了拼接符对LED进行处理加上一个0.2s的计时器进行控制即可。
六、参考资料
led流水灯