第3章
CHAPTER 3


MOS存储器及其电路






本章目标
从第3章开始,我们将学习一些关于计算机内存和存储器逻辑设计的基础知识: 
 存储芯片的结构
 采用六晶体管单元的静态存储电路
 单晶体管单元和四晶体管单元动态存储电路
 能够检测出内存单元中存储信息的感测放大器电路
 用于从大规模内存阵列中选择单元的行地址译码器
 CPU寄存器中各种触发器的实现
 传输管逻辑
 只读存储器


多年来,高集成度存储器推动了IC技术朝更小尺寸发展。在20世纪60年代中期,IEEE国际固态电路会议讨论了第一个采用MOS技术[1]的随机存储器芯片,1974年生产出第一个商业1024比特(1Kb)的存储器[3]。2000年,ISSCC[2]完成了实验阶段的1Gb芯片,IEEE国际电子器件会议(IEDM)[4]讨论了未来的1Gb存储器的相关技术。由此在商业上采用第一批 MOS RAM后仅30年,芯片内存就比最初的RAM增长了超过100万倍。



Robert H.Dennard,单晶体管DRAM单元的发明者

(Bussiness Wire/Handout/Getty Image 版权所有)




Fujio Masuoka,Flash存储器的发明者

(2014 IEEE版权所有)






单晶体管DRAM单元






Flash存储器单元原理图,见参考文献[6],其中

FG为浮栅,CG为控制栅,EG为擦除栅




1966年IBM Thomas J.Watson研究中心的 Robert H.Dennard发明了一种电路,称为单晶体管动态RAM单元(1T DRAM),并在1968年申请专利。这种电路储存1比特信息,只需要一个晶体管和一个电容,参见文献[5],它的出现使得大容量存储器芯片成为可能。在这种电路中,二进制信息以电荷形式临时存储在电容上,为了防止信息丢失,必须对数据进行周期性刷新。此外,对DRAM进行只读操作会对信息造成破坏,在进行只读操作的同时数据必须返回存储器。虽然,最初只有 Dennard及其同事相信1T DRAM会正常运行,但时至今日,世界上绝大多数电路采用的是1T DRAM。




最近,越来越多的低功耗手持式电子设备采用了一种称为闪存的存储器件,由东京芝浦电气有限公司也就是现在的东芝公司的Fujio Masuoka博士[6,7]发明。用户数据、数码相机的图片及数字音频播放器将音乐都可以保存在设备自带的闪存芯片中,许多计算机用户可以将高密度闪存放在口袋中携带。所有这些存储器芯片都是“非易失性的”,在没有电源的情况下能保持存储的信息,在通电时可以写入或读取数据。在过去的10年中,这些设备已经广泛用于替代笔记本电脑和台式计算机中的硬盘驱动器。如今,闪存已经超过了DRAM每年的出货量[8]。
3.1随机存取存储器
迄今为止,人们对逻辑电路的研究都是集中在对基本反相器和组合逻辑电路设计的了解上。然而除逻辑电路之外,数字系统中通常还需要以高速寄存器、高密度随机存取存储器(RandomAccess Memory,RAM)及只读存储器(ReadOnly Memory,ROM)形式出现的数据存储单元。
在数字系统中,术语RAM是指同时具有读和写能力的存储器。当需要以较高频率访问数据时可采用这种类型的存储器。在RAM中,任何特定存储位置上的数据都可以快速地直接读取或改写。
早期的存储器设计是静态RAM或SRAM电路,只要电源电压保持不断开,那么信息会一直保存在存储器中。SRAM单元中的每一位数据需要6个晶体管用于存储,其特点是可以无损地读出其存储的信息。
在动态随机存储器(Dynamic RAM,DRAM)电路中,信息以电荷的形式暂时存储在电容上,并且必须定期刷新数据以防止信息丢失。在大部分DRAM中,读出数据的过程会破坏信息,所以必须要将数据回写到存储器,并将其作为读操作的一部分。
SRAM单元比DRAM单元占用的面积要大得多。相同工艺面积下,生产的SRAM存储器芯片的位数通常只有DRAM存储器位数的1/4。例如,采用相同的集成电路工艺,可能会制造出一个256Mb的DRAM,而制作成SRAM则只能有64Mb的容量。大多数容量低于4Mb的RAM芯片只提供一个输出位,但是由于近年来存储器芯片的容量变得很大,因此,许多存储器芯片的外部接口被设计成4位、8位或更宽。
只读存储器有时候也简写为ROS(ReadOnly Storage),代表的是另一种重要的存储器类型。在这类存储器中,数据被永久地保存在存储器的物理结构阵列中。在可编程逻辑阵列或PLA结构中,也可以利用ROM技术来实现逻辑电路。数字系统中还会用到高速存储器,如一位触发器和寄存器,本章的最后讨论了用于实现RS和D触发器的基本电路。
3.1.1RAM存储器架构
RAM存储器提供用于数字计算机的高速临时存储,人们对RAM的需求很高,数字系统几乎永远无法满足人们对RAM的需求。现在的高性能图像处理和排版软件工作时通常需要几十兆字节内存,而操作系统可能需要千兆字节内存。因此,即使是个人计算机一般也具有1GB或更大的内存。相比之下,高端计算机主机装有更大容量的内存,往往有多达几吉字节的RAM。
令人难以置信的是,一个1Gb内存芯片包含128MB的存储空间,芯片中包含的电子元器件超过20亿个,而且这些电子元器件必须全部工作。只有存储器阵列具有非常规则的重复结构,才有可能设计并实现如此复杂的集成电路芯片。本节探讨IC存储器的基本结构,后续章节将更详细地介绍各个存储器单元及其电路。
3.1.2256Mb存储器芯片
图3.1(a)所示的是一个256Mb存储器芯片的微缩照片和其中的模块结构。在其内部,256Mb的阵列被分成8个32Mb的子阵列。为了在一个大型阵列中选择一组数据,要通过列和行地址译码器来选定存储器地址。在图3.1中,列译码器占据芯片的中心位置,并将芯片分成上下两部分。行译码器和字线驱动器平分每个32Mb子阵列。每个32Mb子阵列进一步被细分为16个2Mb阵列,其中每部分又包含16个128Kb的字块。因而,128Kb的阵列是这个256Mb存储器的基本结构模块。
图3.2所示的是一个基本存储器阵列模块图,对应图3.1中的一个128Kb(217bit)子阵列。阵列中包括2M+N个存储位置,地址被分成M个行地址和N个列地址。每个(M+N)位地址对应阵列的一个存储位置或存储单元。对于图3.1中的128Kb内存段,M=10且N=7。当一个单元被选定时,信息可以被写入该存储单元中,该单元中的内容也可以读出。每个128Kb阵列有一组感测放大器用于读写选定存储单元的信息。
在图3.2所示的基本存储器阵列模块中,横行的线通常称为字线(wordline,WL)。当选择行时,实际上128位宽(27)的内容是被并行存取的。沿垂直方向分布且包含单元数据的线称为位线(bitline,BL)。其中一根或两根位线可以贯穿每个单元,并且位线可以在相邻单元之间共享。7位列地址用于选择在读操作期间实际传输的一位或一组数据,或在写操作期间需要修改的数据位。
除存储阵列外,存储器芯片还需要一些其他的外围电路,主要包括地址译码器、字线驱动电路及感测放大器等。地址译码器电路用来选取所要选择的行与列。此外,字线对地址译码器而言是高容性负载,需要借助特殊的字线驱动电路来驱动这些线。同时,在读操作期间,来自单元的信号可能相当小,因此需要感测放大器来检测存储单元的状态并且恢复信号的逻辑电平以便在外部接口中使用。接下来的几节内容将研究用于实现静态和动态存储单元的电路,以及感测放大器和地址译码器电路,包括静态和动态译码器电路。



图3.1256Mb RAM芯片




图3.2基本存储阵列的模块图


练习: (a)256Mb存储器可以划分成多少个128Kb的段?(b)通过将图3.1中主阵列的尺寸加倍制成1Gb存储器(32Mb→128Mb,2Mb→8Mb,128Kb→512Kb),制作1Gb内存需要多少512Kb段?
答案: 2048; 2048。
3.2静态存储器单元
静态内存阵列中使用的基本存储单元是本书2.10节详细介绍过的双稳态锁存器。锁存器由两个反相器连接而成,如图2.35所示。这些电路具有图2.36所示的两个稳定工作点,以及一个不稳定工作点。在设计感测放大器时,需要将存储于存储阵列单元的数据读出,此时该工作点将非常有用。
3.2.1内存单元的隔离和访问(6T单元)
交叉耦合反相器对是图3.2中构建静态存储器所需的存储元件。在图3.3中,两个附加的晶体管加到锁存器上,将其与其他存储器单元隔离开,并为写入和读取存储器信息提供路径。在NMOS或CMOS技术中,每个反相器需要两个晶体管,因此图3.4中的存储电路通常称为六晶体管SRAM单元(sixtransistor SRAM cell),简称6T单元。注意,6T单元可同时提供真实和互补的数据输出,即D和。


图3.3两个反相器构成的静态存储元器件或锁存器




图3.4六晶体管CMOS存储器


图3.4所示的是一个6T CMOS单元的实现电路。由于CMOS反相器不存在静态电流路径,由CMOS反相器构成的单元的泄漏电流很小,这是CMOS反相器的主要优点。由于在给定W/L下NMOS具有更高的迁移率和更低的通电阻,本章所有电路中的存取器件MA1和MA2都以NMOS晶体管的形式出现。不过,PMOS晶体管也成功地应用于某些设计中。
6T单元提供了一套有趣而相互矛盾的设计需求。在读操作期间,存储单元的状态必须通过存取晶体管来确定,这样不会扰乱单元中的内容。然而,在写操作期间,单元中的数据必须利用相同的存取器件强制为所期望的状态。接下来的两节将对这些元器件的设计进行详细探讨。在下面的讨论中,存储单元中的0对应左边数据存储节点(D1)上的低电平(0V)和右边数据节点(D2)上的高电平(VDD); 存储单元中的1将对应D1处的高电平(VDD)和D2处的低电平(0V)。

练习: (a)在一个256Mb存储器中实际有多少个存储单元?(b)假设一个256Mb的存储器使用图3.4所示的单元,且电源为3.3V,存储器的总静态功耗不能大于50mW。计算在每个单元中允许的泄漏电流为多少?
答案: 268435456; 56.4pA。
练习: 存储单元如图3.4所示,画出PMOS存取晶体管的另一种形式。
答案: 将存取器件MA1和MA2中的衬底箭头方向取反,并将衬底与VDD连接。
3.2.2读操作
处于0状态下的6T CMOS存储单元如图3.5所示,其中VDD设为3V。虽然有多种不同的策略可用来读取单元中的状态,但我们假设两个位线最初都由同一感测放大器电路预充电至12VDD电压,而通过将字线控制在0V,MA1和MA2都处于截止状态。实际的预充电平是由感测放大器决定的。在存储器设计中,预充电平可以为VDD、12VDD及23VDD,这些预充电平都被一些设计采用过。
一旦位线电压被预充到所期望的电平,将字线电压提高到逻辑高电平(3V)就可以通过晶体管MA1和MA2对单元中的数据进行存取。读操作初始化之后的状态如图3.6所示,为清楚起见省略了存取晶体管的衬底端子注意,D1和D2节点处的电容阻止这些节点处的电压在t=0+时变化。。MP1和MP2截止。因VGS=3V及VDS=1.5V,故MA1将工作在线性区(对于典型VTN值),电流I1从位线进入存储单元; MA2饱和,电流I2从存储单元流出到达BL。



图3.5从6T单元中读取存储单元中的数据“0”




图3.6激活字线后出现的状态



随着通过MA1和MA2的电流增加,在节点D1处的电压趋于升高,而在节点D2处的电压趋于降低。为了让存储在单元中的数据不受干扰,保守的设计方法是保证在D1处的电压仍低于MN2的阈值电压,并且在D2处的电压足够高(>3-|VTP|)以保持MP1截止。两条位线的电流I1和I2促使感测放大器迅速呈现与存储在元器件中的数据相同的状态,此时BL和BL的电压分别变为0V和3V。
图3.7给出了感测放大器达到稳态后电路中各点的电压。位线电压与最初单元中的电压一致,存储单元中的双稳态锁存器已经将单元电压恢复到最初的满逻辑电平值。达到最后的稳态条件时,MA1和MA2将在线性区导通,但是因VDS=0而不能传导电流。
在图3.6中需要注意的重要一点是,MA1的源极与存储单元相连,而MA2的源极与位线相连。这是场效应管(FET)双向特性的一个实例。需要记住的是,场效应管的源极和漏极总是取决于电路中电压的相对极性。
在对这一复杂电路的细节进行手工分析的同时,采用SPICE对6T电路进行仿真,可以得出如图3.8所示的波形。仿真中假设每条位线上的总电容为500fF,存储单元中的所有晶体管的W/L值为1∶1。在图3.8中可以看到,位线被预充电至略低于12VDD,大约为1.3V。在t=1ns时刻,预充电信号被切断,在t=2ns时刻,字线开始从0V跳变到3V。随着两个存取晶体管的导通,BL和BL随着感测放大器响应开始偏离,进一步强化存储在单元中的数据。随着位线进一步加强,单元中D1处的电压返回到3V电平,D2处的电压返回到0V电平。在读操作期间,存储单元的状态会受干扰,但并没有遭到破坏。因而6T单元可以提供无损读出的数据存储。



图3.7感测放大器达到稳态后的最终状态




图3.8SPICE存储单元在读取操作中的波形



需注意的是,从字线转变的中间点到位线达到全逻辑电平时的点之间的时延约为20ns。同样,D1和D2处出现了两处快速正向瞬变信号(图3.8中圆圈所示),这是由于MOS场效应管栅极电容与锁存器内部节点的字线信号之间存在直接耦合导致的,在字线信号上的电容耦合使得两个初始瞬变都沿相同的方向变化。D1处的电压实际上要高于3V电源电压,设计人员必须要确保其不超过晶体管的击穿电压(大的瞬间信号有可能会触发闩锁效应,这一内容在前面章节介绍过)。
在图3.9中,读出存储单元中的1状态只需要将图3.5~图3.8中的条件取反。两个单元电流i1和i2的方向相反,并且感测放大器调换到相反状态。需注意的是,两个存取晶体管的源极和漏极,以及电流方向都全部取反。



图3.9从6T单元中读取存储单元中的数据“1”



例3.16T静态存储元器件中的电流
本例说明在读操作期间6T存储单元中晶体管存取电流的计算。
问题: 在图3.6中,计算字线激活后的位线电流i1和i2。假设所有器件的W/L值为1∶1,并且有K′n=60μA/V2,VTO=0.7V,γ=0.5V,2F=0.6V。
解: 
已知量: 在图3.5和图3.6中的6T存储单元电路中,最初在D1处的电压为0V,在D2处的电压为3V。所有W/L值都为1,K′n=60μA/V2,VTO=0.7V,γ=0.5V,2F=0.6V。
未知量: 求字线激活后的电流i1和i2。
求解方法: 字线被“激活”意味着字线电压由0V跳变至3V。电流从左手边的位线提供给MA1的漏极,在右手边电流从MA2的源极流出到达BL,电流的值由这两个晶体管设定。需要注意的是,MA1和MA2的漏源电压都为0V,因此这两个器件的漏电流也一定为0A。计算时,首先从图3.6中求出MA1和MA2的端电压,然后利用端电压求出每个器件所在的工作区,一旦确定了工作区,就可以利用工作区所适用的等式求出漏电流。
假设: 字线电压跳变是一个阶跃函数,跳变发生在t=0时刻。
电路分析: 在t=0+时,字线刚好从0V跳跃到3V,电流从左手边的位线流入MA1的漏极。参考图3.6中的条件,可以看到MA1的源极电压为0V,漏极电压为1.5V,栅极电压为3V。由于源极电压为0V,于是有VTN=VTO,VGS-VTN=(3-0)V-0.7V=2.3V,VDS=1.5V-0=1.5V。因而,晶体管工作在线性区,漏电流可由下式给出
i1(0+)=K′nWLVGS-VTN-VDS2VDS=60μAV2113-0.7-1.521.5V2=140μA
对于右手边的位线,电流从MA2的源极流出到达BL。还是参考图3.6中的条件,MA2的漏极电压为3V,源极电压为1.5V,栅极电压为3V。由于MA2的源极电压不为0V,因此必须要利用式(4.20)求其阈值电压
VTN=VTO+γ(vSB+2F-2F)=0.7V+0.5(1.5+0.6-0.6)=1.04V
为了获得其所在工作区,并且可以得到VGS-VTN=(3V-1.5V)-1.04V=0.46V,VDS=3V-1.5V=1.5V。因而,MA2工作于饱和区,其漏电流可由下式得出
i2(0+)=K′n2WL(VGS-VTN)2=60μA2V211(1.5-1.04)2=6.35μA
至此,已经求出两个所需的电流i1(0+)=140μA和i2(0+)=6.35μA。需要指出的是,左手边的电流比右手边的电流大20多倍。因此,感测放大器将会检测到两个电流之间的显著差异,并在此基础上做出判断。
结果检查: 前面已经求出两个所需的电流,并且得到的结果都看似合理(都在微安到毫安范围内)。
讨论: 注意,需要识别的MA1和MA2的源极和漏极的位置不同,具体由各个节点处的电压确定。如果存储单元中存储着相反的状态,那么源极和漏极端子的标识将相反。此时,容易弄不清楚已经计算出的电流实际上流向哪里。因在t=0+时刻穿过MN1和MP2的电压为0V,故这些器件中的源漏电流为0A。MA1和MA2中的初始电流开始分别对节点D1和D2处的电容充电和放电。随着在节点D1和D2处电压的改变,晶体管MN1和MP2开始传导电流。
练习: 已知VSAT=1V,利用统一模型重新计算例3.1中的电流。
答案: 108μA; 6.35μA。
练习: 在图3.8中,计算字线激活后位线电流i1和i2。假设所有器件都有W/L=1∶1,并且有VDD=5V,WL=5V,位线电压为2.5V,K′n=60μA/V2,VTO=1V,γ=0.6V,2F=0.6V。
答案: 413μA; 24.7μA(VTN=1.592V)。
3.2.3向6T单元写数据
对于写操作,需要使用将要写入到单元中的数据对位线进行初始化。在图3.10中,正要将数据0写入到一个已经包含有数据0的存储单元中。可以看出两个存取晶体管都有VDS=0V,电流i1和i2都为0A。此时,除了由于字线信号通过MOS管电容的节间耦合会发生瞬变外,几乎没有任何反应(参见习题3.8)。


图3.10将数据0写入到一个已经包含有数据0的存储单元


图3.11给出了一个更有意思的情况,存储单元的状态必须改变。当字线升高到3V时,存取晶体管MA1在饱和区传导电流,并且VGS=3V和VDS=3V,D1处的电压通过MA1放电趋于0V。存取晶体管MA2也处于饱和区,且有VGS=3V和VDS=3V,在D2处的电压最初朝着(3V-VTN)的电压充电。一旦D2处的电压超过D1处的电压,就会出现正反馈,存储单元快速完成向新状态的转换,并有D1=0V,D2=3V。


图3.11将数据0写入到一个已经包含有数据1的存储单元


图3.12给出了该写操作的SPICE仿真波形。字线在t=0.5ns时刻开始转换,位线上的固定电平通过两个存取晶体管被传送到节点D1和D2。通常来说,在整个存储单元阵列中使用面积最小的晶体管,存储节点上的电容非常小。正是由于该电容非常小,所以在仿真中D1和D2处的电压大约在10ns时刻就达到了所需的状态。


图3.12将0写入到图3.11所示的6T单元中时,

位线和数据节点的SPICE波形



在图3.12所示的仿真结果中,位线与理想电压源相连。然而,在一个实际的存储器实现中,两条位线都会由逻辑缓冲器驱动,且缓冲器的驱动能力必须超过RAM单元中反相器的驱动能力,以便将数据写入存储单元,也就是说,缓冲器必须能够“压制”存储单元的状态。
例3.2写操作期间存储单元的初始电流
本例计算当存储单元状态发生改变时6T存储单元中的电流。
问题: 求图3.11中紧随字线激活后的位线电流I1和I2。假设所有器件W/L=1/1,并且已知: K′n=60μA/V2,VTO=0.7V,γ=0.5V,2F=0.6V。
解: 
已知量: 在图3.11中给出的6T存储单元电路,其中在D1处电压为3V,在D2处电压为0V。需要向存储单元写入数据,在字线激活之前左手边的位线被设置为0V,而右手边位线被设置为3V。电路中,所有W/L=1/1; K′n=60μA/V2,VTO=0.7V,γ=0.5V,2F=0.6V。字线“激活”意味着W/L由0V转变为3V。
未知量: 求字线刚好被激活后的位线电流I1和I2。