第六章微处理器

第六章 微处理器

微处理器是典型的LSI、VLSI器件,在微处理器的设计中集中了多种VLSI设计技术与模块结构。在本章中我们并不讨论微处理器本身的系统设计,而是讨论如何用VLSI的设计技术与模块结构去实现常规微处理器内核(Core)的逻辑模块。

6.1 系统结构概述

微处理器在当今的世界上得到非常广泛地应用,几乎到了无所不在,无所不能的地步。微处理器的品种非常多,人们根据不同的需要采用不同的微处理器。早期人们使用通用型微处理器,通过软件编程和外围电路的设计实现所需的功能。在此基础上,设计者逐渐地将一些功能模块加入微处理器结构,设计内置ROM驻留用户程序,逐渐形成了适用于一类工作的专用微处理器。这种微处理器可以独立地承担用户的任务,通常也称这种微处理器为单片机。虽然专用微处理器的核心部分和通用微处理器并无什么区别,但专用微处理器所具有的一些功能模块却给用户带来极大的便利。例如,配置了模数转换模块和数模转换模块的微处理器,可以直接处理模拟信号,而不必在外围附加转换电路,实现了小型化或微型化。

在传统的微处理器设计过程中,人们一般以8位,16位,32位二进制数为一个字,内部指令的传送、处理都是以字来进行,外部数据的进出也以字进行,总线结构也都是以8的二倍数设定宽度。这种以完整的字结构形式构造的微处理器被封装在一定形式的管座中。早期因为封装技术的落后,不能有效地解决热的问题,只好以比较少的位数(

不论是通用微处理器,还是单片微处理器或位片微处理器,其基本内核的构成都很相近。

积木块结构是微处理器的典型版图结构,这是因为微处理器本身是模块化的结构。通常的微处理器由两个空间(或称为通道)和通讯连线组成,两个空间是程序空间(又称为控制通道)和数据空间(又称为数据通道),通讯连线主要是指总线,这样的分离式的结构被称为哈佛结构。

程序空间主要包括:控制器(Controller),程序计数器(PC)和堆栈(Stack),或还包括程序ROM。

数据空间主要包括:算术逻辑单元(ALU),累加器(ACC),移位器(Shifter)和寄存器(Register),或还包括RAM。

总线有几种形式:分离的程序总线和数据总线(双总线、三总线)和合并总线(程序、数据复用总线)。

微处理器的操作过程实际上是根据用户预先设置的顺序(用户程序)进行逻辑运算的过程,在每一步的逻辑运算过程中,微处理器和通常的数字逻辑几乎没有什么区别。一条指令进入操作的过程,实际上是一组数字信号作为输入激励去驱动微处理器内部的逻辑模块进行适当地逻辑运算的过程。而每一次运算的结果之一是产生下一条指令的地址,这可能是现地址加一,也可能是加了若干偏移后

的地址(如跳转指令)。微处理器就是这样不断地取得输入信号,不断地逻辑运算,一步步地顺序完成人们要求的操作。

从微处理器的工作原理和组成可以知道,微处理器实际上是由一系列的数字逻辑构成,那么,微处理器模块的设计实质上是数字逻辑模块的设计。在当今的微处理器设计中所采用的主要技术是所谓的结构化设计,就是用规则、重复的单元去构造和实现所需要的逻辑。

6.2 微处理器单元设计

在这一节中,我们将介绍微处理器主要组成单元的结构及设计,从中将了解到VLSI技术在单元构造和实现中的应用。

6.2.1 控制器单元

控制器是微处理器的主控单元,也是不同微处理器之间差异最大的单元。它的功能是根据指令或直接给予微处理器的控制产生一系列的输出信号,去控制相关逻辑单元进行适当的操作和运算。早期的控制器是采用随机逻辑实现,由于随机逻辑采用了多种不同的基本逻辑单元,因此,在版图设计中将花费较长的设计周期,并且测试和修改困难。因此,人们逐渐的用规则、重复的结构化单元去取代随机逻辑。在现在的微处理器中,许多控制器已采用PLA技术和微码控制器(MicroCoded Controller)技术进行设计。

PLA技术适合于设计小的控制器,对于要求大量输出信息的控制器,PLA的结构就将变的十分复杂,并且难以高效设计,一个重要的原因是PLA的基础是布尔函数。当然,也可以用几块小的PLA来实现大的逻辑。

微码控制器的一个重要的特性是它可以具有非常宽的控制字输出。所谓微码控制器实际上就是一块ROM和相应的地址发生器的组合,它包含了全部的控制信息。我们并不需要关心控制器是什么函数关系,只要知道在一个特定的状态下,它应给出什么输出即可。一个简单的微码控制器结构如图6.1所示。

图6.1 简单微码控制器

这个简单的微码控制器由两个主要部分组成:微控制字存储器和下一地址发生器。微控制字存储器存放的是一系列控制字,这些字用于控制处理器中逻辑模块的行为,它的输入是由下一地址发生器所馈给的控制字地址,它实际上是一块ROM,所以,人们又称它为微ROM(MicroROM)。下一地址发生器则是根据状态输入信息(如一个指令)和(或)从存储器中来的反馈信息生成下一地址。

这个微码控制器的工作原理是:在一个确定的状态输入激励下,下一地址发

生器产生一个微ROM的地址,选中一个控制字和相应的反馈字,控制字输出用于运算模块的控制,反馈字用于确定下一地址发生器的动作,事实上,在一个状态信息下,运算模块可能会同时或顺序执行多步的动作,这一系列的动作和地址发生一直进行到反馈字不再产生新的微ROM地址。如果状态输入是一条指令,则这些动作是在一个指令周期内完成的。

试想一下,如果状态输入是一个启动信号,而反馈字又是不断地生成下一地址,则该控制器则是一个开环的控制器,它将完成一系列的控制,而这时对微ROM的设计就类似于计算机编程,只不过这个编程是直接用机器语言且数据具有相当的宽度。如果状态输入是一系列的指令,则微码控制器就将根据指令输出一系列的控制字,完成指令规定的操作,它不再仅仅是顺序操作,它还可执行分枝跳转等需要的操作。

图6.2是一个典型的微码控制器的存储器结构,其中MAR是存储器地址寄存器(Memory Address Register),用于暂存一条控制字的地址。

图6.2 微码控制器的存储器结构示例

在这个示例中,假设了该存储器有12位地址,对应了4K控制字,每个控制字由72位控制信息组成,其中,60位是用于控制诸如寄存器、ALU、移位器、总线等微处理器组成单元,12位作为下一地址发生器的反馈信息送给下一地址发生器。

从这个ROM结构我们可以看出,微码控制器的ROM结构和普通程序或数据ROM的一个很大的不同,这就是普通的ROM通常是地址位多于数据位,例如,8位16K ROM,数据位是8位,而地址是14位,微码ROM则是数据位多于控制位,这是因为微处理器所要求的控制信号位数量很多。这样的微码ROM的尺寸是非常大的,它的ROM中数据对应的晶体管数非常之多。在这个例子中,将有29万多个晶体管,它实在是太庞大了。

那么,是不是必须要如此庞大呢?实际上,对于一个给定的微处理器,在这么多的控制字中,有许多是不必要的,还有许多是重复的。所谓不必要的控制字,是指在这个微处理器中,某些地址根本就不会出现。所谓重复是指不同的地址对应的控制字却是相同的的情况。为减小ROM尺寸,应设法将这些不必要或(和)重复的控制字去除。

图6.3给出了这样的设计示例。在这个示例中,假设将原来的4096个控制字去掉不必要的字,合并相同的字后变为256个控制字,那么,这256个字只要8位地址就可覆盖。图中左边的ROM就存放了这256个72位的字,这个ROM被称为毫微指令ROM(因它比较小)。图中右边的ROM被称为微指令ROM,它实际上类似于一个译码器,它将12位地址所对应的4096个可能的选择,翻译成了8位毫微ROM的地址。显然这样的设计大大减小了微ROM的尺寸,在这个例子中,

对应原先的29万多个晶体管,只需越5万个晶体管就可获得同样的控制效果。当然,这样的设计带来的弊端是整个微ROM的延迟时间要大于图6.2所示结构。

图6.3 两级微程序存储器结构示意图

下面,我们通过一个例子来说明控制器在微处理器中的工作过程。

图6.4是一个由微码控制器控制的微处理器中的一些模块的结构图。这里,IR是指令寄存器,PC是程序计数器。

图6.4 微码控制器控制的运算单元结构示意图

现在要执行的操作是:将寄存器4中的数与寄存器7中数相加后再送回到寄存器4中。

寄存器4←寄存器7+寄存器4

当开始计算的时候,所指向的程序ROM(图中未画出)地址被送入程序计数器PC中,这个地址通过地址总线确定了程序ROM的地址并取出一条指令,这个指令通过数据总线被送入IR,下一地址发生器根据IR的内容在微ROM中确定一个控制字的开始地址。这个控制字选择寄存器4并将它的内容传送到ALU,如果寄存器硬件支持双港口读方式,则控制字的其他位也将使寄存器7被选中,并将其中的内容通过另一组总线送到ALU。接下来,下一地址发生器将产生控制字的下一地址,控制器输出第二个控制字,命令ALU进行加操作。随即,下一地址发生器产生第三个地址,选中第三个控制字,这个最后的控制字使ALU存储加的结果到寄存器4,并且通过刷新PC为IR得到下一微处理器的指令做准备。

由上例可知,一条微处理器的指令可能需要多个控制字控制操作的过程,而下一地址的产生和相应控制字的输出,很大程度上取决于ALU的操作,所以,ALU的状态也将影响下一地址发生器的行为。在上例中,当ALU取数完成后,才能发出第二个控制字,当加操作完成后才能发出第三个控制字,否则,将出现错误的运算和操作。当然,这个例子也仅仅是一个简单而且单纯的操作,实际的操作可能还有许多其他的因素在起作用和产生控制。

6.2.2 算术逻辑单元ALU

1. 信号结构

ALU是数据空间的最主要的单元,可以说,它是微处理器的核心,我们所需要的各种主要的运算和逻辑操作,都是通过它完成的。

通常的逻辑操作包括:逻辑与、逻辑或、逻辑异或、取反、求补等,通常的算术运算包括:加、减、比较、算术左移等。当然,还有其他的许多逻辑操作和算术运算,这里不一一枚举。这里所讨论的ALU未考虑长运算(如乘法运算),当要求进行长运算时,其硬件结构将扩充,加入专门的运算模块,相应的总线宽度也将发生变化。图6.5显示了ALU的外部信号结构。

图6.5 ALU信号结构

ALU内部不需要对数据进行寄存,它被要求对输入的信息立即产生反应,从逻辑分类的角度讲,ALU是组合逻辑结构。操作数A和操作数B提供了ALU的基本输入数据,操作码作为控制信息,对所需的操作进行选择和控制,标志位则表达了操作的属性。操作数的位数(通常是8,16,32等)由微处理器的基本数据宽度决定,操作码的位数由所需进行的操作类型数决定,例如,有11种操作类型,则操作码就需要4位,每一组代码(会有冗余)对应一种操作,而如果仅有8种操作类型,则只要3位操作码即可。实际设计中经常将其中的一部分操作归类合并,以减少控制位数。例如,带进位的加法和不带进位的加法是同一控制字,当要做不带进位的加法时将前级进位设置为0即可。

ALU的核心是全加器,配合相应的函数发生器即可进行多种算术运算和逻辑操作。

2. 全加器

所谓全加器是指可以进行带进位输入和输出的加法运算单元,输入、输出的逻辑关系如表6.1所示。其中,Ai、Bi为需要相加的两个二进制数,Ci-1为前级进位,Si为本位和,Ci为本级进位。

由真值表我们可以写出全加器的逻辑表达式:

SiAiBiCi1

CiAi

BiCi

1AiBi

全加器的逻辑结构如图6.6所示。特别需要指出的是,这个结构仅仅是全加器众多结构中的一种。

图6.6 全加器的逻辑结构图

在VLSI技术中,为规则设计也常常采用传输晶体管逻辑构造全加器。根据表6.1中的真值关系得到如下的两个子真值表6.2和6.3。

从这两个真值表,我们可以很方便地用两个4到1的MUX和倒相器组合构造

全加器,图6.7出了NMOS结构全加器的棒状图。

图6.7 NMOS结构全加器的棒状图

同样的原理我们也可以用CMOS传输逻辑实现全加器,与上图相比只是用CMOS传输对替代了NMOS传输晶体管。

显然,与图6.6所示的逻辑图相比,采用传输晶体管逻辑构造全加器所获得的电路结构简单、规则。

3. 以全加器为核心构造的ALU

在这部分内容中,我们将通过一个简单的ALU的构造过程,讨论如何以全加器为核心,辅以函数发生器逻辑实现算术运算和逻辑运算。

假设ALU的功能如表6.4所示,它完成8种算术运算和4种逻辑运算,其中,算术运算需要考虑进位输入和进位输出,逻辑运算则不需要考虑进位的问题,可以将它设为0。现在将以全加器为核心构造完成这些功能要求的ALU,我们首先分别讨论用全加器实现算术运算和逻辑运算的设计,最后将两者结合完成设计。

1 实现算术运算的设计 ○

为和数据信号加以区别,这里定义全加器的被加数输入端为X端,加数的输入端为Y端,前级进位输入端为JIN,本级进位输出端为JOUT,全加器的本级和输出端为H端。在进行算术运算时,X端始终接数据A,Y端根据功能需要接不同的输入,H端则输出算术运算的结果F。

·传送A,并且本级进位输出等于0。当全加器的Y=0,JIN=0(CIN=0)时,全加器的输出H=X,并且JOUT=0,实现了要求F=A。

·数据A递增。设定Y=0,JIN=1(CIN=1),全加器的本级和H=X+1+0=X+1,实现了运算F=A+1。

·加法运算F=A+B。将Y端与数据B连接即Y=B,JIN=0,H=X+Y+0=X+Y,完成加法F=A+B功能。

·带进位的加法F=A+B+1。显然,只要在加法运算方式中将JIN=1即可完成带进位的加法运算要求。

·减法运算F=A-B和带借位的减法运算F=A-B-1。因为减法是通过被减数和减数的补码相加实现,所以,ABAB1,相应的,带借位的减法AB1AB。这样,为实现减法运算,只要设定Y,JIN=1即可。而带借位的减法与减法的不同之处仅是JIN=0。

·数据A递减运算。设定Y=1,JIN=0,则全加器的本级和取的是A的非量,完成了A的递减F=A-1要求。

·传送数据A并且进位输出COUT=1。设定Y=1,JIN=1,则由这两个值使JOUY=1,而H=A。实现了运算要求。

在算术运算中的设计实际上是对Y和JIN的设计,其中,JIN由进位输入给出,Y则必须用逻辑结构实现。通过上面的分析可知,Y的取值由四种:0,1,B和B。我们可以通过控制码S1 S0 和相应的逻辑来产生这四个值。

图6.8 Y的逻辑图

表6.5给出了与Y相关的逻辑真值表,这里的控制码S1、S0是任意给出的,

但一旦给出,则相应的逻辑也就确定了,图6.8是对应这个真值表所产生的逻辑。如果改变控制真值,则逻辑结构也将随之改变。

图6.9 进行一位算术运算的ALU逻辑结构

图6.9是对应上述8种算术运算的1位ALU的逻辑图,以此结构为基础可以构造多位ALU逻辑。

根据上述的讨论和设计,我们可以得到对应8种算术运算的信号关系如表

6.6所示。

2 实现逻辑运算的设计 ○

上面已经讨论了ALU实现算术运算的设计,现在要在此逻辑结构的基础上通过设计实现逻辑运算的功能。在上述设计中对于不同的运算要求我们采用的是对Y端的处理,利用函数发生电路(尽管在这里它很简单)实现对Y端输入信号的控制。可以想象,逻辑运算的控制可以通过对全加器的X端和JIN的信号控制实现。

由于逻辑运算不需要考虑进位位JIN,应将它设置为0,同时考虑在进行算术运算时它必须起作用,我们可以通过第三位控制码S2来对JIN的输入进行控制,使JINS2CIN,当S2=0时,JINCIN,当S2=1时,JIN=0。

在进行逻辑运算时,全加器的本位和输出为

FXYJINXY

下面,根据具体的要求和状态得到:

当S2 S1 S0 =101时,Y=B,只要使X=A,就有FAB,实现异或逻辑功能。

当S2 S1 S0 =111时,Y=1,令X=A,则FA1A,完成倒相功能。

当S2 S1 S0 =100时,Y=0,使X=A+B,则FAB0AB,实现或逻辑。

当S2 S1 S0 =110时,YB,设置XAB,得到FABBAB,

实现了与逻辑功能。

综合算术运算和逻辑运算要求,可以写出如下的函数发生逻辑的表达式: 

XAS2S1S0BS2S1S0B

YS0BS1B

JINS2CIN 

根据这样的逻辑函数,可以设计出相应的逻辑结构,图6.10是ALU的一部分逻辑结构(只有两位)。

图6.10 ALU的局部逻辑结构图

将这个ALU的所有功能和控制码汇总,列举在表6.7中。

在前面我们曾提到,通过功能合并可以减少控制码的位数,在这个设计例子中,也是采用了功能合并的设计方法,关于这一点,表6.6已经清楚的反映出来。但通过对上表所列出的控制码和信号进行分析,我们发现实际上的控制码的位数仍是四位,只不过其中的一位以数据方式设置。所以在设计ALU的控制逻辑时要根据具体的外围条件设计控制码,如果外部没有提供其他的有效数据控制,则在通常情况下,控制码的位数由ALU所要执行的运算功能数量决定。

4. 函数发生逻辑电路

通过ALU的设计例子可以看出,在ALU中除了全加器以外,

最主要的逻辑是函数发生逻辑,它是进行多功能运算的关键部件。上例的函数发生逻辑是采用组合逻辑门结构设计的。我们也可以采用传输晶体管逻辑构造这样的函数发生逻辑,其结构非常简单。

1 JIN函数发生逻辑 ○

在这个ALU中,进位输入端或者接前级进位输出(或外部进位输入),或者接“0”,它取何值由S2控制。图6.11给出了用2到1的NMOS MUX实现这个函

数的电路图。

图6.11 JIN函数发生电路 图6.12 Y函数发生电路

2 Y函数发生逻辑 ○

从图6.8所示的逻辑结构就可以看出,它完全可以用一个2到1的MUX替代。这个MUX的结构如图6.12所示。

3 X函数发生逻辑 ○

图6.13 X函数发生电路

通过对设计过程及X信号的取值分析可以知道:在S2=0的期间,X连接A

信号,在S2=1时,只要S0=1,X也和A相连,因此在12个运算功能中的10个功

能,X都与A相连,只有S2 S1 S0 =100和110时,X是或逻辑输出。

采用传输晶体管逻辑可以使电路结构非常简单,但由于阈值电压损耗和串联电阻的作用,将对速度性能产生影响,因此在设计电路时要根据具体的性能要求选择合适的结构。

通过上述的设计我们可以看到传输晶体管逻辑在构造多功能函数结构时非常有效,关于这一点,本书的第四章第二节有关MUX的应用是一个很好的例子。

在微处理器中,ALU的速度将影响整个微处理器的处理速度,因此,在实际的ALU设计中要尽可能的提高ALU的速度,除了器件本身的速度以外,ALU的结构设计也非常重要。在以全加器为核心的ALU中,进位结构的优化是设计的一个重要内容。在上面的结构中,进位是以串行的方式工作的,因此,后一级的工作必须待前级稳定后才能有效,这将对多位ALU的速度产生影响。为解决这个问题,人们采用超前进位加法器等结构来改善进位所产生的延迟。

6.2.3 移位器

移位器是微处理器的又一个重要单元,处理器的许多位操作都是通过移位进行的。图6.14(a)显示了一个4×4的MOS开关阵列,共有16个MOS晶体管和16个控制信号,它可以实现对每一个开关的控制,确定B信号与D信号的连接。它实际上是一个多路转换开关,可以进行各种位操作,包括左移,右移,循环移位,位信号交叉,等等。

(a) (b)

图6.14 移位器结构

虽然这个电路可以很方便地进行各种位操作,但显然存在着控制信号太多的问题,实际上,在微处理器中的移位操作,常常是并行的,即每一位的移动量都是相同的,没有必要对每一个MOS开关分别控制,可以采取分组控制的方法。图

6.14(b)给出了这样的一个结构,这个结构目前被广泛地采用,它称为“桶型移位器”。它的工作原理很简单,S0~S3确定了移动的位置(他们每一次只有一

个有效,事实上,他们是译码的结果,也只会一位有效),假设B0是输入信号的

最低位,D0是输出信号的最低位,当S0=“1”时,Bi和Di一一对应,即不移位,

如果S1=“1”,则Di+1=Bi,实现了左移一位操作,依次类推。如果将D4与D0

相接,

D5与D1相接,D6与D2相接,则构成了循环移位,左移一位相当于右移三位。根据

实际的需要,可以构造各种所需的桶型移位器,可以设计成可选的左右移、循环移,以及低位补0(补1)、高位补1(补0)等各种有用的结构。除此之外,有的移位器仅要求规定的几种移位操作,这时,可通过增减控制和MOS开关的方法进行调整。

对于这种类型的移位器,它仅仅完成信号的移位操作,如果需要存储信号,则还需要寄存器。

6.2.4 寄存器

在微处理器种,寄存器的形式多种多样,根据不同的需要设置和选择不同的结构形式,这里将对常用的几种寄存器加以介绍。

1. 准静态寄存器

图6.15是一个准静态寄存器单元的结构图,由两个倒相器与两个传输晶体管构成。采用写入控制Load以及不重迭两相时钟φ1和φ2共同控制寄存器的动作,将Load和φ1相与(Load·φ1)控制输入传输晶体管的打开,用φ2控制反馈传输晶体管的导通与截止。

其工作过程是:当Load和φ1同时有效时,

输入传输晶体管导通,D信号通过传输晶体管到

达倒相器1的输入端,然后在倒相器2的输出端

建立起与D信号相同的逻辑值。当输入传输晶体

管截止后,φ2有效,反馈传输晶体管导通,两

个倒相器形成闭环,D信号被寄存在寄存器内。

因为是两相不重迭时钟,在输入晶体管截止到反

图6.15 准静态寄存器单元 馈晶体管导通的时钟不重迭期间,存入的信号是

依靠分布电容维持。这也是它被称为准静态的原因。当然,这种维持是有一定的时间限制的,当两个传输晶体管都处于截止态的时间过长,则原先输入的信号有可能因为电容的泄漏而丢失。这就要求两相时钟的配合要准确。

用一个单相时钟生成不重迭两相时钟有多种方法,图6.16给出了一种采用R-S触发器产生不重迭两相时钟的方法。这里假设倒相器和或非门具有相同的延迟时间Δ。

图6.16 生成两相时钟的电路

生成两相时钟的基本原理是:当输入时钟CLK从“0”跳变到“1”时,或非门2的输出在经过一个门延迟Δ后,从原先的“1”跳变到“0”,同时,倒相器的输出也从“1”改变为“0”,或非门1在倒相器和或非门2的“0”信号作用下,再经过Δ的延迟后,它的输出φ1从原先的“0”跳变到“1”。同样的原理,当CLK从“1”跳变到“0”时,或非门1首先响应,使输出φ1从“1”跳变到“0”,但其间经历了两个延迟时间2Δ(倒相器延迟和或非门1的延迟),这个“0”信号和CLK信号共同作用于或非门2,经过Δ后使φ2从“0”跳变到“1”。循环往复,由此电路我们从单相时钟得到了两相不重迭时钟。事实上,Δ是非常小的时间量,图中为能够清楚的表示信号的响应做了夸张处理。

准静态寄存器在微处理器中广泛应用,它可以作为数据寄存器,也可以作为地址寄存器。当作为数据寄存器时常常将它构造成双港口结构,以加快微处理器的执行速度。

2. 双港口寄存器

图6.17显示了两种以准静态寄存器为核心的双港口寄存器,所谓双港口是指该寄存器可以通过两条数据总线存取数据,这使数据的运算速度得到提高。例如,ALU的运算要求两个数据字,如果只有一条数据总线,则运算必须两次取数,而双数据总线可以同时从两组数据寄存器读出数据,相应的就要求数据寄存器可以根据需要将寄存的数据送到不同的数据总线上,双港口寄存器提供了这样的能力。

图6.17 双港口寄存器

对双港口寄存器,数据的写入是在WriteA·φ1或WriteB·φ1有效期间,从数据总线A或数据总线B存入寄存器,而寄存器数据的读出是在ReadA·φ1或ReadB·φ1有效期间,被送到数据总线A或B。总线在φ2期间预充到高电平,以提高读出速度。图示的两种双港口寄存器的读出和写入原理是相同的,与(a)图不同的是,(b)图所显示的双港口寄存器采用的是下拉晶体管结构,以减轻存储单元的负载,但代价是增加了晶体管数。

除了这种以准静态寄存器为核心的双港口寄存器以外,还有以静态寄存器为核心的双港口寄存器结构,如图6.18所示。这种双港口寄存器结构与SRAM单元很相似,两个倒相器连接成闭环结构。所不同的是它需要两条数据总线和开关,将寄存器的内容送到某一条数据总线上。由于有两条数据总线,因此,与其它双港口寄存器一样,它支持同时读取两个寄存器的内容,只不过数据被分别送到不同的数据总线。值得注意的是,在数据读出时要考虑数据的相位,例如,如果原

先的数据是以A总线为原量,B总线

为非量写入的,而读出时是在B总

线,则这个数据要倒相才是原数据。

3. 移位寄存器

移位寄存器是数字逻辑的常用

单元,它常被用于数据的暂存,采用

先进先出移位方式。它也可以被用作

为延迟单元,延迟时间以时钟周期数 图6.18 静态存储单元双港口寄存器 计。数据在两相不重迭时钟的控制下

进行移位,两相时钟的相互结构如上述的图6.16所示。图6.19是简单移位寄存器的结构图。

图6.19 简单移位寄存器

假设在φ1=1期间,有一个数字信号从数据输入端D进入移位寄存器,因为φ2=0,所以,这个数据通过导通的传输晶体管只能被A级的倒相器响应,在A级的倒相器输出端建立起这个信号的非量。当φ2=1,φ1=0时,数据进入B级,并在B级倒相器的输出建立起这个信号,而由于φ1=0,外部的数据不能在此时进入移位寄存器,同样的,B级的信号也不会传到C级。也就是说,在时钟信号的一个完整周期内,将产生输入信号的两级传送,经过N个周期,逻辑输入信号被移动过2N级移位寄存器。

当用两相时钟控制移位寄存器时,重要的一点是时钟的两相必须互不重迭。因为如果两相时钟在任何时刻同为高电平,则在重迭的时间内一个数据就有可能通过多级的传送,这将导致移位寄存器的失控和信息的错误传输。由于移位寄存器是依靠分布电容存储信号的,虽然从理论上讲,当MOS开关关断后,信号可以长时间的保存,但实际上由于电荷的泄漏而导致信号的错误,所以采用这种结构存储信号时,通常作为暂存单元。

图6.20 多位并行移位寄存器

采用多组这样的简单移位寄存器可以构成多位并行移位寄存器,用以同步地传输一组信号。在微处理器中常采用整字节宽度的移位寄存器作为数据的移位和暂存。图6.20给出了这样的结构示例。除了在微处理器中应用外,移位寄存器还被广泛地应用在数字逻辑系统中,除了图6.20所示的平行移位外,还有变换移位数据通道的移位寄存器,图6.21显示了这种结构的基本工作原理。

图6.21 可平行移位和上移的移位寄存器

通过增加的传输晶体管,这个移位寄存器既可以进行平行的移位,又可以实现向上移位。当φ2和SH同时有效时,在移位寄存器中移动的信号就改变了移动的方向。采用同样的原理,我们可以根据需要设计任意的移位方式。

6.2.5 堆栈

堆栈是微处理器中的另一个重要单元,它采用先进后出的存储和移位结构,其一位堆栈的基本结构如图6.22所示。

图6.22 一位堆栈结构

对堆栈的基本操作是压栈操作(PUSH)和弹出操作(POP)。压栈操作是将数据存入堆栈,并且每进行一个数据的压栈操作,前一次压入的数据往堆栈内部递进一位。弹出操作是将原先存入堆栈的数据取出,但每次弹出的数据是在堆栈中最靠近入口的数据,即先进后出。从图6.22可以看出,堆栈是两个简单移位

寄存器的重迭结构。左进右出的移位寄存器是M1→倒相器1→M6→倒相器2→→M3→倒相器3→M8→倒相器4→„„;„„→倒相器4→M4→倒相器3→M7→倒相器2→M2→倒相器1→M5构成了右进左出的移位寄存器。在数据进出堆栈时实际上是进行的数据的左右移位。与移位寄存器不同的是,在堆栈中有一个保持功能,当TRR和TRL有效时,在φ1和φ2的作用下,数据是在由两级移位寄存器首尾相接的闭环中移动。控制信号SHR和TRR有效时,在φ1、φ2的控制下进行数据的压栈操作;在控制信号SHL和TRL有效时,在φ1、φ2的控制下进行数据的弹出操作。图中显示了这些控制信号的逻辑关系。

将多组这样的一位堆栈组织在一起,可以实现所需要字宽的堆栈。

6.3 存储器组织

6.3.1 存储器组织结构

存储器是用来存储数据字、程序(指令)字的一些单元的集合,它可以有多种结构形式,但作为数据存入和读出的功能模块,它应该包括两个主要的部分:记忆体和写入/读出控制逻辑。在本书的前面章节已介绍了一些记忆体的结构,如ROM、EPROM、E2PROM、寄存器,等等,在这一节中将讨论在微处理器中的存储器组织和相关控制逻辑的结构与设计。图6.23是一个典型的程序存储器组织结构框图,对于其他的可读写存储器组织结构与其类似,不同之处在于数据可以通过寄存器和列选择电路写入存储单元阵列,这时的数据传输是双向的。

图6.23 存储器组织

在这个结构中包括了两大组成部分:主记忆体——存储单元阵列、控制逻辑——数据选择读出电路。

微处理器的程序存储器主记忆体是ROM,在结构上和前面介绍的结构相同。 控制逻辑包括地址寄存器、输出寄存器、行地址译码器和列选择电路。其中,地址寄存器用来暂存由地址总线传送的所选存储单元的地址,同时也隔离了存储器与地址总线,防止在译码过程中总线上的信号变化对译码的影响。输出寄存器

用于暂存由存储器输出的数据字或指令字,同步的将输出字送到数据总线。地址寄存器和输出寄存器常采用准静态寄存器单元结构。行译码器负责对部分地址位进行译码,产生相应的存储器位置信息;列选择电路实际上也是一个译码器,因此,有时也称它为列译码器,它对由行译码器选中的若干数据字(指令字)进行再选择,它是对地址字中剩余的部分地址位进行译码。行译码器和列选择电路组成了完整的地址译码电路,将对N位的地址字产生2N个地址,选中存储单元的位置。

下面以一个16K的存储器的工作过程加以分析,说明存储的数据被读出的构成。16K的存储器需要14位地址,在设计中常将它分为两段,这里假设它被分为10位和4位两段。行译码器负责低位地址A0~A9的译码,它将产生1024个地址,列选择电路负责高位地址A10~A13的译码,它将在16个输出字中选择一个有效字。

当地址总线送出14位地址并暂存在地址寄存器后,行译码器将A0~A9翻译成对应的地址,并使存储单元中的16个数据字同时被选中。这16个字被输出到列选择电路的输入端,由列选择电路根据A9~A13确定选择的具体字。通过行译码器和列选择电路从16K字中选择一个有效字送到输出寄存器暂存、输出。

那么,为什么不把所有存储单元排成一个字宽,2N个字高的瘦长组织结构,由一个行译码器产生2N个地址,直接获得输出字呢?这主要是为了简化译码器结构,节约存储器的面积。在微处理器中的程序存储器基本上是一个边长差异不大的矩形,设计时根据每个字的位数、字线(行译码器输出)的驱动能力、存储器的大小以及在芯片上的布局来确定地址的分段。存储器的行译码器通常承当了较多位地址的译码,这主要考虑了存储器尺寸的匹配。假设需设计一个16K的程序存储器,一个数据字长是8位,则ROM数量是8×16×1024=131072,如果设计成比较对称的矩形,同时考虑到地址的完整性,则应是256×512,即水平方向由5位地址控制进行列选择,对应256(8×32)只晶体管,竖直方向由9位地址控制,对应512行。在实际设计中考虑到存储元件在水平和竖直方向上的尺寸是不同的,单元的水平尺寸大于竖直尺寸(参见图4.4和图4.5),尤其是基于与-或结构的ROM,这种差别更大。所以还要根据具体的情况再调整行地址和列地址的位数。

6.3.2 行译码器结构

行译码器完成行译码有多种结构形式,图6.24给出了两种行译码器的逻辑结构,其中(a)图是或非结构的译码电路,(b)图是与非结构的译码电路,对应不同的字线输出要求。或非结构译码器的字线输出对应每个地址只有一根字线是高电平,其他字线输出低电平,这种字线的信号输出对应或非结构ROM的地址译码;与非结构译码器的字线输出对应每个地址则只有一根字线是低电平,其他字线输出是高电平,这种字线的信号输出对应与非结构ROM的地址译码(参见图4.2及第四章有关内容)。显然,与非结构的译码器不合适承当多位地址的译码,而或非结构译码器则没有地址位数的限制。

图中的负载电阻实际上是由晶体管实现的,有两种常用的结构形式:耗尽性NMOS晶体管和增强型PMOS晶体管。采用耗尽性NMOS晶体管做负载时,将栅和源短接,采用增强型PMOS晶体管则将它的栅接地使它常通。这两种形式的负载连接方法如图6.25所示。耗尽性NMOS负载的结构形式被称为E/DNMOS结构,PMOS管做负载的结构形式被称为伪NMOS结构。为保证输出电平的逻

辑有效性,负载晶体管通常为倒宽长比尺寸以加大它的等效电阻。

图6.24 行译码器结构

图6.25 电阻的等效晶体管结构

理论上讲,或非结构的译码器可以完成大量地址的译码,每一字线对应一个N输入的或非门,N为地址的位数,它实际上也是一个或非结构的ROM形式。例如上述的10位行地址译码将对应1024个或非门,这样的译码器将是非常庞大的,除了1024个负载管,还将有10×1024=10240个NMOS管。这种结构的译码器通常只适合于存储单元比较少的存储器,例如微处理器中RAM的选择译码。在大尺寸存储器的行译码器结构设计中,采用行地址再分组的译码结构。这时,存储主体结构也还将根据译码结构做相应变动。图6.26是一种存储主体的结构形式,它采用了与-或结构的ROM形式,即存储主体被分成若干组,在每组内存储单元和控制单元是以串联的形式连接,构成“与”的逻辑关系,而各组之间则是并联关系,构成“或”的逻辑关系,然后接到负载上,从每根位线看进去,它是一个“与或非”组合逻辑门。

以10位地址结构的行译码器为例,行地址被分成了两组,一组是3位地址,它被译成8个字线信号,一组是剩余的7位地址,将存储主体分为128组(27),在每组中的每个位线上最多对应9个串联的NMOS晶体管,其中的8个根据需要用作为存储数据位,一个用作为选择控制,它是必需的。因为在每组中的存储单元构成串联关系,所以,它的对应译码结构应为图6.24中的(b)图结构,或相当的信号结构。由3位地址产生的字线信号同时选中各组中相同位置的字线,使每组中的这条字线信号为“0”,其他为“1”。但选中的字线是否有效还取决于

组选择控制信号Wi是否为“1”,只有该组被选中,才能形成对地的通路。当然,每次只有一组被选中。经过行选择和组选择的共同作用,一个具体的“行”被选中。由于在组选择中只有一个控制线为“1”,其余为“0”,所以高位行地址的译码应采用图6.24(a)图的结构或等效的信号结构。

图6.26 与-或结构存储主体

例子: 假设,行地址为A9A8A7A6A5A4A3A2A1A0=1000000001,则A2~A0使每组的第6根字线被选中(注:设字线编号从1~8,最低组的编号为第1组),而实际输出时只有第65组的第6根字线有效。

应用这样的存储主体结构和译码形式,使行译码器硬件规模被减小,它需要 8个三输入与非门和128个7输入或非门,除136个负载晶体管外,只需3×8+ 7×128=920个NMOS管,同时,与ROM的紧凑结构(参见图4.5)也使得存储主体的尺寸被减小。

因为在行译码器输出的每一个字线上有几十个甚至更多的晶体管要被驱动,在行译码器的输出端往往接有驱动电路,以加强字线的驱动能力。

6.3.3 列选择电路结构

在行译码器中,当一根字线有效后选中的是一行晶体管,包含了若干字,列选择电路从这若干个字中选出一个有效字,而这个字就是对应了全部地址位选定的存储内容。图6.27给出了两种结构的列选择电路结构,其地址位为3位,根据地址将从8个字中选出一个有效字。

(a)图显示了一个典型的开关结构,在列译码逻辑(图中未画出,仅仅给出了对应的地址)的控制下,每次只有一根控制线为高电平,相应的使一组8个NMOS晶体管导通,输出一个8位的字。这个列译码器可采用图6.24(a)的结构。(b)图显示的则是没有译码逻辑的结构形式,列选择完全由8到1的多路转换开关MUX构成。不论是哪种结构,其选择原理都是相同的。从图中可以看出,每个字的各位并不是连续安置的,而是间隔安置的,其间隔的大小取决于字

线同时选择了多少各字。这样设计的优点是每个字的读出时间将是一样的,不会因为距行译码器的距离而产生差异。

图6.27 列选择电路结构

比较两种结构,由于(a)图结构在数据输出通道中只有一个晶体管开关,其等效串联电阻比较小,缺点是要设置一个3位译码器。(b)图是将译码和选通合二为一,缺点是串联电阻比较大。在实际设计中有时将这两种结构相组合,例如,当有4位地址时,将其中的最高位选择构造成(b)图结构,从由(a)图结构列选择电路选出的两个字中选择一个有效字。

除了上面介绍的行列译码结构外,对应不同的存储主体结构,还有其他的多种形式,这里不一一介绍了。

从本章所介绍和讨论的微处理器设计可以看到,VLSI技术是如何被用于逻辑的设计的,它体现了规则化、结构化的设计思想,即采用规则、重复的单元,以简单的基本结构实现复杂的系统。这样的结构特别适合于自动设计和CAD方法完成系统的设计。除了上面已介绍的技术方法外,在VLSIC中还大量的采用标准单元和积木块单元技术,优化逻辑和电路的性能。

第六章 微处理器

微处理器是典型的LSI、VLSI器件,在微处理器的设计中集中了多种VLSI设计技术与模块结构。在本章中我们并不讨论微处理器本身的系统设计,而是讨论如何用VLSI的设计技术与模块结构去实现常规微处理器内核(Core)的逻辑模块。

6.1 系统结构概述

微处理器在当今的世界上得到非常广泛地应用,几乎到了无所不在,无所不能的地步。微处理器的品种非常多,人们根据不同的需要采用不同的微处理器。早期人们使用通用型微处理器,通过软件编程和外围电路的设计实现所需的功能。在此基础上,设计者逐渐地将一些功能模块加入微处理器结构,设计内置ROM驻留用户程序,逐渐形成了适用于一类工作的专用微处理器。这种微处理器可以独立地承担用户的任务,通常也称这种微处理器为单片机。虽然专用微处理器的核心部分和通用微处理器并无什么区别,但专用微处理器所具有的一些功能模块却给用户带来极大的便利。例如,配置了模数转换模块和数模转换模块的微处理器,可以直接处理模拟信号,而不必在外围附加转换电路,实现了小型化或微型化。

在传统的微处理器设计过程中,人们一般以8位,16位,32位二进制数为一个字,内部指令的传送、处理都是以字来进行,外部数据的进出也以字进行,总线结构也都是以8的二倍数设定宽度。这种以完整的字结构形式构造的微处理器被封装在一定形式的管座中。早期因为封装技术的落后,不能有效地解决热的问题,只好以比较少的位数(

不论是通用微处理器,还是单片微处理器或位片微处理器,其基本内核的构成都很相近。

积木块结构是微处理器的典型版图结构,这是因为微处理器本身是模块化的结构。通常的微处理器由两个空间(或称为通道)和通讯连线组成,两个空间是程序空间(又称为控制通道)和数据空间(又称为数据通道),通讯连线主要是指总线,这样的分离式的结构被称为哈佛结构。

程序空间主要包括:控制器(Controller),程序计数器(PC)和堆栈(Stack),或还包括程序ROM。

数据空间主要包括:算术逻辑单元(ALU),累加器(ACC),移位器(Shifter)和寄存器(Register),或还包括RAM。

总线有几种形式:分离的程序总线和数据总线(双总线、三总线)和合并总线(程序、数据复用总线)。

微处理器的操作过程实际上是根据用户预先设置的顺序(用户程序)进行逻辑运算的过程,在每一步的逻辑运算过程中,微处理器和通常的数字逻辑几乎没有什么区别。一条指令进入操作的过程,实际上是一组数字信号作为输入激励去驱动微处理器内部的逻辑模块进行适当地逻辑运算的过程。而每一次运算的结果之一是产生下一条指令的地址,这可能是现地址加一,也可能是加了若干偏移后

的地址(如跳转指令)。微处理器就是这样不断地取得输入信号,不断地逻辑运算,一步步地顺序完成人们要求的操作。

从微处理器的工作原理和组成可以知道,微处理器实际上是由一系列的数字逻辑构成,那么,微处理器模块的设计实质上是数字逻辑模块的设计。在当今的微处理器设计中所采用的主要技术是所谓的结构化设计,就是用规则、重复的单元去构造和实现所需要的逻辑。

6.2 微处理器单元设计

在这一节中,我们将介绍微处理器主要组成单元的结构及设计,从中将了解到VLSI技术在单元构造和实现中的应用。

6.2.1 控制器单元

控制器是微处理器的主控单元,也是不同微处理器之间差异最大的单元。它的功能是根据指令或直接给予微处理器的控制产生一系列的输出信号,去控制相关逻辑单元进行适当的操作和运算。早期的控制器是采用随机逻辑实现,由于随机逻辑采用了多种不同的基本逻辑单元,因此,在版图设计中将花费较长的设计周期,并且测试和修改困难。因此,人们逐渐的用规则、重复的结构化单元去取代随机逻辑。在现在的微处理器中,许多控制器已采用PLA技术和微码控制器(MicroCoded Controller)技术进行设计。

PLA技术适合于设计小的控制器,对于要求大量输出信息的控制器,PLA的结构就将变的十分复杂,并且难以高效设计,一个重要的原因是PLA的基础是布尔函数。当然,也可以用几块小的PLA来实现大的逻辑。

微码控制器的一个重要的特性是它可以具有非常宽的控制字输出。所谓微码控制器实际上就是一块ROM和相应的地址发生器的组合,它包含了全部的控制信息。我们并不需要关心控制器是什么函数关系,只要知道在一个特定的状态下,它应给出什么输出即可。一个简单的微码控制器结构如图6.1所示。

图6.1 简单微码控制器

这个简单的微码控制器由两个主要部分组成:微控制字存储器和下一地址发生器。微控制字存储器存放的是一系列控制字,这些字用于控制处理器中逻辑模块的行为,它的输入是由下一地址发生器所馈给的控制字地址,它实际上是一块ROM,所以,人们又称它为微ROM(MicroROM)。下一地址发生器则是根据状态输入信息(如一个指令)和(或)从存储器中来的反馈信息生成下一地址。

这个微码控制器的工作原理是:在一个确定的状态输入激励下,下一地址发

生器产生一个微ROM的地址,选中一个控制字和相应的反馈字,控制字输出用于运算模块的控制,反馈字用于确定下一地址发生器的动作,事实上,在一个状态信息下,运算模块可能会同时或顺序执行多步的动作,这一系列的动作和地址发生一直进行到反馈字不再产生新的微ROM地址。如果状态输入是一条指令,则这些动作是在一个指令周期内完成的。

试想一下,如果状态输入是一个启动信号,而反馈字又是不断地生成下一地址,则该控制器则是一个开环的控制器,它将完成一系列的控制,而这时对微ROM的设计就类似于计算机编程,只不过这个编程是直接用机器语言且数据具有相当的宽度。如果状态输入是一系列的指令,则微码控制器就将根据指令输出一系列的控制字,完成指令规定的操作,它不再仅仅是顺序操作,它还可执行分枝跳转等需要的操作。

图6.2是一个典型的微码控制器的存储器结构,其中MAR是存储器地址寄存器(Memory Address Register),用于暂存一条控制字的地址。

图6.2 微码控制器的存储器结构示例

在这个示例中,假设了该存储器有12位地址,对应了4K控制字,每个控制字由72位控制信息组成,其中,60位是用于控制诸如寄存器、ALU、移位器、总线等微处理器组成单元,12位作为下一地址发生器的反馈信息送给下一地址发生器。

从这个ROM结构我们可以看出,微码控制器的ROM结构和普通程序或数据ROM的一个很大的不同,这就是普通的ROM通常是地址位多于数据位,例如,8位16K ROM,数据位是8位,而地址是14位,微码ROM则是数据位多于控制位,这是因为微处理器所要求的控制信号位数量很多。这样的微码ROM的尺寸是非常大的,它的ROM中数据对应的晶体管数非常之多。在这个例子中,将有29万多个晶体管,它实在是太庞大了。

那么,是不是必须要如此庞大呢?实际上,对于一个给定的微处理器,在这么多的控制字中,有许多是不必要的,还有许多是重复的。所谓不必要的控制字,是指在这个微处理器中,某些地址根本就不会出现。所谓重复是指不同的地址对应的控制字却是相同的的情况。为减小ROM尺寸,应设法将这些不必要或(和)重复的控制字去除。

图6.3给出了这样的设计示例。在这个示例中,假设将原来的4096个控制字去掉不必要的字,合并相同的字后变为256个控制字,那么,这256个字只要8位地址就可覆盖。图中左边的ROM就存放了这256个72位的字,这个ROM被称为毫微指令ROM(因它比较小)。图中右边的ROM被称为微指令ROM,它实际上类似于一个译码器,它将12位地址所对应的4096个可能的选择,翻译成了8位毫微ROM的地址。显然这样的设计大大减小了微ROM的尺寸,在这个例子中,

对应原先的29万多个晶体管,只需越5万个晶体管就可获得同样的控制效果。当然,这样的设计带来的弊端是整个微ROM的延迟时间要大于图6.2所示结构。

图6.3 两级微程序存储器结构示意图

下面,我们通过一个例子来说明控制器在微处理器中的工作过程。

图6.4是一个由微码控制器控制的微处理器中的一些模块的结构图。这里,IR是指令寄存器,PC是程序计数器。

图6.4 微码控制器控制的运算单元结构示意图

现在要执行的操作是:将寄存器4中的数与寄存器7中数相加后再送回到寄存器4中。

寄存器4←寄存器7+寄存器4

当开始计算的时候,所指向的程序ROM(图中未画出)地址被送入程序计数器PC中,这个地址通过地址总线确定了程序ROM的地址并取出一条指令,这个指令通过数据总线被送入IR,下一地址发生器根据IR的内容在微ROM中确定一个控制字的开始地址。这个控制字选择寄存器4并将它的内容传送到ALU,如果寄存器硬件支持双港口读方式,则控制字的其他位也将使寄存器7被选中,并将其中的内容通过另一组总线送到ALU。接下来,下一地址发生器将产生控制字的下一地址,控制器输出第二个控制字,命令ALU进行加操作。随即,下一地址发生器产生第三个地址,选中第三个控制字,这个最后的控制字使ALU存储加的结果到寄存器4,并且通过刷新PC为IR得到下一微处理器的指令做准备。

由上例可知,一条微处理器的指令可能需要多个控制字控制操作的过程,而下一地址的产生和相应控制字的输出,很大程度上取决于ALU的操作,所以,ALU的状态也将影响下一地址发生器的行为。在上例中,当ALU取数完成后,才能发出第二个控制字,当加操作完成后才能发出第三个控制字,否则,将出现错误的运算和操作。当然,这个例子也仅仅是一个简单而且单纯的操作,实际的操作可能还有许多其他的因素在起作用和产生控制。

6.2.2 算术逻辑单元ALU

1. 信号结构

ALU是数据空间的最主要的单元,可以说,它是微处理器的核心,我们所需要的各种主要的运算和逻辑操作,都是通过它完成的。

通常的逻辑操作包括:逻辑与、逻辑或、逻辑异或、取反、求补等,通常的算术运算包括:加、减、比较、算术左移等。当然,还有其他的许多逻辑操作和算术运算,这里不一一枚举。这里所讨论的ALU未考虑长运算(如乘法运算),当要求进行长运算时,其硬件结构将扩充,加入专门的运算模块,相应的总线宽度也将发生变化。图6.5显示了ALU的外部信号结构。

图6.5 ALU信号结构

ALU内部不需要对数据进行寄存,它被要求对输入的信息立即产生反应,从逻辑分类的角度讲,ALU是组合逻辑结构。操作数A和操作数B提供了ALU的基本输入数据,操作码作为控制信息,对所需的操作进行选择和控制,标志位则表达了操作的属性。操作数的位数(通常是8,16,32等)由微处理器的基本数据宽度决定,操作码的位数由所需进行的操作类型数决定,例如,有11种操作类型,则操作码就需要4位,每一组代码(会有冗余)对应一种操作,而如果仅有8种操作类型,则只要3位操作码即可。实际设计中经常将其中的一部分操作归类合并,以减少控制位数。例如,带进位的加法和不带进位的加法是同一控制字,当要做不带进位的加法时将前级进位设置为0即可。

ALU的核心是全加器,配合相应的函数发生器即可进行多种算术运算和逻辑操作。

2. 全加器

所谓全加器是指可以进行带进位输入和输出的加法运算单元,输入、输出的逻辑关系如表6.1所示。其中,Ai、Bi为需要相加的两个二进制数,Ci-1为前级进位,Si为本位和,Ci为本级进位。

由真值表我们可以写出全加器的逻辑表达式:

SiAiBiCi1

CiAi

BiCi

1AiBi

全加器的逻辑结构如图6.6所示。特别需要指出的是,这个结构仅仅是全加器众多结构中的一种。

图6.6 全加器的逻辑结构图

在VLSI技术中,为规则设计也常常采用传输晶体管逻辑构造全加器。根据表6.1中的真值关系得到如下的两个子真值表6.2和6.3。

从这两个真值表,我们可以很方便地用两个4到1的MUX和倒相器组合构造

全加器,图6.7出了NMOS结构全加器的棒状图。

图6.7 NMOS结构全加器的棒状图

同样的原理我们也可以用CMOS传输逻辑实现全加器,与上图相比只是用CMOS传输对替代了NMOS传输晶体管。

显然,与图6.6所示的逻辑图相比,采用传输晶体管逻辑构造全加器所获得的电路结构简单、规则。

3. 以全加器为核心构造的ALU

在这部分内容中,我们将通过一个简单的ALU的构造过程,讨论如何以全加器为核心,辅以函数发生器逻辑实现算术运算和逻辑运算。

假设ALU的功能如表6.4所示,它完成8种算术运算和4种逻辑运算,其中,算术运算需要考虑进位输入和进位输出,逻辑运算则不需要考虑进位的问题,可以将它设为0。现在将以全加器为核心构造完成这些功能要求的ALU,我们首先分别讨论用全加器实现算术运算和逻辑运算的设计,最后将两者结合完成设计。

1 实现算术运算的设计 ○

为和数据信号加以区别,这里定义全加器的被加数输入端为X端,加数的输入端为Y端,前级进位输入端为JIN,本级进位输出端为JOUT,全加器的本级和输出端为H端。在进行算术运算时,X端始终接数据A,Y端根据功能需要接不同的输入,H端则输出算术运算的结果F。

·传送A,并且本级进位输出等于0。当全加器的Y=0,JIN=0(CIN=0)时,全加器的输出H=X,并且JOUT=0,实现了要求F=A。

·数据A递增。设定Y=0,JIN=1(CIN=1),全加器的本级和H=X+1+0=X+1,实现了运算F=A+1。

·加法运算F=A+B。将Y端与数据B连接即Y=B,JIN=0,H=X+Y+0=X+Y,完成加法F=A+B功能。

·带进位的加法F=A+B+1。显然,只要在加法运算方式中将JIN=1即可完成带进位的加法运算要求。

·减法运算F=A-B和带借位的减法运算F=A-B-1。因为减法是通过被减数和减数的补码相加实现,所以,ABAB1,相应的,带借位的减法AB1AB。这样,为实现减法运算,只要设定Y,JIN=1即可。而带借位的减法与减法的不同之处仅是JIN=0。

·数据A递减运算。设定Y=1,JIN=0,则全加器的本级和取的是A的非量,完成了A的递减F=A-1要求。

·传送数据A并且进位输出COUT=1。设定Y=1,JIN=1,则由这两个值使JOUY=1,而H=A。实现了运算要求。

在算术运算中的设计实际上是对Y和JIN的设计,其中,JIN由进位输入给出,Y则必须用逻辑结构实现。通过上面的分析可知,Y的取值由四种:0,1,B和B。我们可以通过控制码S1 S0 和相应的逻辑来产生这四个值。

图6.8 Y的逻辑图

表6.5给出了与Y相关的逻辑真值表,这里的控制码S1、S0是任意给出的,

但一旦给出,则相应的逻辑也就确定了,图6.8是对应这个真值表所产生的逻辑。如果改变控制真值,则逻辑结构也将随之改变。

图6.9 进行一位算术运算的ALU逻辑结构

图6.9是对应上述8种算术运算的1位ALU的逻辑图,以此结构为基础可以构造多位ALU逻辑。

根据上述的讨论和设计,我们可以得到对应8种算术运算的信号关系如表

6.6所示。

2 实现逻辑运算的设计 ○

上面已经讨论了ALU实现算术运算的设计,现在要在此逻辑结构的基础上通过设计实现逻辑运算的功能。在上述设计中对于不同的运算要求我们采用的是对Y端的处理,利用函数发生电路(尽管在这里它很简单)实现对Y端输入信号的控制。可以想象,逻辑运算的控制可以通过对全加器的X端和JIN的信号控制实现。

由于逻辑运算不需要考虑进位位JIN,应将它设置为0,同时考虑在进行算术运算时它必须起作用,我们可以通过第三位控制码S2来对JIN的输入进行控制,使JINS2CIN,当S2=0时,JINCIN,当S2=1时,JIN=0。

在进行逻辑运算时,全加器的本位和输出为

FXYJINXY

下面,根据具体的要求和状态得到:

当S2 S1 S0 =101时,Y=B,只要使X=A,就有FAB,实现异或逻辑功能。

当S2 S1 S0 =111时,Y=1,令X=A,则FA1A,完成倒相功能。

当S2 S1 S0 =100时,Y=0,使X=A+B,则FAB0AB,实现或逻辑。

当S2 S1 S0 =110时,YB,设置XAB,得到FABBAB,

实现了与逻辑功能。

综合算术运算和逻辑运算要求,可以写出如下的函数发生逻辑的表达式: 

XAS2S1S0BS2S1S0B

YS0BS1B

JINS2CIN 

根据这样的逻辑函数,可以设计出相应的逻辑结构,图6.10是ALU的一部分逻辑结构(只有两位)。

图6.10 ALU的局部逻辑结构图

将这个ALU的所有功能和控制码汇总,列举在表6.7中。

在前面我们曾提到,通过功能合并可以减少控制码的位数,在这个设计例子中,也是采用了功能合并的设计方法,关于这一点,表6.6已经清楚的反映出来。但通过对上表所列出的控制码和信号进行分析,我们发现实际上的控制码的位数仍是四位,只不过其中的一位以数据方式设置。所以在设计ALU的控制逻辑时要根据具体的外围条件设计控制码,如果外部没有提供其他的有效数据控制,则在通常情况下,控制码的位数由ALU所要执行的运算功能数量决定。

4. 函数发生逻辑电路

通过ALU的设计例子可以看出,在ALU中除了全加器以外,

最主要的逻辑是函数发生逻辑,它是进行多功能运算的关键部件。上例的函数发生逻辑是采用组合逻辑门结构设计的。我们也可以采用传输晶体管逻辑构造这样的函数发生逻辑,其结构非常简单。

1 JIN函数发生逻辑 ○

在这个ALU中,进位输入端或者接前级进位输出(或外部进位输入),或者接“0”,它取何值由S2控制。图6.11给出了用2到1的NMOS MUX实现这个函

数的电路图。

图6.11 JIN函数发生电路 图6.12 Y函数发生电路

2 Y函数发生逻辑 ○

从图6.8所示的逻辑结构就可以看出,它完全可以用一个2到1的MUX替代。这个MUX的结构如图6.12所示。

3 X函数发生逻辑 ○

图6.13 X函数发生电路

通过对设计过程及X信号的取值分析可以知道:在S2=0的期间,X连接A

信号,在S2=1时,只要S0=1,X也和A相连,因此在12个运算功能中的10个功

能,X都与A相连,只有S2 S1 S0 =100和110时,X是或逻辑输出。

采用传输晶体管逻辑可以使电路结构非常简单,但由于阈值电压损耗和串联电阻的作用,将对速度性能产生影响,因此在设计电路时要根据具体的性能要求选择合适的结构。

通过上述的设计我们可以看到传输晶体管逻辑在构造多功能函数结构时非常有效,关于这一点,本书的第四章第二节有关MUX的应用是一个很好的例子。

在微处理器中,ALU的速度将影响整个微处理器的处理速度,因此,在实际的ALU设计中要尽可能的提高ALU的速度,除了器件本身的速度以外,ALU的结构设计也非常重要。在以全加器为核心的ALU中,进位结构的优化是设计的一个重要内容。在上面的结构中,进位是以串行的方式工作的,因此,后一级的工作必须待前级稳定后才能有效,这将对多位ALU的速度产生影响。为解决这个问题,人们采用超前进位加法器等结构来改善进位所产生的延迟。

6.2.3 移位器

移位器是微处理器的又一个重要单元,处理器的许多位操作都是通过移位进行的。图6.14(a)显示了一个4×4的MOS开关阵列,共有16个MOS晶体管和16个控制信号,它可以实现对每一个开关的控制,确定B信号与D信号的连接。它实际上是一个多路转换开关,可以进行各种位操作,包括左移,右移,循环移位,位信号交叉,等等。

(a) (b)

图6.14 移位器结构

虽然这个电路可以很方便地进行各种位操作,但显然存在着控制信号太多的问题,实际上,在微处理器中的移位操作,常常是并行的,即每一位的移动量都是相同的,没有必要对每一个MOS开关分别控制,可以采取分组控制的方法。图

6.14(b)给出了这样的一个结构,这个结构目前被广泛地采用,它称为“桶型移位器”。它的工作原理很简单,S0~S3确定了移动的位置(他们每一次只有一

个有效,事实上,他们是译码的结果,也只会一位有效),假设B0是输入信号的

最低位,D0是输出信号的最低位,当S0=“1”时,Bi和Di一一对应,即不移位,

如果S1=“1”,则Di+1=Bi,实现了左移一位操作,依次类推。如果将D4与D0

相接,

D5与D1相接,D6与D2相接,则构成了循环移位,左移一位相当于右移三位。根据

实际的需要,可以构造各种所需的桶型移位器,可以设计成可选的左右移、循环移,以及低位补0(补1)、高位补1(补0)等各种有用的结构。除此之外,有的移位器仅要求规定的几种移位操作,这时,可通过增减控制和MOS开关的方法进行调整。

对于这种类型的移位器,它仅仅完成信号的移位操作,如果需要存储信号,则还需要寄存器。

6.2.4 寄存器

在微处理器种,寄存器的形式多种多样,根据不同的需要设置和选择不同的结构形式,这里将对常用的几种寄存器加以介绍。

1. 准静态寄存器

图6.15是一个准静态寄存器单元的结构图,由两个倒相器与两个传输晶体管构成。采用写入控制Load以及不重迭两相时钟φ1和φ2共同控制寄存器的动作,将Load和φ1相与(Load·φ1)控制输入传输晶体管的打开,用φ2控制反馈传输晶体管的导通与截止。

其工作过程是:当Load和φ1同时有效时,

输入传输晶体管导通,D信号通过传输晶体管到

达倒相器1的输入端,然后在倒相器2的输出端

建立起与D信号相同的逻辑值。当输入传输晶体

管截止后,φ2有效,反馈传输晶体管导通,两

个倒相器形成闭环,D信号被寄存在寄存器内。

因为是两相不重迭时钟,在输入晶体管截止到反

图6.15 准静态寄存器单元 馈晶体管导通的时钟不重迭期间,存入的信号是

依靠分布电容维持。这也是它被称为准静态的原因。当然,这种维持是有一定的时间限制的,当两个传输晶体管都处于截止态的时间过长,则原先输入的信号有可能因为电容的泄漏而丢失。这就要求两相时钟的配合要准确。

用一个单相时钟生成不重迭两相时钟有多种方法,图6.16给出了一种采用R-S触发器产生不重迭两相时钟的方法。这里假设倒相器和或非门具有相同的延迟时间Δ。

图6.16 生成两相时钟的电路

生成两相时钟的基本原理是:当输入时钟CLK从“0”跳变到“1”时,或非门2的输出在经过一个门延迟Δ后,从原先的“1”跳变到“0”,同时,倒相器的输出也从“1”改变为“0”,或非门1在倒相器和或非门2的“0”信号作用下,再经过Δ的延迟后,它的输出φ1从原先的“0”跳变到“1”。同样的原理,当CLK从“1”跳变到“0”时,或非门1首先响应,使输出φ1从“1”跳变到“0”,但其间经历了两个延迟时间2Δ(倒相器延迟和或非门1的延迟),这个“0”信号和CLK信号共同作用于或非门2,经过Δ后使φ2从“0”跳变到“1”。循环往复,由此电路我们从单相时钟得到了两相不重迭时钟。事实上,Δ是非常小的时间量,图中为能够清楚的表示信号的响应做了夸张处理。

准静态寄存器在微处理器中广泛应用,它可以作为数据寄存器,也可以作为地址寄存器。当作为数据寄存器时常常将它构造成双港口结构,以加快微处理器的执行速度。

2. 双港口寄存器

图6.17显示了两种以准静态寄存器为核心的双港口寄存器,所谓双港口是指该寄存器可以通过两条数据总线存取数据,这使数据的运算速度得到提高。例如,ALU的运算要求两个数据字,如果只有一条数据总线,则运算必须两次取数,而双数据总线可以同时从两组数据寄存器读出数据,相应的就要求数据寄存器可以根据需要将寄存的数据送到不同的数据总线上,双港口寄存器提供了这样的能力。

图6.17 双港口寄存器

对双港口寄存器,数据的写入是在WriteA·φ1或WriteB·φ1有效期间,从数据总线A或数据总线B存入寄存器,而寄存器数据的读出是在ReadA·φ1或ReadB·φ1有效期间,被送到数据总线A或B。总线在φ2期间预充到高电平,以提高读出速度。图示的两种双港口寄存器的读出和写入原理是相同的,与(a)图不同的是,(b)图所显示的双港口寄存器采用的是下拉晶体管结构,以减轻存储单元的负载,但代价是增加了晶体管数。

除了这种以准静态寄存器为核心的双港口寄存器以外,还有以静态寄存器为核心的双港口寄存器结构,如图6.18所示。这种双港口寄存器结构与SRAM单元很相似,两个倒相器连接成闭环结构。所不同的是它需要两条数据总线和开关,将寄存器的内容送到某一条数据总线上。由于有两条数据总线,因此,与其它双港口寄存器一样,它支持同时读取两个寄存器的内容,只不过数据被分别送到不同的数据总线。值得注意的是,在数据读出时要考虑数据的相位,例如,如果原

先的数据是以A总线为原量,B总线

为非量写入的,而读出时是在B总

线,则这个数据要倒相才是原数据。

3. 移位寄存器

移位寄存器是数字逻辑的常用

单元,它常被用于数据的暂存,采用

先进先出移位方式。它也可以被用作

为延迟单元,延迟时间以时钟周期数 图6.18 静态存储单元双港口寄存器 计。数据在两相不重迭时钟的控制下

进行移位,两相时钟的相互结构如上述的图6.16所示。图6.19是简单移位寄存器的结构图。

图6.19 简单移位寄存器

假设在φ1=1期间,有一个数字信号从数据输入端D进入移位寄存器,因为φ2=0,所以,这个数据通过导通的传输晶体管只能被A级的倒相器响应,在A级的倒相器输出端建立起这个信号的非量。当φ2=1,φ1=0时,数据进入B级,并在B级倒相器的输出建立起这个信号,而由于φ1=0,外部的数据不能在此时进入移位寄存器,同样的,B级的信号也不会传到C级。也就是说,在时钟信号的一个完整周期内,将产生输入信号的两级传送,经过N个周期,逻辑输入信号被移动过2N级移位寄存器。

当用两相时钟控制移位寄存器时,重要的一点是时钟的两相必须互不重迭。因为如果两相时钟在任何时刻同为高电平,则在重迭的时间内一个数据就有可能通过多级的传送,这将导致移位寄存器的失控和信息的错误传输。由于移位寄存器是依靠分布电容存储信号的,虽然从理论上讲,当MOS开关关断后,信号可以长时间的保存,但实际上由于电荷的泄漏而导致信号的错误,所以采用这种结构存储信号时,通常作为暂存单元。

图6.20 多位并行移位寄存器

采用多组这样的简单移位寄存器可以构成多位并行移位寄存器,用以同步地传输一组信号。在微处理器中常采用整字节宽度的移位寄存器作为数据的移位和暂存。图6.20给出了这样的结构示例。除了在微处理器中应用外,移位寄存器还被广泛地应用在数字逻辑系统中,除了图6.20所示的平行移位外,还有变换移位数据通道的移位寄存器,图6.21显示了这种结构的基本工作原理。

图6.21 可平行移位和上移的移位寄存器

通过增加的传输晶体管,这个移位寄存器既可以进行平行的移位,又可以实现向上移位。当φ2和SH同时有效时,在移位寄存器中移动的信号就改变了移动的方向。采用同样的原理,我们可以根据需要设计任意的移位方式。

6.2.5 堆栈

堆栈是微处理器中的另一个重要单元,它采用先进后出的存储和移位结构,其一位堆栈的基本结构如图6.22所示。

图6.22 一位堆栈结构

对堆栈的基本操作是压栈操作(PUSH)和弹出操作(POP)。压栈操作是将数据存入堆栈,并且每进行一个数据的压栈操作,前一次压入的数据往堆栈内部递进一位。弹出操作是将原先存入堆栈的数据取出,但每次弹出的数据是在堆栈中最靠近入口的数据,即先进后出。从图6.22可以看出,堆栈是两个简单移位

寄存器的重迭结构。左进右出的移位寄存器是M1→倒相器1→M6→倒相器2→→M3→倒相器3→M8→倒相器4→„„;„„→倒相器4→M4→倒相器3→M7→倒相器2→M2→倒相器1→M5构成了右进左出的移位寄存器。在数据进出堆栈时实际上是进行的数据的左右移位。与移位寄存器不同的是,在堆栈中有一个保持功能,当TRR和TRL有效时,在φ1和φ2的作用下,数据是在由两级移位寄存器首尾相接的闭环中移动。控制信号SHR和TRR有效时,在φ1、φ2的控制下进行数据的压栈操作;在控制信号SHL和TRL有效时,在φ1、φ2的控制下进行数据的弹出操作。图中显示了这些控制信号的逻辑关系。

将多组这样的一位堆栈组织在一起,可以实现所需要字宽的堆栈。

6.3 存储器组织

6.3.1 存储器组织结构

存储器是用来存储数据字、程序(指令)字的一些单元的集合,它可以有多种结构形式,但作为数据存入和读出的功能模块,它应该包括两个主要的部分:记忆体和写入/读出控制逻辑。在本书的前面章节已介绍了一些记忆体的结构,如ROM、EPROM、E2PROM、寄存器,等等,在这一节中将讨论在微处理器中的存储器组织和相关控制逻辑的结构与设计。图6.23是一个典型的程序存储器组织结构框图,对于其他的可读写存储器组织结构与其类似,不同之处在于数据可以通过寄存器和列选择电路写入存储单元阵列,这时的数据传输是双向的。

图6.23 存储器组织

在这个结构中包括了两大组成部分:主记忆体——存储单元阵列、控制逻辑——数据选择读出电路。

微处理器的程序存储器主记忆体是ROM,在结构上和前面介绍的结构相同。 控制逻辑包括地址寄存器、输出寄存器、行地址译码器和列选择电路。其中,地址寄存器用来暂存由地址总线传送的所选存储单元的地址,同时也隔离了存储器与地址总线,防止在译码过程中总线上的信号变化对译码的影响。输出寄存器

用于暂存由存储器输出的数据字或指令字,同步的将输出字送到数据总线。地址寄存器和输出寄存器常采用准静态寄存器单元结构。行译码器负责对部分地址位进行译码,产生相应的存储器位置信息;列选择电路实际上也是一个译码器,因此,有时也称它为列译码器,它对由行译码器选中的若干数据字(指令字)进行再选择,它是对地址字中剩余的部分地址位进行译码。行译码器和列选择电路组成了完整的地址译码电路,将对N位的地址字产生2N个地址,选中存储单元的位置。

下面以一个16K的存储器的工作过程加以分析,说明存储的数据被读出的构成。16K的存储器需要14位地址,在设计中常将它分为两段,这里假设它被分为10位和4位两段。行译码器负责低位地址A0~A9的译码,它将产生1024个地址,列选择电路负责高位地址A10~A13的译码,它将在16个输出字中选择一个有效字。

当地址总线送出14位地址并暂存在地址寄存器后,行译码器将A0~A9翻译成对应的地址,并使存储单元中的16个数据字同时被选中。这16个字被输出到列选择电路的输入端,由列选择电路根据A9~A13确定选择的具体字。通过行译码器和列选择电路从16K字中选择一个有效字送到输出寄存器暂存、输出。

那么,为什么不把所有存储单元排成一个字宽,2N个字高的瘦长组织结构,由一个行译码器产生2N个地址,直接获得输出字呢?这主要是为了简化译码器结构,节约存储器的面积。在微处理器中的程序存储器基本上是一个边长差异不大的矩形,设计时根据每个字的位数、字线(行译码器输出)的驱动能力、存储器的大小以及在芯片上的布局来确定地址的分段。存储器的行译码器通常承当了较多位地址的译码,这主要考虑了存储器尺寸的匹配。假设需设计一个16K的程序存储器,一个数据字长是8位,则ROM数量是8×16×1024=131072,如果设计成比较对称的矩形,同时考虑到地址的完整性,则应是256×512,即水平方向由5位地址控制进行列选择,对应256(8×32)只晶体管,竖直方向由9位地址控制,对应512行。在实际设计中考虑到存储元件在水平和竖直方向上的尺寸是不同的,单元的水平尺寸大于竖直尺寸(参见图4.4和图4.5),尤其是基于与-或结构的ROM,这种差别更大。所以还要根据具体的情况再调整行地址和列地址的位数。

6.3.2 行译码器结构

行译码器完成行译码有多种结构形式,图6.24给出了两种行译码器的逻辑结构,其中(a)图是或非结构的译码电路,(b)图是与非结构的译码电路,对应不同的字线输出要求。或非结构译码器的字线输出对应每个地址只有一根字线是高电平,其他字线输出低电平,这种字线的信号输出对应或非结构ROM的地址译码;与非结构译码器的字线输出对应每个地址则只有一根字线是低电平,其他字线输出是高电平,这种字线的信号输出对应与非结构ROM的地址译码(参见图4.2及第四章有关内容)。显然,与非结构的译码器不合适承当多位地址的译码,而或非结构译码器则没有地址位数的限制。

图中的负载电阻实际上是由晶体管实现的,有两种常用的结构形式:耗尽性NMOS晶体管和增强型PMOS晶体管。采用耗尽性NMOS晶体管做负载时,将栅和源短接,采用增强型PMOS晶体管则将它的栅接地使它常通。这两种形式的负载连接方法如图6.25所示。耗尽性NMOS负载的结构形式被称为E/DNMOS结构,PMOS管做负载的结构形式被称为伪NMOS结构。为保证输出电平的逻

辑有效性,负载晶体管通常为倒宽长比尺寸以加大它的等效电阻。

图6.24 行译码器结构

图6.25 电阻的等效晶体管结构

理论上讲,或非结构的译码器可以完成大量地址的译码,每一字线对应一个N输入的或非门,N为地址的位数,它实际上也是一个或非结构的ROM形式。例如上述的10位行地址译码将对应1024个或非门,这样的译码器将是非常庞大的,除了1024个负载管,还将有10×1024=10240个NMOS管。这种结构的译码器通常只适合于存储单元比较少的存储器,例如微处理器中RAM的选择译码。在大尺寸存储器的行译码器结构设计中,采用行地址再分组的译码结构。这时,存储主体结构也还将根据译码结构做相应变动。图6.26是一种存储主体的结构形式,它采用了与-或结构的ROM形式,即存储主体被分成若干组,在每组内存储单元和控制单元是以串联的形式连接,构成“与”的逻辑关系,而各组之间则是并联关系,构成“或”的逻辑关系,然后接到负载上,从每根位线看进去,它是一个“与或非”组合逻辑门。

以10位地址结构的行译码器为例,行地址被分成了两组,一组是3位地址,它被译成8个字线信号,一组是剩余的7位地址,将存储主体分为128组(27),在每组中的每个位线上最多对应9个串联的NMOS晶体管,其中的8个根据需要用作为存储数据位,一个用作为选择控制,它是必需的。因为在每组中的存储单元构成串联关系,所以,它的对应译码结构应为图6.24中的(b)图结构,或相当的信号结构。由3位地址产生的字线信号同时选中各组中相同位置的字线,使每组中的这条字线信号为“0”,其他为“1”。但选中的字线是否有效还取决于

组选择控制信号Wi是否为“1”,只有该组被选中,才能形成对地的通路。当然,每次只有一组被选中。经过行选择和组选择的共同作用,一个具体的“行”被选中。由于在组选择中只有一个控制线为“1”,其余为“0”,所以高位行地址的译码应采用图6.24(a)图的结构或等效的信号结构。

图6.26 与-或结构存储主体

例子: 假设,行地址为A9A8A7A6A5A4A3A2A1A0=1000000001,则A2~A0使每组的第6根字线被选中(注:设字线编号从1~8,最低组的编号为第1组),而实际输出时只有第65组的第6根字线有效。

应用这样的存储主体结构和译码形式,使行译码器硬件规模被减小,它需要 8个三输入与非门和128个7输入或非门,除136个负载晶体管外,只需3×8+ 7×128=920个NMOS管,同时,与ROM的紧凑结构(参见图4.5)也使得存储主体的尺寸被减小。

因为在行译码器输出的每一个字线上有几十个甚至更多的晶体管要被驱动,在行译码器的输出端往往接有驱动电路,以加强字线的驱动能力。

6.3.3 列选择电路结构

在行译码器中,当一根字线有效后选中的是一行晶体管,包含了若干字,列选择电路从这若干个字中选出一个有效字,而这个字就是对应了全部地址位选定的存储内容。图6.27给出了两种结构的列选择电路结构,其地址位为3位,根据地址将从8个字中选出一个有效字。

(a)图显示了一个典型的开关结构,在列译码逻辑(图中未画出,仅仅给出了对应的地址)的控制下,每次只有一根控制线为高电平,相应的使一组8个NMOS晶体管导通,输出一个8位的字。这个列译码器可采用图6.24(a)的结构。(b)图显示的则是没有译码逻辑的结构形式,列选择完全由8到1的多路转换开关MUX构成。不论是哪种结构,其选择原理都是相同的。从图中可以看出,每个字的各位并不是连续安置的,而是间隔安置的,其间隔的大小取决于字

线同时选择了多少各字。这样设计的优点是每个字的读出时间将是一样的,不会因为距行译码器的距离而产生差异。

图6.27 列选择电路结构

比较两种结构,由于(a)图结构在数据输出通道中只有一个晶体管开关,其等效串联电阻比较小,缺点是要设置一个3位译码器。(b)图是将译码和选通合二为一,缺点是串联电阻比较大。在实际设计中有时将这两种结构相组合,例如,当有4位地址时,将其中的最高位选择构造成(b)图结构,从由(a)图结构列选择电路选出的两个字中选择一个有效字。

除了上面介绍的行列译码结构外,对应不同的存储主体结构,还有其他的多种形式,这里不一一介绍了。

从本章所介绍和讨论的微处理器设计可以看到,VLSI技术是如何被用于逻辑的设计的,它体现了规则化、结构化的设计思想,即采用规则、重复的单元,以简单的基本结构实现复杂的系统。这样的结构特别适合于自动设计和CAD方法完成系统的设计。除了上面已介绍的技术方法外,在VLSIC中还大量的采用标准单元和积木块单元技术,优化逻辑和电路的性能。


相关内容

  • 中国微处理器行业市场前景分析预测报告(目录)
  • 中国微处理器行业 市场前景分析预测报告 核心内容提要 市场需求 本报告从以下几个角度对微处理器行业的市场需求进行分析研究: 1.用户消费规模及同比增速:通过对过去连续五年中国市场微处理器行业用户消费规模及同比增速的分析,判断微处理器行业的经济规模和成长性,并对未来五年的用户消费规模增长趋势做出预测, ...

  • 微处理器2
  • 自从人类1947年发明晶体管以来,50多年间半导体技术经历了硅晶体管. 集成电路.超大规模集成电路.甚大规模集成电路等几代,发展速度之快是其他产业所没有的.半导体技术对整个社会产生了广泛的影响,因此被称为"产业的种子".中央处理器是指计算机内部对数据进行处理并对处理过程进行控制的 ...

  • cpu种类
  • arm 处理器 Arm 系列处理器 是英国Arm 公司设计的主流嵌入式32 位RISC 处理器,Arm 公司不直接生产Arm 处理器,而是采用IP 授权的方式由第3 方开发生产,著名的公司如Ti .Samsung 等都有出品Arm 处理器.目前在手机领域广泛应用. avr32 处理器 Avr32 处 ...

  • 嵌入式CPU的分类
  • 1.基于ARM架构的嵌入式处理器 1.简介 ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对微处理器的通称,还可以认为是一种技术的名字. ARM 是 32 位嵌入式微处理器的行业领先提供商,已推出各种各样基于通用架构的处理器,这些处理器具有高性能和行 ...

  • 2016年透析水处理系统研究分析及发展趋势预测
  • 2016年版全球及中国透析水处理系统市场 专题研究分析与发展趋势预测报告 报告编号:1613A51 行业市场研究属于企业战略研究范畴,作为当前应用最为广泛的咨询服务,其研究 成果以报告形式呈现,通常包含以下内容: 一份专业的行业研究报告,注重指导企业或投资者了解该行业整体发展态势及经济 运行状况,旨 ...

  • 经典的不容忘记!历史上稀有CPU汇总
  • 经典的不容忘记!历史上稀有CPU汇总 2009年03月10日 类型:原创 作者:互联网整理 编辑:尒偉 ● MOTOrola稀有处理器 MC68HC000FN12 MOTOrola自行设计成产的68000系列CPU是世界上最早的32(准32位)位处理器之一.良好的设计和制造工艺使之能够胜任多种条件下 ...

  • 污水处理资料
  • 铸造污水处理工艺流程图高效污水处理工艺 铸造污水处理工艺流程图高效污水处理工艺在废水处理污水处理应用效果好稳定,铸造污水处理工艺流程图高效污水处理工艺经专家认定是废水处理污水处理领域的高新技术,铸造污水处理工艺流程图高效污水处理净化系统具有污水处理工程投资少.占地面积小.污水处理废水处理反应迅速.运 ...

  • 不同微处理器结构的比较研究
  • 不同微处理器结构的比较研究 学生姓名 学号: 学生姓名 学号:学生姓名学号:系 部: 自动化 自动化 专 二零一四年九月 不同微处理器结构的比较研究 摘 要:微处理器是微型计算机的核心,从最初发展至今已经有很多年的历史了,这期间,按照其处理信息的字长,可以分为:4位微处理器.8位微处理器.16位微处 ...

  • 中国城市污水处理发展现状分析
  • 2015-2020年中国城市污水处理行业现状调 研分析及发展趋势研究报告 一.基本信息 二.内容介绍 <2015-2020年中国城市污水处理行业现状调研分析及发展趋势研究报告>依据国家权威机构及城市污水处理相关协会等渠道的权威资料数据,结合城市污水处理行业发展所处的环境,从理论到实践.从 ...

  • 有机基质在番茄无土栽培中的应用研究
  • 摘要:室内盆栽试验结果表明:牛粪.炉渣.菇渣.糠醛渣容积比为0.35:0.25:0.15:0.25:与牛粪.炉渣.菇渣.玉米秸秆容积比均为0.35:0.25:0.15:0.25(CK)比较,0-20cm基质层容重.毛管孔隙度.自然含水量分别增加了0.02g/cm3.3.46%.45.31g/kg:有 ...