2.3 存储器电路
2.3.1 存储器概述
存储器是用来存放数据的集成电路或介质,常见的存储器有半导体存储器(ROM、RAM)、光存储器(如CD、VCD、MO、MD、DVD)、磁介质存储器(如磁带、磁盘、硬盘)等。存储器是计算机极为重要的组成部分,有了它计算机才具有存储信息的功能,才能使计算机可以脱离人的控制自动工作。单片机嵌入式系统中主要使用的存储器是半导体存储器,从使用功能上,可分为随机存取存储器(RAM)和只读存储器(ROM)两类。RAM主要用于存放各种现场数据、中间计算结果,以及主机与外设交换信息等,它的存储单元的内容既可读出,又可写入。ROM中存储的信息只能读出,不能写入,如PC主板上的存放BIOS程序的芯片就是ROM存储器。
在单片机系统中,RAM存储器常用来作为数据存储器,ROM存储器常用来作为程序存储器。RAM存储器的优点是读/写方便,使用灵活,但断电后RAM中的信息会丢失,为易失性存储器。ROM存放的数据一般不能用简单的方法对其内容进行改写,正常使用时主要对其进行读取操作,一般用于存放程序或一些固定的数据,一般在使用之前由生产厂家或用户将内容直接写入器件中。ROM存储器的优点是在断电时信息不会丢失,为非易失性存储器。但写入数据较为复杂,如何写入数据通常与ROM的类型有关。
2.3.2 存储器有关概念
1.存储元
计算机中最小的信息单位是bit,也就是一个二进制位。存储元是存储器的最小存储单位,是组成存储器的基础和核心,其作用是用来存放1位二进制代码0或1。任何具有两个稳定状态(双稳态)的物理器件都可以用来作为存储元。存储元也称为存储位元。
2.存储单元
在存储器中有大量的存储元,把它们按一定的规则划分为组,组内所有的存储元同时进行读出或写入操作,这样的一组存储元称为一个存储单元。
一个存储单元包含若干存储元,其具体数量和存储器组织有关。一般以8个存储元作为1个存储单元,也就是1个字节。也可以16个存储元作为1个存储单元,也就是2个字节。
在存储器中每个存储单元都有一个唯一的整数编码,称为存储地址或字地址。计算机通过这个地址访问相应的存储单元。
存储单元一般用十六进制数表示,而每一个存储器地址中又存放着一组二进制表示的数,通常称为该地址的内容。值得注意的是,内储单元的地址和地址中的内容两者是不一样的。前者是存储单元的编号,表示存储器总的一个位置,而后者表示这个位置里存放的数据。正如一个是房间号码,另一个是房间里住的人一样。
3.存储容量
存储容量是指存储器可以容纳的二进制信息量。
存储容量大小由存储器的地址线和数据线多少决定。假设某存储器芯片有M条地址线和N条数据线,则M决定了存储单元数,N决定了每个存储单元的数据位数。
芯片的存储容量=存储单元数×每个存储单元的数据位数=2M×N。例如,RAM存储器RAM 62256的地址线为A0~A14,共15线,数据线为D0~D7,共8线,则该存储器容量为215×8=262144存储元。
半导体存储器芯片是以位b(Bit)为基本单位说明其存储容量的。但通常我们是以字节B(Byte)为基本单位说明其存储容量的。
每一千个字节称为1KB,注意,这里的“千”不是我们通常意义上的1000,而是指1024。即1KB=210B=1024B。更大的存储单位是MB(220B)、GB(230B)、TB(240B)。
另外,需要注意的是,存储产品生产商会直接以1GB=109B,1MB=106KB,1KB=103B的计算方式统计产品的容量,这就是为何买回的存储设备容量达不到标称容量的主要原因。
下面将分别简介RAM和ROM两大类存储器。
2.3.3 RAM存储器
RAM存储器是指断电时信息会丢失的存储器,但是这种存储器可以现场快速地修改信息,所以RAM存储器是可读/写存储器,一般都作为数据存储器使用,用来存放现场输入的数据,或者存放可以更改的运行程序和数据。根据其工作原理不同,可分为以下两类:基于触发器原理的静态读/写存储器(Static RAM,SRAM)和基于分布电容电荷存储原理的动态读写存储器(Dynamic RAM,DRAM)。前者相对读/写速度快,且大多数与相同的程序存储器EPROM引脚基本兼容,利于印制板电路设计,使用方便,但是集成度低,成本高,功耗大。后者集成度高,成本低,功耗相对较低,但是由于分布电容上的电荷会随时间而泄漏减少,为保持其内容,需要对其周期性地刷新(即对电容充电),这就需要增加一个刷新电路,附加额外的成本。
一般SRAM用于仅需要小于64KB数据存储器的小系统,如单片机系统,或作为大系统中的高速缓冲存储器,如PC的CPU中的Cache;而DRAM常用于需要大于64KB的大系统,这样刷新电路的附加成本会被大容量的DRAM的低功耗、低成本等利益所补偿,大容量数据存储器采用DRAM是最经济的方案。
选择SRAM的另一个依据是当需要用电池作为后备电源进行数据保护时,应该采用CMOS SRAM。这是因为1978年后推出的CMOS SRAM芯片都有低功耗工作方式,一般只要用2V电源电压且在功耗极低的情况下就可以保持芯片中的数据信息。虽然用电池作为后备电源也可以保护DRAM中的数据,但是由于DRAM需要连续地动态刷新保持数据不变,这就需要给整个存储器支持系统提供电功率,由此势必需要使用大容量的电池作为后备电源,因此在单片机系统中常采用SRAM作为数据存储器。
SRAM的基本结构如图2.26所示。RAM的结构大体由三部分组成:用于选择存储单元的地址译码器、由存储单元所构成的存储单元矩阵、控制数据流向的输入/输出电路(包括读/写控制电路、片选信号及输出缓冲器)。存储器和外部设备的数据交换是通过数据线进行的,为了节约数据线,一般采用读/写共享数据线的方式,其上的数据流向由读/写控制电路决定。在存储器电路中,通常把数据线上一次能传送的数据称为一个字,如8位数据线所传送的字含8位二进制信息,称字长为8。
每个存储元可存储1位二进制信息,存储元常排列成矩阵的形式,构成存储体。如一个1024字×1位的存储芯片,常排列成32×32的矩阵形式,它表示有1024个可寻址的逻辑单元,可存储1024个字,由这样的4个存储芯片就可组成1024字×4位的存储器。
图2.26 SRAM的基本结构
为了能够对每个存储单元进行读/写操作,各单元必须有各自的单元地址。当输入一个地址码时,利用地址译码器就可以在存储矩阵中找到相应的存储单元。
读/写控制电路用于控制对存储单元的读或写操作。存储器所设置的片选信号,使得只有在该片选信号有效时,才可以进行读/写操作。输出缓冲器常采用漏极开路电路或三态输出电路,以便存储器的输出可以并联使用,从而扩充了存储单元。下面对各组成部分分别加以介绍。
1.地址译码方式
地址译码有两种方式,一种是单译码方式,或称为字结构方式,适用于小容量存储器;另一种是双译码方式,或称为X-Y译码结构。译码结构中,把地址译码输出线称为字选线,简称字线。每个存储单元有两条传输数据的原码与反码的数据位线,简称位线。位线是存储体内的数据传输线,每一列中各存储单元的位线是连通的,被选中单元的位线通过输入/输出电路可以与存储器的数据总线相连。
(1)单译码结构
图2.27所示为一种单译码结构的16字×4位的存储器,共有64个存储单元,排列成16行×4列的矩阵,每个小方块表示一个存储单元。电路设有4根地址线,可寻址24=16个地址逻辑单元,若把每个字的所有4位视为一个逻辑单元,使每个逻辑单元的4个存储单元具有相同的地址码,译码电路输出的这16根字线刚好可以选择16个逻辑单元,每选中一个地址,对应字线的4位存储单元同时被选中。选中的存储单元将与数据位线连通,即可按照要求实现读或写操作了。
图2.27 16字×4位单译码结构存储器
(2)双译码结构
图2.28所示为一个双译码结构的16字×1的地址译码存储器。视每个字的1位存储单元构成一个逻辑单元,图中每个小方块表示一个逻辑单元。16个可寻址逻辑单元排列成4×4的矩阵,为减少地址译码电路的输出数量,采用双重译码结构,每个地址译码的输出线数为22=4根(单译码方式需16根地址输出线)。图中,A0、A1是行地址码,A2、A3是列地址码。行、列地址经译码后分别输出4根字线X0~X3和Y0~Y3。X字线控制矩阵中的每一行是否与位线连通,一行中究竟哪个逻辑单元被选中则由Y字线控制。被选中的单元将与数据线连通,以交换信息。
图2.28 双译码结构地址译码存储器
2.读/写控制电路
在RAM结构中,读出和写入的数据线是公用的,为了控制电路中数据的流向,设立了专门的读/写控制电路。
图2.29所示为1位数据的读/写控制电路。门G1、G2是控制信号为高电平有效的三态门,I/O线即为RAM的外接数据总线。在控制信号的作用下,它可以与存储单元的内部数据线D接通或断开。
当片选信号CS=0有效时,读/写控制信号WE可以控制信号的流向。若WE=1时,外电路向存储器读取数据,门G4导通,输出高电平,门G3截止,对应输出给三态门G1的控制信号无效,G1输出高阻状态,G2开启,D上的数据通过G2送到总线I/O上,实现读操作。当WE=0时,情况刚好和前面相反,这时G1开启,G2输出高阻状态,数据只能由I/O送给D,实现写操作。
目前大多数存储器采用独立的两根信号线完成读写控制。其内部电路与图2.29略有不同。
单片机系统常用的SRAM主要技术特性如表2.22所示。
图2.29 读/写控制电路
表2.22 常用SRAM主要技术特性
3.静态RAM 62256
图2.30 RAM 62256引脚图
(1)引脚图
RAM 62256是一个32K×8位的静态随机读/写存储器芯片,其引脚包含地址线15条,数据线8条,1个片选端,一个写允许端和一个输出允许端。该芯片功耗极低,在未选中时仅2.5W,工作时也仅40mW,很适合于用电池供电的RAM电路。图2.30所示为RAM62256引脚图。
引脚说明:A0~A14为地址线,D0~D7为数据线,为片选线;为输出允许,为写允许,VCC为工作电源(5V),GND为接地。
(2)工作方式表
RAM 62256工作方式如表2.23所示。
(3)连接使用方法
用户对存储器芯片的使用,实际上是如何按规定的地址范围把它同CPU的系统总线正确地连接起来的问题。正常芯片的数据总线可以直接接到系统的数据总线上,地址线可直接连接到系统总线的地址线上,余下的问题是芯片的各控制端如何处理,即控制总线的接法。现以RAM 62256芯片与CPU总线连接为例加以说明。
表2.23 RAM 62256工作方式
在RAM 62256的数据总线和地址总线按一般规律连接后和引脚可直接与和相接,用总线的读/写信号控制芯片的读/写操作。的连接必须保证在要求的地址范围内,片选信号低有效,这就存在如何处理总线的高位地址线的问题。在图2.31中,从CPU的高位地址线A15产生信号,因为RAM 62256的为低有效,所以对于图2.31(a)所示的接法,当A15=0时选中RAM 62256,RAM 62256的地址确定为0000H~7FFFH,而对于图2.31(b)所示接法,当A15=1时选中RAM 62256,RAM 62256的地址确定为8000H~FFFFH。
图2.31 RAM 62256的连接使用方法
RAM 62256写入数据的过程如下:
① 在芯片的A0~A14上加入要写入的单元的地址;
② 在D0~D7上加上要写入的数据;
③ 在上加上有效的低电平;
④ 在上加上有效的低电平;
⑤ 在上加上高电平。
这样就将数据写到了地址所选中的单元中。
RAM 62256读出数据的过程如下:
① 在芯片的A0~A14上加入要写入的单元的地址;
② 在上加上有效的低电平;
③ 在上加上低电平;
④ 使为高电平。
这样相应地址的数据便送到了D0~D7供读取。
2.3.4 ROM存储器
前已述及,只读存储器(ROM)的特点是:其内容是预先写入的,而且一旦写入,使用时就只能读出不能改变,掉电时也不会丢失,ROM器件还具有结构简单、信息度高、价格低、非易失性和可靠性高等特点。对ROM内容的设定(写入)称为编程。大多数单片机系统都需要某种形式的ROM存储器存储程序。ROM的种类较多,按存储内容的写入(常称为编程)方式可分为固定ROM、可编程的PROM、可擦可编程的EPROM三类。可擦可编程的EPROM又分为UV-EPROM(紫外线擦除可编程,人们常把UV-EPROM称为EPROM)、E2PROM(电擦除可编程)、Flash E2PROM(闪速存储器)。
固定ROM又称Mask ROM,需要存储的信息由ROM制造厂家写入,信息存储可靠性最高,当用量很大时,单片成本最低。
可编程PROM又称OTP ROM,需要存储的信息由用户使用编程器写入,信息存储可靠性次之,单片成本较低,只能使用一次,目前已较少使用。
可擦可编程的EPROM,存储的信息可由用户通过光或电的方法擦除,需要存储的信息由用户使用编程器写入,信息存储可靠性较低,单片成本较高。但由于其可反复使用,故得到大多数中小用户的青睐。
这一类存储器以闪速存储器Flash E2PROM系列发展最快。闪速存储器是Intel公司20世纪90年代初发明的一种高密度、非易失性的读/写半导体存储器,它既有E2PROM的特点,又有RAM的特点,因而是一种全新的存储结构。所谓的固态盘、U盘、MP3、CF卡等移动存储器都是以Flash E2PROM作为存储介质的。
1.ROM的结构与工作原理
ROM的结构与RAM十分相似,如图2.32所示,它由存储矩阵、地址译码器、输出缓冲器电路组成。地址译码器可以是单译码,也可以是双译码。
2.ROM的点阵结构表示法
如图2.33所示,将存储器字线和位线画成相互垂直的一个阵列,每一个交叉点对应一个存储元,交叉点上有黑点表示该存储元存1,无黑点表示该存储元存0,这就是存储器的点阵图表示方法。ROM点阵结构表示法是一种新思路,它对后来其他可编程器件的发展起到了奠基作用。
在图2.33中,如果把ROM视为组合逻辑电路,则地址码A1A0是输入变量,数据码D3~D0是输出变量,由上图可得输出函数表达式:
图2.32 ROM的结构框图
图2.33 ROM的点阵结构表示图
逻辑函数是与或表达式,每一条字线对应输入变量的一个最小项。由此可列出逻辑函数真值表,如表2.24所示。
表2.24 图2.33中ROM存储器的内容
3.可用紫外线擦除可编程只读存储器EPROM
EPROM是Erasable Programmable Read Only Memory的缩写,因为其擦除方法是用紫外线照射,所以又称为可用紫外线擦除可多次编程的ROM-UV-EPROM(Ultraviolet-Erasable Programmable Read Only Memory)。用户可多次改写内容,改写时需要宽度约为50ms的高电压编程脉冲,EPROM芯片外壳上方有窗口,当用紫外线通过这个窗口照射时,写入的信息被擦除。为避免EPROM的内容在外来光线照射下慢性自动擦除,通常用一种不透光的标签粘贴在窗口上。EPROM存储芯片的基本用法与RAM大致相同。
(1)引脚与接线
图2.34所示为64KB芯片EPROM 27C512外引脚及与CPU的接线方法。其中,A0~A15为地址线,O0~O7为数据线,为片选线,为输出允许,VCC为工作电源(5V),GND为接地。
图2.34 64KB芯片EPROM 27C512外引脚及与CPU的接线方法
27C512是64KB的EPROM,28脚双列直插式封装,地址线为16条,8位数据线带三态输出缓冲,为片选信号接地,表示在0000H~FFFFH范围内全部选中27C512,OE为允许输出引脚,读出时只需单一的+5V电源,O0~O7为三态输出,与TTL电平兼容。读周期类似于RAM,当地址引脚上出现读出单元地址,和OE都为低电平时,从O0~O7端可读到数据。
部分EPROM主要技术特性如表2.25所示。新一代的单片机芯片内部都集成了32~64KB大容量的程序存储器,所以单片机系统中已很少使用EPROM电路。
(2)编程操作
EPROM在工厂提供的产品未被编程前,所有的位都是逻辑1状态,用户根据需要使用专用设备编程器把逻辑0状态写入所希望的位。如果要把已经写入的逻辑0改写成逻辑l,不能用编程器实现,唯一的方法就是通过对EPROM芯片石英玻璃窗口照射一定剂量的紫外线,擦除芯片整片的信息后再重新编程。
表2.25 部分EPROM主要技术特性
4.电可擦除可编程只读存储器E2PROM(E2PROM)
E2PROM是一种具有掉电记忆功能的存储器,其引脚与接线同SRAM,内容也可以像普通RAM一样进行改写,而且改写时能够自动擦除并换成新内容。它不像EPROM那样需要紫外线擦除;而只需用电即可擦除并改写存储在其内部的内容。E2PROM通常在内部带有编程电源。由于它只需外接单一的+5V电源,因此使用起来十分方便。
E2PROM的主要缺点是成本高,擦除和改写的速度慢。
2.3.5 闪速存储器
闪速存储器(Flash Memory)可以用来存放程序,但由于其读写方便,也可以像RAM一样存放需要修改的数据,但由于擦写寿命限制,Flash Memory并不适合于数据频繁改写的场合,现场使用多以读为主。与其他类型半导体存储器相比较,Flash Memory具有大容量、读/写方便、非易失性和低成本4个显著优点,在单片机控制系统和移动信息设备中得到广泛的应用。随着市场对Flash Memory需求的不断扩大,各大半导体厂商正不断推出功能更强、容量更大的Flash Memory产品,技术也日趋成熟。新一代闪速存储器的特点及其功能描述如下。
(1)低电压在线编程,使用方便,可多次擦写
现代的Flash Memory都只使用5V或3V单电源供电,而编程时所需的高压及时序均由片内的编程电路自动产生,外围电路少,编程就像装载普通RAM一样简单,而高压编程电流也只有几毫安,因此非常适合于在应用系统中(尤其在低电压系统中)进行在线编程和修改,因而在智能化的工业控制和家电产品等方面都得到了很广泛的应用。其可重复擦写寿命也都在105次以上,能够满足许多场合的需要。
(2)按块/按扇区擦除,按字节编程
Flash Memory产品,可以以小扇区为单位进行擦除(几十字节到几百字节为一个扇区),也可以全片快速擦除。而编程则是按字节进行的。
(3)完善的数据保护功能
Flash Memory具有以下5种软硬件保护功能,保证片内数据不会意外丢失。
① 噪声滤波器:所有的控制线都有过滤电路,以消除任何小于15 ns的噪声脉冲。
② VCC感应器:一般VCC跌至3.8V以下(对3V器件为1.8V以下)时,编程将被禁止。
③ 上电延迟:VCC在上电后的5ms内,编程被禁止。
④ 三线控制:OE、CE及WE三条控制线只要一条不处于正确电平,编程将被禁止。
⑤ 软件数据保护:所有对Flash Memory的数据的改写都需要通过编程算法完成。
在单片机系统中主要采用大容量的Flash Memory,如果单片机内存小于存储器存储容量,对Flash Memory的访问可通过分页面的方法来进行,详细的接线方法见7.3节。