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
    +关注

    关注

    31

    文章

    1374

    浏览量

    114718
  • 顺序
    +关注

    关注

    0

    文章

    14

    浏览量

    22366

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【阿波罗STM32F767试用体验】+1.点亮流水灯

    ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ /* USER CODE END Includes */ /* Private
    发表于 12-19 11:35

    条件的执行语句

    条件执行语句大多在if语句中使用,也在使用关系运算符(<,==,>等) 或者布尔值表达式(,!等)计算复杂表达式时使用。对于包含函数调 用的代码片段,由于函数返回值会被
    发表于 12-12 08:25

    【道生物联TKB-623评估板试用】——3.TKB-623评估板连接STM32发送数据

    -----------------------------------------------------------/ / USER CODE BEGIN PTD */ /* USER CODE END PTD */ /* Private define
    发表于 11-17 14:44

    使用NucleiStudio生成tb仿真需要的.verilog文件

    打开仿真顶层文件tb_top.v,存放在ITCM模块里面的指令是通过readmemh函数读入.verilog文件实现的: 下面通过对NucleiStudio IDE进行设置,实现将c
    发表于 11-05 07:07

    如何直接从main函数开始仿真?

    。 解决办法 1. 首先我们要将.verilog文件的地址全部改成0开头的,@8000_0000是ITCM的寻址基址,我们要将其写到存储器中就要从@0000_0000开始。(源文件共有4个@,后面是数据
    发表于 11-05 06:10

    e203内部cpu执行单元booth4乘法器

    ) begin current_state <= IDLE ; end else if (start)begin current_state <= next_state
    发表于 10-29 07:50

    蜂鸟例程的编译与程序的加载

    仿真的过程中,会首先将前文编译生成的(.verilog)文件通过tb_top.v文件里initial过程中的readmemh函数读进来,存放在ITCM中: initial begin
    发表于 10-24 13:34

    NICE协处理器demo分析及测试

    begin_instret, end_instret, instret_normal, instret_nice;unsigned int begin_cycle,end_cycle
    发表于 10-23 07:05

    CICC2033:关于C语言仿真的一些说明

    ;endfor (i=0;i<(DLM_RAM_DP);i=i+1) begin dlm_mem=mem[i+32\'h00006000];end最后,由于tb_mem_init.v中默认
    发表于 10-21 14:18

    【高云GW5AT-LV60 开发套件试用体验】三、LED灯控制实验

    // 复位时计数器清零 counter <= 32\'d0; end else if (counter >= COUNTER_MAX) begin// 达到最大值时归零
    发表于 07-21 05:57

    Unicore标准NEMA语句GSA及说明

    本文介绍和芯星通的NEMA语句说明。
    的头像 发表于 07-16 11:39 831次阅读
    Unicore标准NEMA<b class='flag-5'>语句</b>GSA及说明

    基础篇3:掌握Python中的条件语句与循环

    不同的条件执行不同的代码。Python中的条件语句主要使用if、elif(else if的缩写)和else关键字。 if语句 最简单的条件语句是if
    发表于 07-03 16:13

    NEXT(Near-End Crosstalk,近端串扰)

    一、什么是NEXT(近端串扰)? NEXT(Near-End Crosstalk,近端串扰)是指在线缆传输信号时,靠近发射端处,相邻线对之间因电磁干扰所产生的串扰信号。这种干扰通常发生在配线架、模块
    的头像 发表于 06-23 17:35 2158次阅读

    详解TIA Portal SCL编程语言中的IF语句

    IF 语句是编程中最基本和最重要的控制结构之一,它的主要作用是根据条件决定程序的执行路径,IF 语句是编程中实现逻辑判断和决策的基础。
    的头像 发表于 05-24 15:01 2143次阅读
    详解TIA Portal SCL编程语言中的IF<b class='flag-5'>语句</b>

    STM32U5 IWDG的提前唤醒中断无法在STOP模式下触发怎么解决?

    * @retval int*/int main(void){/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU
    发表于 04-27 08:05