用测试文件仿真时,发现源程序代码中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
仿真波形如下:
程序的本意是:A和B信号边沿先到的那个对应的输出先翻转(AO为A对应的输出,BO为B对应的输出)。激励信号是A的边沿先到,理应AO先翻转,但是程序运行下来却是BO先翻转。