参考:计算机组成原理微课版
B站视频https://www.bilibili.com/video/BV1r54y1U7ra
完整的存储芯片由以下部分构成
表示方法 | 示例 | 意义 |
---|---|---|
位表示法 | 1k×4位 | 该芯片有1k个存储单元,每个单元长度为4个二进制位 |
字节表示法 | 128B | 该芯片有128个单元(一个存储单元由8个二进制位组成) |
对于一个1K×4的芯片,数据线有4条,因为每个数据有四位。地址线有10条,因为1k即1024= 2 10 2^{10} 210,即10位的二进制数可以表示的十进制数范围是1024以内。字线(地址线译出来的用于取每一个存储字的线路)自然有1024条
又称字长扩展或者数据总线扩展
叫位扩展是因为用到的芯片的数据总线位宽小于CPU的,所以要组合出一个新的芯片,该芯片的数据位宽经过扩展后与CPU的数据位宽相等。
两个1K×4位的芯片组合为一个1K×8位的芯片是可行的,每个存储单元有8位,显然地址线是10不变,而数据线则是8条
又称容量扩展或者地址总线扩展
字扩展是让存储芯片的存储单元数目拓展(不考虑每个单元的字长),以两个1K×4位扩展成一个2K×4位为例,地址线新增一位(因为 2 10 2^{10} 210变到 2 11 2^{11} 211取对数,至于为什么取对数是因为长度为11二进制能表示的十进制正数是2k以内的)。
这里要注意的是 A 10 A_{10} A10它在两个引出来的线之间有个取反,这样才能保证一个片选的值为1而另一个为0。数据线由于储存单元的位长度没变(还是4位)所以就不变。
上图是针对2个以上的芯片拓展的布线。
其实就是上面两种方式的缝合。
在谭志虎书中的示意图是有MREQ#这个输出信号的,这个东西的意思是Memory request,即存储器请求。
系统程序工作区和用户程序区是RAM
系统程序区是ROM
英文名 | 中文 | 特点 | 速度 |
---|---|---|---|
RAM | 随机存储器(运存) | 可读可写,断电后数据消失 | 通常比ROM快 |
ROM | 只读存储器 | 只能读出无法写入信息,断电后数据还在 | 通常没RAM快 |
机存储器(运存) | 可读可写,断电后数据消失 | 通常比ROM快 | |
ROM | 只读存储器 | 只能读出无法写入信息,断电后数据还在 | 通常没RAM快 |
有一块CPU,地址线16根,数据线8根,用 M R E Q ‾ \overline{MREQ} MREQ作为访存控制信号(低电平有效), W R ‾ \overline{WR} WR作为读/写控制信号(低电平为读,高电平为写),还有两类存储芯片:
类型 | 规格 |
---|---|
RAM | 1k×4位、4k×8位、8k×8位三种 |
ROM | 2k×8位、4k×8位、8k×8位三种 |
此外还有74138和若干门电路
地址分配如下
用途 | 范围 |
---|---|
系统程序区 | 6000H~67FFH |
用户程序区 | 6800H~6BFFH |
问CPU和存储器连接方式
分析如下:整个题考查存储芯片的扩展和与CPU的链接
N的计算方法是用范围上界减去范围下界,系统程序区ROM这样减完之后结果是0111 1111 1111
,也就是 2 11 2^{11} 211个地址,也就是说N=11,同理RAM是 2 10 2^{10} 210,即N=10
据上所述,ROM一片2k×8位的就够了,这需要11根数据线。而RAM需要两片1k×4位的进行位扩展得到一个新的1k×8位的,这需要10根数据线。
系统程序区
0110 0111 1111 1111
0110 0000 0000 0000
用户程序区
0110 1011 1111 1111
0110 1000 0000 0000
观察发现它们倒数10位都是相同的(布线就可以布到一块,即 A 0 A_0 A0~ A 9 A_9 A9)
借由74138和地址线来选择是操作ROM还是RAM就得从它们地址范围的异同下手,如上图所示,倒数第12到倒数第14位(地址线的 A 11 A_{11} A11~ A 13 A_{13} A13)是不一样的。根据译码器译出的信号,只有 Y 4 Y_4 Y4和 Y 5 Y_5 Y5的输出有用(一共7个输出, Y 0 Y_0 Y0和 Y 7 Y_7 Y7)。因此也只用到这两个输出(所以也只需要画出这俩就行了)
100对应着 Y 4 Y_4 Y4输出0,101对应着 Y 5 Y_5 Y5输出0,这个输出的作用是连到片选上,而片选 C S ‾ \overline{CS} CS是负逻辑的,所以74138的输出刚好合适。
其余的地址线, A 0 A_{0} A0~ A 10 A_{10} A10 连上ROM, A 0 A_{0} A0~ A 9 A_{9} A9连上RAM。
这里涉及到另外一个问题,即101对应 Y 5 Y_5 Y5输出0时,并不是代表这就得选RAM,如下图所示
上图下面举了那个例子,显然当 A 10 A_{10} A10是1时不行,也就是说当 A 10 A_{10} A10和 Y ‾ 5 \overline{Y}5 Y5都为0时才符合片选RAM的条件,并且由于片选 C S ‾ \overline{CS} CS是负逻辑,所以那个逻辑门就是输入和输出都是取反的。
完整且正确的图如下所示(上方的图存在线路交叉的问题,具有歧义)
最后提一句74138的输入引脚,G1=1,G2=G3=0时,该元件可以工作,与连到CPU哪里无关,要的是个输入到上面的结果,只要符合上面要求就能正常工作。