lanpad 发表于 2011-8-10 14:29:33

请教高手if(c)和if(b-a)为什么会不同?(其中c=b-a)

……      
      reg a, b;
      regflag;

      wire c;

      assign c = b - a;

      always@(posedge rst or posedge clk)
                if(rst)
                        begin
                              a <= 0;
                              b <= 0;
                              flag <= 0;
                        end
                else
                        begin
                              if(b-a==8)/////////////////////////////////////////////////////////////////////////////
                                        flag <= 1;
                              else
                                        begin
                                                a <= a + 1;
                                                b <= b + 2;
                                        end
                        end

endmodule
关键在if(b-a==8)这一句
上面写法的仿真结果显示flag无法按照设计发生跳变。
如果写成if(b-a==4'b1000),则flag可以正常按设计跳变
或者另外指定一个变量 assign c=b-a ,再写成if(c==8),也可以

请问为什么会出现上述结果?b-a的数据类型变化了么?
页: [1]
查看完整版本: 请教高手if(c)和if(b-a)为什么会不同?(其中c=b-a)