本工程使用
4
个
LED
灯
---LED1~LED4
,实现一个呼吸灯的功能。这
4
个灯具体的变化情况为: 第 1
个灯先是暗一秒,接着亮
1
秒后变暗;然后第
2
个灯暗
1
秒,接着亮
2
秒后变暗;然后第
3
个 灯依旧是暗 1
秒,接着亮
3
秒后变暗;最后是第
4
个灯暗
1
秒,亮
4
秒后变暗。至此一个循环结束, 之后按照规律循环往复。因此四个 LED
灯的具体功能要求为,隔
1
秒,亮
N
秒,
N
的变化为:
1
, 2,
3
,
4
秒,然后再次进入循环。
module led_4(
clk, rst_n, led0, led1, led2, led3
);
input clk;
input rst_n;
output led0;
output led1;
output led2;
output led3;
reg led0, led1, led2, led3;
reg[28:0] cnt0;
reg[3:0] cnt1;
always@(posedge clk or negedge rst_n)begin
if(!rst_n)
cnt0 <= 0;
else if(cnt0 == 5000_0000-1)
cnt0 <= 0;
else
cnt0 <= cnt0 + 1'b1;
end
always@(posedge clk or negedge rst_n)begin
if(!rst_n)
cnt1 <= 0;
else if(cnt0 == 5000_0000-1)begin
if(cnt1 == 14-1)
cnt1 <= 0;
else
cnt1 <= cnt1 + 1'b1;
end
end
always@(posedge clk or negedge rst_n)begin
if(!rst_n)
led0 <= 1'b1;
else if(cnt1 == 1)
led0 <= 1'b0;
else if(cnt1 == 2)
led0 <= 1'b1;
end
always@(posedge clk or negedge rst_n)begin
if(!rst_n)
led0 <= 1'b1;
else if(cnt1 == 1)
led0 <= 1'b0;
else if(cnt1 == 2)
led0 <= 1'b1;
end
always@(posedge clk or negedge rst_n)begin
if(!rst_n)
led1 <= 1'b1;
else if(cnt1 == 3)
led1 <= 1'b0;
else if(cnt1 == 5)
led1 <= 1'b1;
end
always@(posedge clk or negedge rst_n)begin
if(!rst_n)
led2 <= 1'b1;
else if(cnt1 == 6)
led2 <= 1'b0;
else if(cnt1 == 9)
led2 <= 1'b1;
end
always@(posedge clk or negedge rst_n)begin
if(!rst_n)
led3 <= 1'b1;
else if(cnt1 == 10)
led3 <= 1'b0;
else if(cnt1 == 0)
led3 <= 1'b1;
end
endmodule