只读存储器,亦称为固件,英文简称ROM(Read-Only Memory),是一种在生产时用特定数据进行过编程的集成电路,大部分由金属—氧化物—半导体(MOS)场效应管制成。只读存储器具有所存数据稳定、结构较简单、读出方便等特点,常用于存储各种固定程序和数据。
只读存储器,大部分只读存储器用金属—氧化物—半导体(MOS)场效应管制成,是一种只能读出事先所存数据的固态半导体存储器。只读存储器所存数据,一般是装入整机前事先写好的,整机工作过程中只能读出,而不像随机存储器那样能快速地、方便地加以改写。只读存储器所存数据稳定 ,断电后所存数据也不会改变;其结构较简单,读出较方便,因而常用于存储各种固定程序和数据。除少数品种的只读存储器(如字符发生器)可以通用之外,不同用户所需只读存储器的内容不同。
为便于使用和大批量生产,进一步发展了可编程只读存储器(PROM)、可擦可编程序只读存储器(EPROM)和电可擦可编程只读存储器(EEPROM)。EPROM需用紫外光长时间照射才能擦除,使用很不方便。20世纪80年代制出的EEPROM,克服了EPROM的不足,但集成度不高,价格较贵。于是又开发出一种新型的存储单元结构同EPROM相似的快闪存储器,其集成度高、功耗低、体积小,又能在线快速擦除,因而获得飞速发展,并逐渐取代硬盘和软盘成为主要的大容量存储媒体。
只读存储器主要由地址译码器、存储矩阵和输出缓冲器三部分组成,如图:
存储矩阵是存放信息的主体,它由许多存储单元排列组成。每个存储单元存放一位二值代码(0 或 1),若干个存储单元组成一个“字”(也称一个信息单元)。 地址译码器有n条地址输入线A0~An-1,2n条译码输出线W0~W2n-1,每一条译码输出线Wi称为“字线”,它与存储矩阵中的一个“字”相对应。因此, 每当给定一组输入地址时,译码器只有一条输出字线Wi被选中,该字线可以在存储矩阵中找到一个相应的“字”,并将字中的m位信息Dm-1~D0送至输出缓冲器。读出Dm-1~D0的每条数据输出线Di也称为“位线”,每个字中信息的位数称为“字长”。
ROM的存储单元可以用二极管构成,也可以用双极型三极管或MOS管构成。存储器的容量用存储单元的数目来表示,写成“字数乘位数”的形式。对于上图的存储矩阵有2n个字, 每个字的字长为m,因此整个存储器的存储容量为2n×m位。 存储容量也习惯用K(1 K=1024)为单位来表示,例如1 K×4、2 K×8和64 K×1的存储器,其容量分别是1024×4 位、2048×8 位 和65536×1 位。
地址译码器的作用是将输入的地址代码译成相应的控制信号,利用这个控制信号从存储矩阵中把指定的单元选出,并把其中的数据送到输出缓冲器。
输出缓冲器的作用有两个,一是能提高存储器的带负载能力,二是实现对输出状态的三态控制,以便与系统的总线联接。
如图10-2所示的是一个由二极管构成的容量为4×4的ROM。将地址译码器部分和二极管与门对照,可知地址译码器就是一个由二极管与门构成的阵列,称为与阵列。将存储矩阵部分和二极管或门对照,可以发现存储矩阵就是一个由二极管或门构成的阵列,称为或阵列。由此可以画出如图10-3所示的ROM逻辑图。由图10-3可知,该ROM的地址译码器部分由四个与门组成,存储矩阵部分由四个或门组成。两个输入地址代码A1A0经译码器译码后产生四个字单元的字线W0W1W2W3,地址译码器所接的四个或门构成四位输出数据D3D2D1D0。
图10-2
图10-3
由图10-3可得地址译码器的输出为
存储矩阵的输出为
由这些表达式可求出如图10-2所示的ROM存储内容,如表10-1所示。
表10-1
结合图10-2及表10-1可以看出,图10-2中的存储矩阵有四条字线和四条位线,共有16个交叉点(注意,不是结点),每个交叉点都可以看作是一个存储单元。交叉点处接有二极管时相当于存1,没有接二极管时相当于存0。例如,字线W0与位线有四个交叉点,其中只有两处接有二极管。当W0为高电平(其余字线均为低电平)时,两个二极管导通,使位线D3和D1为1,这相当于接有二极管的交叉点存1。而另两个交叉点处由于没有接二极管,位线D2和D0为0,这相当于未接二极管的交叉点存0。存储单元是存1还是存0,完全取决于只读存储器的存储需要,设计和制造时已完全确定,不能改变;而且信息存入后,即使断开电源,所存储信息也不会消失。所以,只读存储器又被称为固定存储器。
图10-4
图10-2所示的ROM可以画成如图10-4所示的阵列图。在阵列图中,每个交叉点表示一个存储单元。有二极管的存储单元用一个黑点表示,意味着在该存储单元中存储的数据是1。没有二极管的存储单元不用黑点表示,意味着在该存储单元中存储的数据是0。例如,若地址代码为A1A0=01,则W1=1,字线W1被选中,在W1这行上有三个黑点(存1),一个交叉点上无黑点(存0),此时字单元W1中的数据被输出,即只读存储器输出的数据为D3D2D1D0=1101。当然,只读存储器也可以从D0~D3各位线中单线输出信息,例如位线D2的输出为D2=W1+W2+W3。
一般称向ROM写入数据的过程为对ROM进行编程,根据编程方法的不同,ROM通常可以分为几类。
1.掩模式ROM
MROM的内容是由半导体制造厂按用户提出的要求在芯片的生产过程中直接写入的,写入之后任何人都无法改变其内容。
MROM的优点是可靠性高,集成度高,形成批量之后价格便宜;缺点是用户对制造厂商的依赖性过大,灵活性差。
2.一次可编程ROM
PROM允许用户利用专门的设备(编程器)进行一次写入操作,但有且仅有一次。一旦写入后,其内容将无法改变。
3.可擦除可编程ROM
EPROM中的内容既可以读出,也可以写入。但是在一次写操作之前必须用紫外线照射15~20分钟以擦去所有信息,然后再写入,可以写多次。
EPROM又可分为两种,分别是紫外线擦除(UVEPROM)和电擦除(E2PROM)。
UVEPROM需用紫外线灯制作的擦抹器照射存储器芯片上的透明窗口,使芯片中原存内容被擦除。由于是用紫外线灯进行擦除,所以只能对整个芯片擦除,而不能对芯片中个别需要改写的存储单元单独擦除。
E2PROM是采用电气方法来进行擦除的,在联机条件下既可以用字擦除方式擦除,也可以用数据块擦除方式擦除。以字擦除方式操作时,能够只擦除被选中的那个存储单元的内容;在数据块擦除方式操作时,可擦除数据块内所有单元的内容。
虽然EPROM是可读写的ROM,但由于它寿命有限,写入时间过长等因素,仍不能取代RAM。
4.闪速存储器
闪速存储器(Flash Memory,闪存)是20世纪80年代中期出现的一种快擦写型存储器,其性能介于 EPROM与 E2PROM之间。与E2PROM相似,可使用电信号进行删除操作。整块闪速存储器可以在数秒内删除,速度远快于EPROM,而且可以选择删除某一块而非整块芯片的内容,但还不能进行字节级别的删除操作。集成度与EPROM相当,高于E2PROM。
目前,大多数微型计算机的主板采用闪速存储器来存储BIOS程序。因为闪速存储器除了具有ROM的一般特性外,还有低电压改写的特点,便于用户自动升级BIOS。
在数字系统中,只读存储器的应用十分广泛,如用于实现组合逻辑函数、进行波形变换、构成字符发生器以及存储计算机的数据和程序等。
1.用ROM实现组合逻辑函数
从上面的分析可知,ROM中的地址译码器实现了对输入变量的与运算;存储矩阵实现了有关字线变量的或运算。因此,ROM实际上是由与阵列和或阵列构成的组合逻辑电路。从原则上讲,利用ROM可以实现任何组合逻辑函数。
用ROM来实现组合逻辑函数的本质就是将待实现函数的真值表存入ROM中,即将输入变量的值对应存入ROM的地址译码器(与阵列)中,将输出函数的值对应存入ROM的存储单元(或阵列)中。电路工作时,根据输入信号(即ROM的地址信号)从ROM中将所存函数值再读出来,这种方法称为查表法。
2.用ROM作函数运算表电路
数学运算是数控装置和数字系统中需要经常进行的运算。如果事先把要用到的基本函数变量在一定范围内的取值和相应的函数值列成表格写入ROM中,则在需要时只要给出规定的地址就可非常快速地得到相应的函数值。这种只读存储器实际上已经成为函数运算表电路。函数运算表电路的实现方法与用ROM实现组合逻辑函数的方法相同。
3.用ROM作字符发生器电路
字符发生器也是利用ROM实现代码转换的一种组合逻辑电路,常用于各种显示设备、打印机及其他一些数字装置中。被显示的字符以像点的形式存储在ROM中,每个字符由7×5(或7×9)点阵组成。数据经输出缓冲器接至光栅矩阵。当地址码A2A1A0选中某行时,该行的内容即以光点的形式反映在光栅矩阵上。单元内容为1,相应于光栅上就出现亮点。若地址码周期性地循环变化,则各行的内容就会相继地反映在光栅上,从而显示出所存储的字符。