当前位置:主页 > 奇闻异事 >

触发器和锁存器的区别

锁存器(latch)和触发器(Flip-Flop,简写为 FF)是具有记忆功能的二进制存贮器件,是组成各种时序逻辑电路的基本器件之一。那么它们两者的区别在哪里呢?

区别为latch同其所有的输入信号相关,当输入信号变化时latch就变化,没有时钟端;flip-flop受时钟控制,只有在时钟触发时才采样当前的输入,产生输出。因为latch和flip-flop二者都是时序逻辑,所以输出不但同当前的输入相关还同上一时间的输出相关。

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

2、latch对输入电平敏感,受布线延迟影响较大,很难保证输出没有毛刺产生;DFF则不易产生毛刺。

3、如果使用门电路来搭建latch和DFF,则latch消耗的门资源比DFF要少,这是latch比DFF优越的地方。所以,在ASIC中使用 latch的集成度比DFF高,但在FPGA中正好相反,因为FPGA中没有标准的latch单元,但有DFF单元,一个LATCH需要多个LE才能实现。latch是电平触发,相当于有一个使能端,且在激活之后(在使能电平的时候)相当于导线了,随输出而变化。在非使能状态下是保持原来的信号,这就可以看出和flip-flop的差别,其实很多时候latch是不能代替ff的。

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

5、目前latch只在极高端的电路中使用,如intel 的P4等CPU。 FPGA中有latch单元,寄存器单元就可以配置成latch单元,在xilinx v2p的手册将该单元配置成为register/latch单元,附件是xilinx半个slice的结构图。其它型号和厂家的FPGA没有去查证。——个人认为xilinx是能直接配的而altera或许比较麻烦,要几个LE才行,也非xilinx的器件每个slice都可以这样配置,altera的只有DDR接口中有专门的latch单元,一般也只有高速电路中会采用latch的设计。altera的LE是没有latch的结构的,又查了sp3和sp2e,别的不查了,手册上说支持这种配置。有关altera的表述wangdian说的对,altera的ff不能配置成latch,它使用查找表来实现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

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。

对latch进行STA的分析其实也是可以,要对工具相当熟悉才行,不过很容易出错。当前PrimeTIme是支持进行latch分析的,现在一些综合工具内置的STA分析功能也支持,比如RTL piler, Design Compiler。除了ASIC里可以节省资源以外,latch在同步设计里出现的可能还是挺小的,现在处理过程中大都放在ff里打一下。

锁存器电平触发会把输入端的毛刺带入输出;而触发器由于边沿作用可以有效抑制输入端干扰。

在 CMOS 芯片内部经常使用锁存器, 在PCB板级结构上, 建议用触发器在时钟边沿上锁存数据。这是因为在锁存器闸门开启期间数据的变化会直接反映到输出端, 所以要注意控制闸门信号的脉冲宽度,而对于触发器,只考虑时钟的边沿。

门电路是构建组合逻辑电路的基础,而锁存器和触发器是构建时序逻辑电路的基础。门电路是由晶体管构成的,锁存器是由门电路构成的,而触发器是由锁存器构成的。也就是晶体管-》门电路-》锁存器-》触发器,前一级是后一级的基础。锁存器和触发器它们的输出都不仅仅取决于目前的输入,而且和之前的输入和输出都有关系。

它们之间的不同在于锁存器没有时钟信号,而触发器常常有时钟触发信号。 锁存器是异步的,就是说在输入信号改变后,输出信号也随之很快做出改变非常快。而一方面,今天许多计算机是同步的,这就意味着所有的时序电路的输出信号随着全局的时钟信号做出改变。触发器是一个同步版锁存器。 触发器泛指一类电路结构,它可以由触发信号 (如 时钟、置位、复位等) 改变输出状态, 并保持这个状态直到下一个或另一个触发信号来到时。触发信号可以用电平或边沿操作,锁存器是触发器的一种应用类型。

寄存器与锁存器的功能是提供数据寄存和锁存。

寄存功能是指把数据暂时保存,需要时取出。锁存功能是指总线电路中,锁定数据输出,使输出端不随输入端变化。

以上就是触发器和锁存器的区别了,希望大家对此能有更加深入的了解。

下一篇:cmyk和rgb区别

生活技能

微信公众号