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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 8308|回复: 18

[求助] 急请求高手指点:verilog中if条件识别不了是什么原因???

[复制链接]
发表于 2011-11-21 09:19:29 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 jeamie 于 2011-11-21 09:26 编辑

用测试文件仿真时,发现源程序代码中if后面的条件明明是满足的,可是仿真的结果显示的是程序并没有识别这个条件,感觉很奇怪啊!
接触verilog不久,老是遇到些奇怪的现象,估计是一些规则还没有掌握,还请路过的高手指点,不胜感激!
出错部分代码为:
if(b1==b2==0&a2==1&a1==0) begin
       dependa<=1;
       AO<=~AO;
       state<=edgecount;
      end
else
     if(a1==a2==1&b2==0&b1==1) begin
      dependb<=1;
      BO<=~BO;
      state<=edgecount;
     end
仿真波形如下:
UVZ5I4MSI@P8V_(S@%~UE{D.jpg
程序的本意是:A和B信号边沿先到的那个对应的输出先翻转(AO为A对应的输出,BO为B对应的输出)。激励信号是A的边沿先到,理应AO先翻转,但是程序运行下来却是BO先翻转。

被这个问题困惑着,希望有高手能指点迷津。
发表于 2011-11-21 09:28:55 | 显示全部楼层
&和&&搞错了吧
 楼主| 发表于 2011-11-21 09:31:54 | 显示全部楼层
我程序中有其他的条件也是用&,是可以识别的呢......
发表于 2011-11-21 10:10:13 | 显示全部楼层
要用& 就把 其它的条件表达式用()括起来
 楼主| 发表于 2011-11-21 10:17:42 | 显示全部楼层
回复 4# zzczx


    您说的是这样的么:if((b1==b2==0)&(a2==1)&(a1==0))?

    试了一下,好像不是因为这个呢......
发表于 2011-11-21 15:13:40 | 显示全部楼层
为什么要写成 b1==b2 == 0
发表于 2011-11-21 15:14:56 | 显示全部楼层
写code 不要追求简洁, 而是尽量避免歧义
对不起,您两次发表间隔少于 45 秒,请不要灌水!
  b1 =1;b2 =0;
  $display(" %b",b1==b2==0);   ---得到1
  b1 =1;b2 =1;
  $display(" %b",b1==b2==0);  ---得到0
  b1 =0;b2 =0;
  $display(" %b",b1==b2==0);    ---得到0
发表于 2011-11-21 15:20:35 | 显示全部楼层
你要表达的是逻辑与(&&)关系吧 这里你用了位&
发表于 2011-11-21 17:21:31 | 显示全部楼层
顶7楼,而且注意一下&&是逻辑与,&是位与
发表于 2011-11-22 08:29:25 | 显示全部楼层
a1,a2,b1,b2与输入信号A与B的关系是什么样的?
在仿真时,可以把这四个内部信号添加到波形界面,然后再比对一下程序中的判断条件,就会知道问题在哪的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-11-17 19:36 , Processed in 0.036575 second(s), 11 queries , Gzip On, Redis On.

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