+5VG1G2AMREQY7A15A14A13A12A0G2BABC74138......Y2Y1Y0...WE...WE.........CSWECPUD0D7RAM0......CSRAM1RAM7......CSR/W
图4.3 CPU与存储器芯片连接逻辑图
(2)地址空间分配图: RAM0:0000H-1FFFH RAM1:2000H-3FFFH RAM2:4000H-5FFFH RAM3:6000H-7FFFH RAM4:8000H-9FFFH RAM5:A000H-BFFFH RAM6:C000H-DFFFH RAM7:E000H-FFFFH
(3)如果运行时发现不论往哪片RAM写入数据后,以A000H为起始地址的存储芯片(RAM5)都有与其相同的数据,则根本的故障原因为:该存储芯片的片选输入端很可能总是处于低电平。假设芯片与译码器本身都是好的,可能的情况有:
1)该片的-CS端与-WE端错连或短路;
2)该片的-CS端与CPU的-MREQ端错连或短路; 3)该片的-CS端与地线错连或短路。
(4)如果地址线A13与CPU断线,并搭接到高电平上,将会出现A13恒为“1”的情况。此时存储器只能寻址A13=1的地址空间(奇数片),A13=0的另一半地址空间(偶数片)将永远访问不到。若对A13=0的地址空间(偶数片)进行访问,只能错误地访问到A13=1的对应空间(奇数片)中去。
4.17写出1100、1101、1110、1111对应的汉明码。
解:有效信息均为n=4位,假设有效信息用b4b3b2b1表示
k
校验位位数k=3位,(2>=n+k+1)
设校验位分别为c1、c2、c4,则汉明码共4+3=7位,即:c1c2b4c4b3b2b1 校验位在汉明码中分别处于第1、2、4位,具体安排如下:
二进制序号 名称 1 2 3 4 5 6 7 c1 c2 b4 c4 b3 b2 b1 按配偶原则来配置汉明码,则有: c1=3位⊕5位⊕7位=b4⊕b3⊕b1 c2=3位⊕6位⊕7位=b4⊕b2⊕b1 c4=5位⊕6位⊕7位=b3⊕b2⊕b1
当有效信息为1100时,c4c2c1=110,汉明码为0111100。 当有效信息为1101时,c4c2c1=001,汉明码为1010101。 当有效信息为1110时,c4c2c1=000,汉明码为0010110。 当有效信息为1111时,c4c2c1=111,汉明码为1111111。
4.18 已知收到的汉明码(按配偶原则配置)为1100100、1100111、1100000、1100001,检查上述代码是否出错?第几位出错?
解:假设接收到的汉明码为:c1’c2’b4’c4’b3’b2’b1’ 纠错过程如下:
P1=1位⊕3位⊕5位⊕7位=c1’⊕b4’⊕b3’⊕b1’ P2=2位⊕3位⊕6位⊕7位=c2’⊕b4’⊕b2’⊕b1’ P4=4位⊕5位⊕6位⊕7位=c4’⊕b3’⊕b2’⊕b1’
如果收到的汉明码为1100100,则p4p2p1=110,说明代码有错,第6位(b2’)出错,有效信息为:0110
如果收到的汉明码为1100111,则p4p2p1=111,说明代码有错,第7位(b1’)出错,有效信息为:0110
如果收到的汉明码为1100000,则p4p2p1=011,说明代码有错,第3位(b4’)出错,有效信息为:1000
如果收到的汉明码为1100001,则p4p2p1=100,说明代码有错,第4位(c4’)出错,有效信息为:0001
4.19 已知接收到下列汉明码,分别写出它们所对应的欲传送代码。 1100000(按偶性配置)、1100010(按偶性配置)、1101001(按偶性配置)、0011001(按奇性配置)、1000000(按奇性配置)、1110001(按奇性配置)
解:
(1)接收到的汉明码1100000、1100010、1101001(按偶性配置)。由于要求出欲传送的信息,必须是正确的信息,因此不能简单地从接收到的7位汉明码中去掉C1、C2、C4这3位检测位来求得。首先应该判断收到的信息是否出错。纠错过程如下:
P1=c1⊕b4⊕b3⊕b1 P2=c2⊕b4⊕b2⊕b1 P4=c4⊕b3⊕b2⊕b1
如果收到的汉明码为1100000,则p4p2p1=111,说明代码有错,第7位(b1)出错,可纠正为1100001,故欲传送的信息为:0001。
如果收到的汉明码为1100010,则p4p2p1=001,说明代码有错,第1位(c1)出错,可纠正为0100010,故欲传送的信息为:0010。
如果收到的汉明码为1101001,则p4p2p1=000,说明代码无错,故欲传送的信息为:0001。
(2)接收到的汉明码0011001、1000000、1110001(按奇性配置)。 按配奇原则纠错过程如下:
P1=c1⊕b4⊕b3⊕b1 P2=c2⊕b4⊕b2⊕b1 P4=c4⊕b3⊕b2⊕b1 如果收到的汉明码为0011001,则p4p2p1=111,说明代码有错,第7位(b1)出错,可纠正为0011000,故欲传送的信息为:1000。
如果收到的汉明码为1000000,则p4p2p1=110,说明代码有错,第6位(b2)出错,可纠正为1000010,故欲传送的信息为:0010。
如果收到的汉明码为1110001,则p4p2p1=000,说明代码无错,故欲传送的信息为:1001。
4.20 欲传送的二进制代码为1001101,用奇校验来确定其对应的汉明码,若在第6位出错,说明纠错过程。
解:(1)根据1001101,得n=7。根据2>=n+k+1,可求出需增添k=4位检测位,各位的安排如下: 二进制代码 1 2 3 4 5 6 7 8 9 10 11 汉明码 C1 C2 按配奇原则配置,则:
————————————————
k
1 C4 0 0 1 C8 1 0 1
C1=3⊕5⊕7⊕9⊕11=1
————————————————
C2=3⊕6⊕7⊕10⊕11=0
—————————
C4=5⊕6⊕7=0
——————————
C8=9⊕10⊕11=1
故新配置的汉明码为1 0 1 0 0 0 1 1 1 0 1。
按配奇原则纠错过程如下: P1=1⊕3⊕5⊕7⊕9⊕11 P2=2⊕3⊕6⊕7⊕10⊕11 P4=4⊕5⊕6⊕7 P8=8⊕9⊕10⊕11
如果是第6位出错,按照以上式子计算可得P8 P4 P2 P1=0110,对第6位取反即可纠错。
4.21 为什么在汉明码纠错过程中,新的检测位p4p2p1的状态即指出了编码中错误的信息位?
解:有效信息为n=4位,假设有效信息用b4b3b2b1表示,则
k
校验位位数k=3位,(2>=n+k+1)
设校验位分别为c1、c2、c4,则汉明码共4+3=7位,即:c1c2b4c4b3b2b1 校验位在汉明码中分别处于第1、2、4位,具体安排如下: 二进制序号 名称 1 2 3 4 5 6 7 c1 c2 b4 c4 b3 b2 b1 按配偶原则来配置汉明码,则有: c1=3位⊕5位⊕7位=b4⊕b3⊕b1
c2=3位⊕6位⊕7位=b4⊕b2⊕b1 c4=5位⊕6位⊕7位=b3⊕b2⊕b1
假设接收到的汉明码为:c1’c2’b4’c4’b3’b2’b1’ 纠错过程如下:
P1=1位⊕3位⊕5位⊕7位=c1’⊕b4’⊕b3’⊕b1’ P2=2位⊕3位⊕6位⊕7位=c2’⊕b4’⊕b2’⊕b1’ P4=4位⊕5位⊕6位⊕7位=c4’⊕b3’⊕b2’⊕b1’ (1)假设只有1位校验位出错
①若c1’出错,则P4 P2 P1=001; ②若c2’出错,则P4 P2 P1=010; ③若c4’出错,则P4 P2 P1=100。
可见直接由P4 P2 P1指出了出错位,但校验位出错可以不纠错。 (2)假设只有1位有效信息位出错
P1=1位⊕3位⊕5位⊕7位=c1’⊕b4’⊕b3’⊕b1’= b4⊕b3⊕b1⊕b4’⊕b3’⊕b1’ P2=2位⊕3位⊕6位⊕7位=c2’⊕b4’⊕b2’⊕b1’= b4⊕b2⊕b1⊕b4’⊕b2’⊕b1’ P4=4位⊕5位⊕6位⊕7位=c4’⊕b3’⊕b2’⊕b1’= b3⊕b2⊕b1⊕b3’⊕b2’⊕b1’ ①若b4出错,则P4 P2 P1=011; ②若b3出错,则P4 P2 P1=101; ③若b2出错,则P4 P2 P1=110; ④若b1出错,则P4 P2 P1=111。
可见直接由P4 P2 P1指出了出错位,将出错位取反便可纠错。
4.22 某机字长16位,常规的存储空间为64K字,若想不改用其他高速的存储芯片,而使访存速度提高到8倍,可采取什么措施?画图说明。
解:若想不改用高速存储芯片,而使访存速度提高到8倍,可采取八体按低位交叉编址存取技术,8体交叉访问时序如图4.4:
启动存储体0启动存储体1启动存储体2启动存储体3启动存储体4启动存储体5启动存储体6启动存储体7单体访存周期
图4.4 CPU与存储器芯片连接逻辑图
4.23设CPU共有16根地址线,8根数据线,并用M/-IO作为访问存储器或I/O的控制信号(高电平为访存,低电平为访I/O),-WR(低电平有效)为写命令,-RD(低电平有效)为读命令。设计一个容量为64KB的采用低位交叉编址的8体并行结构存储器。现有如图所示的存储芯片及138译码器。
Ai A0 -OE 允许读 -WE 允许写 -CE 片选 … -OE RAM -CE -WE Dn … D0
画出CPU和存储芯片(芯片容量自定)的连接图,并写出图中每个存储芯片的地址范围(用十六进制数表示)。
解:芯片容量=64KB/8=8KB
每个芯片(体)的地址范围以8为模低位交叉分布如下:
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
8Kx8 RAM 0000H, 0008H, ,……, FFF8H 8Kx8 RAM 0001H, 0009H, ,……, FFF9H 8Kx8 RAM 0002H, 000AH, ,……, FFFA
H 8Kx8 RAM 0003H, 000BH, ,……, FFFB
H 8Kx8 RAM 0004H, 000CH, ,……, FFFC
H 8Kx8 RAM 0005H, 000DH, ,……, FFFD
H 8Kx8 RAM 0006H, 000EH, ,……, FFFE
H
8Kx8 RAM 0007H, 000FH, ,……, FFFFH
CPU和存储芯片的连接图如图4.5所示。