学习单元三 半导体存储器
存储器在计算机和单片机中用来保存数据、程序及其他各种信息。不同的单片机,其存储器的类型与容量也不相同。由于单片机中使用的存储器全都是半导体存储器,因此我们首先介绍半导体存储器的基础知识。
一、半导体存储器概述
1.随机存取存储器RAM和只读存储器ROM
半导体存储器按存取数据方式的不同,分为随机存取存储器RAM(Random Access Memory,简称RAM)和只读存储器ROM(Read Only Memory,简称ROM)。
(1)RAM是一种可读可写的存储器,也称读写存储器,即计算机和单片机的中央处理单元CPU在工作时对RAM中的数既可读又可写,其特点是电源断电时存储的数据将丢失。
(2)ROM是一种可读不可写的存储器,即CPU在工作时对ROM中的数只可读不可写,其应用特点是电源断电时ROM中的信息不会丢失。
表3-1对比了这两种存储器的特点、用途。在单片机中,通常将RAM作为存放数据的存储器,而将ROM作为存放程序的存器。
表3-1 随机存取存储器和只读存储器对照表
2.RAM的分类及特点
随机存取存储器RAM按信息保存方式又可分为静态RAM(Static RAM,简称SRAM)和动态RAM(Dynamic RAM,简称DRAM)。
(1)静态RAM:只要有电加在存储器上,数据就能长期保存。
(2)动态RAM:写入的数据只能保留很短暂的时间,因此每隔一定时间需要重新写入,此过程称为“刷新”。
表3-2对比了这两种RAM的储存原理、特点和性能,在单片机中,通常将SRAM作为数据存储器使用。
表3-2 静态BAM与动态RAM对照表
3.ROM的分类及特点
只读存储器ROM按信息保存方式又可分为以下几种类型:
(1)掩模ROM(Mask ROM,简称ROM)。生产厂家在制造芯片时已经把信息固化在存储单元中,数据一旦写入就不可重新改写。
(2)可编程只读存储器PROM(Program ROM,简称PROM)。PROM中的内容是由用户根据需要借助于专门的设备一次性写入,但写入后就不可更改。
(3)可紫外线擦除的可编程只读存储器EPROM(Erasable Programmable ROM,简称EPROM)。这种芯片表面有一个透明窗口,紫外线照射窗口后能擦除芯片内的全部内容。当需要改写EPROM芯片的内容时,应先将EPROM芯片放入紫外线擦除器擦除芯片的全部内容,然后对芯片重新写入数据。
(4)可以电擦除的可编程只读存储器EEPROM(Electrically Erasable Programmable ROM)也称为E2PROM,可用电信号擦除,多次改写,不需要专用设备。在用户系统中可直接进行改写(称为在线改写),且能以字节为单位进行擦除和改写,而不是像EPROM那样整体擦除。但存取速度慢。
E2PROM的最大缺点就是改写信息的速度慢,随着半导体存储技术的发展,各种新的可现场改写信息的非易失性存储器被推出,且发展速度很快,其中应用最广泛、最流行的就是快擦写存储器F1ash Memory。
(5)快擦写存储器Flash Memory(也称为Flash ROM,有时简称为Flash)快擦写存储器是在E2PROM的基础上改进而来的,但读写速度比一般E2PROM快得多,因此也将其称为“闪存”。这种存储器集成度高,制造成本低于DRAM,既有SRAM读写灵活和较高的访问速度,又有只读ROM断电后信息不丢失的特点,故近年来发展迅速。其容量从最初的几十kb发展到现在的几个Gb。用这种存储器生产的移动存储盘就是我们常说的U盘。
特别强调:目前的新型51单片机都已经配置了Flash ROM,前面谈到的单片机STC89C51/52RC和AT89S51/52都配置了Flash ROM。
二、存储单元地址、存储单元内容与存储器容量
1.存储单元地址
一个存储器包含很多存储单元,为了能区分不同的存储单元,分别对这些存储单元进行编号,这些编号称为存储单元地址或地址编码(简称地址码)。在计算机和单片机中,存储单元地址一般用十六进制数从0000H开始编号,依次为0000H、0001H、0002H等。
存储器存储单元的数量由存储器地址线的数量决定。如果某存储器地址线有n根,则通过译码可产生2n个不同的地址码,即可以寻找到2n个存储单元。如某EPROM器件2764有13根地址线,其存储单元数量为213=8192,地址码为0000H~1FFFH。
51单片机最多有16根地址线,可访问的存储单元数量最多为216=65536,其地址码为0000 H~FFFFH,如图3-9所示。
图3-9 存储单元地址、存储单元内容与存储器容量
2.存储单元内容
在51单片机中,每个存储器有8根数据线,故每个存储单元可以存放8位二进制数(8个bite),从最低位到最高位依次为D0、D1…D7,称为1个字节(1个byte)。存储单元存放的8位二进制数称为存储单元的内容或存储单元的数据。
3.存储器容量
存储器存储容量是指存储器存储单元的数量或者存储器所有存储单元可以存储的二进制信息的总数量。
(1)用存储单元的数量表示存储容量时:
存储容量=存储单元数=2n字节
(2)用存储单元可以存储的二进制信息的总数量表示存储容量时:
存储容量=存储单元数×数据总线位数=2n×D位
其中,n为存储器地址线的数量,D为数据总线位数,51单片机数据总线是8位。
存储器的容量常常很大,为了表示方便,常常以kb为存储容量的单位(1kb=210=1024字节)。如某EPROM器件2764有13根地址线,其存储容量为213=8kb;某SRAM器件6116有11根地址线,其存储容量为211=2kb。
51单片机最多有16根地址线,其最大存储容量为216= 64kb。
由于存储单元的地址和存储单元的内容都可以用十六进制表示,初学者需注意其差异,不要将它们混为一体。每个存储单元都存放着一个字节的内容,存储单元的地址和这个存储单元的内容是两个完全不同的概念,前面谈到,地址是这个存储单元的编号,而内容则是这个存储单元存放的信息。每个存储单元的地址是固定不变的,而每个存储单元的内容可以读出和写入,是可变的。
三、存储器的两种基本操作
向存储器存放或取出信息称为访问存储器,向存储器存放信息称为写操作(Write),取出存储器中预先存放的信息称为读操作(Read)。在访问存储器时先由地址译码器将送来的存储单元地址进行译码,找到相应的存储单元,再由读/写控制电路根据送来的读/写命令确定访问存储器的方式,完成读出或写入操作,如图3-10所示。
图3-10 存储器的读写过程
1.存储器的两种基本操作过程
(1)单片机读存储器中数据
第一步:单片机发出的地址信号经地址总线AB送至地址译码器,经过译码后找到(选中)存储单元。
第二步:单片机通过控制总线CB发出读命令,将存储单元的数据读出后送到数据总线DB上。
第三步:单片机将数据总线上数据读入片内存储单元。
(2)单片机将数据写入存储器
第一步:单片机发出的地址信号经地址总线AB送至地址译码器,经过译码后找到(选中)存储单元。
第二步:单片机将片内存储单元的数据送到数据总线上。
第三步:单片机通过控制总线CB发出写命令,将数据总线DB上的数据写入选中的存储单元。
2.需注意的问题
(1)单元的内容被读出后,并不破坏该单元的内容,该单元仍保留着原来的数据,即所谓的非破坏性读出。
(2)存储单元写入了新的内容后,原来的内容就被新的内容所替代而不复存在。