避免Latch的产生
1. Latch是什么?
Latch其实就是锁存器,是一种在异步电路系统中对输入信号电平敏感的单元,用来存储信息。
锁存器在数据未锁存时,输出端的信号随输入信号变化,就像信号通过一个缓冲器,一旦锁存信号有效,则数据被锁存,输入信号不起作用。
因此,锁存器也被称为透明锁存器,指的是不锁存时输出对于输入是透明的。
2. Latch的危害
Latch在异步电路中是非常有用的,但是我们设计的是同步电路,所以要尽量避免Latch的产生
在同步电路中Latch会产生如:毛刺敏感;不能异步复位,上电后处于不定态;静态时序变得复杂。
且在FPGA里大部分器件没有锁存器,所以使用寄存器组成锁存器会占用更多的资源。
3. 几种产生Latch的情况
组合逻辑中 if 语句没有 else
组合逻辑中 case 条件不能完全列举时没有写 default
组合逻辑中输出变量赋值给自己 (形成闭环)
4. 结论
FPGA设计是设计同步电路,避免Latch的产生十分重要,编写代码的时候一定要小心。