随着社会的发展,科学技术也在不断的进步。特别是计算机产业,可以说是日新月异,移位寄存器作为计算机的一个重要部件,从先前的只能做简单的左移或右移功能的寄存器到现在广泛应用的具有寄存代码、实现数据的串行 - 并行转换、数据运算和数据处理功能的移位寄存器。移位寄存器正在向着功能强,体积小,重量轻等方向不断发展。

 

近年来,集成电路和计算机应用得到了高速发展,现代电子设计技术已迈入一个崭新的阶段,具体表现在:

(1)电子器件及其技术的发展将更多地趋向于为 EDA 服务;
(2)硬件电路与软件设计过程已高度渗透;
(3)电子设计技术将归结为更加标准、规范的 EDA 工具和硬件描述语言 HDL 的运用;
(4)数字系统的芯片化实现手段已成主流。

 

因此利用计算机和大规模复杂可编程逻辑器件进行现代电子系统设计已成为电子工程类技术人员必不可少的基本技能之一。

 

随着集成电路集成度的不断增加和工作速度的提高,功耗急剧增加。早在 7 年前,Alpha 处理器 21164 的功耗已高达 50W. 这给集成电路的散热、封装和便携设备的使用等都带来极大的困难。因此,如何降低功耗成为设计集成电路时要考虑的一个重要问题。

 

CMOS 电路的功耗中决定性的一项来自于电路中对给定结点的充放电与此相应的功耗可由下式表示:

P=0.5CL·V2DD·fCLK·ESW

式中,CL 为该结点的物理电容,VDD 为电源电压,fCLK 为时钟频率,ESW(称为开关活动性)是每个时钟周期 1?fCLK 中的平均输出跳变数。

 

在一个系统中时序电路常是功耗的主要贡献者,因为时序电路的输入信号之一就是时钟,而它正是唯一的一直在跳变的信号。此外,时钟信号的负荷总是最高的。为分布时钟以及控制住时钟偏移,就需要构建一个含有时钟缓冲器的遍布系统的时钟网络(通常称为时钟树)。所有这些均增加了时钟网络的结点电容的总和。近年来的研究表明,在数字计算机中时钟信号消耗的功耗占了系统功耗的很大比例(15%~45%)。因此,通过减少时钟功耗将可以大幅度降低电路的总功耗。

 

在对触发器的内部结构的分析中发现时钟信号有一半跳变是冗余的,仅有另一半跳变才引起触发器的状态变化。因此,当前国际上对一种新型的双边沿触发器提出了研究。所谓双边沿触发器是指对时钟上下跳变敏感的一种新型触发器。使用该类触发器,时钟信号的频率可以降低一半就能保持原来的工作速度,从而使得对双边沿触发器的研究成为低功耗设计的一个研究热点。

 

注意到触发器是存储单个数字信号的存储单元,而用触发器串接而成的移位寄存器可以认为是一种存储多位数字信号的存储元件。因此对双边沿触发器的研究应可推广到对移位寄存器的研究中来。本文将从双边沿触发器的设计思想出发对双边沿移位寄存器的设计思想、工作原理、低功耗特点及应用等方面展开深入研究,以达成对该一新型低功耗器件的研究完整性。

 

双边沿移位寄存器的设计
锁存器(latch)是构成触发器的基本单元。锁存器的输入时钟信号 clk 用于将锁存器置于存贮状态或输入状态。若用 D、Q 和 Q′分别来表示锁存器的输入信号、现态及次态,则高电平输入与低电平输入等两种锁存器的状态方程可表示如下:
Q′=D·clk+Q·clk,(1)

Q′=D·clk+Q·clk.(2)

式(1)表示锁存器在 clk=1 时输入数据,clk=0 时存贮数据;而相应式(2)为 clk=0 时输入数据,clk=1 时存贮数据。图 1(a)、(b)分别示出了根据式(1)、(2)利用数据选择器 MUX 实现的时钟高电平时输入与低电平时输入的 D 型锁存器逻辑结构。

 

 

以图 1(a)所示的时钟高电平时输入的 D 型锁存器为例,它的工作特点为在 clk=0 时输入信号无法影响锁存器的存贮状态,而当 clk=1 时,输入信号就能影响锁存器的存贮状态。这样,在 clk=1 期间输入信号的多次变化将会导致锁存器发生多次状态转换。为了实现一次状态转换,可以要求它的输入信号在 clk=1 时保持不变。这一要求暗示了该锁存器的输入信号在 clk=1 时应处于一种存贮状态,因此也就需要另外一个反相控制的锁存器,由此便导出了传统的主从触发结构。图 2(a)即为用图 1(a)、(b)中两种用数据选择器 MUX 组成的锁存器串联而构成的单边沿主从触发器。其中前级 D 型锁存器为主锁存器,后级 D 型锁存器为从锁存器。当 clk=1 时主锁存器处于输入状态,而从锁存器处于存贮状态;当 clk=0 时主锁存器处于存贮状态,而从锁存器处于输入状态,Q 转换为 Q′,即该主从触发器仅在 clk 下跳时进行状态转换,因此称为单边沿触发器(SETFF)。

 

一次状态转换的要求也可以从触发器的输出来考虑。只要选择处于输入状态的锁存器与输出隔离,则该锁存器即使在输入状态下发生多次状态转换也不会影响输出状态。这暗示了可以把串联的主从触发器改成并联的形式。两个锁存器在时钟 clk 的作用下交替处于输入状态及存贮状态,而最后可以用另一个数据选择器 MUX 使二者中处于存贮状态的锁存器接通输出端,如图 2(b)所示。这样,该触发器在 clk=0、1 时都能够接收输入信号,触发器的状态在时钟脉冲的上升沿和下降沿均可以改变,从而实现了时钟信号的双边沿触发,图 2(b)中的图形符号已在时钟输入端标志了这一特性。

 

 

借鉴以上双边沿触发器的设计思想,可以设计出双边沿移位寄存器。下面以设计 16 位的移位寄存器为例进行讨论。传统的移位寄存器设计以 16 个单边沿触发器串行级联构成,如图 3(a)所示。该移位寄存器要存储或者输出 162bit 的数据需要有 16 个时钟周期,在此期间各个触发器均要受到 32 个时钟跳变。如果将 16 个单边沿触发器分成两组,每组由 8 个反相触发的单边沿触发器串行级联构成单边沿移位寄存器,再将两组触发器并联就构成了双边沿移位寄存器。两组触发器在时钟的作用下交替处于输入状态及存储状态,而最后可以用一个数据选择器 MUX 使处于存储状态的触发器组接通输出端,如图 3(b)所示。这样,162bit 数据依次在一个时钟周期内分别由上下二组触发器轮流接收、存储并输出到移位寄存器的输出端,在此期间每个触发器只接收到 16 次时钟信号的触发(8 个时钟周期)。因此,如果保持时钟频率不变,则移位寄存器处理的数据流量在能耗不变的前提下增加近 1 倍;另外,如果时钟频率降低一半,则能在保持不变的数据流量的同时降低移位寄存器的功耗。

 

 

图 4 所示是在相同的数据流量的情况下单边沿移位寄存器和双边沿移位寄存器的能耗曲线。由图可知,双边沿移位寄存器比单边沿移位寄存器的功耗降低了 38.5%. 可以发现,虽然双边沿移位寄存器比单边沿移位寄存器增加了一个 MUX,但是由于开关频率减半所导致的功耗降低仍是主要的。

 

 

应用双边沿移位寄存器的时序电路设计

以上设计的双边沿移位寄存器可以应用于各种时序系统,如数据的移位寄存和设计移位型计数器。在数据流量不变的情况下,时钟频率可以减半。以下将以图 5 所示的 2&TImes;2 位双边沿移位寄存器为例,讨论采用该移位寄存器设计移位计数器的设计过程及设计特点。

 

如图 5 所示,2&TImes;2 位双边沿移位寄存器的控制输入端接受控制逻辑 I 的输出,控制逻辑 I 的输入为状态变量 Q1、Q2、Q3、Q4. 这样只须设计控制逻辑 I,就可以设计出双边沿移位计数器,故其设计比较简单。作者发现,将时钟信号 clk 作为状态变量可以设计出更多状态数的计数器并且使电路结构简单。由 Q1、Q2、Q3、Q4、clk 五位状态变量,可以设计出最大状态数为 32 的移位计数器。

 

 

由于各触发器之间必须保持移位的关系,移位计数器状态迁移受到限制。这就是说,对任何一个目前状态来说,它只有两种可能的下一状态,因为只有首位触发器才有两种可能的取值供选择,而其余各位已由目前状态所决定。由于状态迁移受到限制,可以将一个移位寄存器的全状态图画出来,以便用它来选择各种长度的移位计数器所使用的编码。五位移位计数器的全状态图如图 6 所示。图中 I 为首位触发器的输入,它只有两种取值 0 或 1. 在图 6 中,作者以一个最大计数环作为主干,给出了全状态图。为了使用上的方便,在全状态图左边的返回线上用十进制数表明它所跨的状态数(包括起止状态),在全状态图右边的分枝线上用负数表明它所跳过的状态数(不包括起止状态)。

 

单独使用返回线,能够获得某种循环长度的状态图及其编码。例如 4 号返回线指出,若起始状态为 00100,在 I 为 1 时迁移到状态 10001,又在 I 为 0 时从 10001 迁到 10000,再在 I 为 0 时迁到 00101,最后在 I 为 0 时返回到起始状态 00100. 仅用返回线决定的循环长度有 4、6、8、10、12、14、16、18、20、22、30、32 十二种。

 

 

如果返回线和分枝线配合起来使用,可以获得从 2 到 32 的任何一种偶数循环长度。设计原则是:使所有选中的返回线和分枝线上的数字的代数和,等于所需的循环长度。例如,要求循环长度为 28 的方案有 3 种:

方案一:32-4=28,(32 号返回线和 -4 号分枝线)。

编码为 00000,00001,01000,01001,00010,10011,11000,01101,01110,01011,01010,11011,11010,11111,10110,00111,01100,11001,10010,10111,10100,10101,11100,11101,11110,01111,00110,00011

 

方案二:30-2=28,(30 号返回线和图 6 中上部的 -2 号分枝线)

编码为 01000,01001,00010,10011,11000,01101,01110,11011,11010,11111,10110,00111,00100,10001,10000,00101,01100,11001,10010,10111,10100,10101,11100,11101,11110,01111,00110,00011

 

方案三:30-2=28,(30 号返回线和图 6 中下部的 -2 号分枝线)

编码为 01000,01001,00010,10011,11000,01101,01110,01011,01010,11011,11010,11111,10110,00111,00100,10001,10000,00101,01100,11001,10010,10111,11100,11101,11110,01111,00110,00011

 

利用全状态图来设计移位计数器是十分方便的,只要给定循环长度后,就能从全状态图中查出所设计的计数器的状态图,有了状态图便能设计出电路来。而且因为对于给定的循环长度,其设计方案有很多种,所以可以综合考虑各种设计方案,找到首级触发器的控制逻辑 I 最简单的一种方案,从而达到电路的最简。

 

 

以设计 30 状态移位计数器为例,由图 6 可以看出循环长度为 30 的组成方案至少有 3 种,而采用单独使用 30 号返回线的方案,控制逻辑 I 最简单。由 30 号返回线构成的状态图可以得到控制逻辑 I 的卡诺图如图 7 所示,再由卡诺图可以得到控制逻辑 I 的表达式:I=Q3+Q4. 因此,在图 5 中当控制逻辑部分的电路为 Q3+Q4 时,就得到了 30 状态移位计数器。作者对设计出的 30 状态移位计数器进行 PSPICE 模拟,其工作波形如图 8 所示。图中,起始状态为 11110,中止状态为 11101. 其逻辑功能达到了设计的要求。

 

本文为了有效利用导致无效功耗的时钟信号一半的冗余跳变,借鉴双边沿触发器的设计思想,推演了双边沿移位寄存器的设计,并进一步探讨了其在双边沿移位计数器中的应用。通过 PSPICE 模拟程序比较单边沿移位寄存器和双边沿移位寄存器,作者发现所设计出的双边沿移位寄存器具有正确的逻辑功能,而且在时钟信号频率减半后,仍能保持数据传输率不变,达到了降低功耗的目的。本文对 30 状态移位计数器的设计中发现,如使用双边沿移位寄存器,则可以只用 4 个触发器来实现,这一节省一个触发器的结果与文献[9]的结果相吻合。本文对双边沿移位寄存器的研究实际上是对双边沿触发器的进一步研究,达成了研究的完整性。