[转]触发器-锁存器-亚稳态

0 锁存器

        1)电平触发。当使能信号(也可以认为是时钟信号,只不过高电平与低电平时间不完全相等)有效时,输出随输入变化而变化,无效时,锁存住,输出不会随之而变。

        2)锁存器也称为透明锁存器,即不锁存时,输出与输入始终一致,此时,输出对于输入而言是透明的。

        3)优点:

        面积小。因为门电路是构建组合逻辑电路的基础,而锁存器和触发器是构建时序逻辑电路的基础。门电路是由晶体管构成的,锁存器是由门电路构成的,而触发器是由锁存器构成的。也就是晶体管->门电路->锁存器->触发器,前一级是后一级的基础。锁存器完成同一个功能所需要的门较触发器要少,所以在对于资源需要高度利用的ASIC设计中用的较多)

        速度快。用在地址锁存是很合适的,不过一定要保证所有的latch信号源的质量,锁存器在CPU设计中很常见,正是由于它的应用使得CPU的速度比外部IO部件逻辑快许多。

        4)缺点

        电平触发,导致非同步设计,受布线延迟较大,很难保证没有毛刺产生,也使得静态时序分析变得复杂。产生毛刺的原因它在时钟有效期间内一直在被触发,这种触发时间过长。

        因此,在设计过程中尽量避免产生锁存器,因为不能过滤毛刺。

IDE在综合时,几种很容易生成锁存器的情况是,if-else关系不全或者case中无default分支,并且vivado会给出警告。

1 触发器

        边沿触发。当收到输入脉冲时,触发器输出就会根据规则改变状态,然后保持这种状态直到收到另一个触发。

2 寄存器

        寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。

        对寄存器中的触发器只要求它们具有置1、置0的功能即可,因而无论是用同步RS结构触发器,还是用主从结构或边沿触发结构的触发器,都可以组成寄存器。

        一般由D触发器组成,有公共输入/输出使能控制端和时钟,一般把使能控制端作为寄存器电路的选择信号,把时钟控制端作为数据输入控制信号。

3 亚稳态

        亚稳态是指当两个端口(data和clk或者reset和clk)同时变化时,输出信号不稳定的现象。需要消耗更长的时间来使输出稳定,而且这个稳定是不可预测的。

那么如何避免亚稳态的出现

        在此之前先简单介绍,同步时序中的setuptime和hold time,以及异步时序中recoverytime和removal time。

同步时序的setuptime和holdtime,如下图所示。

        Setup time是指待采集信号(如数据信号)在触发信号(如时钟上升沿)之前所要求保持的最小的时间。这样就可以保证被采样的数据能够被准确捕捉到。通俗理解即数据必须在时钟上升沿来之前setuptime时间以内是准备好的。

        Hold time则是指触发信号(如时钟上升沿)之后的hold time时间内,待采集信号(如数据信号)必须保持稳定。

异步时序的Recovery/Removal time,如下图所示。

        首先解释下异步,同步很好理解即相对于时钟,它的变化与时钟的变化是同步的。而异步则是与时钟无关系,例如复位信号,复位信号通常都是异步的,它的触发依赖于驱动源,与时钟并没有关系。但是在一般的设计中异步复位信号需要同步化处理,即让本来异步输入的复位信号,用时钟来锁存,这样本来和时钟没有相位关系的复位信号就和时钟建立关系了。因此,recovery time 等同于 setup time,而removal time等同于 hold time

        回到如何避免亚稳态的出现。即只要实际工作时序上满足setup time 和hold time即可。一般器件的手册上都会标明这些参数,从几 ns 到几百 ps 之间。根据触发器内的组织情况而定,有时候可以将 setup time 或者 hold time 两者中的一个(只能是其中之一)变为 0 甚至是负数。但是,并不是总能满足这一标准,因为有可能触发器的输入端连到了外界的,设计者无法控制的一个不断变化的信号,这时候设计者所能做的事就是根据电路要求,将发生错误的概率降低到一个确定的水平。通常使用的方法就是将信号通过一条链在一起的触发器组,这样子可以将发生亚稳态的概率降低到一个可以忽略的程度,但是还是不等于 0。链中的触发器越多,这个概率就越趋近于 0,通常的情况是采用 1 个或者两个触发器。

        即使现在尽可能地减小 setup time 和 hold time,但是仍然无法完全避免亚稳态的出现。这是因为亚稳态并不是简单的设计方法上的问题当时钟信号和其他信号在相隔很近的时间内变化,触发器必须判断哪一个先发生变化,哪一个后发生变化,无论我们的器件速度有多快,仍然有可能出现两者相隔的太近,以至于无法判断。所以理论上是不可能造出一个完美避免亚稳态的触发器。

4 参考文献

[1] http://guqian110.github.io/pages/2014/09/23/latch_versus_flip_flop.html

[2] http://blog.csdn.net/surgeddd/article/details/4683657

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值