logic a;
logic b;
logic c;
always @ (posedge clk_1) begin
if(b > 0)
a <= 1'b1;
end
end
always @ (posedge clk_1) begin
if(c > 0 && b < 0) begin
a <= 1'b0;
end
end
解决办法
logic a;
logic b;
logic c;
always @ (posedge clk_1) begin
if(b > 0)
a <= 1'b1;
end
else if(c > 0 && b < 0) begin
a <= 1'b0;
end
end
之前插入 #1 #10延时结果正确,是因为我们将某时刻需要的驱动,后延时10时间,因此被驱动信号最后得到延迟驱动结果,但是需要另一种驱动发挥作用时候,会出现问题。
正确解决方案:将被驱动信号写到一个always模块中。