4.3 顺序块和并行块
引言
1. 块的作用,把多条语句合并在一起,使之成为一个整体,附属于对应的 initial 结构和 always 结构。
2. 顺序块:begin ... end ; 并行块: fork ... join
一、顺序块
1. begin ... end
2. 块中所有的语句,在仿真开始的零时刻执行,但是按前后顺序一条接一条执行。
3. 所有信号的延迟都是相对于上一句的,可以控制每个信号的相对时间。
reg a,b;
reg [1:0] c,d;
initial begin
a=0;
#5 b=1;
#10 c={a,b};
#15 d={b,a};
end
波形图:

二、并行块
1. fork ... join
2. 块中所有语句,都是同时开始执行的。
3. 每条语句的延迟都是相对于本并行块开始的时间,可以对信号进行绝对时间的控制。
4. 并行块不能建立实际的电路模块,所以不能被综合,因为测试模块不用综合,所以只能用于测试模块,其他场合不考虑。
(1)
reg a,b;
reg [1:0] c,d;
initial fork
a=0;
#5 b=1;
#10 c={a,b};
#15 d={b,a};
join
波形图:

(2)
//容易产生竞争行为
reg a,b;
reg [1:0] c,d;
initial fork //因为CPU一般不能并发处理多条并行语句,所以实际执行还是有先后顺序的。
a=0;
b=1;
c={a,b};
d={b,a};
join

浙公网安备 33010602011771号