一,概念
这个很简单,就是移位,数字电路里面要熟悉移位这个操作,就像51单片机一样哈。
二,代码基于verlog
//流水灯操作
module flow_led(
input sys_clock,
input sys_rst_n,
output reg [3:0] led
);
//计数0.2S = 1000W-1 =1000_0000-1
reg [23:0] counter;
always@(posedge sys_clock or negedge sys_rst_n)begin
if(!sys_rst_n)
counter <= 24'd0;
else if(counter < 24'd1000_0000 - 1'b1)//当等于0.2S的时候
counter <= counter +1'b1;
else
counter <= 24'd0;
end
//移位对给LED供电
always@(posedge sys_clock or negedge sys_rst_n)begin
if(!sys_rst_n)
led <= 4'b0001;
else if(counter == 24'd1000_0000 - 1'b1)
led <= {led[2:0],led[3]}; //位拼接,将最高位换到最低为去,依次
else
led <= led;
end
endmodule