verilog中initial、always模块的使用方法
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模块的使用方法相关推荐
- python中tkinter模块_使用Python中的tkinter模块作图的方法
python简述: Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.自从20世纪90年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程.Python[1 ...
- 在verilog中调用VHDL模块
习惯了自己发现一些小问题,既然发现了,就记下来吧,不然又要忘了,这是多么悲痛的领悟. 今天在用vivado进行块设计时所生成的顶层模块居然是用VHDL语言描述的,这时郁闷了,表示只看过VHDL语法但没 ...
- verilog中initial语句的基本使用
一.知识点 所有的initial语句内的语句构成了一个initial块. initial块从仿真0时刻开始执行,在整个仿真过程中只执行一次. 如果一个模块中包括了若干个initial块,则这些init ...
- Verilog中initial和always的执行先后顺序
以下六个实验对比可出结果,结果如下 结果一:1,2或者3,4对比可知在always和initial对同一个变量赋值起冲突的时候,并不是先执行initial,而是看代码书写的先后顺序. 结果二:通过1和 ...
- matlab的from模块_matlab/simulink中goto/from模块的使用方法及问题解决
首先,介绍goto/from的用法: 1.在一个subsystem中放置一个goto,goto与一个经过运算后的输入信号连接:对goto中的tag命名,在tag visibility选择local/s ...
- verilog中数组的定义_开源仿真工具Icarus Verilog中的verilog parser
前面提到用flex和bison开处理命令行参数,回顾一下:开源仿真工具Icarus Verilog中的命令行参数处理方法. 那么Verilog的parser又是怎么实现的呢?简单地说,与做命令行参数的 ...
- matlab中signal在哪里,matlab中Signal Builder模块的用法总结
在网上搜了好久,关于matlab中Signal Builder模块的使用方法很少,由于做仿真时需要用到这个模块,无奈自己摸索过后在此总结下使用方法: 双击Signal Builder模块弹出如下对话框 ...
- Verilog中inout端口的使用方法
Verilog中inout端口的使用方法 (本文中所有Verilog描述仅为展示inout端口的用法,实际描述则需要更丰富的功能描述) Inout端口的使用 在芯片中为了管脚复用,很多管脚都是双向的, ...
- Verilog初级教程(11)Verilog中的initial块
文章目录 前言 正文 语法格式 initial块是用来干什么的? initial块何时开始又何时结束? 一个模块中允许有多少个initial块? 参考资料 写在最后 前言 仿真中通常会依次执行一组Ve ...
最新文章
- ASP.NET MVC 3 RTM
- 机器学习(四)——损失函数
- .NET Core中的验证组件FluentValidation的实战分享
- 前端学习(2673):vite
- msp430入门编程21
- c语言 strupr,C语言 strupr()用法及代码示例
- html 特效隐藏div,如何实现用css3显示隐藏一个div特效
- 菜鸟教程nginx视频_Nginx教程(一) Nginx入门教程
- iPhone十年越狱史
- 计算机水平居中,excel表格居中设置可数据还是偏左-excel表格,页面设置选水平居中了,为什么预览时它......
- 好心情:抗抑郁药物的不良反应和处理措施
- Spring 测试运行的时候提示 Unable to find a @SpringBootConfiguration 错误
- Android仿keep运动轨迹动画,仿keep思路
- 哥德尔预言无穷小微积分是未来的数学分析
- 愚见——工大之软件工程
- 速算24点java_24点速算游戏 Java 代码
- 黄仁勋:英伟达收购 ARM 是谣言,下周发布会有惊喜
- 机器人学导论(第三版) 第三章 操作臂运动学 3.5操作臂运动学
- 推荐在线编程学习网站
- ASR项目实战-语音识别
热门文章
- 打印_battery_status.scale
- 什么是AP,什么是CP,什么是CAP?
- 牛客BM99-顺时针旋转矩阵-C++
- springboot Possibly consider using a shorter maxLifetime value.
- 【飞桨/百度领航团/零基础Python】学习心得
- 聊一聊泛型的可空性(kotlin)
- 最小拍有纹波系统仿真实验Matlab,控制技术实验报告--基于Matlab的最少拍控制系统设计.doc...
- Android PCM 播放全是噪音滋滋滋
- 怎么下载网页上的视频
- javascript 鸡兔同笼问题(抛砖引玉)