前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Verilog 的块语句 fork...join 和 begin...end

Verilog 的块语句 fork...join 和 begin...end

作者头像
FPGA探索者
发布2021-05-26 11:51:33
发布2021-05-26 11:51:33
4.2K00
代码可运行
举报
文章被收录于专栏:FPGA探索者
运行总次数:0
代码可运行

1. 块语句有两种,一种是 begin-end 语句, 通常用来标志()执行的语句;一种是 fork-join 语句,通常用来标志()执行的语句。

答案:顺序,并行

解析:

(1)begin_end顺序块,用于将多条语句组成顺序块,语句按顺序一条一条执行(除了带有内嵌延迟控制的非阻塞赋值语句),每条语句的延迟时间是相对于由上一条语句的仿真时间而言;

(2)fork-join并行块,块内语句同时执行。

2. 块语句,下面这段语句中,第 40 时刻上,A、B 的值各是多少?

代码语言:javascript
代码运行次数:0
复制
reg A;
reg B;
initial begin
    fork
        begin
            A = 1;
            #20 A = 0;
            #30 A = 1;
            #50 A = 0;
        end
        begin
            B = 1;
            #20 B = 0;
            #30 B = 1;
            #50 B = 0;
        end
    join
end

答案:A = 0,B = 0

解析:

块语句有两种,begin...end 和 fork...join,其中 fork...join 是并行块,begin...end 是顺序执行块,可以相互嵌套

上面,两个 begin...end 之间是并行的,而各自 begin...end 内部是顺序执行,A 和 B 的赋值逻辑是一样的,所以要么都是 1,要么都是 0。

按照顺序执行,A 前 20 个时间单位是 1,然后持续 30 个时间单位的 0,所以 40 时刻是 0,同理 B 也是 0。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FPGA探索者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档