数字信息在运算或处理过程中,需要使用专门的存储器进行较长时间的存储,正是因为有了存储器,计算机才有了对信息的记忆功能。半导体存储器是微型计算机的重要记忆元件,常用于存储程序、常数、原始数据、中间结果和最终结果。半导体存储器的存储容量越大,微型计算机的记忆功能就越强;半导体存储器存取信息的速度越快,微型计算机的运算速度就会越高。
本章先论述存储器的分类、半导体存储器的性能指标和基本结构,然后分析它们的内部结构、工作原理和引脚功能,并在此基础上重点讲述它们和MCS-51间的连接。
在计算机中,存储器可以分为外存储器和内存储器两大类。外存储器简称外存,又称海量存储器,是计算机的一种重要外部设备;内存储器简称内存,常和CPU安装在同一块主机板上,以便CPU对它直接存取信息。CPU通过执行程序可以实现外存和内存间数据和程序的批量传送。
外存储器分为磁表面存储器、磁泡存储器和光盘存储器等。磁泡和光盘存储器是新型存储器,具有存储密度大和存取速度快等优点,常在超级微型机和巨大型机上使用。磁表面存储器是一种在金属或塑料制品表面涂覆一层磁介质的存储器,依靠磁性材料不同的磁化方向来存储二进制位“0”和“1”。磁表面存储器根据磁表面形状分类,通常可以分为磁鼓、磁带和磁盘等几种。磁盘又可分为硬盘和软盘:硬盘通常安装在硬盘驱动器中;软盘又有8英寸、5英寸和3英寸之分,使用时可以插在相应软盘驱动器内。
内存储器分为磁芯存储器和半导体存储器两类。前者依靠一颗颗磁芯来存储一位位二进制信息,故它体积大、成本高、工艺复杂,现已完全淘汰;后者采用大规模和超大规模集成电路(LSI或VLSI)工艺制成,具有体积小、重量轻和成本低等一系列优点,现已成为微型计算机的主要器件之一。
根据使用功能的不同,半导体存储器可分为随机存取存储器(Random Access Memory,RAM)和只读存储器(Read Only Memory,ROM)。
按照存储机理的不同,RAM又可分为静态RAM和动态RAM。
RAM存储器又称为读/写存储器。正常工作时信息既可以读出又可以写入:数据读出后原数据不变;新数据写入后,原数据自然消失,并为新数据替代。因此,RAM存储器可以用来存储实时数据、中间结果、最终结果或作为程序的堆栈区使用。RAM的优点是既能方便地读出所存数据,又能随时写入新的数据。RAM的缺点是数据的易失性,即一旦掉电,所存的数据全部丢失。
根据RAM的结构和功能,又可分为两种类型:静态RAM和动态RAM。
· 静态(static)RAM,即SRAM。它以触发器为基本存储单元,所以只要不掉电,其所存信息就不会丢失。该类芯片的集成度不如动态RAM,功耗也比动态RAM大,但它的速度比动态RAM快,也不需要刷新电路。构成小容量的存储系统时一般选用SRAM。微型计算机中普遍用SRAM构成高速缓冲存储器。
· 动态(dynamic)RAM,即DRAM。一般用MOS型半导体存储器件构成,最简单的存储形式以单个MOS管为基本单元,以极间的分布电容是否持有电荷作为信息的存储手段,其结构简单,集成度高。但是,如果不及时进行刷新,极间电容中的电荷会在很短时间内自然泄漏,致使信息丢失。所以,必须为它配备专门的刷新电路。动态RAM芯片的集成度高、价格低廉,所以多用在存储容量较大的系统中。目前,微型计算机中的主存几乎都是使用动态RAM。
只读存储器因工作时其内容只能读出而得名,常用于存储数字系统及计算机中不需改写的数据,例如数据转换表及计算机操作系统程序等。ROM(Read Only Memory)存储的数据不会因断电而消失,即具有非易失性。与RAM不同,ROM一般需由专用装置写入数据。按照数据写入方式特点不同,ROM可分为以下几种。
(1)固定ROM,也称掩膜ROM。这种ROM在制造时,厂家利用掩膜技术直接把数据写入存储器中,ROM制成后,其存储的数据也就固定不变了,用户对这类芯片无法进行任何修改。
(2)一次性可编程ROM(PROM)。PROM在出厂时,存储内容全为1(或全为0),用户可根据自己的需要,利用编程器将某些单元改写为0(或1)。PROM一旦进行了编程,就不能再修改了。
(3)光可擦除可编程ROM(EPROM)。EPROM是采用浮栅技术生产的可编程存储器,它的存储单元多采用N沟道叠栅MOS管,信息的存储是通过MOS管浮栅上的电荷分布来决定的,编程过程就是一个电荷注入的过程。编程结束后,尽管撤除了电源,但是,由于绝缘层的包围,注入到浮栅上的电荷无法泄漏,因此电荷分布维持不变,EPROM也就成为非易失性存储器件了。
当外部能源(如紫外线光源)加到EPROM上时,EPROM内部的电荷分布会被破坏,此时聚集在MOS管浮栅上的电荷在紫外线照射下形成光电流被泄漏掉,使电路恢复到初始状态,从而擦除了所有写入的信息。这样EPROM又可以写入新的信息。
(4)电可擦除可编程ROM(E2PROM)。E2PROM也是采用浮栅技术生产的可编程ROM,但是构成其存储单元的是隧道MOS管,隧道MOS管也是利用浮栅是否存有电荷来存储二值数据的,不同的是隧道MOS管是用电擦除的,并且擦除的速度要快得多(一般为毫秒数量级)。
E2PROM的电擦除过程就是改写过程,它具有ROM的非易失性,又具备类似RAM的功能,可以随时改写(可重复擦写1万次以上)。目前,大多数E2PROM芯片内部都备有升压电路。因此,只需单电源供电,便可进行读、擦除、写操作,这为数字系统的设计和在线调试提供了极大方便。
(5)快闪存储器(Flash Memory)。快闪存储器的存储单元也是采用浮栅型MOS管,存储器中数据的擦除和写入是分开进行的,数据写入方式与EPROM相同,需要输入一个较高的电压,因此要为芯片提供两组电源。一个字的写入时间约为200ms,一般一个芯片可以擦除/写入100次以上。
半导体存储器的类型很多,生产厂家各异,但它们的基本结构差别不大。半导体存储器从结构上通常可以分为单译码编址存储器和双译码编址存储器两类。前者用于小容量存储器,后者用于大容量存储器。
单译码编址存储器由存储阵列、地址译码器、三态双向缓冲器和控制电路等4部分电路组成,如图5-1所示。现对图中各部分电路分述如下。
图5-1 单译码编址存储器基本结构框图
(1)存储阵列。
存储阵列是存储器的主体,实质上是由“基本存储电路”组成的集合体,每个“基本存储电路”可以存储一位二进制信息。在静态RAM中,“基本存储电路”通常可以理解为触发器,CPU对它存取实际上是对触发器存取。“基本存储电路”组成存储单元,其个数由存储容量中的“字长”决定;存储单元组成存储阵列,其总数由存储容量中的“字数”决定,由地址译码器输出“字线”选取。因此,存储容量不仅可以反映存储器存储单元的总数和位数,而且决定了“字线”和“数据线”的条数,据此还可计算出“基本存储电路”的总数。例如:一个8KB存储器的“字线”必定有8 192条,数据线有8条,“基本存储电路 ”的总数为8 192×8=65 536。
(2)地址译码器。
地址译码器由地址寄存器和地址译码器两部分组成。地址寄存器用于存放CPU送来的地址码,其位数通常由地址线条数决定;地址译码器用于对地址寄存器中的地址码进行译码,译码后产生的“字线”可以用来选择存储阵列中的相应存储单元。因此,“字线”和存储单元的总数是相等的。它和地址线条数N之间通常有如下关系:
“字线”总数=2N
因此,存储容量越大,存储单元越多,“字线”总条数就越多,所需地址线N的条数也越大。例如:一个8KB存储器的“字线”数应为8×1 024=8 192条。这么大的“字线”条数在存储器芯片的制造工艺中是不能容忍的,因为集成一条短路线所花费的芯片面积远远大于集成一个MOS管的。因此,单译码编址方式常用于小容量存储器。
(3)三态双向缓冲器。
三态双向缓冲器用于锁存从存储阵列中读出的被选中存储单元中的每位信息,或用来存放被写存储单元所需要的写入信息,因此它是双向的缓冲器,其位数由存储阵列中存储单元的位数决定。例如:8KB×4存储器的三态双向缓冲器应当有4位。三态双向缓冲器受控制电路和控制引脚控制。在为低电平时,三态双向缓冲器可以把从存储阵列中读出的数据送到DM~D1(DM为最高位)上;在为高电平时,三态双向缓冲器可以把CPU送到DM~D1上的写入数据传送到存储阵列的被选中存储单元。
(4)控制电路。
控制电路通过控制引脚R/和接收CPU送来的控制信号,经过组合变换后对地址寄存器、存储阵列和三态双向缓冲器等进行控制。其中,R/称为读/写控制线,当它为高电平时,控制电路使芯片处于读工作状态;当它变为低电平时,控制电路使芯片处在写工作状态。叫做片选控制线,当它为低电平时,控制电路使芯片处在被选中工作状态;当它为高电平时,控制电路使芯片处在禁止工作状态。
和单译码编址存储器类似,双译码编址存储器也由存储阵列、地址译码器、三态双向缓冲器和控制电路4部分组成,如图5-2所示。由图可见,双译码编址存储器和单译码编址存储器的基本结构类似,其主要区别在于地址译码器的结构不同。现就不同之处加以分析。
在图5-2中,An-1~A0为地址线,用于传送CPU送来的地址编码信号,共有n条,分为X和Y两组。其中,Ap-1~A0和Y地址寄存和译码器相连;An-1~Ap和X地址寄存和译码器相连。Ap-1~A0上地址编码信号经Y地址寄存和译码器译码后选中Y地址选择线中某一条输出高电平,An-1~Ap上地址编码信号经X地址寄存和译码器选中X地址选择线中某一条输出高电平。X和Y地址选择线在存储阵列中组成了一个矩阵,故由地址编码信号选中输出的X和Y地址选择线交叉点上的存储单元就是该地址编码需要选中的存储单元。例如:当An-1~A0上地址编码信号为全“0”时,图中0号X地址选择线和0号Y地址选择线交叉处的存储单元就是0#存储单元。如果该存储单元的字长(位数)为8,那么每个交叉点处的存储单元均由8个“基本存储电路”组成。
图5-2 双译码编址存储器基本结构框图
假设某双译码编址存储器的存储容量为8KB,它的地址总线应为13条(213=8 192)。若Y地址线为A6~A0(共7条)和X地址线为A12~A7,(共6条),则Y地址选择线应为27=128条,X地址选择线应为26=64条,总数只有192条,这和同样容量的单译码编址存储器的8192条选择线是无法相比的。因此,双译码编址方式常用于大容量的存储器中。