程序存储器ROM的扩展数据存储器RAM的扩展51单片机存储器扩展与编址技术第章外部存储器扩展本章内容SingleChipMicrocomputer系统扩展概述系统总线地址总线数据总线控制总线由P2口提供高8位地址线,此口具有输出锁存的功能,能保留地址信息。由P0口提供低8位地址线。由P0口提供。此口是双向、输入三态控制的8位通道口。ALE:地址锁存信号,用以实现对低8位地址的锁存。:片外程序存储器取指信号。:片外数据存储器读信号。:片外数据存储器写信号。RDWRPSEN5.1系统扩展概述单片机的3总线结构形式51单片机P0口是数据线和低8位地址线复用口,为了将它们分离出来,需要外加地址锁存器,从而构成与一般CPU相类似的片外三总线,见下图。9.2存储器扩展编址技术存储器扩展的核心问题是存储器的编址问题。所谓编址就是给存储单元分配地址。也就是将地址线进行适当连接,使得存储器中每一个存储单元唯一的对应一个地址。编址技术有两种方法:线选法和译码法。1.线选法所谓线选法,用低位地址线直接连至各芯片的地址线,用余下的高位地址线分别接至芯片的片选端,以区分各芯片的地址范围。优点:电路简单,不需要地址译码器硬件,体积小,成本低。缺点:可寻址的芯片数目受到限制,地址空间不连续。例1:在8051单片机上扩展2KRAM..D7Q7373D0GQ0A10A8A7A06116D7D0RDWRCEP2.2P2.0P0.78051P0.0ALERDWRP2.7例2:扩展三片2K存储芯片,试用线选法给出接线图和地址。分析:显然要11根地址线和3根片选线,分配如下低位地址线:P0.7~P0.0--A7~A0,P2.2~P2.0--A10~A8,合成11根地址线;高位地址线:P2.5、P2.4、P2.3--A13、A12、A11,作3片的片选,余下:P2.7、P2.6不用,取00扩展接线结构图编址:P2.7、P2.6、P2.5、P2.4、P2.3、P2.2、P2.1、P2.0P0.7~P0.01号片0011000000H00110111FFH2号片0010100000H00101111FFH3号片0001100000H00011111FFH显然,三片的地址范围是:1号片3000H~37FFH2号片2800H~2FFFH3号片1800H~1FFFH线选法优点:电路简单,不需要地址译码器硬件,体积小,成本低。缺点:可寻址的芯片数目受到限制,地址空间不连续。2.译码法所谓译码法就是将低位地址线直接连至各芯片的地址线,将高位地址线经地址译码器译码后作为各芯片的片选信号。译码法分为完全译码和部分译码两种。常用的译码器芯片:74LS138(3-8译码器)74LS139(双2-4译码器)74LS154(4-16译码器)。完全可根据设计者的要求,产生片选信号。例如:在上例中若扩展三片2K存储芯片,采用译码法如何实现?低位地址线:同前P0口A7~A0,P2口A10~A8,合成作为11根地址线选3/8译码器进行译码高位地址线:P2口A13、A12、A11,作为译码器输入,利用3/8译码输出端Y0、Y1、Y2三个信号作为3片芯片的片选,实际上可选8片,本例只需3片3-8地址译码器:74LS138扩展接线结构如图:P2.5P2.3P2.4编址:P2.7、P2.6、P2.5、P2.4、P2.3、P2.2、P2.1、P2.0P0.7~P0.01号片0000000000H00000111FFH2号片0000100000H00001111FFH3号片0001000000H00010111FFH显然,三片的地址范围是:1号片0000H~07FFH2号片0800H~0FFFH3号片1000H~17FFH地址译码关系图即一种用简单的符号来表示全部地址译码关系的示意图。例如:XXXXXXXXXXX0010.A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0从地址译码关系图上可以看出以下几点:①属完全译码还是部分译码;②片内译码线和片外译码线各有多少根;③所占用的全部地址范围为多少。例如在上面的关系图中,有1个“·”(A15不接),表示为部分译码,每个单元占用2个地址。片内译码线有11根(A10~A0),片外译码线有4根。其所占用的地址范围如下:9.2扩展存储器编址技术当A15为0时,所占用地址为0010000000000000~0010011111111111,即2000H~27FFH。当A15为1时,所占用地址为1010000000000000~1010011111111111,即A000H~A7FFH。共占用了两组地址,这两组地址在使用中同样有效。9.2扩展存储器编址技术9.3程序存储器的扩展1.程序存储器扩展用典型芯片2764CEA12~A0:13位地址线。D7~D0:8位数据线。:片选信号,低电平有效。:输出允许信号,当它为“0”时,输出缓冲器打开,被寻址单元的内容被读出。OE图22764引脚图1)不用片外译码的单片程序存储器的扩展。例1:试用EPROM2764构成8031的最小系统。解:由于8031无片内程序存储器,因此必须外接程序存储器以构成最小系统。其连接方法是将2764按3总线的要求连接,其连接的关键在于地址译码。由于一般所采用的芯片其字节数均超过256个单元,也就是说片内地址线超过8条,故地址译码的核心问题是高8位地址线的连接。2.程序存储器扩展举例9.3程序存储器的扩展2764与8031的连接图2)采用线选法的多片程序存储器的扩展例2:在图4所示的连接图中,使用了两片2764,一共构成了8K×2=16K的有效地址。现采用线选法编址,以P2.7(A15)直接作为片选信号,当P2.7=0时,选中左边1片2764,其地址范围为0000H~1FFFH;当P2.7=1时,选中右边1片2764,其地址范围为8000H~9FFFH。这是部分译码,有2根地址线未接,1个单元要占用4个地址号。以上只是4组地址中的1组。2.程序存储器扩展举例5.3程序存储器的扩展图4两片程序存储器扩展连接图3)采用地址译码器的多片程序存储器的扩展例3:要求用2764芯片扩展8031的片外程序存储器空间,分配的地址范围为0000H~3FFFH。解:本例采用完全译码的方法,即所有地址线全部连接,每个单元只占用唯一的1个地址。①确定片数:字片数为字片数=(末地址-首地址)+1芯片字数=(3FFFH-0000H)+12000H=4000H2000H=2(片)2.程序存储器扩展举例5.3程序存储器的扩展位片数为:位片数=单元位数芯片位数=88总片数=字片数×位片数=2×1=2(片)②分配地址范围:第1组(1片)所占用的地址范围为:0000000000000000=0000H……0001111111111111=1FFFH第2组(1片)所占用的地址范围为:00100000000000002000H……00111111111111113FFFH3)采用地址译码器的多片程序存储器的扩展2.程序存储器扩展举例5.3程序存储器的扩展③画出地址译码关系图:第1组P2.7P2.6P2.5P2.4P2.0P0.7P0.0(A15)(A14)(A13)(A12)(A8)(A7)(A0)XXXXXXXXXXXXX000XXXXXXXXXXXXX100第2组3)采用地址译码器的多片程序存储器的扩展2.程序存储器扩展举例5.3程序存储器的扩展④设计外译码电路:本例只介绍采用译码器芯片的设计方法,现采用3-8译码器74LS138。片外译码只有3根线(P2.7,P2.6,P2.5),分别接至译码器的C、B、A输入端。控制端G1,,不参与译码。2GA2GB⑤画出存储器扩展连接图:该连接图如图5所示。图中3-8译码器74LS138只用了两个译码输出端,如果需要的话,还可利用其余6个译码输出端。3)采用地址译码器的多片程序存储器的扩展2.程序存储器扩展举例5.3程序存储器的扩展图5采用地址译码器扩展程序存储器的连接图1.数据存储器扩展用典型芯片62646264是8K×8位的静态数据存储器芯片,采用CMOS工艺制造,为28引脚双列直插式封装。9.4数据存储器扩展图6为外扩1片6264的连接图。采用线选法,将片选信号与P2.7相连,片选信号CE2与P2.6相连。其地址译码关系为:所占用的地址为:第1组4000H~5FFFH(A13=0)第2组6000H~7FFFH(A13=1)XXXXXXXXXXXXXX10A15A14A13A12A11A10A01CE2.数据存储器扩展举例9.4数据存储器扩展图6扩展1片RAM6264的连接图EPROM扩展实例----在8031单片机上扩展4KBEPROM...D7Q7373D0Q0G控制线A11A8A7A02732O7O0OECE``````P2.3P2.0P0.78031P0.0ALEPSEN``````12根地址线8根数据线