仿真的时候发现结果怎么都不对,最后互换了always块的顺序才解决问题
比如下面这段代码
always @(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)
B = 0;
else
B = 1;
end
always @(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)
A = 0;
else
A = B;
end
假设B初始值为0,上面的代码在上升沿来临时,会先给B赋值再给A赋值,A不会得到上升沿之前B的值0,而是得到上升沿之后B的值1,这就导致了两个语句是顺序执行的。