锁存器和触发器的区别

锁存器和触发器是具有记忆功能的二进制存贮器件,是组成各种时序逻辑电路的基本器件之一。区别为:

一、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将静态时序分析变得极为复杂。(可以理解为不能分析)

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

另一方面要注意,当使用case语句和if…else语句时,一定要注意把可能出现的情况都列出来。如case语句需要使用default关键字把剩余的情况包含起来,而使用if语句最好加上else部分。

你可能感兴趣的:(verilog笔记)