配色: 字号:
51单片机存储器扩展(Intel总线)
2014-04-05 | 阅:  转:  |  分享 
  
51单片机如何扩展外部存储器:(Intel总线的应用)

前言:INTERLBUS和MOTOROLABUS实际是指微控制器外部的控制总线(配合地址、数据总线完成总线操作)主要是针对于外部的存储

器或者带多个寄存器的IO设备的。INTERBUS和MOTOROLABUS都是并行通信。INTERBUS典型应用8051单片机外部存储器扩展,MOTOROLABUS的

典型应用是1602LCD等。

NOTE:对于整个实现过程来说,其由51MCU自动来完成的,而不是通过人来模拟。

1,扩展存储器的最大空间(64KB)

1>对于51单片机来说,访问程序存储器(FLASH):通过程序计数器来访问(PC),而PC是16位的寄存器,所

以作为地址总线时候最大访问的空间为2^16B=2^102^6B=64KB

2>对于51单片机来说,访问数据存储器(RAM):通过数据指针DPTR寄存器来访问的,而DPTR是16位的寄存

器,所以同样作为地址总线时候最大的访问空间可达2^16B的空间,即64KB

2,51单片机扩张存储器时相关引脚配置:

51单片机的整个扩展系统可以抽象总结如下:

以单片机为核心,通过单片机外部总线把扩展部件连接起来,由于P0既要提供低八位地址总线A0~A7,

还要做数据总线接口,所以P0口只能分时用作地址线,所以由P0口输出的低8位地址必须用锁存器锁存。

1

1>

EA

/VPP:(ExternalAccessEnable):

当该位为1时,即该端接+5V电压时,当单片机复位后会自动到片内程序存储器中执行程序,当

片内的执行完了之后会自动跳到片外程序存储器中执行;当该位为0,即该段接GND时,单片机在上电后直接到片外程序存储

器中去执行,而根本不会执行片内程序存储器中的程序。

2>

PSEN

(ProgramStoreEnable):程序存储使能,

2

当使用片外程序存储器时,该端必须和存储器的输出使能端

OE

相连,只有通过该端输出低电平,才能使能片外存储器使能端

OE

,如此存储器才会从数据线DQ0~DQ7输出,而有单片机的P0读入。

3>ALE/

PROG

:(AdressLatchEnable):地址锁存使能,

当P0上出现的是数据时,单片机会自动使ALE/

PROG

=0,这样锁存器使能端LE为低电平,锁存器输入端D1~D8的数据不能到达

输出端Q1~Q8.于是P0的数据与存储器的数据线DQ0~DQ8进行交换。

当P0上出现的是地址时,单片机会自动的使ALE/

PROG

=1,这样,锁存器的锁存使能端LE为高电平,锁存器输入端D1~D8的数

据顺利通过并达到输出端Q1~Q8。这就是访问片外存储器中的低8位地址A0~A7.再加上单片机P2同时输出的高位地址A8~Ax,存储器就得到

了x+1位的地址信号,接下来就可以对该地址的数据进行访问了。

4>

RD



WR



在扩展程序存储器时,

OE

(输出使能端)——>

PSEN

(两者相连)



CE

(器件使能端)——>

PSEN

(两者相连)



WE

(写操作使能端)——>悬空

在扩展数据存储器时,

OE

(输出使能端)—>

RD

(单片机片外数据存储器读控制端)



WE

(写操作使能端)—>

WR

(单片机片外数据存储器写控制端)



CE

(器件使能端)—>P2.7(在P0和P2输出地位和高位地址同时P2.7输出低电平,进而使能片外存储器)

3,74HC573基本原理以及结构

1>真值表和引脚图,asbelow:

2>相关说明:

3

主要功能:实现1Byte的数据锁存

实现过程:

当E端为即输出使能端为高电平时,输出为高阻态,与L端和输入无关

当E为低电平,L为高电平时,74HC573为直通状态,即任何输出数据都等于输入数据

当E为低电平,L为低电平时(即L端有下降沿发生时),数据锁存,任何时刻的数据都等于内部数据保持器的数据,而跟输

入数据没有关系

4,以AT/STC(5x)单片机、74HC573锁存器、62256(32KBSRAM)数据存储器为例对INTREL

BUS进行举例

1>,62256的引脚图

2>62256功能说明:32KB的SRAM

3>62256引脚说明:共28个引脚。15个地址线:A0~A14;8个数据线:I/O1~I/O8;

OE



WE



CE

:分别为:输出使能端,写

使能端,器件使能端;VCC,VSS:分别为电源和地引脚

4>62256时序图

a>读时序图

4

时序分析:由于时序的时间轴都是从左往右执行,所以整个执行过程如下

(1)在初始阶段,即没有进行读写操作之前,地址总线空闲,数据总线呈高阻态,

(2)当需要读取62256内部某寄存器的值的时候,首先第一步写入地址;然后第二步

CS

端有高电平变为低电平,选中该器

件;第三步,

OE

输出使能端也由高电平变为低电平,输出使能,在经过一段时间的等待延时(其实是SRAM的时钟周期)之

后,数据总线由高阻态变为数据线,将对应地址寄存器内容经过数据总线输出

(3)当数据被读出时,然后第一步

OE

输出使能端有低电平变为高电平,输出禁止,之后第二步,

CS

器件使能端由低电平变

为高电平,器件被禁止,整个读时序结束

b>写时序图

时序分析:整个时序过程类似于读时序

(1)第一步给出需要操作的地址,然后

CS

由高电平变为低电平,该器件被使能;然后

WE

由高电平变为低电平,写操作使

能,此时意味着可以向SRAM写入数据

(2)当写操作使能后,向数据总线写入数据,在

WE



CS

有高电平变为低电平之前的一瞬间,哐当将数据总线内部的数据映

射到相应的地址单元,写时序就此结束

5>具体举例说明,电路原理图如下:

5

a>Intel总线写时序

时序分析(注意多观察时序图中用彩线勾勒出的地方)

(1)||ALE(51的地址锁存使能端)-->L(74HC573锁存端)||

||P0(51单片机P0口)-->A0~A7(地址总线低八位通过锁存器锁存)||

||

WR

(单片机片外存储器写数据控制端P3.6)-->

WE

(62256写入使能端)||

||

RD

(单片机片外存储器读数据控制端P3.7)-->

OE

(62256读使能端)||

6

||P0(51单片机P0口分时做数据总线)-->AD0~AD7(62256数据口I/O1~I/O8)||

||P2(51单片机P2口)-->A8~A15(地址总线高8位)||

||P2.7(A15)-->62256的片选控制端||

时序前言:ALE为高电平,对应的74HC573锁存器的L端就为高电平,P2.7(A15)为低电平使得对应的62256的

CE

端为

低电平,使得片选有效。所以此时74HC573出于直通状态,然后将P0(此时P0口为地址总线的低8位,在时序途中是A0~A7)

低8位地址数据发送到锁存器,然后接下来的时序如上,具体过程如下。

(2)step1:首先ALE由高电平变为低电平,即产生一个下降沿,从而使得锁存器锁存低8位的地址数据,而高8位地址数据

通过P2写入

step2:

WR

有高电平变为低电平,对应62256的

WE

由高电平变为低电平,进而62256的写操作使能,意味着此时可以等

待单片机写入数据(

RD

在整个过程中都出于高电平)

step3:通过第二步的操作,此时就可以写入数据,通过P0(AD0~AD7,在时序图中是D0~D7)写入到62256的I/O1~I/O8

step4:当

WR

在有低电平变为高电平之前的一瞬间,P0口的数据哐当映射相应的地址单元同时ALE由低电平变为高电

平,至此整个写时序结束

b>Intel总线读时序

时序分析(注意多观察时序图中用彩线勾勒出的地方)

(1)||ALE(51的地址锁存使能端)-->L(74HC573锁存端)||

||P0(51单片机P0口)-->A0~A7(地址总线低八位通过锁存器锁存)||

||

WR

(单片机片外存储器写数据控制端P3.6)-->

WE

(62256写入使能端)||

||

RD

(单片机片外存储器读数据控制端P3.7)-->

OE

(62256读使能端)||

||P0(51单片机P0口分时做数据总线)-->AD0~AD7(62256数据口I/O1~I/O8)||

||P2(51单片机P2口)-->A8~A15(地址总线高8位)||

7

||P2.7(A15)-->62256的片选控制端||

时序前言:ALE为高电平,对应的74HC573锁存器的L端就为高电平,P2.7(A15)为低电平使得对应的62256的

CE

端为

低电平,使得片选有效。所以此时74HC573出于直通状态,然后将P0(此时P0口为地址总线的低8位,在时序途中是A0~A7)

低8位地址数据发送到锁存器,然后接下来的时序如上,具体过程如下。

(2)step1:首先ALE由高电平变为低电平,即产生一个下降沿,从而使得锁存器锁存低8位的地址数据,而高8位地址数据

通过P2写入

step2:

RD

由高电平变为低电平,对应62256的

OE

由高电平变为低电平,进而62256的读操作使能,意味着此时单片机

可以等待读入数据(

WR

在整个过程中都处于高电平)

step3:通过第二步的操作,此时就可以读入数据,当

RD

产生一个上升沿时,62256对应地址内的数据通过P0口就可

以将数据读入,整个读时序结束

8

献花(0)
+1
(本文系Transistor2...首藏)