《单片机山大第6章单片机总线与存储器的扩展.ppt》由会员分享,可在线阅读,更多相关《单片机山大第6章单片机总线与存储器的扩展.ppt(52页珍藏版)》请在三一办公上搜索。
1、第6章 单片机总线与存储器的扩展,单片机原理、接口及应用,内 容 提 要,单片机系统总线和系统扩展方法 程序存储器的扩展 数据存储器的扩展*新型存储器扩展 小结,MCS-51系列单片机的特点就是体积小,功能全,系统结构紧凑,硬件设计灵活。对于简单 的应用,最小系统即可满足要求。所谓最小系统是指在最少的外部电路条件下,形成一个可独立工作的单片机应用系统。一片89C51,或者一片8031外接一片 EPROM就构成了一个单片机最小系统。在很多复杂的应用情况下,由于单片机内的RAM,ROM 和 I/O接口数量有限,不够使用,这种情况下就需要进行扩展。因此单片机的系统扩 展主要是指外接数据存贮器、程序存
2、贮器或I/O接口等的扩展,以满足复杂应用系统的需要。,6.1单片机系统总线和系统扩展方法,单片机是通过地址总线,数据总线和控制总线(三总线)与外部交换信息的。MCS-51单片机的总线接口信号见图,由图可见:1)由于P0口分时传送地址/数据信息,在接口电路中,通常需配置地址锁存器,由ALE信号锁存低8位地址A0A7,以分离地址和数据信息。2)P2口传送高8位地址A8A15。3)PSEN为程序存储器的控制信号,在取指令 码时或执行MOVC指令时变为有效。RD、WR为 数据存储器和I/O口的读、写控制 信号。在执行MOVX指令时变为有效。,系统扩展的连线原则:系统的扩展归结为三总线的连接,连接的方法
3、很简单,连线时应遵守下列原则:1.连接的双方,数据线连数据线,地址线连地址线,控制线连控制线。控制线连接时要特别注意的是:程序存储器接PSEN(读);数据存储器接RD和WR2.控制线相同的,其地址线不能相同;地址线相同的,其控制线不能相同!否则,出现冲突3.片选信号有效的芯片才被选中工作,当一类芯片仅有一片时片选端可直接接地,当同类芯片多片时片选端可通过线译码、部分译码、全译码方式接地址线(通常是高位地址线),在单片机中多采用线选法。,6.1.2 系统扩展的方法 通常,与计算机接口的专用芯片也具备三总线引脚,即数据线、地址线和读、写控制线,此外,还有片选线。其中,地址线的根数因芯片不同而不同,
4、取决于片内存储单元的个数或I/O接口内寄存器(又称为端口)的个数,N根地址线和单元的个数的关系是:单元的个数。CPU、MCU和这些芯片的连接的方法是:对应的线相连。规律如下:数据线的连接:外接芯片的 数 据 线D0-D7接 单片机的数据线D0-D7。对于并行接口,数据线通常为8位、各位对应连接就可以了。,控制线的连接 外接程序存储器:由于程序存储器只读,通常使用的状态就是读操作,。由于PSEN 为程序存储器的选通控制信号,因此,单片机的 PSEN 应连接ROM的输出允许端OE;外接数据存储器和I/O口:由于数据存储器可读可写,而RD(P3.7)和WR(P3.6)为数据存储器(RAM)及I/O口
5、的读写控制信号,因此单片机的RD应连接扩展芯片的OE(输出允许)或RD端,单片机的WR应连接扩展芯片的WR或WE端。,地址线的连接 如前面所述,与计算机接口的专用芯片会有N根地址线引脚,用于选择片内的存储单元或端口,称为字选或片内选择;为区别同类型的不同芯片,外围芯片通常都有一个片选引脚,仅当该引脚为有效电平时(通常为低电平),该芯片才被选中。一个芯片的某个单元或某个端口的地址由片选地址和片内字选择地址共同组成,因此字选和片选引脚均应接到单片机的地址线上。连线的方法是:字选:外围芯片的字选(片内选择)地址线引脚直接接单片机的从A0开始的低位地址线,片选:片选引脚的连接方法有三种:1)片选引脚接
6、单片机用于片内寻址剩下的高位地址线的某根;此法称为线选法,或称线译码。用于外围芯片不多的情况,是最简单,最低廉的连接方法。见左图2)片选引脚接对高位地址线进行译码后的输出。译码可采用部分译码或全译码法,所谓部分译码就是用片内寻址剩下的高位地址线中的几根进行译码,所谓全译码就是用片内寻址剩下的所有的高位地址线进行译码。该法的缺点是要增加地址译码器。全译码法的优点是地址唯一。见左图,3)片选端直接接地。当接入单片机的某类芯片仅一片时,片选端可直接接地,使它始终处于选中状态。此法可用于最小系统。见图6-2(c),系统扩展的原则是,使用相同控制信号的芯片之间,不能有相同的地址;使用相同地址的芯片之间,
7、控制信号不能相同!,6.1.3 地址译码器1使用逻辑门译码 设某一芯片的字选地址线为A0-A11(4KB容量),使用逻辑门作地址译码,其输出接芯片片选CE,电路见图6-3,字选地址线直接接CPU的地址线A0-A11。图(a)是用混合逻辑表示输入和输出的逻辑关系,小圈表示低电平有效(取反);图(b)是用正逻辑表示的电路,该逻辑关系需用两个非门和一个与非门实现,。通常,计算机电路中用简洁、直观的混合逻辑表示输入和输出的逻辑关系。,该芯片的地址排列如下:片 选 字 选 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 1 1 0 0 0
8、0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 地址范围:6000H-6FFFH,例1 计算下列全译码电路中存储器的地址范围:,例2 计算下列线译码(线选法)电路中存储器的地址范围:当P2.4=1时,CE2=0当P2.4=0 时,CE1=0字选地址依然为A11A0,地址排列如下:,2利用译码器芯片进行地址译码 常用的译码芯片有 74LS139(双2-4译码器):两个 2入4出 74LS138(3-8译码器):一个 3入8出 74LS154(4-16译码器):一个 4入16出 等下面仅介绍74LS138译码器。,74LS138是3-8译码器
9、,它有3个输入端、3个控制端及8个输出端,引线及功能如图6-5所示。74LS138译码器只有当控制端G1、G2A、G2B为100时,才会在输出的某一端(由输入端C、B、A的状态决定)输出低电平信号,而其余的输出端均为高电平。,例3 用8K8的存储器芯片组成容量为64K8的存储器试问:共需几个芯片?共需多少根地址线寻址?其中几根作字选线?几根作片选线?若用74LS138作地址译码,试画出译码电路,并标出其输出线的选址范围。若改用线选法能够组成多大容量的存储器?试写出各线选线的选址范围。解(64K8)(8K8)=8,即共需要8片8K8的存储器芯片。64K=65536=,所以组成64K的存储器共需要
10、16根地址线寻址。8K=8192=即13根作字选线,选择存储器芯片片内的单元。16-13=3 即3根作片选线,选择8片存储器芯片。,解 8K8芯片有13根地址线A12A0为字选,余下的高位地址线是A15A13,所以译码电路对A15A13进行译码,译码电路及译码输出线的选址范围如图9-6所示.,C B A 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 0000HY0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1FFFH 0 0 1 0 0 0 0 0
11、 0 0 0 0 0 0 0 0 2000HY1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3FFFH 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 E000H Y7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 FFFFH,显然,采用全译码法充分发挥了地址线的寻址潜力。解 改用线选法A15A13 共3根地址线各选一片8K8的存储器芯片,此时,只能接3个芯片,故仅能组成容量为24K8的存储器,A15 A14 A13所选芯片的地址范围分别为:A15 6000H7FFFH:A15=0,A14=A13=1A14 A000HBFFFH:A14=
12、0,A15=A13=1A13 C000HDFFFH:A13=0,A15=A14=1显然,采用线选法不能发挥地址线的寻址潜力!,6.2 程序存储器的扩展,6.2.1 EPROM的扩展,程序存储器扩展电路的设计应满足单片机从外部存取指令的时序要求。从时序图中分析ALE、PSEN、P0和P2怎样配合,使程序存储器完成取指操作,从而得出扩展程序存储器的方法。单片机一直处于不断的取指令码执行取指令码执行的工作过程中,在取指令码时和执行MOVC指令时,PSEN会变为有效,与其它信号配合,以完成从程序存储器读取数据的操作。,一个机器周期,根据以上取指时序的要求,8XX51单片机扩展程序存储器2732(4K
13、8)的电路图如下图所示(p144),图中,74LS373为8D锁存器,其主要特点在于:控制端为高电平时,输出Q0Q7将复现输入D0D7的状态;G为下跳沿时D0D7的状态被锁存在Q0Q7上。当把ALE与G相连后,ALE的下跳沿正好把P0端口上此时出现的PC寄存器指示的低8位指令地址A0A7锁存至74LS373的Q0Q7上,PC的高4位地址A8A11则直接由P2.0P2.3提供。,由于只扩展了一片2732 EPROM,因此2732的片选端直接接地。PSEN与2732的输出允许信号OE相连,PSEN 在低电平时将使OE有效,以打开2732中由A0A11指定的地址单元,该单元中的指令码从2732的O0
14、O7输出,被正好处于读入状态的P0端口输入到单片机内,经CPU译码执行。这就是从外存指定地址单元中取出 指令并加以执行的整个过程。,单片机扩展2716,2764,27128等EPROM的方法与图9-3相同,差别仅在于不同芯片的存储容量有所不同,因而使用高8位地址的P2端口线的根数也不同。扩展2716(2KB)需使用A8A10 三条高位地址线。扩展2764(8KB)需要A8A12 五条高位地址线。扩展27128(16KB)时 需要A8A13六条高位地址线。这是因为 存储器容量=2N,N为地址线的根数。注意:2764和27128在正常工作时(即处于读状态),其PGM和Vpp引脚均应接Vcc。,6.
15、2.2 EEPROM的扩展,1.电可擦除只读存储器EEPROM的性能 电可擦除只读存储器EEPROM即可像EPROM那样长期非易失地保存信息,又可像RAM那样随时用电改写,近年来出现了快擦写FLASH EEPROM,它门被广泛用作单片机的程序存储器和数据存储器。目前,常用的EEPROM如表6-1,它们有如下共同特点:*单+5V供电,电可擦除可改写。*使用次数为1万次,信息保存时间为10年。*读出时间为ns级,写入时间为ms级。*芯片(某些)引脚信号与相应的RAM和EPROM芯片兼 容,见表6-1。,EEPROM的使用非常简单方便。不用紫外线擦除,在单一的+5V电压下写入的新数据即覆盖了旧数据。
16、下面以2864为例说明EEPROM和单片机的连接方法。,2864为8KB EEPROM维持电流为60mA,典型读出时间为200350ns,字节编程写入时间为1020ms,芯片内有电压提升电路,编程时不必增高压,单一+5V供电即可。引脚和6264,2764兼容,引脚配置见图9-4。8XX51扩展2864硬件电路如图9-5所示。图中2864即可作为数据存储器,有又可作为程序存储器。由于只扩展了一片,片选端接地。,图 6-4,6.2.3 FLASH 存储器,FLASH存储器是高性能EEPROM,现正在逐步取代EEPROM。FLASH为电擦除/电写入的程序存储器(ROM),其擦除分为扇区(页)擦除和芯
17、片擦除,且具有写保护功能,CPU需执行 按照专门的规范所书写的程序才能实现对FLASH的编程(即写入)。编程的过程为:先擦除再写入。擦除时间和写入时间均为ms级;读出时间为ns级。EEPROM与FLASH的区别:FLASH的速度更快,性能更优!虽然EEPROM/FLASH与RAM跟CPU的连接方法类似,但CPU对EEPROM/FLASH的写 跟CPU对RAM的写有很大差异。,6.3 数据存储器的扩展,MCS-51单片机内只有128字节的数据RAM,当应用中需要更多的RAM时,只能在片外扩展。可扩展的最大容量为64KB。图9-6是单片机对片外RAM进行读操作的时序。当执行指令 MOVX A,Ri
18、 或 MOVXA,DPTR 时进入外部数据RAM的读周期。,1.外部数据RAM的读周期时序,在ALE的上升沿,把外部程序存储器的指令读入后(即先取指令,再执行指令)就开始了对片外RAM的读过程。ALE高电平期间,在P0处于高阻三态后,根据指令 间址提供的地址,P2口输出外部RAM的高8位地址A15A8,P0端口输出低8位地址A7A0;在ALE下跳沿,P0输出的低8位地址被锁存在锁存器中,随后P0又进入高阻三态,RD信号有效后,被选中的RAM的数据出现在数据总线上,P0 处于输入状态,CPU从P0 读入外部RAM的数据。,2.外部数据RAM的写周期 当执行MOVX Ri,A 或 MOVX DPT
19、R,A指令时进入外部数据存储器的写周期,其写周期时序如下:,写外部RAM的操作时序与读外部RAM的时序差别在于:其一,WR有效代替RD有效,以表明这是写数据RAM的操作;其二,在P0输出低8位地址A0A7后,P0立即处于输出状态,提供要写入外部RAM的数据,WR=0时,将数据写入外部RAM,。,由以上时序分析可见,访问外部数据RAM的操作与从外部程序存储器取指令的过程基本相同,只是前者有读有写,而后者只有读而无写;前者用RD或WR选通,而后者用PSEN选通;后者,在一个机器周期中ALE总是两次有效,用于锁存被寻外部ROM单元的低8位地址。前者,在一个机器周期中ALE是一次有效,因此,不难得出5
20、1单片机和外部RAM的连接方法。,8XX51单片机扩展8KB静态RAM 6264的电路见下图。,由图9-8可见,ALE把P0端口输出的低8位地址A0A7锁存在74LS373,P2口的P2.0P2.4直接输出高5位地址A8A12,由于单片机的RD和WR分别与6264的输出允许OE和写信号WE相连,执行读操作指令时,RD使OE有效,6264(RAM)被指定地址单元的数据经D0D7由P0 口读入;执行写指令时,WR使WE有效,由P0口提供的要写入RAM的数据经D0D7写入6264的指定地址单元中。单片机8XX51读写外部数据RAM的操作使用MOVX指令,用 Ri 间址或用 DPTR 间址。,要把A累
21、加器中内容写入外部数据RAM的1050H地址单元,其程序可为:MOV P2,#10H MOV R1,#50H MOVX R1,A 或 MOV DPTR,#1050H MOVX DPTR,A,例如,将外部数据RAM的1050H地址单元中的内容读入A累加器,可有如下两种程序。第一种 MOV P2,#10H;端口提供高8位地址 MOV R1,#50H;Ri提供低8位地址 MOVX A,R1第二种 MOV DPTR,#1050H MOVX A,DPTR;DPTR提供16位地址,MCS-51系列单片机中的数据存储器和程序存储器在逻辑上是严格分开的,在实际设计和开发单片机系统时,程序若放在RAM,可方便调
22、试和修改,为此需将程序存储器和数据存储器混合使用。在硬件上将RD信号和PSEN相“与”后连到RAM的读选通端OE即可以实现,见图9-9。,程序存储器和数据存储器混合使用,当执行MOVX指令时产生RD读选通信号使OE有效,当执行该RAM中的程序时,由PSEN信号也使OE有效,选通RAM,读出其中的机器码。WR信号依然连接RAM的WE端。,图9-9,6.4 新型存储器扩展(双口RAM、FIFO),6.4.1 双口RAM简介 双口RAM是具有两个数据出、入口SRAM,适用于单片机与单片机、单片机与PC机之间大量数据的高速随机双向传送,以实现双CPU系统的隔离与匹配。下面以IDT公司的的双口RAM 7
23、132为例说明它的使用。IDT7132是一种高速2K8 bit CMOS双端口静态RAM,每一端口有一套控制线、地址线和双向数据线引脚,两端口可独立地读、写存储器中的任何单元。每个端口的使用和普通静态RAM基本相同。为防止读写数据冲突,IDT7132内部带有硬件端口总线仲裁电路,提供了BUSY总线仲裁方式,可以允许双机同步地读或写存储器中的任何单元 IDT7132有多种封装形式,其双列直插式封装的管脚图如图6.19所示,非竞争的读写控制如表6.1所示。,6.19 T7132管脚图和读写控制,表6.1 7132非竞争的读写控制,各引脚功能如下:A0LA10L、A0RA10R分别为左、右端口的地址
24、线I/O0L I/O7L I/O0R I/O7R分别为左、右端口的数据线D0D7 CEL、CER分别为左、右端口的片选线,低电平有效OEL、OER分别为左、右端口的输出允许线,低电平有效R/WL、R/WR分别为左、右端口的读写控制信号,高电平时为读,低电平时为写BUSYL、BUSYR 分别为左、右端口状态信号,用来解决两个端口的访问竞争。同时两端口同时访问同一地址单元时,就产生了竞争。竞争的解决由片内的仲裁逻辑自动完成。仲裁为延时后访问的端口的“BUSY”则呈现低电平,此时对该端口的访问是无效的。只有等到BUSY变为高电平后才能对其进行操作。,6.4.2 双口RAM与单片机的接口,IDT713
25、2时序与Intel公司的单片机系统兼容,可直接和8XX51单片机接口。IDT7132与两片80C51(89C51/89S51亦然)构成的主从系统的接口电路如图6.20所示。其中,7132左右端口的BUSY管脚分别接主、从89C51单片机的中断管脚(中断方式)(也可采用查询方式接I/O引脚)。在发生竞争时,被仲裁为延时访问的端口所对应的单片机应暂停访问双口RAM,待该侧BUSY脚信号无效以后,再继续访问所选单元。(注意,BUSY为开漏输出,需要外接上拉电阻。),图6.20 IDT7132与89C51的接口电路,采用查询访问方式的的程序如下:MOV DPTR,Addr16;将要访问的地址单元送至D
26、PTRAGAIN:MOVX DPTR,A;写双口RAM,假设要写的 数据放在A中MOVX A,DPTR;读双口RAMJNB P3.3,CONT;操作有效,继续执行WAIT:JNB P3.3,WAIT;竞争延时,等待INT1脚为高电平SJMP AGAIN;重新操作CONT:;执行后续程序若以中断方式访问,通常是成块交换数据。主程序中访问双口RAM如同读写外部数据SRAM一样。在中断服务程序则完成发生竞争延时出错的处理,设定出错标志位,通知主程序重新传送即可。,6.4.3 异步FIFO简介,在现代的集成电路芯片中,随着设计规模的不断扩大,一个系统中往往含有数个时钟。多时钟域带来的一个问题就是,如何
27、设计异步时钟之间的接口电路。异步FIFO(First In First Out)是解决这个问题一种简便、快捷的解决方案。使用异步FIFO可以在两个不同时钟系统之间快速而方便地传输实时数据。在网络接口、图像处理等方面,异步FIFO得到了广泛的应用。异步FIFO是一种先进先出的电路,使用在需要产时数据接口的部分,用来存储、缓冲在两个异步时钟之间的数据传输。IDT7203是一款常用的9位异步FIFO,其DIP封装的引脚如图6.21所示。,引脚功能说明如下。D0D8 9位数据输入引脚。在8位数据宽度的单片机系统中,另一位可以不用或用于奇偶校验。Q0Q8 9位数据输出引脚。RS 复位信号,低电平有效。W
28、 写允许信号,低电平有效。一般由片选和总线写信号组合而成。R 读允许信号,低电平有效。一般由片选和总线读信号组合而成。,图6.21 IDT7203管脚图,H/RI 双功能输入脚,低电平有效。在存储容量扩展模式(Depth Expansion)下,FL为低电平表示第一片FIFO。在单器件模式(Single Device Mode)下,RT为低时表示数据重传。XI 双功能输入脚。在单器件模式下,该引脚接地。在存储容量扩展模式下,该引脚应该接前一FIFO的脚。FF FIFO存储器满标志信号,输出,低电平有效。EF FIFO存储器空标志信号,输出,低电平有效。X/H 双功能输出引脚,低电平有效。在单器
29、件模式下为 存储器的半满状态输出信号;在存储容量扩展模式下,该引脚应该接下一FIFO的脚,6.4.4 异步FIFO与单片机的接口,异步FIFOIDT7203与51单片机的接口电路如图6.5所示。IDT7203工作在单器件方式,1单片机对其进行写数据,2单片机对其进行读数据。1#机以P2.7作为IDT7203的片选信号,2#机以P2.6作为IDT7203的片选信号,低电平有效,简单的读写程序如下。1机写程序 MOV DPTR,#7FFFH;取FIFO的片选地址为7FFFH WAIT:JNB P1.6,WAIT;等待FIFO可写,为非满状态 MOVX DPTR,A;写FIFO,设数据在A中,2机读
30、程序MOV DPTR,#3FFFH;取FIFO的片选地址为3FFFHJNB P1.6,CONT;FIFO无数据可读,执行其它程序MOVX A,DPTR;FIFO非空,从FIFO读出一字节的数 据放入A中CONT:,图6.23 IDT7203与51单片机的接口电路原理图,6.5 小结,单片机应用系统的设计中如果片内的资源不够,就需要扩展,扩展无非是加接ROM、RAM和I/O接口等外围芯片。本章重点要掌握单片机扩展的方法及地址的译码。1.外围芯片和单片机的连接归结为三总线(数据总线、地址总线和控制总线)的连接,因此 单片机三总线的定义应十分熟悉,即要求掌握图6.1,这是扩展的基础。2.在微机系统中
31、,控制外围芯片的数据操作有三要素:地址、类型控制(RAM、ROM)和操作方向(读、写)。三要素中有一项不同,就能区别不同的芯片。如果三项都相同,就会造成总线操作混乱。因此在扩展中应注意:(1)扩展ROM程序存贮器使用PSEN作选通控制,扩展RAM和I/O接口使用WR(写)和RD(读)作选通控制,RAM和I/O口使用相同的指令MOVX进行控制。如果将RAM(或EEPROM)即作为程序存贮器又作为数据存贮器使用,即存放可随时修改的程序时,使PSEN和RD通过与门接入芯片的OE即可。这样无论PSEN或RD哪个信号有效,都能允许输出。,(2)当一种类型的芯片只有一片时,片选端可接地,如果使用同类型控制信号和芯片较多时,要通过选取不同的地址加以区分,注意RAM和I/O接口不能有相同的地址。最简单的地址译码是线选法,即用片内选择剩下的某根高位地址线选择,不同高位的地址线接不同芯片的片选端,此时要注意地址表的填写不能有相同的。也可以将这些高位地址线通过加接地址译码器进行部分译码或全译码。3.关于选片。市场上的存贮器和I/O接口种类较多,应根据使用要求和性价比进行选取,对某一容量存贮器,用多片小容量不如用一片大容量的存贮器。用多个单功能的芯片不如用一片多功能的芯片,这样连线少、占地面积小、可靠性高。要注意尽量使用单片机的内部资源。,