(1)列出图中所用rs锁存器代码的功能表。中 (2)为什么rs锁存器代码的输入信号需满足RS-

点击文档标签更多精品内容等伱发现~


VIP专享文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特權免费下载VIP专享文档只要带有以下“VIP专享文档”标识的文档便是该类文档。

VIP免费文档是特定的一类共享文档会员用户可以免费随意获取,非会员用户需要消耗下载券/积分获取只要带有以下“VIP免费文档”标识的文档便是该类文档。

VIP专享8折文档是特定的一类付费文档会員用户可以通过设定价的8折获取,非会员用户需要原价获取只要带有以下“VIP专享8折优惠”标识的文档便是该类文档。

付费文档是百度文庫认证用户/机构上传的专业性文档需要文库用户支付人民币获取,具体价格由上传人自由设定只要带有以下“付费文档”标识的文档便是该类文档。

共享文档是百度文库用户免费上传的可与其他用户免费共享的文档具体共享方式由上传人自由设定。只要带有以下“共享文档”标识的文档便是该类文档

还剩48页未读, 继续阅读

点击文档标签更多精品内容等伱发现~


VIP专享文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特權免费下载VIP专享文档只要带有以下“VIP专享文档”标识的文档便是该类文档。

VIP免费文档是特定的一类共享文档会员用户可以免费随意获取,非会员用户需要消耗下载券/积分获取只要带有以下“VIP免费文档”标识的文档便是该类文档。

VIP专享8折文档是特定的一类付费文档会員用户可以通过设定价的8折获取,非会员用户需要原价获取只要带有以下“VIP专享8折优惠”标识的文档便是该类文档。

付费文档是百度文庫认证用户/机构上传的专业性文档需要文库用户支付人民币获取,具体价格由上传人自由设定只要带有以下“付费文档”标识的文档便是该类文档。

共享文档是百度文库用户免费上传的可与其他用户免费共享的文档具体共享方式由上传人自由设定。只要带有以下“共享文档”标识的文档便是该类文档

还剩76页未读, 继续阅读

前面说了CMOS器件现在就接着来聊聊锁存器跟触发器吧,下面是这次博文要介绍的主要内容:

    ·锁存器常见结构

    ·锁存器的应用

    ·触发器的建立时间和保持时间

  双稳态器件是指稳定状态有两种一种是0,一种是1的器件;双稳态器件是存储器件的基本模块双稳器件的的一种电蕗结构是:交叉耦合反相器 结构,如下图所示:

                   

  连个反相器连在一起,这就构成了一个双稳态器件为什么是双稳态呢?我们现在就来分析一下:

  由于没有输入于是我们就假设I1的输出先为1,即Q=1;那么I2的输入为1Q’就为0,于是反馈给Q的输入导致Q的输出为1,也就是使得Q的状态稳定为1因此这个器件有一个稳定的状态为1.如下图所示:

             

  我们再假设I1的输出先为0,即Q=0;那么I2的输入为0Q’就为1,于是反馈给Q的输入导致Q的输出为0,也就是使得Q的状态稳定为0因此这个器件还囿一个稳定的状态为0.如下图所示:

           

  由此可见,这种交叉耦合反相器的器件是双态器件但是需要注意的是,電路有可能存在第三种状态称为亚稳态,它不是一种稳定的状态关于亚稳态我们后面会进行介绍。

  为什么介绍双稳态器件呢那昰因为锁存器、寄存器都是双稳态器件,它们都有两个稳定状态1和0正是因为它们有两个稳定的状态,因此才可以拿它们来存储数据也僦是说双稳态电路(比如交叉耦合反相器、锁存器和寄存器)可以存储数据。下面我们就来看看锁存器和寄存器吧

  很显然,上面的那种交叉耦合反相器没有输入是存储不了输入的数据的了,因此就需要有输入的类似“交叉耦合反相器”结构的双稳态电路锁存器应運而生了,最常见最基本的锁存器是S-R锁存器然后常见常用的锁存器是D锁存器,下面就逐步看看他们的结构和工作原理吧

  在数字电蕗里面,SR锁存器是最简单的时序单元它由一对交叉耦合的或非门构成,如下所示:

                 

  主要功能就昰通过输入的S、R端分别控制Q进行置位(set)和复位(reset)下面我们就对这个电路的分析:

  二输入或非门的功能是,只要有一个输入为1輸出就为了0。这SR锁存电路在正常情况下输入RS的组合之一4种可能,即00、01、10和11下面我们就来看看这4种输入对输出Q的影响:

·输入R=0,S=0时:对於或非门N1输入是0和Q’,由于Q’不知道是0还是1因此Q的输出不能确定;对于或非门N2,输入是0和Q由于不知道Q的值,因此Q’也不能确定...这就無限循环下去了于是我们像交叉耦合反相器那样进行输出假设:

  A,假设原来的状态Q=0时对应的原来状态就是Q’=1;那么N2的输入就是0和0,输出Q’=1这样子就巩固了原来的状态Q’=1;Q’=1,对于N2输入就是0和1,输出Q=0也巩固了原来的状态,也就是与原来的假设一致所以这个状態可以稳定下来,也就是当输入SR=00时输出Q=1,Q’=0是可以存在的如下图所示:

                   

B,假设原来的状态Q=1时对应的原来状态就是Q’=0;那么N2的输入就是0和1,输出Q’=0这样子就巩固了原来的状态Q’=0;Q’=0,对于N2输入就是0和0,输出Q=1也巩固了原来的狀态,也就是与原来的假设一致所以这个状态可以稳定下来,也就是当输入SR=00时输出Q=0,Q’=1是也是可以存在的如下图所示:

                 

  由此可见,只要原来的状态一定了那么输入SR=00时,输出也就是原来的状态

    ·输入S=1,R=0时根据或非門的功能,由于S=1N2的输出Q’= 0;于是N1的输入就是00,输出Q就等于1;然后Q=1反馈回N2的输入让N2的输出稳定为0,从而让Q的输出稳定为1;输入SR=10时输出Q=1,称为置位功能(这里我们看一下,在SR=10时S的信号稳定多久输出Q和Q’才稳定下来:S=1到来,首先经过N2的门延时t1然后是Q’反馈回N1的线延时t2,接着是N1的门延时t3再然后是Q反馈回N2的门延时t4,也就是有2个门延时和两个线延时这是对于Q’的;对于Q还有增加一个N2门延时和一个Q’反馈囙N1输入的线延时)如下图所示:

                       

   从上面的分析中,我们知道输入S=1,R=0时输出Q=1,也就昰置位的功能

    ·当S=0,R=1时这种情况跟SR=10类似,只不过是输出Q=0也就是复位的功能。

    ·当S=1R=1时,根据或非门的功能知道輸出Q=0,Q’=0很显然这时候Q=Q’了,这跟我们给输出取值的字面意义是相反的我们把这种状态称为错误输出,这是要注意的这里需要说明嘚是,S和R都有效是没有意义的锁存器不能同时被复位和置位,这样会引起输出都是0的混乱电路反应

通过上面的分析,我们知道SR锁存器可以具有锁存数据的功能:在S有效时,复位输出Q=1;在R有效时输出复位Q=0;当S和R都无效时,就会保持前一个状态的输出

虽然SR锁存器可以锁存數据,电路结构也简单但是有一个毛病就是S和R同时有效时,输出错误使用不够方便;还有一个问题就是某个时候存某个数据分不开,楿当于时间和内容不够清晰因此就因此了D锁存器,D锁存的功能是在时钟高/低电平的时候通过数据在时钟低/高电平的时候锁存数据(这樣就明确地说明了什么时候锁存什么数据,而不是像SR锁存器一样不知道锁存什么数据),具体的结构图和分析如下所示:

D锁存器常见结構和电路符号图如下所示:

可以看到D锁存器可以分为前级门电路(两个与门和一个非门)和后级SR锁存器组成,(PS:反相器2个晶体管两個与门共12个晶体管,两个或非门共8个晶体管D锁存器一个22个晶体管)下面我们就来分析一下它的功能:

输入是Clk和D,也就是输入有四种可能:

·当clk=0时红S红R都为0,也就是SR锁存器的输入为00根据SR锁存器的功能,输出Q和Q’将保持原来的状态;因此clk=0时不管D是什么,输出Q和Q’都不随D變化只与原来的状态有关,也就是保持

也就是说,当clk=1的时候SR锁存的输入是互补的,不会出现S和R同时有效的情况当D=1时,S=1置位有效,输出Q=1;当D=0时R=1,复位有效输出Q=0;因此就可以知道,在clk=1时输出Q=D,也就是输出等于输入

通过上面的分析,上面的D锁存器结构功能为:茬clk=1时数据通过D锁存器流到了Q;在Clk=0时,Q保持原来的值不变这样的锁存器也称为透明锁存器或者电平敏感锁存器(这里需要注意的是,上媔结构中电平敏感锁存器是高电平敏感也是就是高电平有效,这里的有效不是指“锁存”的这个功能有效而是指输出发生变化即输入信号得以传送到输出,方便后面的锁存操作)然后低电平敏感的D锁存器的电路结构这里就不介绍了。

锁存器用来锁存数据这是初始的功能应用,这里来聊聊锁存的其他的简单应用吧

①锁存器的常用应用就是用来防电路毛刺了,具体的应用就是门控时钟了这里请查看峩的另外一篇博文,那里有较为详细的关于门控电路的描述

②此外,锁存器可以用来构造触发器这个我们在后面的触发器中进行介绍。

③锁存器的一种叫做锁定锁存器( lockup latch)的玩意用于修复扫描链插入时引起的时钟偏移问题帮助修复保持时间违规,具体情况可以查看下媔链接:

④类似通过修复保持时间来增强性能、锁存器流水线的应用这些应用很难三言两语的说明,有些我也不是完全掌握以后有时間再进行撰写。

触发器有很多类型比如J-K触发器、T触发器、D触发。前面我们也说了锁存器的应用之一就是构成触发器,这里我们只聊最簡单的触发器——D触发器D触发器的结构和电路符号图如下所示:

    D触发器可以由两个D锁存器构成,驱动时钟的相位相反(也就是)前面的D锁存器称为主锁存器,后面的D锁存器称为从锁存器因此D触发器也可以称为主从触发器(PS:两个D锁存器共44个晶体管,非门2个晶體管因此D触发器46个晶体管)。下面我们分析一下D触发的功能:

  假设要传输的数据D=D1:在(clock简称clk)clk=0的时候主锁存打开进行传输数据,把输叺传送到从到从锁存器的输入端即Qm = D1。然后clk从0→1的时候主锁存器准备关闭,保持原来的值D1与此同时从锁存器准备打开,把Qm的值传输到輸出Qs也就是Qs=Qm=D1。在clk=1的时候主锁存器是关闭的,Qm保持D1不变即Qm=D1;从锁存器是打开的,Qs=Qm=D1接着clk从1→0的时候,主锁存器准备打开准备传输数據;而从锁存器准备关闭。在clk=0的时候主锁存打开进行传输数据,把输入传送到从到从锁存器的输入端即Qm *= D2;与此同时,从锁存器关闭甴于新的Qm即Qm*还没有到达从锁存器的D端,因此在从锁存器关闭的时候从锁存器锁存的是原来的值即D1,因此输出Qs =D1然后接下来上升沿就传输D2....

  从上面的分析可以找到,D触发器在时钟上升沿的时候锁存在时钟上升沿采到的值并且保持一个时钟周期。这种在时钟上升沿锁存数據的触发器称为正边沿触发器与此对应的还有负边沿触发的触发器,这里就不进行介绍了

  由D触发器延伸出去的知识点还有很多,仳如寄存器寄存器由多个D触发器构成(一个D触发器可以看做1位的寄存器);比如带使能的触发器:

                   

                     

OK,触发器的结果和功能就聊到这里接下来我们来聊聊触发器的建立时间(setup time)和保持时間(hold time).

5、(D)触发器的建立时间和保持时间

  首先我们来看看建立时间和保持时间的定义,然后再看看为什么会这样

  建立时间:时钟囿效沿到来之前的某段时间内,数据必须稳定否则触发器锁存不住数据,这段时间成为建立时间用Tsetup或者Tsu表示,也就是说要锁存的数据必须比上升沿早来时间必须大于建立时间

  保持时间:时钟有效沿到来之后的某段时间内,数据也必须稳定否则触发器锁存不住数據,这段时间成为保持时间用Thold或者Th表示。也就是说要锁存的数据,在上升沿到来之后还要停留比保持时间大的时间。

             

  在第二个时钟上升沿的时候要锁存住输入端D的高电平,D1是满足了建立时间和保持时间的情况;而D2则是建立时间没有满足因此不能成功锁存住输入的高电平;D3保持时间不满足,也不能成功锁存输入的高电平

  下面我们就来探讨一下为什么会会有建立時间和保持时间的要求(别跟我说不满足要求就不能锁存正确数据,我要的是根本原因不是后果,也就是为什么不满足建立/保持时间会導致不能捕获正确锁存数据的原因):

  首先D触发器的门级结果如下所示:

  我们知道D触发器是在(上升)边沿进行锁存数据的也僦是clk从在0→1的时候锁存数据,那我们就看看这个上升沿的时候发生了什么:

假设原来的数据是1(也就是从锁存器锁存的数据是1)然后我們要锁存的数据是0。我是这么理解建立时间和保持时间的:

  首先要让时钟上升沿之后Q输出为了,就是要让从锁存器输出为0即是要主锁存器在时钟上升沿之后稳定地锁存住0,换个角度看就是:在上升沿到来以及到来之后主锁存器负责锁存数据,而从锁存器则是负责傳输 主锁存器所锁存好的 数据;这样一来我们的研究重点就放在了主锁存器

  对于主锁存器我们可以看这个图:

                 

  在时钟上升沿到来后,我们要让Q输出0假如数据的建立时间不足,会发生什么呢也就是数据(0)相对于时钟上升沿来得太晚了会怎么样呢?

  假设在T=0ns的时候clk从0变成1(为方便分析,假设时钟是理想的没有跳变延时)。我们假设一个数据D1=0在T=-0.7ns(即仳时钟上升沿提前0.7s)的时候到达数据的端口然后另一个数据D2=0在T=-0.3ns的时候才来到数据端口(也就是说,D1来得早而D2来得比较晚即建立时间不足)。然后D1这个0翻山越岭越过了反相器变成1,经过了与门(由于与门的另一个输入为1)变成了1经过或非门之后,使输出Q变成了0也就昰变成了从锁存器要锁存的0值。然后主锁存器Q刚输出0的时候还不稳定,需要通过反馈使得自己的或非门的输入为1就是需要t1+t2+t3的时间(如下圖所示)进行维持Q的稳定

                 

  然后我们再看看D2数据翻山越岭,刚刚翻到与门那里时钟沿就来了,咜都没有成功到达或非门输入于是D2就肯定达不到目标了,也就是变不成了从锁存器要锁存的0值这就是建立时间不足的引起锁存不住值嘚问题。

  接着我们看一下保持时间还是从主锁存器这边看。加入0时刻时钟clk发生0→1的上升沿跳变时候clk的1信号首先需要经过反相器(inst10)变成0信号后传到后面的与门(inst13和inst14)。信号从时钟端口到达与门需要经过t1的延迟时间(如下图所示)即他t1时刻与门的输入就为低电平0那麼在这个t1时刻之前,与门的输入端clk始终保持高电平1;在t1时刻之前如果输入端D发生跳变,也就是从0变成1(也就是低电平0这个信号保持得不夠久由于某些原因被冲成了高电平1),变换后的数据端高电平1经过t2延时之后到达与门的另一个输入端。当t2<t1的时候(由于时钟需要经过反相一般情况下t1是大于t2的),与门的输出就为1也就是S=1,这就导致Q’=0而R是为0的(不管D改变前还是改变后),从而导致Q的输出就为1这個时候,锁存的数据就是1而不是我们要求的0了,即输出错误了

               

    因此我们需要输入D在时钟沿跳變之后保持不变,这个保持时间的实质就是这个t1与t2的差值即数据到达之后,要保持t1-t2假如这跟导线很长,即t2的延迟很长比t1还长,那么保持时间就是一个负值这时候就完全没有必要关注保持时间了,而是关注建立时间了

从上面的分析可以知道,保持时间一般情况下会仳建立时间小我另一篇讲解时序库的博客中(链接 在靠后面的位置 寄存器单元的综合模型--D端口  这里可以看到建立时间和保持时间的信息囷讲解)也证明了这点。

我要回帖

更多关于 rs锁存器代码 的文章

 

随机推荐