← 问题知识点

推荐答案 测试一下

3.1 锁存器与触发器区别

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

参考答案

设计之外的锁存器(即非故意生成的锁存器)通常出现在组合逻辑描述中,当条件语句(如 if-else 或 case)未能覆盖所有可能的分支时,综合工具会推断出锁存器以保持未指定情况下的输出状态。具体场景包括:1. if 语句缺少 else 分支,且条件不满足时输出未定义;2. case 语句缺少 default 分支,且未覆盖所有 case 项;3. 在 always 块(组合逻辑)中对同一变量在多个分支中赋值,但某些路径未赋值;4. 敏感列表不完整(如遗漏了某些输入信号),但综合通常仍按组合逻辑处理,不过更常见的是上述条件不完整。此外,在 Verilog 中,将 reg 型变量用于 always @(*) 组合逻辑块时,若赋值不完整也会推断锁存器。锁存器是电平敏感存储单元,与触发器(边沿敏感)不同,其透明特性会导致毛刺传播、时序分析困难,且多数 FPGA 是寄存器密集型,使用锁存器会占用更多逻辑资源,并使电路不可测。因此设计时应避免无意生成锁存器,通过在 if 后加 else、case 加 default,并确保所有分支赋值完整来消除。

涉及知识点

  • 锁存器与触发器基本原理
  • 组合逻辑中产生锁存器的条件
  • if-else与case语句的完整性要求
  • FPGA内部资源结构特点
  • 毛刺敏感性与电路可测性
← 上一题
登录后反馈错题
下一题 →