Verilog设计:非阻塞与阻塞赋值语句解析

需积分: 33 1 下载量 56 浏览量 更新于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语言特点等内容,旨在帮助学生掌握设计复杂数字逻辑系统所需的技能和工具。通过这样的学习方法,学生可以更好地理解和运用非阻塞和阻塞赋值语句,以实现有效的数字系统模型、仿真、综合、验证和实现。