新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > FPGA重点知识13条,助你构建完整“逻辑观”之三

FPGA重点知识13条,助你构建完整“逻辑观”之三

作者:时间:2018-02-11来源:网络收藏

  六、锁存器与触发器的区别

本文引用地址:http://www.eepw.com.cn/article/201802/375720.htm

  锁存器和触发器是具有记忆功能的二进制存贮器件,是组成各种逻辑电路的基本器件之一。区别为: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高,但在中正好相反,因为中没有标准的latch单元,但有DFF单元,一个LATCH需要多个LE才能实现。latch是电平触发,相当于有一个使能端,且在激活之后(在使能电平的时候)相当于导线了,随输出而变化。在非使能状态下是保持原来的信号,这就可以看出和flip-flop的差别,其实很多时候latch是不能代替ff的。

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

  5、目前latch只在极高端的电路中使用,如intel 的P4等CPU。 中有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


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

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

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

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

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

  它们之间的不同在于:锁存器没有时钟信号,而触发器常常有时钟触发信号。

  锁存器是异步的,就是说在输入信号改变后,输出信号也随之很快做出改变非常快。而另外一方面,今天许多计算机是同步的,这就意味着所有的时序电路的输出信号随着全局的时钟信号同时做出改变。触发器是一个同步版锁存器。

  触发器泛指一类电路结构,它可以由触发信号 (如: 时钟、置位、复位等) 改变输出状态, 并保持这个状态直到下一个或另一个触发信号来到时。触发信号可以用电平或边沿操作,锁存器是触发器的一种应用类型。

  七、D触发器和D锁存器的区别

  钟控D触发器其实就是D锁存器,边沿D触发器才是真正的D触发器,钟控D触发器在使能情况下输出随输入变化,边沿触发器只有在边沿跳变的情况下输出才变化。

  两个锁存器可以构成一个触发器,归根到底还是dff是边沿触发的,而latch是电平触发的。锁存器的输出对输入透明的,输入是什么,输出就是什么,这就是锁存器不稳定的原因,而触发器是由两个锁存器构成的一个主从触发器,输出对输入是不透明的,必须在时钟的上升/下降沿才会将输入体现到输出,所以能够消除输入的毛刺信号。

  八、寄存器与锁存器的区别

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

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

  13、流水线

  流水线设计是经常用于提高所设计系统运行速度的一种有效的方法。

  为了保障数据的快速传输,必须使系统运行在尽可能高的频率上,但如果某些复杂逻辑功能的完成需要较长的延时,就会使系统难以运行在高的频率上,在这种情况下,可使用流水线技术,即在长延时的逻辑功能块中插入触发器,使复杂的逻辑操作分步完成,减小每个部分的延时,从而使系统的运行频率得以提高。流水线设计的代价是增加了寄存器逻辑,增加了芯片资源的耗用。

  如某个复杂逻辑功能的实现需较长的延时,可将其分解为几个(如3个)步骤来实现,每一步的延时变小,在各步间加入寄存器,以暂存中间结果,这样可大大提高整个系统的最高工作频率。


  设计综合到不同器件的最高工作频率


  流水线设计的关键在于整个设计时序的合理安排,前后级接口间数据流速的匹配。如果前后级流量相等,前级输出直接可作为后级输入,前级流量大于后级时,则需要增加缓存,前级流量小于后级时,则需要通过逻辑复制,串并转换等方式将数据分流,或者前级存储后输出到后级进行处理。


上一页 1 2 下一页

关键词: FPGA 时序

评论


相关推荐

技术专区

关闭