问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

计算机组成原理——存储器精讲:CPU与存储器连接详解

创作时间:
作者:
@小白创作中心

计算机组成原理——存储器精讲:CPU与存储器连接详解

引用
CSDN
1.
https://blog.csdn.net/2301_80303982/article/details/145569199

在计算机系统中,CPU与存储器的连接是核心硬件组成之一。本文将详细讲解CPU与存储器的连接原理,包括存储器容量扩展、位扩展、字扩展以及CPU与存储器的具体连接方法。通过具体的芯片扩展例子和电路连接方式,帮助读者深入理解这一重要知识点。

存储器容量的扩展

位扩展(增加存储字长)

我们以1K4位的存储芯片为例,说明如何组成1K8位的存储器(使用2114芯片,2114的容量为1K*4位)。

分析:1K乘4位的芯片,1K=1024B=pow(2,10)说明芯片有10根数据线,4位表示有4根数据线,要组成8位的存储器即同时读写8位 ,一个芯片可以同时读取四位,那么我们用片选线两个芯片连接在一起,在进行读写操作时使两片芯片同时被选中,是不是就可以同时读取8位了,连接方式如下:

两块芯片分别与10根地址线连接,准备8根数据线,每个芯片连接4位,再把两个芯片连接在片选线(cs)上和读写控制线(we)上,地址线和数据线的两端分别与CPU连接这样就能保证CPU读写8位的需求,cs为低电平时两个芯片被同时选中。

思考:数据线和地址线需不需要按顺序连接?

  1. 数据线:
  • 功能:用于在CPU和存储器之间传输数据。
  • 连接要求:数据线通常可以按任意顺序连接,因为数据传输是双向的,CPU和存储器会根据需要正确解析数据。但为了减少布线复杂性和信号干扰,建议按顺序连接。
  1. 地址线:
  • 功能:用于指定存储器中要访问的位置。
  • 连接要求:地址线必须按顺序连接,因为CPU发出的地址信号直接对应存储器的物理地址。如果顺序错误,CPU将无法正确访问存储器,导致数据读取或写入错误。(地址线上的0和1二进制编码对应存储器的物理地址)

总结:

  • 数据线:可以按任意顺序连接,但建议按顺序以减少干扰。
  • 地址线:必须严格按顺序连接,否则会导致寻址错误。

因此,连接时必须确保地址线的顺序正确,数据线则相对灵活。

字扩展(增加存储字的数量)

我们以1K8位的芯片为例,说明如何组成2K8位的存储器,显然要扩充的是芯片的存储单元,我们采用的策略是地址线与片选线复用的办法。

如图所示,我们用两片1K*8位的芯片,这样两个芯片同时工作就可以满足存储器2K存储单元的需求,那么问题又来了,如果两个芯片同时工作,两个芯片各自都有八位数据线,那它们就会同时读出或写入16位的数据,这显然会超出我们的需求,需求是2k×8位,那么我们就应该让这两个芯片分开单独工作,如果分开工作要满足2k的存储需求,1k的存储单元需要10根地址线,2k是1k的两倍即2的11次方,那么2k就需要11根地址线,而我们的芯片只有10根地址线,因此,我们增加一根A10的地址线,这样就可以满足2k的存储需求。

现在我们满足了芯片单独工作时的存储需求,下一步就是如何实现芯片的单独工作。我们通过片选线可以实现芯片的单独工作,两个芯片都需要连接,在偏选线上,但是又不能让两个芯片同时工作,我们可以采取在A10的一端安装一个非门,根据前面的学习,我们知道片选线当CS信号为低电平的时候有效,那么如果a10是低电平,则左边的芯片导通,右边的芯片经过非门是高电平不导通,相反,如果a10是高电平,左边芯片不导通,右侧通过非门高电平变为低电平,右边芯片导通。

这样我们把从0开始到0111111111(一共十一位,最左边的最高位为片选信号位)这1K的空间分给了第一个芯片,从10000000000到11111111111这1K的空间分给第二个芯片,通过片选线控制两个芯片分开工作(最高位为A10对应的地址,A10为0左边芯片导通,所以最高位为0的地址全给了左边芯片,最高位为1的地址全给了右边芯片,因为最高位为1经过非门变为0就会使右边芯片导通)。

字与位都扩展

我们以1K4位的芯片为例,说明如何组成4K8位的存储器,我们采取的策略是先把1K4位有芯片改装成1K8位的芯片由位扩展我们知道需要两片芯片作为一个整体同时工作,再由1K8位组成4K8位又需要4片,所以总共需要4*2=8片芯片。

如图先把8片芯片分成4组,每组内的两片芯片分别链接10根地址线,4根数据线(即位扩展的连接方式)。

4K8位的存储器实际上是4个1K8位的存储器构成的,一共有12根地址线应该有12位地址,于是我们把4K的地址分配给这4个存储器,每个存储器两个芯片,从000000000000到001111111111给第一组,从010000000000到011111111111给第二组,从100000000000到101111111111给第三组,110000000000到111111111111给第四组,至于为什么这么分与多余出来的两根地址线有关,每个芯片只有10根地址线,多出的两根(A10和A11)作为片选线,每个地址由10位地址信号位加2位片选信号位组成,A10和A11都可以存放0或1,根据组合数公式一共有00,01,10,11四种可能分别对应四组地址的最高两位,由A10和A11上的0,1组合判断要访问的地址在哪一组芯片中。

我们使用一个片选译码器,A10,A11作为片选线,如果输入00,CS0有效,变为低电平,如果输入01则CS1有效变为低电平,如果输入10则CS2有效变为低电平,如果输入11则CS3有效变为低电平(片选线接到每组芯片的最右侧),再把每个芯片都接到读写控制线(we)上,注意每组的两个芯片都要接读写控制线否则读写的是4位数据而不是8位数据。

存储器与CPU的连接

地址线的连接

(根据CPU地址找到相应的存储单元,存储单元在哪一个芯片当中,是哪一个芯片的哪一个存储单元,一般来说,进行地址连接的时候,都是把地址的低位,作为地址送入到存储器的地址线当中,高位作为芯片选择信号。)

数据线的连接

(CPU的数据线的条数可能比存储器的数据线的条数要多,那这种情况下,我们就要做位扩展,使存储器输出的数据,能够满足CPU的要求或者输入的数据能满足CPU的要求。)

读写控制线的连接

(CPU给出读写命令,我们可以把读写线连接到每一个芯片上,连接到它的读写控制端上,但ROM是除外的,只读存储器,只能读,不能写这块儿,我们后面举例子大家能够看到。)

片选线的连接

(非常重要的就是片选线,每次访问的地址空间落在哪一个或者是哪几个芯片上,都是由片选线来决定的,所以片选线非常重要。在这儿呢,我们要注意进行片选线连接的时候,第一,我们要确认CPU的这次访问操作,访问的是存储器,而不是IO设备,所以对存储器的访问信号一定要在片选信号当中进行体现,第二点,每一个内存的芯片都有自己的地址范围,在CPU与内存构成的这个系统当中,我们是给他分配了指定的一个地址范围的,这个地址范围必须要满足CPU的要求,也就是说,每一根地址线,我们都要用到有一些地址作为存储芯片的内部地址给它输入到每一个存储芯片当中,有一些地址我们要用作片选信号来保证对某一个芯片的访问,一定是在给定的地址范围之内的访问)

合理的选择存储芯片

(怎么合理两方面的内容rom(只读存储器)和ram(随机存储器)要合理的进行选择,什么时候选择只读存储器,什么时候选择随机存储器。一般来说如果是保存系统程序的地方,我们就选择rom,因为系统程序不是经常被改动的,保存配置信息的那些部分也用rom来进行,这些信息也不常用,但如果是用户程序,或者是系统程序运行的区域,这些区域都是可读可写的,就用ram芯片,这是第一种,就是芯片的类型,第二,同样是RAM或者是ROM芯片的技术参数,性能参数是不一样的,那么好,我们是选择2个1k×4的,还是1个1k×8的?这个我们要进行综合的考虑,芯片的数量尽可能的少,片选逻辑尽可能的简单)

其他 时序 ,负载等

(CPU和存储器的时序相互配合,负载指的是CPU能带多少个存储芯片)

通常只考虑前五点,实际组装要考虑第六点。下面来看例子

分析题目可知,寻址范围是64k即二的16次方,因为有16根地址线,8根数据线说明CPU每次从存储器读数据或者向存储器写入数据都是8位,MREQ是访存控制线,MREQ上的横线表示低电平有效,CPU的这根线上是低电平的时候访问的是存储器,是高电平的时候访问的是IO设备

ROM:2K8位,4K8位,8K8位
RAM:1K
4位,4K8位,8K8位

题目要求如下:

解答:

第一步:先将16进制地址范围写成2进制地址码,并确定其总容量。方法如下图所示:

第二步:确定芯片的数量及类型
系统程序区我们已经说过要选择ROM,因为系统信息不需要经常修改,而我们题目给出的正好就有2K*8位的芯片(芯片数量尽量少的原则)因此我们选择一片该容量的ROM即可。

用户程序区需要可读可写,所以我们选用RAM芯片,题目中给出的RAM芯片只有1k×4,4k乘8和8k×8的没有1k×8的,如果用4k×8的芯片,我们需要4片芯片,如果用8k×8的,我们需要使用8片芯片,但是如果用1k×4只需要2片,遵循芯片数量尽量少的原则,我们选用两片1k×4的芯片,采用位扩展的方式把两个芯片用片选线连接起来,使两个芯片工作时被同时选中,这样就可以组成1k×8的芯片。

注:用mn位的芯片组成pq位的存储器所需要的芯片数量的计算公式
number=(p/m)*(q/n)(本人自己总结)

第三步:分配地址线
结合第一步和第二步的分析,我们可以看出,系统程序区只有A0到A10(十一位)需要改动,由全0变为全1,而用户程序区只有后面10位,即A0到A9需要改动,由全0变为全1,因此,我们采用如下地址线的分配方式。

即系统区接11根地址线,用户区接10根地址线,其余位用作片选信号。

第四步:确定片选信号
在确定片选信号之前我们先来分析一下题目给出的74138译码器的结构
如上图,C,B,A为输入端,根据输入的不同,8个输出端(Y0~Y7)有一个是低电平,其他的都是高电平,另外138译码器要能工作,它的三个控制端,G1,G2A和G2B三个控制端,要有相应的信号输入才能进行工作。

要确定片选信号,我们要分析C,B,A应该如何连接
我们前面已经分析过,系统区前5位是不变的,用户区前六位是不变的,因此我们取2个区域的公共部分即最高的5位作为片选信号,而用户区与系统区的最高2位对应的都是01,所以没有区分度
而从A11到A13,系统区对应的是100及十进制中的4,用户区对应的是101及十进制中的5,因此,我们可以用741 38译码器的CBA三个输入端分别连接这三条线来区分系统区和用户区,再看译码器
前面已经说过,从Y0到Y7只有一条线是输出有效的,如果Y4是低电平(表示有效),那么选中的就是一片ROM(100),如果Y5是低电平,那么选中的就是两片RAM(101)。

同时我们还知道,如果译码器要正常工作的话,G1,G2A,G2B三个控制端也要有相应的输入,从图中可以看出来,G1是高电平有效G2A和G2B都是低电平有效,因为G2A和G2B上方都有横线。
G1是高电平有效(对应的是1),而上图的A14位对应的全部是1,因此我们可以直接把G1和A14地址线连接。

G2A和G2B都是低电平有效(对应0),有人说可以把这两个端口全部连接到A15上,但这是大错特错的,因为我们没有考虑到MREQ的存在,MREQ给出了读写控制信号,但是CPU访问的不一定是主存单元,也可能是I/O设备某个端口的地址(前面说过),这就是错误所在,所以在片选信号中一定不要忘了MREQ,MREQ要连接在片选信号中。

原理分析完下面我们来看如何组装
左侧是CPU,右侧是选好的芯片,一个ROM,两个RAM。
按照上图所说方式连接好三个芯片。

下面就是MREQ和74138译码器的连接
我们前面已经说过,G2A和G2B同时连接A15是不对的,因为忽略了MREQ,只有当G1是高电平G2A是低电平,G2B也是低电平,译码器才能正常工作,如果MREQ是低电平G2B端口可以正常工作,译码器才能正常工作,即CPU访问的是存储器,如果MREQ是高电平,G2B无法正常工作,所以译码器也无法正常工作CPU无法访问存储器即说明CPU访问的是IO设备,这就实现了MREQ的访存控制功能,所以MREQ和G2B连接。

前面已经分析过,Y4是低电平选中的是一片ROM,Y5是低电平选中的是两片RAM,所以Y4要与一片ROM相连,Y5要与两片RAM连接,那么,为什么图中会多出一个与的门电路呢?我们看下图
我们之前做字扩展的时候是在A10的右端加了一个非门来控制两个芯片单独工作,现在我们要让1片 ROM和2片RAM分开工作即右边的两片芯片同时工作还要接受译码器的输入信号,因此我们就要换用与门,当Y5是低电平,A10也是低电平,电流通过与门沿紫色线路流到右边的两片RAM,如果A10是高电平,电流不能通过与门就会沿蓝色线路流到一片ROM,这样就实现了系统区和用户区的切换,如下图:

下面是读写控制线的连接(WR):
ROM的PD/Progr端要接地,保证读出时电平有效,RAM芯片的读写控制端与CPU的WR端相连,ROM是只读存储器不用连接(有OE端(ROM的输出端)则需要连接WE)本题不用

最后就是数据线的连接
ROM连接8根数据线,两片RAM分别连接4根数据线组成1K*8位的用户存储器采用位扩展,注意ROM的数据线是单向的因为只读,而RAM的数据线是双向的。

至此CPU与存储器的连接就完成了,后续的文章还会分享其他的CPU与存储器连接的例题。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号