块语句是指将两条或者两条以上的语句组合在一起,使其在格式上更像一条语句。块语句分为两种:

1)用begin_end语句,通常用来标识顺序执行的语句,用它标识的块称作顺序块;

2)用fork_join语句,通常用来标识并行执行的语句,用它标识的块称作并行块。

A)顺序块

begin

语句1;

语句2;

....

语句n;

end

begin:块名

块内声明语句

语句1;

语句2;

....

语句n;

end

特点:

1)块内的语句是按照顺序执行的,即只有上面一条语句执行完后下面的语句才能执行;

2)每条语句的延迟时间都是相对于前一条语句的仿真时间而言的;

3)直到最后一条语句执行完,程序流程控制才跳出该语句块。

在begin-end语句块中,begin-end和fork-join块可以相互嵌套,也可以自我嵌套。如果begin-end中包含有局部声明,则他必须被命名(必须有一个标志)。如果要禁止一个begin-end块,那么被禁止的begin-end必须有名字。

B)并行块

fork

语句1;

语句2;

....

语句n;

join

fork:块名

块内声明语句

语句1;

语句2;

....

语句n;

join

特点:

1)块内语句是同时执行的,即程序流程控制进入该块时刻,块内语句则开始同时并行执行;

2)块内每条语句的延迟时间都是相对于程序流程进入到块内的时刻。

3)延迟时间是用来给赋值语句提供执行时序的;

4)当按时间排序在最后的语句执行完成后,或者一个disable语句执行时,程序流程控制跳出该模块。

块名:

1)可以在块内定义局部变量,即只在块内使用的变量;

2)可以允许被其他的语句调用,也可以通过层次名进行调用

3)在Verilog中,所有的变量都是静态的,即所有的变量都只有一个唯一的存储地址,因此进入或者跳出块并不影响储存在变量内的值。

4)命令块可以被禁用,关键词为disable,可以用disable跳出循环,处理错误条件以及根据控制信号来控制某些代码是否执行。

顺序块和并行块的性质对比

对比性质 顺序块 并行块
块内声明语句变量类型 parameter、reg、integer、real parameter、reg、integer、real、time、event
开始时间 第一条语句开始执行的时间 流程控制进入该块的时间
结束时间 最后一条语句结束执行时间 按时间排在最后的语句执行结束时间

举例:(程序功能相同的顺序块和并行块)

parameter  d=50;

reg   [7:0] r;

begin

#d   r='h35;

#d   r='hE2;

#d   r='h00;

#d   r='hF7;

#d   ->end_wave;                   //->表示触发事件end_wave使其翻转

end

(如果d=0,则这个顺序块的执行不需要时间。若d=50,则块语句完成的时间为250,因为每个语句都要等待50个时间单位)

fork

#250  ->end_wave;

#200   r='hF7;

#150   r='h00;

#100   r='hE2;

#50     r='h35;

join

(在并行块中,所有语句都是在程序流程进入并行块时同时开始的,因此这个语句结束的时间为250)

Verilog学习笔记基本语法篇(四)·········块语句的更多相关文章

  1. Verilog学习笔记基本语法篇(五)········ 条件语句

    条件语句可以分为if_else语句和case语句两张部分. A)if_else语句 三种表达形式 1) if(表达式)          2)if(表达式)               3)if(表达 ...

  2. Verilog学习笔记基本语法篇(七)········ 生成块

    生成块可以动态的生成Verilog代码.可以用于对矢量中的多个位进行重复操作.多个模块的实例引用的重复操作.根据参数确定程序中是否包含某段代码.生成语句可以控制变量的声明.任务和函数的调用.还能对实例 ...

  3. Verilog学习笔记基本语法篇(八)········ 结构说明语句

    Verilog中的任何过程都可以属于以下四种结构的说明语句; 1) initial;  2) always;  3) task;   4) function; 1) initial说明语句: 一个程序 ...

  4. Verilog学习笔记基本语法篇(一)·········数据类型

    Verilog中共有19种数据类型. 基本的四种类型: reg型.wire型.integer型.parameter型. 其他类型:large型.medium型.small型.scalared型.tim ...

  5. Verilog学习笔记基本语法篇(十二)········ 编译预处理

    h Verilog HDL语言和C语言一样也提供编译预处理的功能.在Verilog中为了和一般的语句相区别,这些预处理语句以符号"`"开头,注意,这个字符位于主键盘的左上角,其对应 ...

  6. Verilog学习笔记基本语法篇(十一)········ 常用系统函数

    1)系统任务:$monitor   格式: $monitor(p1,p2,p3...pn); $monitor; $monitoron; $monitoroff; 任务$monitor提供了监控输出列 ...

  7. Verilog学习笔记基本语法篇(九)········ 任务和函数

    task 和 function 说明语句分别用来定义任务和函数,利用任务和函数可以把函数模块分成许多小的任务和函数便于理解和调试.任务和函数往往还是大的程序模块在不同地点多次用到的相同的程序段.输入. ...

  8. Verilog学习笔记基本语法篇(六)········ 循环语句

    在Verilog中存在着4种类型的循环语句,用来控制执行语句的执行次数. 1)forever语句: 连续执行的语句. 2)repeat语句:  连续执行n次的语句. 3)while语句:    执行语 ...

  9. Verilog学习笔记基本语法篇(三)·········赋值语句(待补充)

    在Verilog HDL语言中,信号有两种赋值方式. A)非阻塞赋值(Non-Blocking)方式(如:b<=a;) (1)在语句块中,上面语句所赋值的变量不能立即为下面的语句所用: (2)块 ...

随机推荐

  1. AKOJ-1695-找素数

    题意: 给定区间L,R. 计算区间中素数个数. 2 <= L,R <= 2147483647, R-L <= 1000000. 思路: 素数区间筛 先筛(2-sqrt(r)). 再用 ...

  2. 洛谷 P1094 纪念品分组

    P1094 纪念品分组 先按价格对纪念品排序(这里是从大到小),然后从两端向中心开始配对,有两个变量i和j,表示正在处理的两个纪念品编号,开始时i=1,j=n,如果a[i]+a[j]>w则第i贵 ...

  3. re 模块的重新整理

    RE模块 import  re 的常用操作 查找 1. findall : ret = re.findall('\d+'.'sjkhk172按实际花费928') #正则表达式,待匹配的字符串,flag ...

  4. e​c​s​h​o​p​调​用​商​品​简​单​描​述

    在下面文件 recommend_new.lbi recommend_best.lbi recommend_hot.lbi cat_goods.lbi 里调用商品简单描述用:{$goods.brief} ...

  5. 在switch中的case语句中声明变量会被提前

    原文链接:http://my.oschina.net/u/2000201/blog/514384 本人今天在编写工具类时,无意之间发现,在Java的Swith语句的case语句中声明局部变量时出现了一 ...

  6. linux各文件夹的作用(转)

    转自:http://www.cnblogs.com/amboyna/archive/2008/02/16/1070474.html linux下的文件结构,看看每个文件夹都是干吗用的/bin 二进制可 ...

  7. JavaScript实现的水果忍者游戏,支持鼠标操作

    智能手机刚刚普及时,水果忍者这款小游戏可谓风靡一时.几年过去了,现在,让我们用纯JavaScript来实现这个水果忍者游戏,就算是为了锤炼我们的JavaScript开发技能吧. 大家可以通过这个链接在 ...

  8. iOS图片目录批量复制到android图片目录

    复制shell脚本 #!/bin/bash for i in `ls` do for imgname in `ls $i | grep '^WM.*'` do echo $imgname cp $i/ ...

  9. JAVA 配置

    JAVA 版本为jdk-7u25-windows-x64 Java 下载地址为: .CLASSPATH .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.j ...

  10. k8s master init and add node

    目录 一. add google apt-key 二. k8s master init 三. k8s node add to master cluster(use this command when ...