CPU与存储器的连接.ppt
5-4 CPU与存储器的连接【回顾】微型系统的系统总线结构及存储器组织。【本讲重点】按实际应用的需要,由不同规格、类型的存储器芯片,通过与系统总线的连接,构成存储器系统。微机系统的规模、应用场合不同,对存储器系统的容量、类型的要求也必不相同,一般情况下,需要用不同类型,不同规格的存储器芯片,通过适当的硬件连接,来构成所需要的存储器系统,这就是本节所需要讨论的内容。,一、存储器芯片与CPU的连接1.引言 在微型系统中,CPU对存储器进行读写操作,首先要由地址总线给出地址信号,选择要进行读/写操作的存储单元,然后通过控制总线发出相应的读/写控制信号,最后才能在数据总线上进行数据交换。所以,存储器芯片与CPU之间的连接,实质上就是其与系统总线的连接,包括:地址线的连接;数据线的连接;控制线的连接;在连接中要考虑的问题有以下几个方面:,(1)控制线的连接:即如何用CPU的存储器读写信号同存储器芯片的控制信号线连接,以实现对存储器的读写操作。简单系统:CPU读写信号与存储器芯片的读写信号直接相连。复杂系统:CPU读写信号和其它信号组合后与存储器芯片的读写信号直接相连。CPU读信号最终和存储器的读信号相连,CPU写信号最终和存储器的写信号相连。,(2)数据线的连接:若一个芯片内的存储单元是8位,则它自身就作为一组,其引脚D0D7可以和系统数据总线D0D7或D8D15直接相连。若一组芯片(4个或8个)才能组成8位存储单元的结构,则组内不同芯片应与不同的数据总线相连。,存储器芯片与CPU的连接存储器芯片分组位扩展(加大字长)例 用8个16K1bit芯片组成16K8bit的存储器。,(3)地址线的连接:将用以“字选”的低位地址总线直接与存贮芯片的地址引脚相连,将用以“片选”的高位地址总线送入译码器。,可以根据所选用的半导体存储器芯片地址线的多少,把CPU的地址线分为芯片外(指存储器芯片)地址和芯片内的地址,片外地址经地址译码器译码后输出。作为存储器芯片的片选信号,用来选中CPU所要访问的存储器芯片。片内地址线直接接到所要访问的存储器芯片的地址引脚,用来直接选中该芯片中的一个存储单元。对4K8b的2732而言,片外地址线为A19A12,片内地址线为A11A0;对2K8b的6116而言,片外地址线为A19A11,片内地址线为A10A0。,字扩展(扩大地址),2.CPU总线的负载能力在设计CPU芯片时,一般考虑其输出线的直流负载能力为带一个TTL负载。现在的存储器一般都为MOS电路,直流负载很小,主要的负载是电容负载,故在小型系统中,CPU是可以直接与存储器相连的,而较大的系统中,若CPU的负载能力不能满足要求,可以(就要考虑CPU能否带得动,需要时就要加上缓冲器,)由缓冲器的输出再带负载。,3.CPU的时序和存储器的存取速度之间的配合问题CPU在取指和存储器读或写操作时,是有固定时序的,用户要根据这些来确定对存储器存取速度的要求,或在存储器已经确定的情况下,考虑是否需要Tw周期,以及如何实现。4.存储器的地址分配和片选问题内存通常分为RAM和ROM两大部分,而RAM又分为系统区(即机器的监控程序或操作系统占用的区域)和用户区,用户区又要分成数据区和程序区,ROM的分配也类似,所以内存的地址分配是一个重要的问题。另外,目前生产的存储器芯片,单片的容量仍然是有限的,通常总是要由许多片才能组成一个存储器,这里就有一个如何产生片选信号的问题。,组成一个存储系统通常是由多个存储芯片组成CPU每次访问内存只能对一个存储单元进行读或写,这个单元位于某个芯片中或一组芯片中。因此,首先要找到这个或这组芯片,这就是所谓的片选问题。换句话说,就是每当CPU访问内存,如何产生相应芯片的片选信号。指定一个存贮单元是由CPU给出的地址来决定的,硬件寻址的方法是将地址总线分成两部分。一部分直接送入芯片进行“片内地址译码”,确定片内单元的位置;另一部分送入译码器进行“片外地址译码”产生片选信号。通常我们有三种片选方法:线选法、全译码法、部分译码法。,线选法在剩余的高位地址总线中,任选一位作为片选信号直接与存贮芯片的CS引脚相连,这种方式就称为线选法。其特点是无需译码器,但有较多的地址重叠区。该方法适用于存储器容量不大,所使用的存储芯片数量不多,而CPU寻址空间远远大于存储器容量。,线选法 例5-1:用5片Intel6116(2K8)组成10K8位的存储器系统。求每块芯片的地址范围。,线选法,线选法,全译码法 除去与存储芯片直接相连的低位地址总线之外,将剩余的地址总线全部送入“片外地址译码器”中进行译码的方法就称为全译码法。其特点是物理地址与实际存储单元一一对应,但译码电路复杂。,全译码法 例5-2:用16片Intel6232(4K8)组成64K8位的存储器系统。求每块芯片的地址范围。,全译码法,部分译码法 除去与存储芯片直接相连的低位地址总线之外,剩余的部分不是全部参与译码的方法就称为部分译码。其特点是译码电路比较简单,但出现“地址重叠区”,一个存贮单元可以由多个地址对应。,部分译码法 例5-3:用8片Intel6116(2K8)组成16K8位的存储器系统。求每块芯片的地址范围。,用A11、A12、A13来译码,地址译码器将CPU与存储器连接时,首先根据系统要求,确定存储器芯片地址范围,然后进行地址译码,译码输出送给存储器的片选引脚CS。能够进行地址译码功能的部件叫做地址译码器。常见的地址译码器如74LS138电路。,地址译码器 如图给出了该译码器的引脚和译码逻辑框图。由图可看到,译码器74LS138的工作条件是控制端G1=1,G2A*=0,G2B*=0,译码输入端为C、B、A,故输出有八种状态,因规定CS*低电平选中存储器,故译码器输出也是低电平有效。当不满足编译条件时,74LS138输出全为高电平,相当于译码器未工作。74LS138的真值表如下表。,地址译码器,5.控制信号的连接CPU在与存储器交换信息时,通常有以下几个控制信号(对8088/8086来说):IO/M(IO/M),RD,WR以及WAIT信号。这些信号如何与存储器要求的控制信号相连,以实现所需的控制功能。,二、存储器芯片的扩展存储器芯片扩展的方法有以下两种:1.存储器芯片的位扩充适用场合 存储器芯片的容量满足存储器系统的要求,但其字长小于存储器系统的要求。,【例1】用1K4的2114芯片构成lK8的存储器系统。【分析】由于每个芯片的容量为1K,故满足存储器系统的容量要求。但由于每个芯片只能提供4位数据,故需用2片这样的芯片,它们分别提供4位数据至系统的数据总线,以满足存储器系统的字长要求。,【设计要点】将每个芯片的10位地址线按引脚名称一一并联,按次序逐根接至系统地址总线的低10位。数据线则按芯片编号连接,1号芯片的4位数据线依次接至系统数据总线的D0-D3,2号芯片的4位数据线依次接至系统数据总线的D4-D7。两个芯片的WE端并在一起后接至系统控制总线的存储器写信号WR(如CPU为8086/8088,也可由和IOM或IO/M的组合来承担)。CS引脚也分别并联后接至地址译码器的输出,而地址译码器的输入则由系统地址总线的高位来承担。具体连线见图4-16。,当存储器工作时,系统根据高位地址的译码同时选中两个芯片,而地址码的低位也同时到达每一个芯片,从而选中它们的同一个单元。在读/写信号的作用下,两个芯片的数据同时读出,送上系统数据总线,产生一个字节的输出,或者同时将来自数据总线上的字节数据写入存储器。,图5-16 用2114组成1K8的存储器连线,根据硬件连线图,我们还可以进一步分析出该存储器的地址分配范围如下:(假设只考虑16位地址),地 址 码 芯 片 的 地 址 范 围A15.A12 A11 A10 A9.A0 0 0 0 0 0 0 0 0 H:0 0 1 1 0 3 F F H,表示可以任选值,在这里我们均选0。,这种扩展存储器的方法就称为位扩展,它可以适用于多种芯片,如可以用8片2164A组成一个64K8的存储器等。,2.存储器芯片的字扩充【适用场合】存储器芯片的字长符合存储器系统的要求,但其容量太小。【例2】用2K8的2716存储器芯片组成8K8的存储器系统。【分析】由于每个芯片的字长为8位,故满足存储器系统的字长要求。但由于每个芯片只能提供2K个存储单元,故需用4片这样的芯片,以满足存储器系统的容量要求。,【设计要点】同位扩充方式相似。先将每个芯片的11位地址线按引脚名称一一并联,然后按次序逐根接至系统地址总线的低11位。将每个芯片的8位数据线依次接至系统数据总线的D0-D7。两个芯片的端并在一起后接至系统控制总线的存储器读信号(这样连接的原因同位扩充方式),它们的引脚分别接至地址译码器的不同输出,地址译码器的输入则由系统地址总线的高位来承担。连线见图5-17。,图5-17 用2716组成8K8的存储器连线,当存储器工作时,根据高位地址的不同,系统通过译码器分别选中不同的芯片,低位地址码则同时到达每一个芯片,选中它们的相应单元。在读信号的作用下,选中芯片的数据被读出,送上系统数据总线,产生一个字节的输出。同样,根据硬件连线图,我们也可以进一步分析出该存储器的地址分配范围如下表:(假设只考虑16位地址),地 址 码 芯片的地址范围 对应芯片编号A15.A13 A12 A11 A10 A9.A0 0 0 0 0 0 0 0 0 0 H:2716-1 0 0 1 1 1 0 7 F F H 0 1 0 0 0 0 8 0 0 H:2716-2 0 1 1 1 1 0 F F F H 1 0 0 0 0 1 0 0 0 H:2716-3 1 0 1 1 1 1 7 F F H 1 1 0 0 0 1 8 0 0 H:2716-4 1 1 1 1 1 1 F F F H,表示可以任选值,在这里我们均选0。这种扩展存储器的方法就称为字扩展,它同样可以适用于多种芯片,如可以用8片27128(16k8)组成一个128K8的存储器等。,3.同时进行位扩充与字扩充【适用场合】存储器芯片的字长和容量均不符合存储器系统的要求,这时就需要用多片这样的芯片同时进行位扩充和字扩充,以满足系统的要求。【例3】用1K4的2114芯片组成2K8的存储器系统。,【分析】由于芯片的字长为4位,因此首先需用采用位扩充的方法,用两片芯片组成1K8的存储器。再采用字扩充的方法来扩充容量,使用两组经过上述位扩充的芯片组来完成。【设计要点】每个芯片的10根地址信号引脚宜接接至系统地址总线的低10位,每组两个芯片的4位数据线分别接至系统数据总线的高/低四位。地址码的A10、A11经译码后的输出,分别作为两组芯片的片选信号,每个芯片的WE控制端直接接到CPU的读/写控制端上,以实现对存储器的读/写控制。硬件连线如图5-18,图5-18 用2114 组成2K8的存储器连线,当存储器工作时,根据高位地址的不同,系统通过译码器分别选中不同的芯片组,低位地址码则同时到达每一个芯片组,选中它们的相应单元。在读/写信号的作用下,选中芯片组的数据被读出,送上系统数据总线,产生一个字节的输出,或者将来自数据总线上的字节数据写入芯片组。同样,根据硬件连线图,我们也可以进一步分析出该存储器的地址分配范围如下:(假设只考虑16位地址),地 址 码 芯片组的地址范围 对应芯片组编号A15.A13 A12 A11 A10 A9.A0 0 0 0 0 0 0 0 0 H:2114-1 0 0 1 1 0 3 F F H 0 1 0 0 0 4 0 0 H:2114-2 0 1 1 1 0 7 F F H表示可以任选值,在这里我们均选0。,【思考】从以上地址分析可知,此存储器的地址范围是0000H-07FFH。如果系统规定存储器的地址范围从0800H开始,并要连续存放,对以上硬件连线图该如何改动呢?由于低位地址仍从0开始,因此低位地址仍直接接至芯片组。于是,要改动的是译码器和高位地址的连接。我们可以将两个芯片组的片选输入端分别接至译码器的Y2和Y3输出端,即当A11、A10为10时,选中2114-1,则该芯片组的地址范围为 0800H-0BFFH,而当A11、A10为11时,选中2114-2,则该芯片组的地址范围为 0C00H-0FFFH。同时,保证高位地址为0(即A15-A12为0)。这样,此存储器的地址范围就是0800H-0FFFH了。(具体连线自己考虑),以上例子所采用的片选控制的译码方式称为全译码方式,这种译码电路较复杂,但是,由此选中的每一组的地址是确定且唯一的。有时,为方便起见,也可以直接用高位地址(如A10A15中的任一位)来控制片选端。例如用A10来控制,如图5-19所示。,图5-19 线选法示例,粗看起来,这两组的地址分配与全译码时相同,但是当用Al0这一个信号作为片选控制时,只要Al00,A11A15可为任意值都选中第一组;而只要A101,AllA15可为任意值都选中第二组。这种选片控制方式称为线选法。线选法节省译码电路,设计简单,但必须注意此时芯片的地 图5-19 线选法示例址分布以及各自的地址重叠区,以免出现错误。,【例4】一个存储器系统包括2K RAM和8K ROM,分别用1K4的2114芯片和2K8的2716芯片组成。要求ROM的地址从1000H开始,RAM的地址从3000H开始。完成硬件连线及相应的地址分配表。,图5-20 2K RAM和8K ROM存储器系统连线图,【分析】:整个存储器的硬件连线如图4-20所示。根据硬件连线图,我们可以分析出该存储器的地址分配范围如下。(假设只考虑16位地址),地 址 码 芯片的地址范围 对应芯片编号A15 A14 A13 A12 A11 A10 A9.A0 0 0 0 1 0 0 0 0 1 0 0 0 H:2716-1 0 0 0 1 0 1 1 1 1 7 F F H 0 0 0 1 1 0 0 0 1 8 0 0 H:2716-2 0 0 0 1 1 1 1 1 1 F F F H 0 0 1 0 0 0 0 0 2 0 0 0 H:2716-3 0 0 1 0 0 1 1 1 2 7 F F H 0 0 1 0 1 0 0 0 2 8 0 0 H:2716-4 0 0 1 0 1 1 1 1 2 F F F H 0 0 1 1 0 0 0 0 3 0 0 0 H:2114-1 0 0 1 1 0 0 1 1 3 3 F F H 0 0 1 1 1 0 0 0 3 8 0 0 H:2114-2 0 0 1 1 1 0 1 1 3 B F F H,【习题与思考】画出容量为2K*8的RAM连接图(CPU用8088,RAM用2114,RAM地址区为0800H0FFFH)。试画出容量为8K*8的ROM连接图(CPU用8086,EPROM用2716,ROM地址区从4000H开始)。一台8位微机系统(CPU为8088)需扩展内存16K,其中ROM 为8K,RAM为8K。ROM选用EPROM2716,RAM选用2114,地址空间从0000H开始,要求ROM在低地址,RAM在高地址。试画出存储器组构图,并写出各芯片的存储分配范围。,