Verilog语言 并行块

并行块

并行块由关键字fork-join声明,主要特点:

  1. 并行块内的语句并发执行;
  2. 语句执行的顺序是由各自的语句内延迟或事件控制决定的;
  3. 语句中的延迟或事件控制是相对于块语句开始执行的时刻而言的。

注:(1)并行块中的语句同时开始执行,语句之间的先后顺序是无关紧要的;

      (2)并行块内仿真0时刻开始执行,但实际的执行顺序是未知的;

      (3)在使用并行块时需要注意,如果两条语句在同一时刻对同一个变量产生影响,那么将会引起隐含的竞争,这种情况是需要避免的。

程序

module exa0510(
x,y,z,w
 );
input x;
input y;
output z;
output w;
reg [1:0]z;
reg [1:0]w;
always @(*) begin
    z={x,y};
    w={y,x};
    
end
endmodule

仿真程序

module tb();
reg x;
reg y;
wire z;
wire w;
exa0510 uut(
.x (x),
.y (y),
.w (a),
.z (b)
);
initial//并块1
fork
    x=1'b0;
    y=1'b1;
   
join

initial//并行块2
fork
    #5 x=1'b1;
     y=1'b0;
join

initial//并行块3
fork
    #10 x=1'b0;
    #15 y=1'b1;
join
endmodule

仿真结果分析

 (1)并行块1与并行块2存在隐含的竞争,所以y值是不知道结果是什么的,只是可以从仿真的结果看出在0仿真时刻y=0。

(2)在并行块3中可以看出并行块的特点,并发执行,时间也符合设置时间。

可以与顺序块进行对比

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值