latch与DFF的区别 (2008-09-06 18:31:56)

hegangben
2025-07-14 / 0 评论 / 0 阅读 / 正在检测是否收录...

latch与DFF的区别

收集了一下网上资源,总结如下:

1、latch由电平触发,非同步控制。在使能信号有效时latch相当于通路,在使能信号无效时latch保持输出状态。DFF由时钟沿触发,同步控制。

2、latch容易产生毛刺(glitch),DFF则不易产生毛刺。

3、如果使用门电路来搭建latch和DFF,则latch消耗的门资源比DFF要少,这是latch比DFF优越的地方。所以,在ASIC中使用latch的集成度比DFF高,但在FPGA中正好相反,因为FPGA中没有标准的latch单元,但有DFF单元,一个LATCH需要多个LE才能实现。

4、latch将静态时序分析变得极为复杂。

一般的设计规则是:在绝大多数设计中避免产生latch。它会让您设计的时序完蛋,并且它的隐蔽性很强,非老手不能查出。latch最大的危害在于不能过滤毛刺。这对于下一级电路是极其危险的。所以,只要能用D触发器的地方,就不用latch。

有些地方没有时钟,也只能用latch了。比如现在用一个clk接到latch的使能端(假设是高电平使能),这样需要的setup时间,就是数据在时钟的下降沿之前需要的时间,但是如果是一个DFF,那么setup时间就是在时钟的上升沿需要的时间。这就说明如果数据晚于控制信号的情况下,只能用latch,这种情况就是,前面所提到的latch timing borrow。基本上相当于借了一个高电平时间。也就是说,latch借的时间也是有限的。

在if语句和case不全很容易产生latch,需要注意。

VIA题目

这两个代码哪个综合更容易产生latch:
代码1
always @(enable or ina or inb)
begin
if(enable)

begin
data_out = ina;
end
else
begin
 data_out = inb;
end

end
代码2
input [3:0] data_in;
always @(data_in)
begin

case(data_in)
  0 :        out1 = 1'b1;
  1,3 :      out2 = 1'b1;
  2,4,5,6,7 : out3 = 1'b1;
  default :   out4 = 1'b1;
 endcase

end
答案是代码2在综合时更容易产生latch。

0

评论 (0)

取消