Verilog中begin...end和fork....join的区别和用法

1. begin....end

用来组合需要顺序执行的语句,称为串行块。

module test (

input wire            clk           ;

input wire  [7:0]  data_in   ;

output reg [7:0] data_out  ;

):

reg [7:0]      data_in_dl1    ;

reg [7:0]      data_in_dl2   ;

reg [7:0]      data_in_dl3   ;

always@(posedge clk)

        begin

                data_in_dl1 <= data_in           ;

                data_in_dl2 <= data_in_dl1    ;

                data_in_dl3 <= data_in_dl2   ;

                data_out      <= data_in_dl3   ;

        end

串行块内的各条语句时按它们在块内的语句逐句顺序执行的,当前一条执行完之后才能执行下一条。块内每一条语句中的延时控制都是相对于前一条语句结束时刻的延时控制。

2. fork...join

用来组合需要并行执行的语句,称为并行块。例如:

parameter d = 50;

reg [7:0]    r         ;

fork                                    

        #d        r = 8'h 45;

        #2d       r = 8'h A2;

        #3d       r = 8'h C1;

        #4d       r = 8'h E1;

join

并行语句块内各条语句时各自独立地同时开始执行,各条语句的起始执行时间都等于程序流程进入该语句块的时间。

参考:《无线通信FPGA设计》 田耕 徐文波 张延伟等.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值