一、8位微机系统中的存储器接口
在微机系统中,存储器系统是必不可少的,下面以一个8位微机系统中的存储器子系统为例,说明半导体存储器芯片与CPU的连接方法,以及在连接时必须注意的问题。
图5-16是一个8位微机系统中的存储器子系统。该子系统中有4片2732EPROM组成16KB的ROM区,4片6116SRAM组成8KB的RAM区。该存储器子系统共占有24KB的内存空间,采用8088CPU。
从图5—16可见,在内存芯片选定后,内存芯片同CPU的连接是构筑存储器子系统的主要工作,有三部分内容:
(1)地址线的连接。可以根据所选用的半导体存储器芯片地址线的多少,把CPU的地址线分为芯片外(指存储器芯片)地址和芯片内的地址,片外地址经地址译码器译码后输出,作为存储器芯片的片选信号,用来选中CPU所要访问的存储器芯片;片内地址线直接接到所要访问的存储器芯片的地址引脚,用来直接选中该芯片中的一个存储单元。图5-16中,对2732而言,片外地址线为A19~A12,片内地址线为A11~A0;对6116而言,片外地址线为A19~A11,片内地址线为A10~A0。
(2)数据线的连接。图5—16中,2732为4KX 8位芯片,6116为2KX 8位芯片,两者都有8条数据线,可直接同8088CPU的8位数据线相连。如果采用Intel2164芯片,因该芯片为64KXl位芯片,内部只有一位数据线,必须由8片2164芯片才能构成64K字节的内存,因此8片2164的数据线必须分别同8088CPU的8条数据线相连。
(3)控制线的连接。即如何用CPU的存储器读写信号同存储器芯片的控制信号线连接,以实现对存储器的读写操作,
(一)集成译码器及其应用
CPU要对存储单元进行读写,首先要选择存储器芯片,即进行“片选”,然后在被选中的芯片中选择所要读写的存储单元,即进行“字选”——选择存储字。片选是通过地址译码方法来实现的。
1.74LSl38译码器
在微机系统中,常采用中规模集成电路芯片74LSl38作为地址译码器,其引脚及逻辑电路如图5-17所示。
74LSl38是3—8线译码器/分配器,有三个“选择输入端”C、B、A,三个“使能输人端”(又称为“允许端”或“控制端”)G1、 ,以及8个输出端Y0—Y7。其功能表见表5-3所示。
2.74LSl38的应用
以图5—16的存储器子系统为例,地址译码器74LSl38的“使能输入端” 经与非门同系统的地址总线A15、A16、A17和A18相连, 同 相连,G1与A19,相连,而三个选择输入端C、B、A分别与A14、A13、A12相连。这样,74LSl38译码器能工作的必要条件是:①存储器操作——包括存储器读或写;②A19A18A17A16A15为‘11111’。而A14A13A12的8种不同的地址组合(从‘000’到‘111’),分别对应于与 — 个输出端相连的8个半导体存储器芯片的地址范围。
据此分析,4片2732芯片的编号为EPROMl、EPROM2、EPROM3和EPROM4,4片6116芯片的编号为SRAMl、SRAM2、SRAM3和SRAM4,其地址范围的计算如表5—4:
可得8片存储器芯片的地址范围为
EPROMl:F8000H—F8FFFH
EPROM2:F9000H~F9FFFH
EPROM3:FA000H—FAFFFH
EPROM4:FB000H—FBFFFH
SRAMl:FC000H~FC7FFH
SRAM2:FC800H~FCFFFH
SRAM3:FD000H~FD7FFH
SRAM4:FD800H—FDFFFH
在上述计算中,注意片内地址与片外地址的划分。对2732EPROM而言,其存储容量为4KX8位,有12条地址线,因此CPU的20条地址线中低12位A1l—A0作为存储器芯片的片内地址,直接与2732芯片的12条地址线相连,而高8位A19~A12为片外地址,同译码器的选择输入端C、B、A以及使能输入端相连。对6116SRAM而言,其存储容量为2KX8位,有11条地址线,则片内地址为11位,同CPU的A10~A0相连,而A19~A1l为片内地址,参与译码器译码。在图5—16中, 和 两个译码输出端同地址线All或 (A11取反)经或门后作为6116的片选信号。
(二)实现片选控制的三种方法
在存储器系统中.实现片选控制的方法有三种,即全译码、部分译码和线选。
1.全译码法
图5—16所示的存储器译码电路中,CPU的全部地址总线A19~A0都参与地址译码,因此对应于存储器芯片中的任意单元都有唯一的确定的地址,这种片选控制方法称为“全译码”。
2.部分译码法
如果在图5—16的存储器译码电路中,A19,不参加译码,即74LSl38的G1端接+5V,则Al9,不论是“0”还是“1”,只要A18~A1:满足1111000都能选中EPROMl,则E-PROMl的地址范围为78000H~78FFFH和F8000H—F8FFFH,那么一个存储单元可以由两个地址码来选中.这种片选控制方式称为“部分译码”。
3.线选法
如果在一个微机应用系统中,所要求的存储器容量较小.而且以后也不要求扩充系统的存储容量,例如,只要求4KB的EPROM区和4KB的SRAM区,则可不采用译码器芯片74LSl38。而采用如图5—18所示的线选控制电路。
该电路中采用1片2732EPROM、2片5116SRAM构成总计8KB的存储器系统。图中A11—A0直接同2732的地址线相连,A10~A0直接同6116的地址相连。片选控制电路由几片小规模集成电路芯片组成,系统的地址总线中的A11用来区分两片6116芯片的地址范围,地址总线的最高位A19用来划分4KB EPROM区和4KB SRAM区的地址范围,这样,凡是A19为“0”的地址信号都选中SRAM区,A19为“1”的地址信号都选中EPROM。4KB的EPROM区和4KB的SRAM区分别对应于512K个地址,这样一个存储单元可以有128个地址来选中,凡是A19,A11~Ao这13位地址固定,A18—A12这7位地址为任意值的128种地址码都能选中同一存储单元,称为“地址重叠”。
显然,部分译码也存在地址重叠的问题。
(三)控制信号的连接
在存储器系统中,SRAM通常有三条控制信号线——片选信号 、写允许信号 和输出允许信号 ,这些控制信号的连接如图5—16所示, 接地址译码器输出, 接读信号线 , 接写信号线 。EPROM芯片常采用双线控制,片选信号 用来选择芯片、输出允许信号 用来允许数据输出。只有这两条控制线同时有效时,才能从输出端得到要读出的数据。当 为高电平时,EPROM处于待用状态(静止等待状态),输出呈现高阻抗,芯片处于低功耗状态且不受 的影响。建议 同地址译码器输出相连,以控制对各器件的选择,而 同系统控制总线中的读信号 相连,这样可以保证所有未被选中的器件处于低功耗状态。
最后还要特别指出的是,在存储器芯片同CPU连接时要注意:①CPU总线的负载能力问题。通常CPU的总线负载能力为一个TTL器件或20个MOS器件,当总线上挂接的器件超过上述负载时,应考虑总线的驱动问题。在总线上加接缓冲器和驱动器,以增加CPU的负载能力。常用的驱动器和缓冲器有单向的74LS244,74LS367以及Intel的8282等,用于单向传输的地址总线和控制总线的驱动;对双向传输的数据总线通常采用数据收发器74LS245或Intel的8286、8287等。②CPU的时序同存储器芯片的存取速度的配合问题。存储器芯片同CPU连接时,要保证CPU对存储器的正确、可靠的存取,必须考虑存储器的工作速度是否能同CPU速度的匹配问题。如果存储器的速度跟不上CPU的速度,就必须在正常的CPU总线周期中插入等待周期Tw。
二、16位微机系统中的内存储器接口
(一)16位微机系统中的奇偶分体
在16位微机系统中,CPU除了可以对字节寻址外,还必须能进行整字(16位)的读写,因此要求存储器系统组织的设计能保证一次能访问一个整字,但也能允许一次只访问一个字节。
以8086系统为例,8086CPU有20条地址线,可直接寻址1M字节的内存储器地址空间,由于8086CPU的数据总线是16位的,而这1M字节的存储器地址空间是按字节顺序排列的,为了能满足一次访问一个整字又能访问一个字节的要求,8086系统中1M字节的存储器地址空间实际上分成两个512K字节的存储体——“偶存储体”和“奇存储体”,偶存储体同8086的低8位数据总线D7~D0相连接,奇存储体同8086的高8位数据总线D15~D8相连接,地址总线的A19~A1同两个存储体中的地址线A18~A0相连接,最低位地址线A0和8086的”总线高允许”信号 用来选择存储体,如图5-19所示(注意,图中已将双重总线分开表示)。A0和 对存储体选择的编码表见表5-5。
(二)8088/8086的存储器访问操作
1.字节访问和字访问
8088是准16位微处理器,其外部数据总线为8位,内部寄存器和运算器为16位,一个总线周期只能访问一个字节,要进行字操作,必须用两个总线周期,第一个总线周期访问低位字节、第二个总线周期访问高位字节。
8086是16位微处理器,其外部数据总线为16位,每个存储周期可以访问存储器中的8位或16位信息。当8086访问一个整字(16位)变量时,如该变量的地址为偶地址(即字变量的低字节在偶地址单元,高字节在奇地址单元),则8086将用一个总线周期访问该字变量;如果该字变量的地址为奇地址(即字变量的低字节在奇地址单元,高字节在偶地址单元),则8086要用两个连续的总线周期才能访问该字变量,每个周期访问一个字节。
图5-20 字节变量与宇变量的传送
(a)存储器结构;(b)偶地址字节传送;(c)奇地址字节传送;(d)偶地址字传送;(e)奇地址字传送
2.“对准的”字与“未对准的”宇
从表5-4可见,8086CPU能同时访问奇存储体和偶存储体中的一个字节,以组成一个存储字,要访问的16位字的低8位字节存放在偶存储体中,称为“对准的”字(aligned,又称为“对界的”),这是一种规则的存放字。对于“对准的”字,8086CPU只要一个总线周期就能完成对该字的访问;当要访问的16位字的低8位字节存放在奇存储体中,称该字为“未对准的”字(unaligned,又称为“未对界的”),这是一种非规则的存放字。必须用两个总线周期才能访问该宇。下面分析一个“未对准的”字的写入过程。
在第一个总线周期中,如同对奇存储体写入字节一样,送出奇地址(A0=1),并发出 信号,然后由8086CPU把该字的低8位传送到数据总线的高8位(注意,发生了字节交换),写入存储器的奇存储体(低8位字节);然后,8086CPU又发出一个由该奇地址加1的偶地址,此时A0=0, ,8086CPU把该字的高8位传送到数据总线的低8位(注意,又发生了字节交换),写入存储器的偶地址区(偶存储体)。这样,经过两次存储器访问周期,把一个“未对准的”字写入存储器的两个存储体中。注意,上述操作对程序员而言是完全透明的。这一写入过程如图5-20所示。
热点关注:
广东自考成绩查询【小程序查分】图文流程方式
广东省2020年1月自考成绩于3月31日公布