Verilog设计:非阻塞与阻塞赋值语句解析
需积分: 33 194 浏览量
更新于2024-08-14
收藏 1.19MB PPT 举报
"夏宇闻的Verilog数字系统设计教程"
在Verilog语言中,赋值语句有两种主要类型:非阻塞赋值(non-blocking assignment, <=)和阻塞赋值(blocking assignment, =)。这两者在数字系统设计中扮演着重要的角色,尤其是在综合和仿真过程中。
非阻塞赋值(b <= a):
1. 非阻塞赋值在同一个进程或always块内是并行执行的。这意味着在同一时间片内,块内所有非阻塞赋值语句会同时计算新值,但更新变量的值会发生在所有这些赋值之后。
2. 使用非阻塞赋值时,变量b的新值会在所有赋值都完成后才更新,这使得它更适合于描述组合逻辑。在时序逻辑中,非阻塞赋值可以正确地表示寄存器的赋值行为,因为它考虑了时钟边沿触发的效果。
3. 在可综合代码中,非阻塞赋值通常更受欢迎,因为它们能准确反映硬件的行为,避免因顺序执行而导致的错误。
阻塞赋值(b = a):
1. 阻塞赋值会立即更新变量b的值,并且只有当这个赋值完成之后,才会执行下一条语句。这在描述顺序逻辑时可能导致问题,因为它不是按照硬件的实际工作方式进行的。
2. 在一个always块中,阻塞赋值会导致语句的顺序执行,这在某些情况下是必要的,比如在描述控制逻辑或者进行算术运算时。
3. 对于可综合代码,阻塞赋值在时序逻辑中不推荐,因为硬件中并没有与之相对应的电路概念,可能会导致综合结果不符合预期。
在学习Verilog的过程中,理解这两种赋值方式的差异至关重要。夏宇闻的教程强调了理论与实践的结合,通过课堂讲解、实验操作以及个人自学来深入理解数字系统设计。课程涵盖了复杂数字系统与信号处理的联系、数字系统设计方法、Verilog语言特点等内容,旨在帮助学生掌握设计复杂数字逻辑系统所需的技能和工具。通过这样的学习方法,学生可以更好地理解和运用非阻塞和阻塞赋值语句,以实现有效的数字系统模型、仿真、综合、验证和实现。
1964 浏览量
697 浏览量
375 浏览量
128 浏览量
1336 浏览量
112 浏览量
305 浏览量

小炸毛周黑鸭
- 粉丝: 26
最新资源
- Avogadro:跨平台分子编辑器的开源实力
- 冰点文库下载工具Fish-v327-0221功能介绍
- 如何在Android手机上遍历应用程序并显示详细信息
- 灰色极简风格的html5项目资源包
- ISD1820语音模块详细介绍与电路应用
- ICM-20602 6轴MEMS运动追踪器英文数据手册
- 嵌入式学习必备:Linux公社问答精华
- Fry: Ruby环境管理的简化解决方案
- SimpleAuth:.Net平台的身份验证解决方案和Rest API调用集成
- Linux环境下WTRP MAC层协议的C代码实现分析
- 响应式企业网站模板及多技术项目源码包下载
- Struts2.3.20版发布,迅速获取最新稳定更新
- Swift高性能波纹动画实现与核心组件解析
- Splash:Swift语言的快速、轻量级语法高亮工具
- React Flip Toolkit:实现高效动画和布局转换的新一代库
- 解决Windows系统Office安装错误的i386 FP40EXT文件指南