|
……
reg [3:0] a, b;
reg flag;
wire [3:0] 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的数据类型变化了么? |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|