1、代码
module led_shift
(input wire clk,input wire rst,output reg [3:0] led);
reg [31:0] cnt;
reg flag;
//500ms定时
always@(posedge clk or negedge rst)
if(rst==0)
cnt<=0;
else if(cnt==48000*500-1)
cnt<=0;
else
cnt<=cnt+1;
//时间标志
always@(posedge clk or negedge rst)
if(rst==0)
flag<=0;
else if(cnt==48000*500-1)
flag<=1;
else
flag<=0;
always@(posedge clk or negedge rst)
if(rst==0)
led<=4'b0001;
else if(flag==1 && led==4'b1000)
led<=4'b0001;
else if(flag==1)
led<=led<<1'b1;
else
led<=led;
endmodule
2、注意
else if(flag==1 && led==4'b1000)//1 到结束状态
led<=4'b0001; //2 恢复到开始状态
else if(flag==1) //3 时间到
led<=led<<1'b1; //4 左移一位
现在是1234的顺序,如果是3412的顺序,流水灯就流动一次,说明,此处是顺序执行
红色框的前后顺序无所谓 ,对于always的一大段,是并行的