//该程序将用移位来实现流水灯,每次左移一个流水灯;复位时流水灯全亮,高电平有效
//三个分频,分别为亮灭灯间隔0.5s、以100HZ、10HZ频率闪烁
module LED(
input clk,//时钟信号
input rst_n,//复位信号
input [1:0]en,//控制分频的开关
output reg[9:0]led//流水灯输出
);
reg [27:0]count;//计数控制分频
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)led<=10'b1111_1111_11;//复位
else
begin
case(en)
2'b00://亮灭灯间隔0.5s
begin
count<=count+1;
if(count==28'h17D_7840)
begin
led<=led<<1;//左移
if(led==10'b0000_0000_00)led<=10'b1111_1111_11;//当流水灯全灭时复位为全亮
count<=0;//计数复位
end
end
2'b01://100HZ
begin
count<=count+1;
if(count==28'h7A120)
begin
led<=led<<1'b1;
if(led==10'b0000_0000_00)led<=10'b1111_1111_11;
count<=0;
end
end
2'b10://10HZ
begin
count<=count+1;
if(count==28'h4C4B40)
begin
led<=led<<1'b1;
if(led==10'b0000_0000_00)led<=10'b1111_1111_11;
count<=0;
end
end
endcase
end
end
endmodule