module led(clk,led);
input clk;//时钟50M
output[7:0] led;
reg[7:0] led;
reg[3:0] num;
reg[24:0] counter;
reg[7:0] temp [7:0];
initial
begin
led<=8'b1111_1111;//上电瞬间8个LED全部熄灭
temp[0]<=8'b1111_1110;//点亮第1个LED的编码
temp[1]<=8'b1111_1101;//点亮第1个LED的编码
temp[2]<=8'b1111_1011;//点亮第2个LED的编码
temp[3]<=8'b1111_0111;//点亮第3个LED的编码
temp[4]<=8'b1110_1111;//点亮第4个LED的编码
temp[5]<=8'b1101_1111;//点亮第5个LED的编码
temp[6]<=8'b1011_1111;//点亮第6个LED的编码
temp[7]<=8'b0111_1111;//点亮第7个LED的编码
end
always@(posedge clk)
begin
counter<=counter+1'b1;
if(counter==25'd25_000_000)//判断是否到0.5s
begin
if((num>=0)&&(num<=7))//依次点亮第0到第7个LED
begin
counter<=25'd0;
num<=num+1'b1;
led<=temp[num];
end
else if((num>=8)&&(num<=14))//依次点亮第6到第0个LED
begin
counter<=25'd0;
num<=num+1'b1;
led<=temp[14-num];
end
else
begin
num<=4'd2;
led<=temp[1];//第一个LED的发光时间明显变长,明显大于0.5s
end
end
end
endmodule
为什么第一个LED的发光时间明显变长,明显大于0.5s?
此帖出自
小平头技术问答
begin
num<=4'd2;
led<=temp[1];//第一个LED的发光时间明显变长,明显大于0.5s
你出现的问题是,COUNTER计数器没有清0
正确答案:
begin
counter<=25'd0;
num<=4'd2;
led<=temp[1];//第一个LED的发光时间明显变长,明显大于0.5s
end
一周热门 更多>