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
posted @ 2022-04-24 16:46  烤冷面多加醋  阅读(160)  评论(0)    收藏  举报