一个小程序,麻烦大家帮忙看看,我是初学者

2019-03-25 09:38发布

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?
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
ddllxxrr
1楼-- · 2019-03-25 14:24
< /
marco515
2楼-- · 2019-03-25 14:38
 精彩回答 2  元偷偷看……
eeleader
3楼-- · 2019-03-25 19:25

  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
 

wu924360
4楼-- · 2019-03-25 22:47
counter需清零

一周热门 更多>