推荐答案
测试一下
题目
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内部资源结构特点
- 毛刺敏感性与电路可测性