避免Latch产生
Latch简介:
Latch其实就是锁存器,是一种在异步电路系统中,对输入信号电平敏感的单元,用来存储信息。
锁存器在数据未锁存时,输出端的信号随输入信号变化,就像信号通过一个缓冲器,一旦锁存信号有效,则数据被锁存,输入信号不起作用。因此,锁存器也被称为透明锁存器,指的是不锁存时输出对于输入是透明的。
异步电路 与 同步电路
异步电路:异步电路主要是组合逻辑电路,用于产生FIFO或RAM的读写控制信号脉冲,但它同时也用在时序电路中,此时它没有统一的时钟,状态变化的时刻是不稳定的,通常输入信号只在电路处于稳定状态时才发生变化。
同步电路:同步电路是由时序电路(寄存器和各种触发器)和组合逻辑电路构成的电路,其所有操作都是在严格的时钟控制下完成的。这些时序电路共享同一个时钟CLK,而所有的状态变化都是在时钟的上升沿(或下降沿)完成的。
Latch的危害:
对毛刺敏感
不能异步复位
复杂的静态时序分析
占用更多逻辑资源
额外的延时
几种产生Latch的情况:
组合逻辑中 if-else条件分支语句缺少 else语句
组合逻辑中 case条件分支语句条件未完全列举,且缺少 default语句
组合逻辑中输出变量赋值给自己