← FPGA数字IC知识手册

推荐答案 测试一下

设计描述方式

题目配图
编程题 中等 笔试真题

参考答案

本题考察的是硬件描述语言(Verilog/VHDL)中常见的设计描述方式,核心在于理解组合逻辑与时序逻辑的区别以及赋值语句的用法。组合逻辑通常使用assign连续赋值或always@(*)块内使用阻塞赋值(=)实现,输出仅依赖于当前输入,无记忆单元;时序逻辑则使用always@(posedge clk)块内采用非阻塞赋值(<=)实现,输出在时钟边沿更新,具有寄存器级存储特性。易错点在于:1)组合逻辑块中的敏感列表遗漏信号会导致仿真与综合不一致;2)时序逻辑中误用阻塞赋值会导致仿真出现竞争冒险;3)组合逻辑块内若生成锁存器(如if语句缺少else),会引入意外latch;4)多驱动赋值(同一信号出现在多个assign或always块中)导致不可预测行为。设计时需区分:always@(*)用于组合逻辑,always@(posedge clk)用于时序逻辑;if-else或case需确保所有分支覆盖完整才能避免latch;同步复位与异步复位描述方式不同(异步复位在敏感列表中加入posedge rst_n)。此外,结构化描述(模块实例化)、数据流描述(assign)、行为描述(always)三种层次在实际设计中经常混合使用,需注意综合工具对描述结构的支持。掌握这些规范可提高代码可读性、可综合性与可靠性。

涉及知识点

  • 组合逻辑与时序逻辑描述方法
  • 阻塞赋值与非阻塞赋值的区别
  • 避免生成意外锁存器的规则
  • 敏感列表完整性与多驱动问题
  • always块与assign的区别
  • 同步复位与异步复位描述规范
← 上一题
登录后反馈错题
下一题 →