verilog阻塞非阻塞赋值在always语句中的表现
通常书上说组合逻辑要用阻塞赋值,时序逻辑要用非阻塞赋值,但偏偏有些人写代码喜欢在组合逻辑里边用非阻塞,时序逻辑里边用阻塞,有时还混用,看的让人头大,今天我就专门写个博客记录一下这个阻塞非阻塞在组合逻辑和时序逻辑中的效果,以后我头大的时候还能回来看看。。。
不多bb,直接放代码和仿真图
测试文件
module test(
input clk,
input rst_n,
output reg a,
output reg b,
output reg c,
output reg d,
output reg aa,
output reg bb,
output reg cc,
output reg dd
);
always @(posedge clk or negedge rst_n)begin
if(rst_n == 'b0)begin
a <= 'b0;
aa <= 'b0;
end
else begin
a <= 'b1;
aa <= a;
end
end
always @(posedge clk or negedge rst_n)begin
if(rst_n == 'b0)begin
b = 'b0;
bb = 'b0;
end
else begin
b = 'b1;
bb = b;
end
end
always @(*)begin
if(rst_n =&#