[Verilog HDL] verilog语法理解

[复制链接]
1752|3
 楼主| damoyeren 发表于 2013-10-28 09:58 | 显示全部楼层 |阅读模式
这是一个检测按键按下时抖动的程序,不明白为什么key_ret_r的值比key_rst的值晚一个节拍?假如:key_rst:      1   1   1
key_ret_r:        1    1    1   (晚一个时钟周期不知道为什么)
两个always语句同时执行,况且敏感信号都是一样的,应该不会晚一个时钟周期的啊?不明白!
reg[2:0] key_rst;
always @(posedge clk  or negedge rst_n)  
  if (!rst_n) key_rst <= 3'b111;  
  else key_rst <= {sw3_n,sw2_n,sw1_n};

reg[2:0] key_rst_r;       //每个时钟周期的上升沿将low_sw信号锁存到low_sw_r中always @ ( posedge clk  or negedge rst_n )   
if (!rst_n) key_rst_r <= 3'b111;   
else key_rst_r <= key_rst;
jamgame 发表于 2013-10-28 15:58 | 显示全部楼层
我觉得是你使用了非阻塞赋值才导致这样的结果。
GoldSunMonkey 发表于 2013-10-29 22:54 | 显示全部楼层
这个延时有什么疑问么?
GoldSunMonkey 发表于 2013-10-29 22:54 | 显示全部楼层
和楼上说的一致啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

126

主题

393

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部