计算机组成原理课堂笔记(四)存储器 part2


存储器与CPU的连接

CPU是运算器和控制器的集成

存储器容量的扩展

(1)位扩展:(增加存储字长)

用2114($1K×4$位存储芯片)组成$1K×8$位的存储器,需要 $\underline{2片}$ 。




为保证同时工作:片选线($\overline{CS}$)和读写控制线($\overline{WE}$)接在一起

数据线各接各的,两组芯片能同时工作,因为数据线不冲突

地址的2进制与16进制的转换:
以1K为例:

最低地址最高地址
二进制00,0000,000011,1111,1111
十六进制000H3FFH

要会从十六进制最低、最高位地址,得出存储容量大小

十六进制 → 二进制 → 位数$n$ → 地址线数量n → 存储容量:$2^n$

(2)字扩展(增加存储字数量)
用$1K×8$位存储芯片组成$2K×8$位的存储器,需要 $\underline{2片}$ 。




2块芯片无法同时工作。

$A_{10}$送低电平0

​ 第1个芯片的片选线$\overline{CS_0}$获得低电平0,第二个芯片的片选线$\overline{CS_1}$获得高电平1,所以芯片0工作,芯片1不工作。

$A_{10}$送高电平1

​ 第1个芯片的片选线$\overline{CS_0}$获得高电平1,第二个芯片的片选线$\overline{CS_1}$获得低电平0,所以芯片0不工作,芯片1工作。

芯片 地址 二进制 十六进制
芯片0 最低地址 000,0000,0000 000H
最高地址 011,1111,1111 3FFH
芯片1 最低地址 100,0000,0000 400H
最高地址 111,1111,1111 7FFH

以此类推,如果有第三个芯片的话地址是800H~BFFH

变式:若要求芯片0存奇数地址,芯片1存偶数地址

也简单,换一下控制片选的地址线就行。

将$A_{10}$~$A_{1}$作为片内地址,$A_{0}$作为片选线直接接接芯片1,过非门接在芯片0上。
​这样芯片0的地址结尾全为1,芯片1的地址结尾全为0。

(3)字、位扩展
用$1K×4$位存储芯片组成$4K×8$位的存储器,需要 $\underline{8片}$ 。




(该片选译码器有2个输入,4个输出,所以为2-4译码器)
两个芯片1组,8根数据线一组,一共4组,4组数据线不同时工作。

芯片组 地址 二进制 十六进制
组0 最低地址 0000,0000,0000 000H
最高地址 0011,1111,1111 3FFH
组1 最低地址 0100,0000,0000 400H
最高地址 0111,1111,1111 7FFH
组2 最低地址 1000,0000,0000 800H
最高地址 1011,1111,1111 BFFH
组3 最低地址 1100,0000,0000 C00H
最高地址 1111,1111,1111 FFFH

例题:书P94 例4.1



解:
step1:确定芯片容量



step2:确定芯片



step3:分配CPU地址线




因为是74LS138,所以留出三根地址线作为输入端

step4:生成片选信号




小刘注解:

问:这种接法片选信号是怎么工作的?
ROM工作的时候:CBA输入是100,所以ROM连$\overline{Y_4}$,$\overline{Y_4}$输出低电平信号,其余输出高电平信号

RAM工作的时候:CBA输入是101,所以RAM连 $\overline{Y_5}$,$\overline{Y_5}$输出低电平信号,其余输出高电平信号

问:为什么$A_{10}$要和$\overline{Y_5}$连与门?
不连 $A_{10}$的话可能一个数据会对应两个地址,因为$A_{10}$为0或1都不影响。

地址变为:
0110, 1X00, 0000, 0000
1001, 1X11, 1111, 1111

所以除了题目要求的地址以外,还有一组地址也满足题意:
​ ①6800H~6BFFH

​ ②6C00H~6FFFH(多出来一组地址)

出现这种情况其实并不算出错,但最好还是能让数据和地址一一对应起来。
把$A_{10}$和$\overline{Y_5}$拿与门连起来,就只有$A_{10}$=0的时候有对应地址了。

问:与门为什么前后都要画○
这里的与门我们想要他生成的逻辑是:输入00输出0,这和正规与门(输入11输出1)正好相反,所以前后都要接非门○。

问:$\overline{PD}/Progr$是啥
$\overline{PD}/Progr$是编程信号,该信号接地,意思就是把ROM降级为掩模ROM。

存储器的校验

汉明码

汉明码是具有一位纠错能力的编码。

汉明码的组成:
1. 汉明码的组成需要增添k位检测位,其中
$$ 2^k≥n+k+1 $$
$n$为传送的位数(这个公式不用管)

2. 检测位的位置
$$2^i (i=0,1,2,3,...)$$

3. 检测位的取值
检测位的取值与该位所在的检测”小组“中承担的奇偶校验任务有关

汉明码的规模L掌握4+3即可。



配偶原则/偶校验:各小组的和为偶数

配奇原则/奇校验:各小组的和为奇数

汉明码的配置

例:按配偶原则配置0011的汉明码

第1,2,4位是检测位,第3,5,6,7位是数据位

汉明码的纠错过程

对k个小组的n个数据进行异或。

不出错时,P_{1}=0, P_{2}=0, P_{4}=0$

出错时,至少有一位是1


例题1:已知接收到的汉明码为0100111(按配偶原则配置)试问要求传送的信息是什么?




纠错方式一:
$P_{1}=0$,说明1,3,5,7都没错

$P_{2}=1$,说明2,3,6,7有一个有错

$P_{4}=1$,说明4,5,6,7有一个有错

所以揪出来有错的是6

纠错方式二:
把检测位从右到左写出来,对应的十进制码就是有错的那一位

$P_{4}$$P_{2}$$P_{1}=110$ → 十进制:6,所以有错的是6


例题2:写出按偶校验配置的汉明码0101101的纠错过程




经过例题1的方法,解得出错的是第4位,而第4位是检测位,程序不使用他,所以不影响使用,可不纠。

声明:奋斗小刘|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 计算机组成原理课堂笔记(四)存储器 part2


Make Everyday Count