在fpga的设计中有时会遇到 latch 的报错
1.latch是什么?
Latch 就是锁存器,是一种在异步电路系统中,对输入信号电平敏感的单元,用来存储信息。锁存器在数据锁存使能时,数据被锁存,输入信号不起作用。这违背了组合逻辑中输出随输入改变的规律。
在同步电路中 Latch 会产生不好的效果,如对毛刺敏感;不能异步复位,上电后处于不定态;还会让静态时序分析变得十分复杂;在 FPGA 的资源中,大部分器件没有锁存器这个东西,所需要用使用寄存器来组成锁存器所以会占用更多逻辑资源;在 ASIC 设计中,锁存器也会带来额外的延时和 DFT,并不利于提高系统的工作频率,所以要避免产生Latch 。
2.latch的产生的三种原因
1. 组合逻辑中 if 语句没有写 else;
2. 组合逻辑中 case 的条件没完全列举时且不写 default;
3. 组合逻辑中输出变量赋值给自己。
总结:在组合逻辑中要避免输出信号处于不定的状态,一定要让输出无论在任何条件下都有一个已知的状态,就可以避免 Latch 的产生。