initial、always、task、function模块均称为过程结构。initial模块和always模块都是同时并行执行的,initial模块只执行一次,而always模块则是不断重复地运行,具体使用方法如下。

1. initial模块

在进行仿真时,一个initial模块从模拟0开始执行,且在仿真过程中只执行一次,在执行一次后,该initial就被挂起,不再执行。如果仿真种有两个initial模块,则同时从0时刻开始并行执行。

initial模块是面向仿真的,是不可综合的,其格式如下:

initial

begin

快内变量说明

时序控制1  行为语句1;

........

时序控制n  行为语句n;

end

当块内只有一条语句且不需要定义局部变量时,begin...end可以省略。

例:initial模块的使用实例

initial begin   //初始化输入向量clk = 0;ar = 0;ai = 0;br = 0;bi = 0;//等待100ns,全局reset信号有效#100;ar = 20;ai = 10;br = 10;bi = 10;
end

2. always模块

always模块时一直重复执行的且可综合。其格式为:

always@(敏感事件列表)

begin

块内变量说明

时序控制1     行为语句1;

........

时序控制n    行为语句n;

end

敏感事件列表:由一个或多个事件表达式构成,只要表达式所代表的多个触发条件种的一个成立,就启动块内语句的执行。

module test1(
input wire i_a,
input wire i_b,
input wire i_c,
output reg o_d,
);always @(i_a or i_b)begino_d = i_a & i_b & i_c;end
endmodule

上例中,当i_a和i_b发生变化时,o_d的值随之变化。且由于i_c不在敏感列表中,故i_c的变化不会影响输出结果。上例中的触发方式又被称为电平触发,即只要敏感事件列表内信号的电平有变化,输出结果会随之变化。

always块的另一种常用的触发方式为边沿触发,指利用敏感事件列表内信号的边沿的跳变控制块内逻辑执行。上升沿用posedge关键字描述,下降沿用negedge关键字描述,实例如下:

例:边沿触发事件计数器

reg [5:0] d_cnt;
always @(posed clk)beginif(rst)d_cnt <= 0;elsed_cnt <= d_cnt + 1;end

上例中,只要时钟clk信号有上升沿,计数器d_cnt信号加一,实现计数功能。

参考:《无线通信FPGA设计》 田耕 徐文波 张延伟等.

verilog中initial、always模块的使用方法相关推荐

  1. python中tkinter模块_使用Python中的tkinter模块作图的方法

    python简述: Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.自从20世纪90年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程.Python[1 ...

  2. 在verilog中调用VHDL模块

    习惯了自己发现一些小问题,既然发现了,就记下来吧,不然又要忘了,这是多么悲痛的领悟. 今天在用vivado进行块设计时所生成的顶层模块居然是用VHDL语言描述的,这时郁闷了,表示只看过VHDL语法但没 ...

  3. verilog中initial语句的基本使用

    一.知识点 所有的initial语句内的语句构成了一个initial块. initial块从仿真0时刻开始执行,在整个仿真过程中只执行一次. 如果一个模块中包括了若干个initial块,则这些init ...

  4. Verilog中initial和always的执行先后顺序

    以下六个实验对比可出结果,结果如下 结果一:1,2或者3,4对比可知在always和initial对同一个变量赋值起冲突的时候,并不是先执行initial,而是看代码书写的先后顺序. 结果二:通过1和 ...

  5. matlab的from模块_matlab/simulink中goto/from模块的使用方法及问题解决

    首先,介绍goto/from的用法: 1.在一个subsystem中放置一个goto,goto与一个经过运算后的输入信号连接:对goto中的tag命名,在tag visibility选择local/s ...

  6. verilog中数组的定义_开源仿真工具Icarus Verilog中的verilog parser

    前面提到用flex和bison开处理命令行参数,回顾一下:开源仿真工具Icarus Verilog中的命令行参数处理方法. 那么Verilog的parser又是怎么实现的呢?简单地说,与做命令行参数的 ...

  7. matlab中signal在哪里,matlab中Signal Builder模块的用法总结

    在网上搜了好久,关于matlab中Signal Builder模块的使用方法很少,由于做仿真时需要用到这个模块,无奈自己摸索过后在此总结下使用方法: 双击Signal Builder模块弹出如下对话框 ...

  8. Verilog中inout端口的使用方法

    Verilog中inout端口的使用方法 (本文中所有Verilog描述仅为展示inout端口的用法,实际描述则需要更丰富的功能描述) Inout端口的使用 在芯片中为了管脚复用,很多管脚都是双向的, ...

  9. Verilog初级教程(11)Verilog中的initial块

    文章目录 前言 正文 语法格式 initial块是用来干什么的? initial块何时开始又何时结束? 一个模块中允许有多少个initial块? 参考资料 写在最后 前言 仿真中通常会依次执行一组Ve ...

最新文章

  1. ASP.NET MVC 3 RTM
  2. 机器学习(四)——损失函数
  3. .NET Core中的验证组件FluentValidation的实战分享
  4. 前端学习(2673):vite
  5. msp430入门编程21
  6. c语言 strupr,C语言 strupr()用法及代码示例
  7. html 特效隐藏div,如何实现用css3显示隐藏一个div特效
  8. 菜鸟教程nginx视频_Nginx教程(一) Nginx入门教程
  9. iPhone十年越狱史
  10. 计算机水平居中,excel表格居中设置可数据还是偏左-excel表格,页面设置选水平居中了,为什么预览时它......
  11. 好心情:抗抑郁药物的不良反应和处理措施
  12. Spring 测试运行的时候提示 Unable to find a @SpringBootConfiguration 错误
  13. Android仿keep运动轨迹动画,仿keep思路
  14. 哥德尔预言无穷小微积分是未来的数学分析
  15. 愚见——工大之软件工程
  16. 速算24点java_24点速算游戏 Java 代码
  17. 黄仁勋:英伟达收购 ARM 是谣言,下周发布会有惊喜
  18. 机器人学导论(第三版) 第三章 操作臂运动学 3.5操作臂运动学
  19. 推荐在线编程学习网站
  20. ASR项目实战-语音识别

热门文章

  1. 打印_battery_status.scale
  2. 什么是AP,什么是CP,什么是CAP?
  3. 牛客BM99-顺时针旋转矩阵-C++
  4. springboot Possibly consider using a shorter maxLifetime value.
  5. 【飞桨/百度领航团/零基础Python】学习心得
  6. 聊一聊泛型的可空性(kotlin)
  7. 最小拍有纹波系统仿真实验Matlab,控制技术实验报告--基于Matlab的最少拍控制系统设计.doc...
  8. Android PCM 播放全是噪音滋滋滋
  9. 怎么下载网页上的视频
  10. javascript 鸡兔同笼问题(抛砖引玉)