存储器与CPU的连接
CPU是运算器和控制器的集成
存储器容量的扩展
(1)位扩展:(增加存储字长)
用2114($1K×4$位存储芯片)组成$1K×8$位的存储器,需要 $\underline{2片}$ 。

为保证同时工作:片选线($\overline{CS}$)和读写控制线($\overline{WE}$)接在一起
数据线各接各的,两组芯片能同时工作,因为数据线不冲突
地址的2进制与16进制的转换:
以1K为例:
最低地址 | 最高地址 | |
---|---|---|
二进制 | 00,0000,0000 | 11,1111,1111 |
十六进制 | 000H | 3FFH |
要会从十六进制最低、最高位地址,得出存储容量大小
十六进制 → 二进制 → 位数$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位是检测位,程序不使用他,所以不影响使用,可不纠。
Comments | NOTHING