更新时间:2024-06-27 11:50
在数字电路系统工作过程中,把正在处理的二进制数据或代码暂时存储起来的操作叫做寄存,寄存器电路就是实现寄存功能的电路,是数字逻辑电路的基础模块。
任何现代的数字电路系统,特别是一些大型的数字处理系统,往往不可能一次性地把所有的数据都处理好,因此在处理的过程中都必须把需要处理的某些数据、代码先寄存起来,以便在需要的时候随时取用。
在数字电路系统工作过程中,把正在处理的二进制数据或代码暂时存储起来的操作叫做寄存,实现寄存功能的电路称为寄存器。寄存器是一种最基本的时序逻辑电路,在各种数字电路系统中几乎是无所不在,使用非常广泛。常用的集成电路寄存器按能够寄存数据的位数来命名,如4位寄存器、8位寄存器、16位寄存器等。
寄存器按它具备的功能可分为两大类:数码寄存器和移位寄存器。若按照寄存器内部组成电路所使用的晶体管不同种类来区分,可以分成如晶体管一晶体管逻辑(TTL)、互补场效应晶体管逻辑(CMOS)等许多种类,目前使用最多的就是TTL寄存器和CMOS寄存器,它们都是中、小规模的集成电路器件。
寄存器电路是数字逻辑电路的基础模块。寄存器用于寄存一组二值代码,它被广泛地用于各类数字系统和数字计算机中。由于一个触发器能够存储一位二值代码,所以用N个触发器能够存储N位二值代码。对于寄存器中的触发器,只要求它们具有置高电平1、置低电平0的功能就可以了,因此,无论是用同步R-S结构触发器,还是用主从结构或边沿触发结构的触发器,都可以组成寄存器电路。
在计算机 CPU 中,为配合全加器的算术运算, N 个触发器串联可组成移位寄存器。例如,由四位D触发器组成的向有数据移位的移位寄存器以及移位波形图如图1所示。
基本寄存器是由触发器组成的,一个触发器就是一个寄存器,它可以储存一位二进制数码。需要存储四位二进制数码时,只要把四个触发器并联起来,就可以组成一个四位二进制寄存器,它能接受和存储四位二进制数码。图2是由4个D触发器构成的基本寄存器逻辑电路,每个触发器的cP端并联起来作为控制端。需要存储的数码加到触发器的D输入端。四个触发器的CP端接在一起,成为寄存器的控制端,需要存储的数码加到触发器的D输入端。
根据D触发器的性质,上述的寄存器有以下基本特点。
(1)CP=0
当CP=0时,触发器保持原状态不变,即:。
(2)CP=1
当CP=1(上升沿)时,触发器的状态为D输入端的状态,即:。
由此可见,D触发器只在CP=1(上升沿)时,才会接收和存储数码。
另外,由于4个触发器的端也并联在一起。因此,如果在瓦D端加上负脉冲,就可将全部触发器均置为0态,通常将这一过程称为清零,也叫置0端。
如果要存储二进制数1001,它们被分别加到触发器的D输入端。当时钟脉冲CP到来时,由于D触发器的特性是在CP=1时,,所以在CP脉冲的上升沿时,4个触发器的状态从高位到低位被分别置为1001,只要不出现清零脉冲或新的接收脉冲和数码,寄存器将一直保持这个状态不变,即输入的二进制码1001被存储在该寄存器中。 如果想从寄存器中取出1001数码,则只要从寄存器的各个Q输出端就可以获得。
移位寄存器电路和锁存器电路一样,都是暂时存放数据的部件。数字电路中常要进行加减乘除运算,加法和减法运算通常是用加法器和减法器来完成,而乘除运算则是用移位以后再加减的方法完成的。数字信号在传送时,将数码一位一位按顺序传送的方式叫串行传送,将几位数码同时传送的叫并行传送。因此,对于寄存器电路除要求它能接收、存储和传送数码外,有时还要求它把数码进行移位,这种寄存器电路被称为移位寄存器电路。
移位寄存器是数字系统中的一个重要部件,应用很广泛。例如在串行运算中,需要用移位寄存器把二进制的数据—位一位依次送入,再用全加器进行运算。运算的结果又一位一位依次存入移位寄存器中。在有些数字装置中,要将并行传送的数据转换成串行传送,或者将串行传送的数据转换成并行传送,要完成这些转换也霈要使用移位寄存器。
从逻辑结构上看,移位寄存器电路有以下2个显著特征。
(1)由相同寄存单元组成
移位寄存器是由相同的寄存单元组成的。一般来说,寄存单元的个数就是移位寄存器的位数。为了完成不同的移位功能,每个寄存单元的输出与其相邻的下一个寄存单元输入之间的连接方式也不同。
(2)公用时钟
所有寄存单元公用一个时钟,在公共时钟作用下,各个寄存单元的工作是同步的。每输入一个时钟脉冲,7寄存器的数据就顺序伺左或向右移动一位。寄存单元一般是主从结构的触发器。
CMOS移位寄存器属子中规模集成电路,通常可按数据传输方式的不同进行分类,从数据输入方式看,移位寄存器有串行输入和并行输入之分。串行输入就是在时钟脉冲作用下,把要输入的数据从一个输入端依次一位一位地送入寄存器。并行输入就是把要输入的数据从几个输入端同时送入寄存器。
在CMOS移位寄存器中,有的品种只具有1种输入方式,例如只具有串行输入方式,但也有些品种同时兼有并行和串行2种方式。串行输入的数据加到第一个寄存单元的输入端,在时钟脉冲的作用下输入;数据传送速度较慢。并行输入的数据一般由寄存单元的R、S端送入,传送速度较快。
寄存器和组合逻辑是数字逻辑电路的两大基本要素。寄存器一般和同步时序逻辑关联,其特点为仅当时钟的沿(上升沿或下降沿)到达时,才有可能发生输出的改变。根据实现目标不同,寄存器的建模结构略有不同,需要注意如下要点:
①寄存器信号声明:寄存器定义是reg型。但是请注意,这个命题的反命题不一定成立。某些信号虽然被定义为reg型,但是最终综合实现结果并不是寄存器,如“cnt—out—plus”虽然被指定为reg型,但是实现时是纯组合逻辑。只有定义为reg型,且always的敏感表为posedge或negedge沿敏感操作时,该信号才是寄存器。
②时钟输入:在每个时钟的正沿或负沿对数据进行处理。数据的正沿或负沿起作用,是在always的敏感表中通过posedge和negedge指定的。
③异步复位/置位:绝大多数目标器件的寄存器模型都包含异步复位/置位端。异步复位/置位是指无论时钟沿是否有效,当复位/置位信号有效沿到达时,复位/置位立即发挥功能。指定异步复位/置位时,只需在always的敏感表中加入复位/置位信号的有效沿即可。下例描述的异步复位电路是最常用的寄存器复位形式之一。
④同步复位/置位:任何寄存器都可实现同步复位/置位功能。指定同步复位/置位时,always的敏感表中仅有时钟沿信号,当同步复位/置位信号变化时,同步复位/置位并不立即发生,仅仅当时钟沿采到同步复位/置位的有效电平时,才会在时钟沿到达时刻进行复位/置位操作。
⑤同时使用时钟上升和下降沿的问题:有时因为数据采样或调整数据相位等需求,设计者会在一个always的敏感表中同时使用时钟的posedge和negedge,或者在两个always的敏感表中分别使用时钟的posedge和negedge对某些寄存器电路操作。在这两种描述下,当时钟上沿或下沿到达时,该寄存器电路都会做相应的操作。这个双沿电路往往可以等同于使用了原时钟的倍频时钟的单沿操作电路。对于实现在PLD的设计而言,同时使用时钟的上、下沿往往是不推荐的,因为PLD内嵌的PLL/DLL和一些时钟电路往往只能对时钟的一个沿保证非常好的指标,而另一个沿的抖动、偏斜、斜率等指标不见得非常优化,有时同时使用时钟的正负沿会因时钟的抖动、偏斜、占空比、斜率等问题造成一定的性能恶化。因此推荐的做法是:将原时钟通过PLL/DLL倍频,然后使用倍频时钟的单沿(如上升沿)进行操作。但是电路设计不可一概而论,如果必须使用时钟的双沿对同一个寄存器操作时,请设计者明确此时相当于使用了倍频时钟。