系统扩展—单片机ROM扩展

引脚功能说明:
A0-A12为地址线,总共13条,则该存储器的物理存储空间有2的13次方,即8K 。
D0-D7为数据总线,共8条,即该存储器的每个存储单元有8位数据,即通常所说的字节为8,又叫一个字节 。
【系统扩展—单片机ROM扩展】CS为片选信号,当该信号为0时,存储器才能正常读写,当CS为1时,存储器的输出端D0-D7和地址总线A0-A12都为高阻状态,即相当于存储器芯片没有接入电路。片选信号常用与电路中有多片同类芯片时选择哪一个芯片有效,即哪一片芯片被接入电路中 。在本例中,由于只有一片程序存储器,没有选择的必要,所以可把片选端接地,使其永远有效 。
OE为程序存储器输出允许端,当该信号有效时,由地址线决定的程序存储器的某一个单元中的数据输出到数据总线上。当信号为1时,存储器与数据总线断开,VCC为存储器的电源输入端,Vss为存储器的电源接地输入端,G为地址锁存器74373的锁存信号输入端。当该信号为0时,74373的输出端与输入端断开,输出端保持上次输入的数据不变,当该信号为1时,74373的输出端与输入端接通,输出信号随输入端的变化而变化 。
对8051来说,P0输出经74373锁存后为低8位地址总线,P2口为高8位地址总线,共16条地址线,所以8051能访问的存储器为2的16次方,即64K称为8051的逻辑地址空间,地址从0000H-OFFFFH 。
存储器有13条地址线,所以对存储器来说,实际的存储单元只有2的13次方,即8K个,其地址从0000H-1FFFH,称为存储器的物理地址,在本例中,由于存储器的片选接地,没有占有CPU的地址线,所以CPU的64K逻辑单元地址平均分配给8K单元的物理存储器,即每一位物理存储器单元拥有8个逻辑地址 。
 
比如要访问物理存储器的00单元,要求存储器的地址引脚A0-A12上全为0,本系统中的CPU的地址线A0-A12恰好与存储器的A0-A12对接,所以只要逻辑地址中的13位为0,就能选中存储器的物理地址00单元,而CPU的地址线A13,A14,A15悬空,显然,这三位悬空线的8种不同组合决定了该物理存储器单元有8个逻辑单元,第一个逻辑单元为0000H,第二个逻辑单元为2000H,第三个逻辑单元为4000H,第四个逻辑单元为6000H,第五个逻辑单元为8000H,第六个逻辑单元为0A000H,第七个逻辑单元为0C000H,第八个逻辑单元为0E000H 。下面我们举例说明本系统中对外部程序存储器的访问过程,假定8051的EA引脚接低电平,即8051使用片外程序存储器 。
 
下面是这个程序片断每条指令的意义:
第一条指令对累加器清0,P2口的数据选择开关倒向右第三条指令将外部程序存储器0100H单元的内容送入累加器A第四条指令将累加器清0第五条指令对寄存器DPTR赋初值2100H第六条指令将外部程序存储器2100H单元的内容送入累加器A请看这段程序片断的运行过程,假定当前PC的内容为0050H,并假定外部程序存储器0100单元的内容为23H.
发控制信号使P0口,P2口的控制端为1,将PC内容送内部地址总线,低8位地址进入P0口,再经数据选择开关出现在P0口的8条引脚上,高8位地址到达P2口引脚上.
同时,CPU使ALE引脚为高电平,74373导通,低8位地址出现在74373的输出端.待地址稳定后,使ALE变为低电平,74373输出端与输入端断开,即锁存.
此后,74373的输出端一直保持低8位地址不变,直到下次ALE引脚出现高电平为止,CPU使P0口的地址/数据全部为1,则上拉场效应管导通,下拉场效应管截止,这样,才能读回外部数据总线上的数据.
否则,若下拉场效应管导通,P0口引脚被下拉场效应管接地,则从外部数据总线上读回的数据永远为0,CPU使PSEN引脚为低电平.取完第一条指令,执行第一条指令,结果为累加器A清0.紧接着取第二条指令,执行第二条指令,结果为给寄存器DPTR赋初值0100H,然后是取第三条指令,执行第三条指令下面我们看看第三条指令的执行过程,CPU使P0口和P2口的控制端C为1,将DPTR与A之和,0100送内部地址总线.
高8位地址01H出现在P0引脚上,低8位地址00H出现在P2口引脚上.
ALE变为高电平,低8位地址出现在74373的输出端.
ALE变为低电平,低8位地址被锁存,CPU使P0口的地址/数据全为1.
PSEN变为低电平,存储器送出物理单元0100H的内容23H,该数据通过P0口进入内部数据总线,PSEN送1,内部数据总线上的数据总线上的数据送入累加器A中.
下一条指令的执行结果为累加器清0,再下一条为寄存器DPTR赋初值2100H,下面我们来看这条指令的执行过程.
CPU使P0口和P2口控制端C为1,将DPTR与A之和2100H送内部地址总线.
高8位地址21H出现在P2口引脚上,低8位地址00H出现在P0口引脚上.
ALE变为高电平,低8位地址出现在74373的输出端,ALE变为低电平,低8位地址被锁存.
PSEN变为低电平,存储器送出物理单元0100H的内容23H,该数据通过P0进入内部数据总线.
PSEN送1,内部数据总线上的数据累加器中.程序片段我们就运行到此从上运行过程我们看出,逻辑地址01OOH和2100H对应的是同一物理存储对单元,关于多个逻辑地址对应一个物理单元的问题我们今后再讲,单片程序存储器的扩展就学到这里.

    推荐阅读