module//if语句lsd
(
input clk,//27m
input rst_n,//初始化(程序开始自动进行一次),一键还原(运行中,按键)
output reg [3:0] led
);
流水灯:0001,0010,0100,1000,0001
///1s
//计数器
parameter delay=32'd27_000_000;///1s,2//自己查金振频率
reg [24:0] cnt;计数的寄存器,[31:0] cnt
always@(posedge clk)
if(!rst_n)
cnt<=0;
else if(cnt==delay-1)//清零条件,最大值,0开始:0.1,1s到了
cnt<=0;
else
cnt<=cnt+1;
/led1:位拼接
always@(posedge clk)
if(!rst_n)
led<=4'b1110;///亮第一个灯
else if(cnt==delay-1)
//led<={led[0],led[3:1]};///[3:0]:3210;03211110---0111----1011--1101=右::1032
led<={led[2:0],led[3]};//左
else
led<=led;//保持
endmodule
module//case语句
lsd0(
input clk,
input rst_n,
output reg [3:0] led
);
///计数器
parameter delay=27_000_000;//1s//自己查所用的金振频率改
reg [31:0] cnt;
always@(posedge clk)
if(!rst_n)
cnt<=0;
else if(cnt==delay-1)
cnt<=0;
else
cnt<=cnt+1;
/对1s计数
reg [3:0] flag;15,16==10000:0---15
always@(posedge clk)
if(!rst_n)
flag<=0;
else if(cnt==delay-1)
flag<=flag+1;
else
flag<=flag;
/led:case
always @(posedge clk)
if(!rst_n)
led<=0;
else
case(flag%6)
0:led<=4'b1110;
1:led<=4'b1101;
2:led<=4'b1011;
3:led<=4'b0111;
4:led<=4'b0000;
5:led<=4'b1111;
default:led<=0;
endcase
endmodule