Verilog HDL常用的行为仿真描述语句
一、循环语句
1、forever语句
forever语句必须写在initial模块中,主要用于产生周期性波形。
2、利用for、while循环语句完成遍历
for、while语句常用于完成遍历测试。当设计代码包含了多个工作模式,那么就需要对各个模式都进行遍历测试。其典型的应用模板如下:
- parameter mode_num = 5;
- initial begin
- // 各种不同模式的参数配置部分
- for(i=0; i<mode_num-1; i=i+1) begin
- case (i)
- 0: begin
- .
- .
- end
- 1: begin
- .
- .
- end
- .
- .
- endcase
- end
- // 各种模式共同的测试参数
- .
- .
- end
3、利用repeat语句来实现有次数控制的事件,其典型示例如下:
- initial begin
- // 初始化
- in_data = 0;
- wr = 0;
- // 利用repeat语句将下面的代码执行10次
- repeat(10) begin
- wr = 1;
- in_data = in_data + 1;
- #10;
- wr = 0;
- #200;
- end
- end
4、用disable实现循环语句的异常处理,其典型示例如下:
- begin : one_branch
- for(i=0; i<n; i=i+1) begin : two_branch
- if (a==0)
- disable one_branch;
- if (a==b)
- disable two_branch;
- end
- end
二、force和release语句
force/release语句用来跨越进程对一个寄存器或一个电路网络进行赋值。
force语句可为寄存器类型和线网类型变量强制赋值。
当应用于寄存器变量时,寄存器当前值被force覆盖;当release语句应用于寄存器变量时,寄存器当前值将保持不变,知道重新赋值。
当force语句应用于线网变量时,数值立即被force覆盖;当release语句应用于线网变量时,线网数值立即恢复到原来的驱动值。
三、wait语句
wait语句是一种不可综合的电平触发事件控制语句,有如下两种形式:
- wait(条件表达式) 语句/语句块;
- wait(条件表达式);
对于第一种形式,语句块可以是串行块(begin…end)或并行块(fork…join)。当逻辑表达式为“真”时,语句块立即得到执行;否则,暂停进程并等待,直到逻辑表达式变为“真”,再开始执行。
对于第二种形式,当仿真执行到wait语句时,如果条件表达式为真,那么立即结束该语句的执行,仿真程序继续往下执行;否则,仿真程序进入等待状态,直到条件表达式为真。
四、事件控制语句
在仿真程序中,可以通过“@(事件表达式)”来完成单次事件的触发。分电平触发和信号跳变沿(posedge上升沿和negedge下降沿)触发两大类。
五、task和function语句
task语句和function语句可以将固定操作封装起来,配合延时控制语句,可精确模拟大多数常用的功能模块。
例:
- 'timescale 1ns / 1ps
- module tb_tri;
- parameter bsize = 8;
- parameter clk_period = 2;
- parameter cac_delay = 6;
- reg [(bsize-1):0] din;
- reg [(3*bsize-1):0] dout;
- // 定义完成3次方运算的task
- task tri_demo;
- input [(bsize-1):0] din;
- output [(3*bsize-1):0] dout;
- #cac_delay dout = din*din*din;
- endtask
- // 在串行语句块中调用task
- initial begin
- din = 0;
- end
- always #clk_period begin
- din = din + 10;
- // 任务调用语句
- tri_demo(din, dout);
- end
- endmodule
六、串行激励与并行激励语句
begin…end语句用于启动串行激励,fork…join语句用于启动并行激励。
fork…join语句语法格式如下:
fork : <>
时间控制1 行为语句1;
…
时间控制n 行为语句n;
join
其中,fork…join块内被赋值的语句必须为寄存器型变量。其主要特点如下:
- 并行块内语句是同时开始执行的。
- 并行块语句中指定的延时控制都是相对于程序流程进入并行块时刻的延时。
- 当并行块中所有语句都执行完之后,仿真程序才跳出并行块。整个并行块的执行时间等于块中执行时间最长的那条语句的执行时间。
- 并行块和串行块可以混合嵌套使用。
Verilog HDL常用的行为仿真描述语句的更多相关文章
- 【转】Verilog HDL常用建模方式——《Verilog与数字ASIC设计基础》读书笔记(四)
Verilog HDL常用建模方式——<Verilog与数字ASIC设计基础>读书笔记(四) Verilog HDL的基本功能之一是描述可综合的硬件逻辑电路.所谓综合(Synthesis) ...
- Verilog HDL的程序结构及其描述
这篇博文是写给要入门Verilog HDL及其初学者的,也算是我对Verilog HDL学习的一个总结,主要是Verilog HDL的程序结构及其描述,如果有错,欢迎评论指出. 一.Verilog ...
- Verilog HDL常用综合语法
前面已经记录了一些组成Verilog的基本组成,可以用这些基本组成来构成表达式.这一节,就来记录一下把这些表达式构成一个文件的各种行为描述语句. ①这里用Verilog基本要素进行的行为描述主要是针对 ...
- 你知道Verilog HDL程序是如何构成的吗
本节通过硬件描述语言Verilog HDL对二十进制编码器的描述,介绍Verilog HDL程序的基本结构及特点. 二十进制编码器及Verilog HDL描述 二十进制编码器是数字电路中常用的电路单元 ...
- Sublime Text 2 和 Verilog HDL
Sublime Text 2 和 Verilog HDL Date Fri 04 July 2014 Tags Sublime Text / Vivado Sublime Text 代码编辑器之于程 ...
- 基于Verilog HDL整数乘法器设计与仿真验证
基于Verilog HDL整数乘法器设计与仿真验证 1.预备知识 整数分为短整数,中整数,长整数,本文只涉及到短整数.短整数:占用一个字节空间,8位,其中最高位为符号位(最高位为1表示为负数,最高位为 ...
- 写自己的第二级处理器(3)——Verilog HDL行为语句
我们会继续上传新书<自己动手写处理器>(未公布),今天是第七章,我每星期试试4 2.6 Verilog HDL行为语句 2.6.1 过程语句 Verilog定义的模块一般包含有过程语句,过 ...
- 关于初次使用Verilog HDL语言需要懂的基本语法
关于初次使用Verilog HDL语言需要懂的基本语法 1.常量 数字表达式全面的描述方式为:<位宽><进制><数字> 8’b10101100,表示位宽为8的二进制 ...
- 关于Verilog HDL的一些技巧、易错、易忘点(不定期更新)
本文记录一些关于Verilog HDL的一些技巧.易错.易忘点等(主要是语法上),一方面是方便自己忘记语法时进行查阅翻看,另一方面是分享给大家,如果有错的话,希望大家能够评论指出. 关键词: ·技巧篇 ...
随机推荐
- PHP ‘asn1_time_to_time_t’函数内存损坏漏洞
漏洞名称: PHP ‘asn1_time_to_time_t’函数内存损坏漏洞 CNNVD编号: CNNVD-201312-348 发布时间: 2013-12-18 更新时间: 2013-12-18 ...
- SCOI2005互不侵犯King
1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1499 Solved: 872[Submit][S ...
- 在ASP.NET MVC中实现基于URL的权限控制
本示例演示了在ASP.NET MVC中进行基于URL的权限控制,由于是基于URL进行控制的,所以只能精确到页.这种权限控制的优点是可以在已有的项目上改动极少的代码来增加权限控制功能,和项目本身的耦合度 ...
- android WebViewClient的方法解释
1.在点击请求的是链接是才会调用,重写此方法返回true表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边. public boolean shouldOverrideUrlLo ...
- WMS
Web地图位置服务 Web地图服务(Web map service)利用具有地理空间位置信息的数据制作地图.其中将地图定义为地理数据可视的表现.这个规范定义了三个操作:GetCapabitities返 ...
- spring--AOP1--6
AOP 之 6.1 AOP基础 6.1.1 AOP是什么 考虑这样一个问题:需要对系统中的某些业务做日志记录,比如支付系统中的支付业务需要记录支付相关日志,对于支付系统可能相当复杂,比如可能有自己的 ...
- [Stephen]Export from Excel to ALM
1.根据当前安装的ALM版本和Excel版本到https://hpln.hp.com/page/alm-excel-addin-page中对应的插件进行下载安装,安装时Excel需要关闭.安装成功后, ...
- By类的使用
举例,页面上有5个table,每个table都有标题栏和内容栏你觉的我是把每个table的标题都放到List里面遍历使用还是现指定table,在获取table的标题栏使用呢明显后面的方便不容易乱麽所 ...
- Does not contain a valid host;port authority解决方法
ERRORorg.apache.hadoop.hdfs.server.namenode.NameNode: java.lang.IllegalArgumentException: Does not c ...
- iOS 检测网络切换
CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), //center ...