Verilog语法详解:禁止命名块与任务
需积分: 33 52 浏览量
更新于2024-08-22
收藏 317KB PPT 举报
"北航夏宇闻教授的Verilog讲稿详细讲解了Verilog语言中的禁止命名块和任务的使用,以及语法进阶内容,包括测试模块的编写、设计流程、并行块的运用和强制激励等概念。"
在Verilog编程中,`module`是定义设计的基本单元,例如`do_arith`模块包含了输入和输出信号,以及内部的逻辑操作。在这个例子中,`out`是一个16位的输出,`a`、`b`、`c`、`d`、`e`是8位输入,`clk`和`en_mult`分别是时钟和使能信号。`always`块用于描述时序逻辑,`@`后的条件可以是边沿触发(如`posedge clk`)或者事件触发(如`negedge en_mult`)。
在`always`块内部,`begin`关键字用于开启一个代码块,这里命名为`arith_block`,它是一个命名块,便于阅读和理解。`reg [3:0] tmp1, tmp2;`声明了两个局部变量`tmp1`和`tmp2`,它们仅在`arith_block`内部有效。`{tmp, tmp2}=f_or_and(a, b, c, d, e);`是函数调用,`f_or_and`函数返回值被分配给了`tmp`和`tmp2`。如果`en_mult`为高,`multme`任务将被执行,这个任务可能实现了某种乘法运算。
当`en_mult`变为低电平时,使用`disable`语句可以禁止已命名的块(`arith_block`)和任务(`multme`)的执行,这在需要停止特定逻辑时非常有用。
在设计流程中,Verilog设计通常包括包含文件、设计文件、厂家元件库文件,最后由编译器生成激励和实际输出信号的仿真结果。测试平台是验证设计的重要部分,它可以包含激励信号和预期结果,通过简单的或复杂的测试平台来验证设计的功能正确性。
并行块(`fork…join`)是Verilog中实现并发操作的关键结构。在示例模块`inline_tb`中,`fork`和`join`之间的语句将在同一时间点开始执行,即使它们的开始时间不同,也可以同时运行。这种并行执行使得能够模拟多个事件同时发生的情况,例如循环和任务。
此外,Verilog还支持过程连续赋值,即在过程中对信号进行即时赋值,但这通常是不可综合的,主要用于仿真阶段对信号的强制设定。
本讲稿深入讲解了Verilog语言的高级特性,包括模块定义、命名块、任务、并行执行以及测试平台的构建,这些都是Verilog设计和验证中的核心概念。理解和熟练掌握这些知识点对于进行数字系统的设计和验证至关重要。
2019-09-05 上传
2010-11-07 上传
2020-04-30 上传
2010-04-23 上传
2008-09-07 上传
2010-09-11 上传
点击了解资源详情
劳劳拉
- 粉丝: 21
- 资源: 2万+
最新资源
- JavaScript实现的高效pomodoro时钟教程
- CMake 3.25.3版本发布:程序员必备构建工具
- 直流无刷电机控制技术项目源码集合
- Ak Kamal电子安全客户端加载器-CRX插件介绍
- 揭露流氓软件:月息背后的秘密
- 京东自动抢购茅台脚本指南:如何设置eid与fp参数
- 动态格式化Matlab轴刻度标签 - ticklabelformat实用教程
- DSTUHack2021后端接口与Go语言实现解析
- CMake 3.25.2版本Linux软件包发布
- Node.js网络数据抓取技术深入解析
- QRSorteios-crx扩展:优化税务文件扫描流程
- 掌握JavaScript中的算法技巧
- Rails+React打造MF员工租房解决方案
- Utsanjan:自学成才的UI/UX设计师与技术博客作者
- CMake 3.25.2版本发布,支持Windows x86_64架构
- AR_RENTAL平台:HTML技术在增强现实领域的应用