/*
复位按键按下,全部熄灭,复位按键放开后
第一个灯点亮熄灭,第2个灯点亮熄灭,第3个灯点亮熄灭,第4个灯点亮熄灭,继续循环
*/
module led2(
input clk,
input rst_n,
output reg [3:0] pio_led
);
reg [1:0] state;
reg [3:0] cnt;
reg clk_slow;
always@(posedge clk or negedge rst_n)
if(!rst_n)
begin
cnt<=0;
clk_slow<=0;
end
else begin
if(cnt<12)
cnt<=cnt+1;
else begin
cnt<=0;
clk_slow<=~clk_slow;
end
end
always@(posedge clk_slow or negedge rst_n)
if(!rst_n)
begin
pio_led<=4'b1111;
state<=0;
end
else
begin
case(state)
0: begin
state<=1;
pio_led<=4'b0111;
end
1: begin
state<=1;
pio_led<=4'b1011;
end
2: begin
state<=1;
pio_led<=4'b1101;
end
3: begin
state<=1;
pio_led<=4'b1110;
end
default:state<=0;
endcase
end
endmodule
`timescale 1ns/1ns
module led2_tb;
reg clk;
reg rst_n;
wire [3:0] pio_led;
led2 led2(
.clk (clk ),
.rst_n (rst_n ),
.pio_led (pio_led )
);
initial begin
clk=0;
rst_n=0;
#1000.1 rst_n=1;
end
always #10 clk=~clk;
endmodule