广告

原创 Xilinx FPGA学习笔记(5)——锁存器和触发器

2017-10-26 16:53 618 0 分类: FPGA/CPLD


1、锁存器(latch

锁存器是电平触发的存储单元,数据存储的动作取决于输入时钟(或者使能)信号的电平值,当锁存器使能时,输出才会随着输入的变化而变化。锁存器有2个输入,一个是使能信号en,另一个是输入数据信号data,它有一个输出Q,锁存器的功能就是在en有效的时候把data的值传给Q,这也是锁存的过程。



2、触发器(Flip-Flop,FF

触发器也叫双稳态门或者双稳态触发器,是一种可以在两种状态下运行的数字逻辑电路。触发器一直保持自身的状态,直到它收到输入脉冲,这就称为触发。当收到输入脉冲时,输出就会根据规则改变状态,然后保持这种状态直到收到了下一个触发。触发器对脉冲边沿敏感,其状态只在时钟脉冲的上升沿或者下降沿瞬时改变。


3、锁存器和触发器的区别

  1. 它们都是具有记忆功能的二进制存储器件,是组成各种时序逻辑电路的基础。锁存器和它所有的输入信号相关,当输入信号变化时,锁存器输出就变化,没有时钟端。触发器(FF)受时钟控制,只有在时钟触发时才采样当前的输入,产生输出。同时,因为latchFF都是时序逻辑,所以输出不仅与当前输入相关还与上一时间输出相关。
  2. 锁存器(latch)由电平触发,非同步控制。在使能时,latch相当于通路,使能无效时,保持输出状态。D触发器(DFF)由时钟沿触发,同步控制。
  3. 锁存器(latch)对输入电平敏感,受布线延迟影响大,很难保证输出没有毛刺产生,而DFF则不易产生毛刺。
  4. 如果使用门电路搭建latchDFF, latch消耗的门资源较少。在ASIC中使用latch的集成度比DFF高,但是在FPGA中相反。FPGA中没有标准的latch单元,但是有DFF单元,一个latch需要多个LE才能实现。Latch是电平触发,相当于有一个使能端,且在使能后随着输入变化。在非使能时,latch保持原来的信号。所以很多时候latch不能代替FF
  5. Latch使静态时序分析变得复杂。一般的设计规则是在尽量避免产生latch. Latch 会使设计的时序混乱,并且它的隐蔽性很强,难以检查。Latch 最大的危害在于不能过滤毛刺,这对于下一级的电路有危害。所以只要能用D触发器的地方,就不用latch.

有些地方没有时钟只能用锁存器。比如一个clk接到latch的使能端,这样需要的setup时间,就是数据在时钟的下降沿之前需要的时间。如果是一个DFF,那么setup时间就是数据在时钟的上升沿所需要的时间。说明如果数据晚于控制信号的情况下,只能用latch


广告

文章评论 0条评论)

登录后参与讨论
相关推荐阅读
LoneSurvivor 2018-02-25 08:26
C++输入/输出流(2)
1. get()函数#include<iostream>using namespace std;int main(){    char s1[80], s2[...
LoneSurvivor 2018-02-23 12:19
C++输入/输出流(1)
1. 输入/输出流类层次 C++的输入/输出流类库是用派生方法建立起的,它有2个平行的基类,streambuf和ios。其他的流类都是从这两个基类直接或间接派生的。1.1  ...
LoneSurvivor 2018-02-19 11:36
C++多态(4)——特殊运算符重载和类类型转换
1.“++”和“--”的重载     运算符“++”和“--”的重载要区分前置和后置两种形式。如果不区分前置和后置,则使用operator++()或operator—()即可...
LoneSurvivor 2018-02-12 11:15
C++多态(3)——运算符重载
1.     运算符重载的定义     运算符重载也是实现多态的一个重要手段。运算符重载实现的是编译时的多态,即静态多态性。C++预...
LoneSurvivor 2018-02-12 10:31
C++多态(2)——纯虚函数与抽象类
   抽象类是一种特殊的类,它提供了统一的操作界面。建立抽象类是为了多态地使用抽象类的成员函数。抽象类是包含纯虚函数的类。 1.    ...
LoneSurvivor 2018-02-11 16:24
C++多态(1)
1.     多态      多态是人类思维方式的一种直接模拟,多态性是指不同对象接收到相同的消息时,根据对象类的不同而产...
我要评论
0
0
广告
关闭 热点推荐上一条 /1 下一条