第五章 半导体存储器存储器是计算机的一个重要组成部分,用来保存程序和数据的硬件装置,?记忆功能部件,
§ 5.1 概述一、存储器的分类从不同的角度出发,存储器有不同的分类方式:
1.按照工作时与 CPU联系可分,主存 (内存 ),辅存 (外存 ).
主存?直接和 CPU交换信息,且按存储单元读 /写数据,
速度快,
辅存?不能直接和 CPU交换信息,作主存的外援,存放暂时不执行的程序和数据,它只是在需要时与主存进行批量数据交换,容量大,速度慢,
2.按存储元件 材料可分,半导体存储器 (常作主存 ),磁存储器 (磁带,磁盘 ),光存储器 (光盘 ).
3.按存储器 (半导体存储器 )读写工作方式可分可分,
双极型 RAM?存储速度高,集成度较低,功耗大,
成本较高,∴ 主要用在高速微机中,
静态 SRAM?集成度较高 ;不需刷新 ;
速度快,价格贵,
动态 DRAM?需刷新 ;集成度高 ;
速度较低,价格便宜,
掩摸 ROM?由厂家固定线路 (数据 ),不能 改写;
可编程 PROM?用户进行编程,但只能一次;
可擦除的 EPROM?可用紫外线擦去后,再编程,
可多次改写;
电擦除可编程 EEPROM?能在线修改。
MOS RAM
RAM
ROM
二 ﹑ 存储器的性能指标主要的性能有:存储容量,存取速度,可靠性,性能价格比。
· 存储容量?用其 存储的二进制信息量 描述。表示为:
字数 *字长,由于微机中均以字节编址,常表示为?
字节数* 8。
如,16KB→16K*8,如,486主存 8MB→8M*8 。
存取速度?启动一次存储操作到完成该操作所经历的时间。
对存储器的要求是容量大,速度快,可靠性高,成本低,
由于制造工艺限制,很难在同一存储器中都达到要求,
三者不可兼得,为此采用分级存储系统。
三 ﹑ 存储器的分级结构
在 386﹑486 以上微机中采用三级存储器结构 (286
以下只有 二级,内存,外存 ),高速缓冲存储器
( CACHE),主存,辅存 。 CPU可直接访问高速缓存和主存,而不能直接访问辅存。
高速缓存 CACHE?又称快存,高速小容量存储块,
容量一般为 32KB~ 256KB,用 SRAM构成 (目前微机主存由 DRAM构成 ),速度快,容量小,用来临时存放指令和数据(最常用)。
主存?用来存放运行期间的大量程序和数据。一般插入等待状态。
辅存?一般由磁表面存储器构成,用来存放系统程序。大型文件,数据库等。
三种存储器构成三级存储器管理,各级职能和要求不同。快存追求速度,以和
CPU速度匹配;辅存追求容量大;主存介于两者之间,对容量,速度都有一定要求。
四 ﹑ 虚拟存储器和物理存储器( 286以后就有虚拟存储器的概念)
由于成本和工艺的原因,主存的容量始终受到限制,
而程序越来越大。从而产生矛盾,为此从 286以后,采用了虚拟存储器的技术。以解决内存容量的不足。
如 386或 486微机:
物理存储器?CPU可以访问的存储器,是 232字节( 32
位地址线)。
虚拟存储器?程序占用存储空间,可达 246字节。 (虚拟地址构成,16位段地址( 14位有效)+ 32位偏移地址)
实存储器 虚存储器由 32位 RAM 磁盘地址 ROM 设备
232= 4G 246= 64T
虚拟存储器实际上是 由磁盘等外存储器的支持 来实现的,即由操作系统把磁盘存储器当主存来使用,以扩大内存 。
访问虚拟存储器的地址称为虚拟地址。
虚拟存储伴随磁盘与存储器之间来回交换数据,
从而降低速度。因此 虚拟存储对多个用户 系统是有效的,但对要求适时处理的 实时系统就不太适用 。
实际上 286以上微机有两种运行方式?实地址方式和虚地址保护方式;复位自动进入实地址方式,相当于一个快速的 8086。
§ 5.2 半导体存储器一 ﹑ 半导体存储器的结构
1﹑ 存储器的组成
存储器由 数以千计的基本存储 0或 1的电路组成 。 这些存储电路必须有规则地组合起来 —— 存储体 。一般构成矩阵形式 —— 存储矩阵 。
一般由 N个 bit位构成并行存取的存储单元,为了区分不同的存储单元,应给它编个号 —— 地址,
为了从数据较多的存储单元中选取某一个单元,
必须进行 —— 地址译码,如容量为 64K=216,必须有 16位地址,存储器必须对 16位地址译码以选择单元。即要接收 CPU的 N位地址,经译码后产生 2N个地址选择信号,实现对片内存储单元的选址。
为了扩展存储器,常将多片存储器的数据线并联到数据总线上(挂到总线上)。 —— 所以必需是 三态缓冲器 输出,以使本片未选中时,处于高阻状态。
在计算机对存储器进行读 /写操作时由 CPU的
RD/ WR和芯片选择信号 CS对存储器进行控制 ——
控制逻辑 。 —— 接收片选,形成对内部的读 /写操作。
A0→ 地 → 存 三 DO
A1→ 址,储 态,
,译,矩 缓,
,码,阵 冲,
,器 → 器 Dm
An-1→
控制逻辑
RD/WR CS片选信号
2,存储器结构
从使用角度来看,存储器有两种结构方式 ---字结构和位结构,
① 字结构?存储矩阵内部的基本电路 存放一个字的所有位,
② 位结构?存储 矩阵内部的基本电路 存放各 个不同字的同一位。
如,1024个基本单元电路可以组成字结构形式,
构成 128个字单元,∵ 128*8=1024。
D7 D6 D5 D4 D3 D2 D1 D0 Di
0 0
1 1
.,,·
.,,·
.,,·
7FH 3FFH
如,1024基本单元电路也可组成位结构形式,构成 1024个字的某一位。
★ 采用字结构方式制作的芯片,选中某一单元时,则该单元的各位信息可以从一个芯片中 同时读出 ;但封装 引线较多,如上述 128个字则需( 27= 128) 7根 AB,8根 DB线。
★ 采用位结构方式制作的芯片,选中某一单元 时,
则该单元的 某一位 可以从一个芯片上读 出,这一位信息还要和其它的 7个芯片上读 出的信息组合在一起才能得到一个字的全部 信息;但封装 引线较少,如上述
1024个单元 需( 210= 1024) 10根 AB和 1根 DB线。
二.常用静态 RAM?有 1位,4位,8位等不同结构。
SRAM?2114,6116,6264,62128,62256
例,2114→1K*4
A6—— 1 18 —— VCC 引脚名称
A5—— —— A7 A0-A9 地址输入 10根
A4—— —— A8 D0-D3数据输入 /输出 4位
A3—— —— A9 CS片选
A0—— 2114 —— D0 WE写允许
A1—— —— D1
A2—— —— D2
CS—— —— D3
GND—— 9 10 —— WE
1K*4=4096个基本元电路,用 10根 AB线对其进行译码寻址 1K的单元。
内部有二组三态门和 Di线相连,由 CS和 WE一起控制这些三态门。
例 ﹑6116 —— 2K*8
A7—— 1 24 —— VCC 引脚功能
A6—— —— A8
A5—— —— A9 D0- D7 8位数据输入/输出
A4—— —— WE
A3—— —— OE A0-A10地址输入,11位
A2—— 6116 —— A10
A1—— —— CE CE 片选(芯片允许)
A0—— —— D7
D0—— —— D6 WE 写允许
D1—— —— D5
D2—— —— D4 OE 输出允许
GND—— 12 13 —— D3
一般 RAM都有这三个控制端
2K*8=2024*8=16384个基本元电路,用 11根地址线对其进行译码,以便对 2K个单元进行选择,选中的 8bit位同时输入 /输出,数据的方向由 CE,
WE,OE一起控制。
6116控制真值表:
CE OE WE 操作方式
H X X 未选中
L L H 读
L X L 写例 ﹑6264 —— 8K*8
NC—— 1 28 —— VCC 控制真值表
A12—— —— WE WE CE1 CE2 OE 方式
A7—— —— CE2 X H X X 未选中
A6—— —— A8 X X L X 未选中
A5—— —— A9 H L H H 输出禁止
A4—— —— A11 H L H L 读
A3—— 6264 —— OE L L H X 写
A2—— —— A10 引线,A0-A12地址,13位
A1—— —— CE1 D0-D7 8位 DB
A0—— —— D7 CE1 片选 1
D0—— —— D6 CE2 片选 2
D1—— —— D5 WE 写
D2—— —— D4 OE 输出允许
GND—— 14 15 —— D3
其他 RAM,如 62128?16K* 8,62256?32K* 8,
引脚关系依此类推 。
二,常用 ROM— 目前最常用的为 EPROM。
常用 EPROM都为 8位结构,最小容量 2716?2K× 8
以此为基本容量。如,2732?4K× 8,2764?8K× 8,
27128?16K× 8,27256?32 K× 8
例,2716?2K* 8
A7 1 24 VCC 引线名称
A6 A8 A0-A10? 11根地址线
A5 A9 D0-D7? 8根数据线
A4 VPP CE/PGM?片选 /编程控制
A3 OE OE? 数据输出允许
A2 A10 Vpp? 编程电源
A1 CE/ PGM
A0 D7
D0 D6
D1 D5
D2 D4
GND 12 13 D3
1 24
12 13
一般 EPROM都有这 4个控制端。有的分开,有的复用。
若不考虑编程有
CE,OE。
2716控制真值表(工作方式选择)
CE/PGM OE Vpp 方式 D0-D7
L L +5 读 数据输出
H X +5 维持 高阻
55ms H +25 编程 数据输入
L L +25 编程检验 Dout
L H +25 编程禁止 高阻例,2732?4K× 8
A7 VCC 引线名称
A6 A8 A0-A11? 12根地址线
A5 A9 D0-D7? 8根数据线
A4 A11 OE/Vpp?输出允许 /编程电源
A3 OE/ VPP CE/PGM? 片选/编程控制
A2 A10 2732 方式选择
A1 CE/ PGM CE/PGM OE/Vpp 方式
A0 D7 L L 读
D0 D6 H X 维持
D1 D5 50ms Vpp 编程
D2 D4 L L 编程检验
GND D3 H Vpp 编程禁止
1 24
12 13
例,2764- 8K× 8
A0-A12? 13根地址线
D0-D7? 8根数据线
CE? 片选
OE? 输出选通
PGM? 编程脉冲输入
Vpp? 编程电源
VPP VCC
A12 PGM
A7 NC
A6 A8
A5 A9
A4 A11
A3 OE
A2 A10
A1 CE
A0 D7
D0 D6
D1 D5
D2 D4
GND D3
1 28
14 15
2764方式选择
CE OE PGM Vpp 方式 D0-D7
L L H +5 读 Dout
H X X +5 维持 高阻
L H L Vpp 编程 Din
L L H Vpp 编程检验 Dout
H X X Vpp 编程禁止 高阻
其他,如,27128,27256和 2764类似,只是地址线增加,使用时查手册。
注,EPROM的编程电压 Vpp视 产品型号有所不同,
使用时查手册。
§ 5.3 存储器与 CPU的接口一,连接时应该考虑的问题在 CPU对存储器进行读 /写操作时,首先 CPU给出地址,然后要发出相应的读 /写控制信号,
最后才能在数据总线上进行信息交换。
所以,存储器和 CPU的 连接,有三个部分:
( 1)、地址线的连接;
( 2)、数据线的连接;
( 3)、控制线的连接。
在具体连接时应考虑下面问题:
1,CPU总线的 负载能力在微机系统中,CPU通过总线与数片存储器和若干 I/O
芯片相连,而这些芯片可能为 TTL器件,或 MOS器件,所以构成系统时 CPU总线能否支持其负载是必须考虑的问题。
一般,CPU的输出线的直流负载能力为一个 TTL负载或 20个 MOS负载 。
目前存储器基本上是 MOS器件,直流负责很小,在 小型系统中,CPU可直接和存储器相连; 而在 较大的系统中,需加缓冲器或总线驱动器来增大驱动能力。
后面设计假定是小型系统。
2,CPU的 时序 和存储器的 存取速度 之间的配合问题 。
∵ CPU访问存储器时有其固定的时序,而存储器有一定的存取时间 tRC或 tWC;一般以 CPU的时序来确定对存储器的存储速度的要求 ;在存储芯片已确定的情况下,
则应考虑是否需要迁入 TW周期等。
后面设计,假设能配合,不考虑插入电路 。
3、存储器的 地址分配 和 片选 问题因为目前单片存储器的容量仍然是有限的,所以总是要由许多片才能组成一定容量的存储器。
后面设计重点考虑地址分配和片选问题。
4,控制信号 的连接
CPU与存储器交换信息时,除需要连接地址线、
数据线、还有读 /写控制线。
后面设计 假设 已由前面介绍的 CPU系统提供
MEMR/MEMW控制信号。
若系统不能提供 MEMR/MEMW信号时,译码时应加 IO/M控制信号。
二、地址选择?地址分配?地址线的连接
一个存储器系统通常有许多存储器芯片组成的。为了能正确实现存储器 寻址,必须用一部分的地址线(通常是 低位 )连到所有存储器芯片,实现 片内寻址 ;另一些地址线(通常是 高位 )通过地址译码作为芯片的片选信号,实现 片间寻址 (页寻址),即 片选 。
通过地址译码实现片选的方法有三种:
1、线选法?直接将某些高位地址线 接往存储器芯片的片选端。当该地址线为 0或 1时,就选中该芯片;即用一根地址线选通一块芯片。
例,某微机系统的 地址为 16位,欲扩展 ROM和 RAM各
256个字节。已知选用 256× 8的存储器芯片。
将低 8位地址线并联到各芯片的地址线端。
将 A14反相接 ROM的 CS;
将 A15反相接 RAM的 CS。
即用高 2位 AB作片选。
地址分配:
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1
有用地址 256字节?4000H- 40FFH
重叠地址?4100H- 7FFFH
有用的地址 256字节?8000H- 80FFH
重叠地址?8100H- BFFFH
ROM
RAM
若系统中只有两片可用更简单方法:
则地址分配:
(一般复位 IP= 0000
指向 ROM)
ROM 0000H— 7FFFH
32K
RAM 8000H- FFFFH
32K
线译码 电路简单,无需外加任何别的译码逻辑电路,
但浪费了可用地址空间,出现了很大的地址重叠区,且地址空间不连续,给编程带来某些困难。常用于小型微机系统(容量小,芯片少)。
2、全译码法
全译码法?对全部地址线进行译码 。将地址的低位直接接到存储器的芯片的地址端,实现片内寻址;
将剩余的高位全部接译码器的输入端,经译码后的输出作片选,实现片选寻址。
例,某 16位 AB微机系统扩展 2KB RAM和 2KB
ROM,用 1K× 8的芯片,地址安排在 64K空间的最低 4K位置。
地址分配:
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1
0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
1#?0000H~ 03FFH,2#?0400H~ 07FFH
3#?0800H~ 0BFFH,4#?0C00H~ 0FFFH
1#
ROM
2#
ROM
3#
RAM
4#
RAM
将地址线低 10位 A9-A0直接到芯片地址端,实现片内寻址。
将高 6位地址经 6,64译码器,取译码输出的低 4位作片选。当存储容量小于可寻址的存储空间,一般从译码器输出线选中连续的几根作片选,多余的令其空闲,以便日后需要时扩充。如上使用 Y0- Y3,Y4- Y63空闲。
将数据线并接到数据总线上。
将读信号 MEMR接存储器读允许 OE,将写信号 MEMW
接存储器写允许 WE。
全译码不浪费存储空间地址,地址唯一,地址 不重叠,
且 连续,但译码电路比较复杂。
3,部分译码在系统中如果不要求提供 CPU可寻址的全部单元,则可采用线译码和全译码相结合的方法。 将高位地址的部分地址线参入译码,一部分不参入译码 。所以亦出现部分地址重叠。
4,常用典型译码器 74LS138?3,8译码器
4、常用典型译码器 74LS138?3,8译码器功能表允许控制端 输入端 输出端
G1 G2A G2B C B A yi
0 0 0 y0=L
0 0 1 y1=L
1 0 0 0 1 0 y2=L
0 1 1 y3=L
1 0 0 y4=L
1 0 1 y5=L
1 1 0 y6=L
1 1 1 y7=L
即只有
G1 G2A G2B= 100,
才可以开启译码器,
有 yi输出。
其余
yi为 H
引脚参见 P193
三,CPU与存储器连接举例 — 三总线连接
静态 RAM芯片具有 1位,4位,8位结构,容量不等,一般与 8位数据线连接时,应在字向和位向两方面扩展,
一般字向 采用地址串联 满足容量要求,位向采用 位并联 满足位数要求。
例 1,某 16位 AB系统,扩展 4KB RAM,使用 2114 1K× 4芯片,允许地址重叠。
位扩展 — 位并联 。用 2片 2114构成 1K× 8,1片接 DB的低 4位 D0- D3,另一片接 D4- D7。
字扩展- 地址串联,用 8片 2114构成 4K× 8。
低 10位地址-接 2114的 A9-A0,实现片内 1K字节单元寻址。
∵ 允许重叠,∴ 使用部分译码,选 A12-A10参入译码。
选译码器的 Y0-Y3作片选 (Yi应同接两片 CS)。
将存储器写信号 MEMW接 2114的写控制端 WE(高电平为调读)。
总容量单片容量 =片数
4K* 8
1K* 4 = 8片
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1A0
X X X 0 0 0 0 0 0 0 0 0 0 0 0 0
X X X 0 0 0 1 1 1 1 1 1 1 1 1 1
X X X 0 0 1 0 0 0 0 0 0 0 0 0 0
X X X 0 0 1 1 1 1 1 1 1 1 1 1 1
X X X 0 1 0 0 0 0 0 0 0 0 0 0 0
X X X 0 1 0 1 1 1 1 1 1 1 1 1 1
X X X 0 1 1 0 0 0 0 0 0 0 0 0 0
X X X 0 1 1 1 1 1 1 1 1 1 1 1 1
地址有重叠,如高三位为 001- 111时,2000H-E3FFH
为 1#,2#重叠地址。
0000H-03FFH?1#,2#地址
0400H-07FFH?3#,4#地址
0800H-0BFFH?5#,6#地址
0C00H-0FFFH?7#,8#地址地址分配:
1#
2#
3#
4#
5#
6#
7#
8#
例 2,某 16位 AB微机系统,扩展 8KB ROM和 4KB RAM,
ROM用 2732( 4K× 8),RAM用 6116( 2K× 8),使用地址为 0000~ 2FFFH,要求地址唯一。
由单片容量和结构可知用 2片 2732,2片 6116形成 8K
ROM,和 4K RAM。
地址线低 12位 A11-A0?2732的地址端,低 11位 A10-
A0?6116的地址端。
一般选择 高位作控制,低位作译码输入 。如 A15?138 的
G2A,对 A14A13A12进行译码,每条输出线寻址 4K,用
Y0?1#2732,Y1?2#2732,∵ 地址唯一,需用 A11与 Y2进行二次译码,以选择 6116。
8位数据线直接相连。
4片存储器的 OE均接存储器读控制 MEMR,2片 6116的 WE
接 MEMW。
地址分配:
A15A14A13 A12A11A10A9A8A7A6A5A4A3A2A1A0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1
0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1
0000H~ 0FFFH?1#; 1000H~ 1FFFH?2#;
2000H~ 27FFH?3#; 2800H~ 2FFFH?4#.
1# ROM
2# ROM
3# RAM
4# RAM
上题 另一种译码方式,
对于 容量不同的译码 有两种:
一种是先按 容量大 的进行一次译码,将部分译码输出作为 大容量芯片的片选信号 ;另一部分译码输出与其他相关地址进行 二次译码产生小容量芯片的片选信号 。推而广之,可用多层译码相继产生容量从小到大的不同芯片的片选信号。
另一种是按 容量小 的进行一次译码,将部分译码输出作为 小容量芯片的片选信号 ;而 大容量的需占用两根或多根译码输出线 。可用负或门来控制。
1#2732 0000 0XXX XXXX XXXX?0000-07FFF
0000 1XXX XXXX XXXX?0800-0FFF
2#2732 0001 0XXX XXXX XXXX?1000-17FF
0001 1XXX XXXX XXXX?1800-1FFF
例 3,为 8088系统扩展 16KB ROM和 8KB RAM,ROM用
2764( 8K× 8),RAM用 6264( 8K× 8),其地址范围为
FA000H~ FFFFFH,用 138译码,要求地址唯一,且地址连续(设 CPU系统提供 MEMR/ MEMW信号)。
地址分析:
因为 213= 8K,所以片内寻址为 A12-A0,对 A19~ A13译码 。
将 FA000H~ FFFFFH地址分成三个 8K,以 寻找规律。
FA000H? 1111 1010 0000 0000 0000 (第一个 8K RAM)
FBFFFH?1111 1011 1111 1111 1111 (第一个 8K RAM)
FC000H?1111 1100 0000 0000 0000 (第二个 8K ROM)
FDFFFH?1111 1101 1111 1111 1111 (第二个 8K ROM)
FE000H?1111 1110 0000 0000 0000 (第三个 8K ROM)
FFFFFH?1111 1111 1111 1111 1111 (第三个 8K ROM)
A19 A15 A11 A7 A3 A0
高 4位 A19-A16= 1111固定不变,A15 A14 A13=111 110 101
所以 对此三位译码,选 Y7?作为 一片 ROM的片选,选
Y6?作为 第二片 ROM的片选,选 Y5?作 RAM的片选即可。
作业,P198,1,3.