0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

FPGA之家 来源:FPGA之家 作者:FPGA之家 2022-06-09 10:30 次阅读

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

答案:顺序,并行

解析:

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

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

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


reg A;reg B;initial begin    fork        begin            A = 1;            #20 A = 0;    #30A=1;            #50 A = 0;        end        begin            B = 1;            #20 B = 0;            #30 B = 1;            #50 B = 0;        end    joinend

答案: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

228548d8-e784-11ec-ba43-dac502259ad0.png

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Verilog
    +关注

    关注

    28

    文章

    1326

    浏览量

    109302
  • 顺序
    +关注

    关注

    0

    文章

    14

    浏览量

    22006

原文标题:Verilog 的块语句 fork...join 和 begin...end

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Verilog实现uart串口设计

    ; read2<= 1\'b1; read1<= 1\'b1; end else begin if (idle && !idle1
    发表于 04-01 14:41

    8b10b编码verilog实现

    state_next = START; data_out[9:8] = 2\'b10; // K28.5 end end START: begin state_next = DATA; data_out[2:0
    发表于 03-26 07:55

    verilog实现卷积运算

    else begin data_a_reg <= data_in_a; data_b_reg <= data_in_b; end end // 执行卷积运算 always
    发表于 03-26 07:51

    Verilog 电子时钟实现

    ;lt;= 0; end else begin if (sec_cnt == MAX_SECONDS) begin sec_cnt <= 0; if (min_cnt
    发表于 03-26 07:48

    verilog语音实现浮点运算

    , mantissa} = a; // 将a中的符号位、指数部分和尾数部分提取到对应变量中 end always @(posedge clk) begin if (reset == 1\'b1) begin sum
    发表于 03-25 21:49

    8位串口收发器verilog语言实现

    end // FSM state flip-flops always @ (posedge clk or negedge rst_n) begin if (!rst_n
    发表于 03-25 21:45

    考虑x和z在verilog条件语句中的使用情况

    首先,考虑x和z在verilog条件语句中的使用情况,然后我们再考虑在verilog中用x和z给其他reg/wire赋值的情况。
    的头像 发表于 11-02 09:40 618次阅读
    考虑x和z在<b class='flag-5'>verilog</b>条件<b class='flag-5'>语句</b>中的使用情况

    fork()函数详解

    pid_t fork(void);//pid_t为int类型,进行了重载
    的头像 发表于 08-15 09:41 779次阅读
    <b class='flag-5'>fork</b>()函数详解

    verilog语句中,非阻塞赋值和小于等于均使用符号“<=”,如何区分<=所表示的含义?

    )中,\"<=\"作为非阻塞赋值的一部分。 verilog中,一个语法结构不可能同时允许“表达式”和“语句”, 如果某处可以出现表达式,那么就不允许出现语句; 如果
    发表于 08-08 09:32

    fork和vfork有什么区别 简述fork与vfork的区别

    fork和vfork有什么区别,作为嵌入式工程师,这个肯定是要掌握的。
    的头像 发表于 08-03 17:12 1077次阅读
    <b class='flag-5'>fork</b>和vfork有什么区别 简述<b class='flag-5'>fork</b>与vfork的区别

    Linux中可怕的fork炸弹介绍

    Linux中的Fork炸弹(Fork Bomb)是一种拒绝服务攻击的形式,它利用了操作系统中的“fork()”系统调用。
    的头像 发表于 05-22 10:46 2019次阅读
    Linux中可怕的<b class='flag-5'>fork</b>炸弹介绍

    initial begin-end真的是仿真最早执行的吗?

    SystemVerilog中,initial begin-end是仿真开始就会执行的代码块。比如UVM的test入口函数run_test,一般就是在initial begin-end中调用。
    的头像 发表于 05-22 10:41 584次阅读

    Verilog常用的循环语句及用途

    本文主要介绍verilog常用的循环语句,循环语句的用途,主要是可以多次执行相同的代码或逻辑。
    的头像 发表于 05-12 18:26 1241次阅读

    如何使用参数化编写可重用的verilog代码

    我们将介绍如何使用verilog参数和generate语句来编写可重用的verilog 代码。 与大多数编程语言一样,我们应该尝试使尽可能多的代码可重用。这使我们能够减少未来项目的开发时间
    的头像 发表于 05-11 15:59 709次阅读

    Verilog中的If语句和case语句介绍

    我们在上一篇文章中已经看到了如何使用程序块(例如 always 块来编写按顺序执行的 verilog 代码。 我们还可以在程序块中使用许多语句来控制在我们的verilog设计中信号赋值的方式
    的头像 发表于 05-11 15:37 3125次阅读
    <b class='flag-5'>Verilog</b>中的If<b class='flag-5'>语句</b>和case<b class='flag-5'>语句</b>介绍