在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5404|回复: 4

[求助] verilog if判断和非阻塞赋值

[复制链接]
发表于 2014-6-16 18:09:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
请问,如果用下面的代码来判断,if是判断的CLK上升沿到来之前的Start_Sig,还是CLK上升沿之后的电平?如果在这个上升沿Start_Sig的电平也发生变化,该如何判断?




  1. always @ (posedge CLK or negedge RSTn)
  2.                 if(!RSTn)
  3.                         begin
  4.                                 i<=4'd0;
  5.                         end
  6.                 else if(Start_Sig)
  7.                         case (i)
  8.                                 0:
  9.                                 1:
  10.                         endcase


复制代码


还有就是非阻塞赋值,例如Start_Sig<=1'b1;是在下一个CLK到来之前就更新完LHS变量的值,还是到来之后更新?恳请各位前辈解答。
发表于 2014-6-16 21:37:21 | 显示全部楼层
貌似是将跳变前后分为 0- 0+ 两个时刻,按照经验仿真来看,if判断时用的是0-时刻的值,例如Start_Sig上升沿,if用0做条件判断,下降沿,if用1做条件判断。
发表于 2014-6-16 22:33:41 | 显示全部楼层
第一个问题:在时序逻辑中,if语句判断的Start_Sig是上升沿前的,上升沿时Start_Sig的电平也发生变化则下一个上升沿,if语句才能检测到
第二个问题:一般非阻塞赋值用在时序逻辑中,故非阻塞赋值是上升沿后值再更新。
 楼主| 发表于 2014-6-17 08:53:55 | 显示全部楼层
学习了,原来是这么回事,谢谢楼上二位
发表于 2014-6-17 08:55:06 | 显示全部楼层
上升沿后再更新
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-25 04:53 , Processed in 0.021249 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表