新手请教一个verilog代码的问题,就一个命令。

2019-07-15 22:31发布

小弟最近刚学verilog,我看网上的教程中,基本的模子就是 always@(posedge CLK or negedge RESET)
我试着写了如下代码:
(目的是每按一次按键,8个led就翻转一次)
output wire[7:0] ledR,
reg [7:0]rledR;
always@(posedge CLK or negedge key0)
begin
        if(!key0)
                rledR = ~rledR;
end
assign ledR = rledR;

但实际情况是8个led随机亮灭。
但是如果在always敏感条件中去掉"posedge CLK ",结果就正常了。
想问下,是什么原因?
下面是仿真波形:
无标题.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
945595199
1楼-- · 2019-07-16 00:32
怎么全绿了。。
子风天域
2楼-- · 2019-07-16 03:30
 精彩回答 2  元偷偷看……
feng1314
3楼-- · 2019-07-16 07:54
感觉应该有初始复位 “rledR <=8‘d0"
hgzx01
4楼-- · 2019-07-16 11:39
二楼那个说得有一定道理。但是还有一点,既然你要按键翻转灯的亮灭,这里并没有跟时间有关系,那你还需要时钟干什么呢。所以你去掉时钟就正常啦。你这只是一个逻辑程序而已,不是时序程序。
chenwei6991627
5楼-- · 2019-07-16 14:48
还是多看看程序把。
阳光的偏爱
6楼-- · 2019-07-16 17:35
不错不错,不错不错,不错不错。

一周热门 更多>