Verilog学习之路(11)—事件控制(时间延迟)

一、前言

事件控制是为行为语句的执行指定触发事件的信号延迟方式。
事件控制可以分为边沿触发事件控制电平敏感事件控制

边沿触发事件控制方式是指在指定的信号变化时刻,即指定的信号跳变边沿才触发语句的执行,而当信号处于稳定状态下时则不会触发语句的执行。
电平敏感事件是在指定的条件表达式为真时启动需要执行的语句。

二、事件表达式

一个事件表达式可以以三种形式出现:

形式1: <信号名>
形式2: posedge<信号名>
形式3: negedge<信号名>

其中, <信号名> 可以是任何数据类型的标量或矢量。

VerilogHDL中规定的正跳变和负跳变如下所示:

三、边沿触发事件控制

边沿触发事件控制的语法格式有如下四种形式:

1、形式1

@(<事件表达式>) 行为语句;

这种语法格式的敏感事件列表内只包含了一个触发事件,只有当这个指定的触发事件发生之后,后面的语句才能启动执行。如下所示的时钟脉冲计数器的示例中,触发事件时钟信号"clk"发生正跳变时,计数寄存器count_out增加1。

module clk_counter(clk, count_out);input clk;output reg [3:0] count_out;initial count_out = 0;always@(posedge clk)counter_out = counter_out +1;endmodule

2、形式2

@(<事件表达式>);

这种语法格式的敏感事件列表内只包含了一个触发事件,没有行为语句来指定触发事件发生时要执行的操作。用于测定输入时钟正电平、负电平持续时间以及时钟周期的模块示例如下所示:

3、形式3

@(<事件表达式1> or <事件表达式2> or ... or <事件表达式n>) 行为语句;

这种语法格式的敏感事件列表内指定了由不同<事件表达式>代表的多个触发事件,这些<事件表达式>之间要用关键词or组合起来,只要这些触发事件中的任何一个得到发生,就启动行为语句的执行。

3、形式4

@(<事件表达式1> or <事件表达式2> or ... or <事件表达式n>);

同第三种语法格式一样,这种语法格式内指定了多个触发事件,但是这种格式中没有行为语句。

四、电平敏感事件控制

电平敏感事件控制用关键词wait来表示。电平敏感事件控制的语法格式如下所示:

电平敏感事件控制的第一种形式中包含了行为语句,它可以时串行块(begin-end)语句或并行块(fork-join)语句,也可以是单条行为语句。如下所示:

wait(enable==1) begind = a&b;d = d|c;
end

wait语句的作用是根据条件表达式的真假来控制下面begin-end语句块的执行,在使能信号enable变为高电平后,也就是enable==1的语句为真时进行a,b,c之间的与或操作;若使能信号enable未变为高电平,则begin-end语句块的执行需要等到enable变为高电平之后才开始执行。

五、附录

上一篇:Verilog学习之路(10)—仿真使用的系统任务
下一篇:

Verilog学习之路(11)—事件控制(时间延迟)相关推荐

  1. OpenGL学习之路13----相机控制(鼠标操作)

    代码放在github上 本文根据教程:ogldev进行扩充学习,一步步从零开始,记录学习历程 到目前为止,我们已经可以将一个物体以任意大小.任意角度和任意位置摆放在世界空间,相关博文链接: OpenG ...

  2. Verilog学习之路(4)— Verilog HDL的程序设计语句

    Verilog HDL的程序设计语句 一.连续赋值语句 连续赋值语句通常用来描述组合逻辑电路,连续赋值的目标类型主要是标量线网和向量线网两种,标量线网如"wire a,b;",向量 ...

  3. Verilog学习之路(8)— 时序电路的设计

    Verilog学习之路(8)- 时序电路的设计 一.前言 时序逻辑电路的输出不仅与当前时刻输入变量的取值有关,而且与电路的原状态,即与过去的输入情况有关. 时序逻辑电路的两个特点: 时序逻辑电路包括组 ...

  4. Verilog学习之路(6)— 组合电路的设计

    组合电路的设计 一.前言 组合电路的特点是电路中任意时刻的稳态输出仅仅取决于该时刻的输入,而与电路之前的状态无关,组合电路没有记忆功能. 在使用Verilog设计中组合电路的描述方法主要有四种:真值表 ...

  5. Verilog学习之路

    Verilog编程规范 1.冒号前后==同时==出现变量 2.模块接口写法 2.1 parameter . localparam.`define 1.冒号前后同时出现变量 在已知所需位宽的情况下,可使 ...

  6. Qt学习之路(11): MainWindow

    尽管Qt提供了很方便的快速开发工具QtDesigner用来拖放界面元素,但是现在我并不打算去介绍这个工具,原因之一在于我们的学习大体上是依靠手工编写代码,过早的接触设计工具并不能让我们对Qt的概念突飞 ...

  7. GO语言学习之路11

    2022/02/02package mainimport ("fmt""math/rand""time" )func test(arr *[ ...

  8. System Verilog学习笔记—随机化约束的控制

    目录 1.控制多个约束块儿constraint_mode() 2.控制随机变量 2.1 rand_mode() 2.2 randomize() with {} 2.3 randomize单独控制变量 ...

  9. ZYNQ学习之路11.AXI DMA

    一. AXI DMA简介 AXI DMA IP核提供了AXI4内存之间或AXI4-Stream IP之间的内存直接访问,可选为分散收集工作模式,初始化,状态和管理寄存器等通过AXI4-Lite 从机几 ...

  10. STM32学习之路-SysTick的应用(时间延迟)

    开发板:奋斗V5 好~ 菜B要来搞实验了.. 前面已经说了SysTick的工作原理什么的了,这里就不说了.. 先来做第一个实验: 盗自奋斗的样例,嘿嘿, 用SysTick产生1ms的基准时间,产生中断 ...

最新文章

  1. Testlink在linux上安装遇到的问题
  2. 蓝牙HCI剖析(二)
  3. day 02 python 基础
  4. 「雕爷学编程」Arduino动手做(21)——激光开关模块
  5. Android软硬整合设计与框架揭秘教程
  6. HTTP缓存策略 304
  7. PHP上传图片重命名6种方案
  8. K-Means原理及代码实现
  9. 上海 day16 -- python 常用模块1
  10. 关于动态库so的makefile编写
  11. 计算机用户名显示TEMP,windows7登陆创建TEMP临时个人配置文件夹解决方法-系统操作与应用 -亦是美网络...
  12. ps编辑工具:渐隐/合并拷贝
  13. 珠海市世鸿置业有限公司5周年线下交流会带你学会用基金理财
  14. Qt Quick事件处理之鼠标 键盘 定时器
  15. Proteor将收购Freedom Innovations资产,以此扩大下肢义肢业务
  16. 酷柚易汛开源版进销存常见问题解答
  17. 如何去除ie的select下拉框箭头图标
  18. 剑指offer--序列化与反序列化二叉树(先序递归,建树)
  19. python数据分析处理库-Pandas
  20. 使用Java进行简单的DDos攻击(手动滑稽!!)

热门文章

  1. Timeline编辑器绘制流程
  2. [电路笔记]二端口网络
  3. 一个文字类RPG游戏框架(走过路过别错过)C++
  4. Sh.k6p index.php,第二篇:shell基础命令(部分)
  5. puppet一键部署lnmt
  6. What is china
  7. php 打印出心形,利用php输出不同的心形图案_PHP
  8. 百度大脑手写文字识别使用攻略
  9. 年薪5w和50w的职场人思考力有什么区别
  10. 你有没有见过5GB大小的图片?