1、第第5章章 存储器系统设计存储器系统设计5.1 MCS-51存储器系统配置存储器系统配置程序存储器(ROM)数据存储器(RAM)5.2 程序存储器扩展设计程序存储器扩展设计 外部程序存储器操作时序振荡周期S1S2S3S4S5S6一个机器周期S1S2S3S4S5S6 PCH输出PCHPCHPCHPCL输出指令输入地址输出指令输入PCL输出指令输入PCL输出ALEP2P0P2口输出程序存储器的高8位地址PCH(A15A8),具有锁存功能。P0口地址/数据复用线,在ALE上升为高电平时,P0口输出程序存储器的低8位地址(A7A0),在ALE的下降沿,把A7A0锁存到外部地址锁存器中,得到地址信号,接
2、着,P0口由输出变为输入,高8位地址不变(低8位已锁存),故已选定外部ROM的某一个地址,随即低电平有效,外部ROM通,对应地址单元中的指令字节出现在数据总线上供CPU读取。P2 ALE P0锁存器88A15A88A7A0D7D0数据总线下面就涉及到的程序存储器芯片,就如何来进行电路设计进行分析。5.2.2 常用程序存储器芯片常用程序存储器芯片 EPROM电路可擦除可编程只读存储器 Erase ProgrammableRead Only Memory功能图:操作方式:编程方式:把程序代码固化到EPROM中编程校验方式:读出EPROM中的内容,校对编程操作的正确性读出方式:CPU从EPROM中读
3、出指令和常数 维持方式:数据端是高阻 。地址锁存器(74LS373)从P0口地址/数据复用线中分离出地址来。地址译码器 为什么要用地址译码器:CPU给出一个地址,对应的存储器中有一个存储器单元与其唯一的对应。通常存储器有多片组成,因此,要对存储器芯片地址进行编址。分两个层次:(1)某个存储芯片的选择片选片选(8K/片8片64K)(2)被选中的存储芯片内部存储单元的选择字选字选。地址不能重叠,一般就要用译码器的功能。74LS138的真值表 输出有效时,只有一个为低电平,其余为高电平,故用其来接被选的芯片时,只有一个被选中。保持芯片之间地址的不重叠。(74LS139的介绍见书P158)5.2.3
4、程序存储器扩展设计程序存储器扩展设计 (1)扩展16KB EPROM(线选法用单片机地址总线高位地址作为选择某一存贮器的片选信号)。P28031 P0 ALE A13A827128A7 A0Q0Q7PP2.7674LS3738如果接地,系统只能接1片ROM27128128/8=16K2102414根地址线A0A13,片内地址由P2.5P2.0,P0.7P0.0决定。该片由P2.7选中,存在重叠区域40007FFFH(但芯片内地址不存在,但无关紧要),而且存在地址禁区!(00003FFFH)不可能扩展2块。2扩展24KB EPROM(部分地址译码)用译码对单片机的高位地址线 进行译码,以译码器的
5、输出作为某一存储器的片选信号。P2.6 P2.5P2.4P2.08031 ALE P0 BA74LS139G74LS373A0A7 A8A12Q0Q7 /OEA0A7 A8A12Q0Q7 /OEA0A7 A8A12Q0Q7 /OE58276427642764 P2.6 P2.5 /Y0 /Y1 /Y2 0 0 0 1 1 0000-1FFFH(8000H-9FFFH)括号内 0 1 1 0 1 2000-3FFFH(A000H-BFFFH)为重叠 1 0 1 1 0 4000-5FFFFH(C000H-DFFFH)区!3.扩展64KB EPROM(全地址译码)P2.7 P2.6P2.5地址空间
6、(A15)(A14)(A13)0 0 000001FFFH 0 0 120003FFFH 0 1 040005FFFH 0 1 160007FFFH 1 0 080009FFFH 1 0 1A000BFFFH 1 1 0C000DFFFH 1 1 1E000FFFFH 64KB/8=8KB/根译码线。译码器的输出是互异的,每次只能选中一个存储器芯片,不会出现地址竞争(地址竞争是几片同类型存储器占用同一段地址,当CPU从该空间取数时,它们将同时向数据总线提供数据,导致读取出错)。5.3 数据存储器扩展设计数据存储器扩展设计执行:MOVX A,DPTR(或MOVX DPTR,A)MOVX A,Ri
7、 (或MOVX Ri,A)CPU访问外部数据存储器时,ALE信号少出现一次,地址数据输出后经过悬浮(高阻)状态后,才能进入数据输入或输出状态!第一周期:P2口输出地址的高8位,P2口输出地址的低8位。ALE下降沿将低8位地址锁存到外部地址锁存器。随即 低电平有效。P0口由输出变为输入,对应选 中的存储单元中的指令出现在P0口,由CPU读取。经CPU译码后,知道是对外部数据存储器的操作。随后,P2口输出外部数据存储器地址的高8位,P0口输出外部数据存储器的低8位。由ALE锁存,由于是与外部数据存储器打交道。一直为高电平无效(信号线接EPROM的 端,选通的是程序存储器!)S1S2S3S4S5S6
8、第一个机器周期S1S2S3S4S5S6PCH输出DPH或P2输出PCHPCL输出指令输入地址输出PCL输出ALEP2P0数据输出(输入)第二周期:第一个ALE信号丢失,若执行的是读指令(MOVX A,DPTR),P0口由输出变为输入,随即 为低电平有效。外部数据存储器被选通。相应存储单元内容出现在P0口上供CPU读入累加器中,若执行的是写指令(MOVX DPTR,A),此时 为低电平有效。被写的数据出现在P0口,并在 结束之前一直保持不变,写入相应的外部数据存储器单元。第二个ALE锁存的地址,有效,读的内容丢弃。5.3.2 常用数据存储器芯片介绍常用数据存储器芯片介绍A12A0D7D0 626
9、4 CS113地址线8210238K双向数据线写允许线读选通线VCCGND片选线1片选线2(当/CE 0时,选中 CS11时,读片)1静态RAM(SRAM)芯片操作控制 /CE /OE /WE D0D7 (/CE=0,CS1=1)读 0 0 1 D0D7(OUT)写 0 1 0 D0D7(IN)维持 1 X X 高阻掉电后数据丢失!(同计算机内存)2 电可擦可编程只读存储器E2PROM 读写的操作同SRAM,掉电后,数据保存,不会丢失。注意它不是做程序存储器用!5.3.3 数据存储器扩展设计数据存储器扩展设计1.8051扩展2KB静态RAM,8051内部有ROM,用地址线扩展2KB RAM。V
10、cc P2 8051 P0口 ALE 5VA10A8 A7A06116D0D7373G1D8D1Q8Q3886116的 片选端接地,为常选状态,地 址 为000007FFH2.8031扩展32KB EPROM和32KB RAM P28031 ALE P01Q7Q G3731D7D A0A7 A8A14 27256 Q0Q7 A0A7 A8A14 62256 D0D7 8788程序存储器 接地,常选00007FFFH,有效,数据存储器00007FFFH,有效,地址重叠,但不会冲突。3.程序存储器空间和数据存储器空间的合并(哈佛结构:两个存储器在逻辑上完全独立,是由于执行不同的指令时,由硬件产生不
11、同的选信号,从而选通两个不同的逻辑空间)。单片机仿真系统就是采用这种合并后的一维线性空间,因为程序存放在EPROM中,就无法对EPROM中的程序进行在线修改,如果把程序存放在RAM中,一面调试一面修改,方便。P28031 ALE P01Q8QG3731D8D A0A7 A8A14 27256 Q0Q8 A0A7 A8A14 62256 D0D7 8P2.788 系统的EPROM(27256)00007FFFH(管理仿真系统的程序),系统的仿真ROM和数据存储器为8000FFFFH。当执行系统的管理程序时,27256有效(尽管有效 ,但地址不对),62256无效,当执行自己编的仿真程序时,系统转
12、向62256中执行你输入的程序,当遇到MOVX之类的指令时,有效。4.8051扩展8KBE2PROM(ROM和RAM合并)P2 P0 ALE 5VA12A8 A0A7 2864I/O0I/O75P2.7373内部ROM:00000FFFH(4KB)外部ROM,RAM:80009FFFH(8KB)重叠区:1080009FFFH 1010A000BFFFH 1100C000DFFFH 1110E000FFFFH写入16字节数据的子程序,入口参数:DPTR:指向RAM数据区首址;R7:写入字节数(10H)R0:E2PROM地址低8位 P2:E2PROM地址高8位 WR16:MOVX A,DPTR MOV R4,A MOVX R0,A INC DPTR INC R0 CJNE R0,#00H,NEXT INC P2NEXT:DJNZ R7,WR16 DEC R0CNECK:MOVX A,R0 ;将最后一个字节数据取出 XRL A,R4 ;原始数据比较,陷入死循环!JB ACC.7,CHECK ;最高位不同,再查!RET