流水灯问题
小弟刚学,第一个流水灯就遇到问题,请教各位大神。程序如下,我也知道这不能实现流水灯,但是对于我打//的位置的语句我不能理解,
我觉得一开始是led=4'b1111,计数器cnt=4999时,led=4'b1110,然后led=4'b0111,
但是我仿真的结果却显示在cnt=4999的时候,led=4'b1111,并没有编程4’b1110或者4'b0111
module liushuideng_1 (
input wire sclk,
input wire s_rst_n,
output reg led
);
reg cnt;
reg flag;
parameter CNT = 49_99;
always@(posedge sclk or negedge s_rst_n)
if(s_rst_n == 1'b0)
cnt <= 26'd0;
else if(cnt == CNT)
cnt <= 26'd0;
else
cnt <= cnt + 26'd1;
always@(posedge sclk or negedge s_rst_n)
if(s_rst_n==1'b0)
led <= 4'b1111;
else if(cnt==CNT)
begin
// led <= 4'b1110;
// led <= {led,led};
end
else
led <= led;
endmodule
led <= {led,led};这句是利用位拼接符产生移位寄存器,,,,每次计数完成后都把新的变量led的最低位放到最高位,拼接成一个新的寄存器变量,每个计数周期进行重新拼接一次,即移位一次,
页:
[1]