推荐答案
测试一下
题目
锁存器 /触发器
参考答案与知识点
参考答案
锁存器(Latch)不好的主要原因包括以下几点:
1. **电平敏感,易产生毛刺**:锁存器在使能信号有效期间透明,输入信号的任何毛刺或抖动都会直接传递到输出,导致输出不稳定。而触发器只在时钟边沿采样,天然具有滤波作用,更不易受干扰。
2. **时序分析困难**:锁存器的透明特性使得组合逻辑路径的时序约束复杂,静态时序分析(STA)难以准确计算数据到达时间和保持时间要求,容易导致建立/保持时间违规。触发器则具有精确的时序窗口,便于STA。
3. **浪费芯片资源**:在FPGA中,触发器是基本单元(如D触发器),而锁存器通常需要额外的组合逻辑(如查找表LUT)来模拟,占用更多LUT和布线资源。在ASIC中,锁存器面积小于触发器,但现代设计工具对锁存器优化不充分,仍可能增加面积。
4. **不符合同步设计思想**:锁存器是异步电路元素,容易引入多时钟域问题和亚稳态传播。同步设计倡导统一的时钟沿触发,锁存器破坏了这种规则,增加设计风险。
5. **可能产生透明模式**:当使能信号持续时间长于数据变化周期,锁存器可能多次采样,造成数据错误。触发器只在边沿动作,一次仅捕获一个稳定值。
6. **测试和可测性差**:锁存器内部状态不易被扫描链覆盖,影响故障覆盖率。触发器则容易集成到扫描链中,便于DFT。
因此,除非特定场合(如高速异步接口、寄存器文件等),一般推荐使用触发器代替锁存器。
涉及知识点
- 锁存器电平敏感 vs 触发器边沿敏感
- 锁存器引入毛刺和竞争冒险
- 锁存器导致时序分析复杂化
- FPGA中锁存器资源利用率低
- 锁存器不符合同步电路设计范式
- 锁存器对可测性和DFT的负面影响