第三章 存储器的扩展
单片机硬件资源往往不能满足实际需求,通常需要进行必要的扩展
包括:
程序存储器
数据存储器
I/O端口
键盘、显示器和打印机等
存储器的扩展主要是地址、数据和控制“三大总线”的扩展。
扩展多片存储器还需考考虑 地址分配 和 片选问题
总线结构优点:
接线简单,各部件以并联方式连接在总线上
形式统一,任何外扩芯片都只需直接挂在总线上即可
-
1.数据总线的连接
- 将芯片数据I/O口D0~D7与总线的D0~D7对应连接
- 若连接数据是16位或32位,可增加缓冲器和锁存器多次读取 2.控制总线连接
- 控制总线上仅有读写控制线: R D ‾ \overline{RD} RD W R ‾ \overline{WR} WR P S E N ‾ \overline{PSEN} PSEN 3.地址总线的连接
- 51单片机的地址总线是16位的
- 通常将单片机的低位地址线与存储器的地址线相连,高位地址线用做片选或者他用。
rom Read-Only Memory 只读内存 ROM对应的是电脑中的硬盘
ram random access memory 随机存储内存,对应的是电脑的内存
两者的最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM不会自动消失,可以长时间断电保存。
静态RAM
存储容量,是指存储器可以存的二进制信息量。
存储容量=单元数×数据线位数
如
6116 (2K×8位)
6264(8K×8位)
62128(16K×8位)
A0~A12:13根地址线
D0~D7:8根双向数据线,这8根数据线通常和单片机的数据总线相连接,主要用于传递信息。
C
S
‾
\overline{CS}
CS
C
S
2
CS_2
CS2:片选信号,利用地址和控制信号进行译码
段选(Segment Select) CE=Chip enable(芯片使能) CS=Chip select(芯片选中)
O
E
‾
\overline{OE}
OE Output enable
W
E
‾
\overline{WE}
WE Write enable
片内资源
8051片内rom,4KB
片外可扩展至64KB
有关管脚:EA=1,执行片内程序存储器ROM中的程序,而EA=0时,执行片外ROM中的程序。
地址、数据、控制总线
可用存储器芯片
EPROM
锁存器芯片 74LS373
三态输出的8D锁存器
单片机的P0口是低8位地址线/数据线的复用口,只能分时用作地址线,故P0口输出的低8位地址必须用锁存器锁存。
换句话说,不能同时操作,不能同时给出数据以及存储数据的地址,先将数据存到存储器的D0~D7,低8位的地址通过锁存器慢一些给出。
D0~D7: 8位数据输入线
Q0~Q7: 8位数据输出线
G: 数据输入锁存选通引脚,高电平 外部数据选通道内部锁存器,负跳变时,数据锁存到锁存器中
O
E
‾
\overline{OE}
OE: 低电平时,三态门打开,锁存器数据输出到数据输出线,高电平时输出线位高阻抗。
MCS-51单片机扩展EPROM存储器2764的接口电路
- 2764有13条地址线 容量是8KB
- ALE与74LS373 锁存控制端G
- EA 8031必须接地,8051和8751接高电平,充分利用片内4K的存储单元。
EA=1,执行片内程序存储器ROM中的程序,而EA=0时,执行片外ROM中的程序。 - PSEN连接OE控制数据读出
这里解释一下13条地址线,为什么容量是8KB
相连10条地址线 就是2^10=1024=1KB
11条就是2KB,
12条就是4KB,
13条就是8KB
这是一些引脚的解释
地址范围是0000~1FFFH
PSEN为"Program Store Enable"的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。
PSEN及RD引脚分别对应外部的RAM与EPROM的OE
8051可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。
多片存储器
- 片选
即芯片的选择。地址线的一部分用于用于片选,分为线选法和地址译码法 - 字选
即片内存储单元的选择。只要把存储器的地址引脚与相应的单片机地址总线直接连接即可实现。
- 线选法:
以系统的高位地址作为存储器的片选信号
直接将地址线连接到存储芯片的片选端
- 译码法:
(有效利用存储空间,常用的存储器编址方法)
通过译码器对系统的高位地址进行译码,以译码输出作为储存芯片的片选信号。
线选法
线选法的优点是硬件电路结构简单,
但芯片之间的地址不连续,地址空间的利用率低。
一般用于系统扩展的外部存储器和I/O接口芯片较少的场合
P2.7 | P2.6 | P2.5 | 寻址范围 |
---|---|---|---|
0 | 0 | 0 | 左0000H~1FFFH |
0 | 0 | 1 | 左2000H~3FFFH |
0 | 1 | 0 | 左4000H~5FFFH |
0 | 1 | 1 | 左6000H~7FFFH |
1 | 0 | 0 | 右8000H~9FFFH |
1 | 0 | 1 | 右A000H~BFFFH |
1 | 1 | 0 | 右C000H~DFFFH |
1 | 1 | 1 | 右E000H~FFFFH |
地址译码法
采用线选法,每扩展一个存储器芯片就要一根高位地址线作为片选信号,当扩展的外部存储器数量多于可利用的地址线时,可采用地址译码法。
地址译码法是用译码器对高位地址信号译码,译出的信号作为片选信号,用低位地址信号选择芯片的片内单元。
74LS138:3-8译码器 74LS139:双2-4译码器
74LS154:4-16译码器
- 地址线的连接
P0口接底8位地址线(A0~A7)
P2口与存储器高位地址线(A8~An-1) - 数据线的连接
P0口接8位数据线(D0~D7) - 控制线的连接
/RD接 /OE
/WR接/WE
ALE接G - 片选信号的连接与地址译码
P2口剩下的高位地址线作为片选信号