latch是时序逻辑吗,latch工作原理

在 Verilog 中用来暂时存放参与运算的数据和运算结果的变量。一个变量声明为寄存器时,它既可以被综合成触发器,也可能被综合成 Latch,甚至是 wire 型变量。但是大多数情况下我们希望它被综合成触发器,但是有时候由于代码书写问题,它会被综合成不期望的 Latch 结构。

Latch 的主要危害有:

1)输入状态可能多次变化,容易产生毛刺,增加了下一级电路的不确定性;2)在大部分 FPGA 的资源中,可能需要比触发器更多的资源去实现 Latch 结构;3)锁存器的出现使得静态时序分析变得更加复杂。

Latch 多用于门控时钟(clock gating)的控制,一般设计时,我们应当避免 Latch 的产生。

避免此类 latch 的方法主要有 2 种,一种是补全 if-else 结构,或者对信号赋初值。

为避免 latch 的产生,在组合逻辑中,需要注意以下几点:

1)if-else 或 case 语句,结构一定要完整2)不要将赋值信号放在赋值源头,或条件判断中3)敏感信号列表建议多用 always@*)

latch的好处:
因为使用latch可以timing borrow,在高速电路设计中(timing会很紧),有时候就需要用latch。

参考:

https://www.runoob.com/w3cnote/verilog-latch.html

https://blog.csdn.net/weixin_30314813/article/details/94942012

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注