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)块 ...
随机推荐
- Redis安装(centOS7)
1.安装gcc环境 sudo yum install gcc-c++ 2.安装wget sudo yum install wget 3.下载Redis源码包 wget http://download. ...
- ICM Technex 2017 and Codeforces Round #400 (Div. 1 + Div. 2, combined) B
Sherlock has a new girlfriend (so unlike him!). Valentine's day is coming and he wants to gift her s ...
- asp.net调试技巧
一眨眼的功夫,自己已经学习asp.net的有一年的功夫了.虽然称不上什么大神,但是也有一点知识的积累.就写一片调试的入门文章给那些刚刚入门迷茫的童鞋们.希望你学习了我这篇文章能从迷茫的生活中找回编程的 ...
- [转]Fedora 下安装NVIDIA显卡驱动(使用后无法进入图形界面)
http://www.linuxidc.com/Linux/2014-04/100689.htm rpmfusion安装法: 相对于ATi,在Linux下安装NVIDIA就简单得多.只需要一个命令即可 ...
- babel-loader7和babel8版本的问题
根据官网https://www.npmjs.com/package/babel-loader要对应版本 一.babel7.X版本 1.要安装的包 第1套包:npm i babel-core babe ...
- viewpager的使用-新方法 5.1
效果图: 添加依赖包: compile ‘com.android.support:design:22.2.0‘ 布局文件: <?xml version="1.0" encod ...
- Azure 项目构建 - 构建 WordPress 网站
本课程主要介绍了如何基于 Azure Web 应用和 WordPress 快速构建网站,实践讲解如何使用 Azure Web 应用,创建并连接 MySQL Database on Azure, 使用 ...
- The Django Book 第三章 试图和URL配置
之前自学Django也有一段时间了,再过一个月就要入职新公司了(Python Django开发),即使现在还在入门级徘徊,再好好把Django基础过一遍吧. The Django Book 第三章 试 ...
- Android(java)学习笔记148:网易新闻RSS客户端应用编写逻辑过程
1.我们的项目需求是编写一个新闻RSS浏览器,RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,是使用最广泛的XML应用.RSS目前广泛用于网上新闻频道,bl ...
- oracle数据比对工具
上半年的工作重心主要是机房搬迁,免不了要经常的数据比对,保证主备库数据一致,为了节约工作时间,提高工作效率,开发了这个数据比对小工具.用起来还可以.有需要的QQ私聊(1603039990),方便大家, ...