Verilog学习笔记基本语法篇(四)·········块语句
块语句是指将两条或者两条以上的语句组合在一起,使其在格式上更像一条语句。块语句分为两种:
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学习笔记基本语法篇(四)·········块语句的更多相关文章
- Verilog学习笔记基本语法篇(五)········ 条件语句
条件语句可以分为if_else语句和case语句两张部分. A)if_else语句 三种表达形式 1) if(表达式) 2)if(表达式) 3)if(表达 ...
- Verilog学习笔记基本语法篇(七)········ 生成块
生成块可以动态的生成Verilog代码.可以用于对矢量中的多个位进行重复操作.多个模块的实例引用的重复操作.根据参数确定程序中是否包含某段代码.生成语句可以控制变量的声明.任务和函数的调用.还能对实例 ...
- Verilog学习笔记基本语法篇(八)········ 结构说明语句
Verilog中的任何过程都可以属于以下四种结构的说明语句; 1) initial; 2) always; 3) task; 4) function; 1) initial说明语句: 一个程序 ...
- Verilog学习笔记基本语法篇(一)·········数据类型
Verilog中共有19种数据类型. 基本的四种类型: reg型.wire型.integer型.parameter型. 其他类型:large型.medium型.small型.scalared型.tim ...
- Verilog学习笔记基本语法篇(十二)········ 编译预处理
h Verilog HDL语言和C语言一样也提供编译预处理的功能.在Verilog中为了和一般的语句相区别,这些预处理语句以符号"`"开头,注意,这个字符位于主键盘的左上角,其对应 ...
- Verilog学习笔记基本语法篇(十一)········ 常用系统函数
1)系统任务:$monitor 格式: $monitor(p1,p2,p3...pn); $monitor; $monitoron; $monitoroff; 任务$monitor提供了监控输出列 ...
- Verilog学习笔记基本语法篇(九)········ 任务和函数
task 和 function 说明语句分别用来定义任务和函数,利用任务和函数可以把函数模块分成许多小的任务和函数便于理解和调试.任务和函数往往还是大的程序模块在不同地点多次用到的相同的程序段.输入. ...
- Verilog学习笔记基本语法篇(六)········ 循环语句
在Verilog中存在着4种类型的循环语句,用来控制执行语句的执行次数. 1)forever语句: 连续执行的语句. 2)repeat语句: 连续执行n次的语句. 3)while语句: 执行语 ...
- Verilog学习笔记基本语法篇(三)·········赋值语句(待补充)
在Verilog HDL语言中,信号有两种赋值方式. A)非阻塞赋值(Non-Blocking)方式(如:b<=a;) (1)在语句块中,上面语句所赋值的变量不能立即为下面的语句所用: (2)块 ...
随机推荐
- numpy使用示例
numpy介绍 创建numpy的数 一维数组是什么样子 可以理解为格子纸的一行就是一个一维数据 two_arr = np.array([1, 2, 3]) 二维数组什么样子 理解为一张格子纸, 多个一 ...
- [在读]web前端黑客技术揭秘
- 牛客网Java刷题知识点之Iterator和ListIterator的区别
不多说,直接上干货! https://www.nowcoder.com/ta/review-java/review?query=&asc=true&order=&page=21 ...
- Linux crontab 设置定时任务
crontab crontab 用于设置系统自动执行的周期性任务 # m h dom mon dow user command 17 * * * * root cd / && run- ...
- Y2分班考试 笔试题总结
1. 此题编译错误 base无法点出methodB()方法 2. 第二题选C 3.此题选D:正确的输出级别为fatal>error>warn>info>debug 4. 此题 ...
- vue2 mint-ui loadmore(下拉刷新,上拉更多)
<template> <div class="page-loadmore"> <h1 class="page-title"> ...
- Linux自带-系统级性能分析工具 — Perf(转)
https://blog.csdn.net/zhangskd/article/details/37902159/
- UVA - 1252 Twenty Questions (状压dp)
状压dp,用s表示已经询问过的特征,a表示W具有的特征. 当满足条件的物体只有一个的时候就不用再猜测了.对于满足条件的物体个数可以预处理出来 转移的时候应该枚举询问的k,因为实际上要猜的物品是不确定的 ...
- Core Foundation 框架
Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能.下面列举该框架支持进行管理的数据以及可提供的 ...
- WPF中窗体调用窗体
在WPF中有时候我们需要在一个窗体中去调用另外的一个窗体,下面给出调用方法. 下面实现在MainWindow中通过点击一个按钮调用另外的一个窗口. 首先创建你要调用的另外一个窗口:点击最上面的项目 ...