一、实验目的
(1)将双端口通用寄存器堆和双端口存储器模块联机;
(2)进一步熟悉计算机的数据通路;
(3)掌握数字逻辑电路中故障的一般规律,以及排除故障的一般原则和方法;
(4)锻炼分析问题与解决问题的能力,在出现故障的情况下,独立分析故障现象,并排除故障。
二、实验任务
(1)将实验电路与控制台的有关信号进行线路连接。
(2)用8位数据开关向RF中的四个通用寄存器分别置入以下数据: R0=0FH, R1=0F0H, R2 =55H,R3= 0AAH。给R0置入0FH的步骤是:先用8位数码开关SW0-SW7 将0FH置入ER,并且选择WR1=0、WR0=0、WRD=1,再将ER的数据置入RF。给其他通用寄存器置入数据的步骤与此类似。
(3)分别将R0至R3中的数据同时读入到DR2寄存器中和DBUS上,观察其数据是否是存入R0至R3中的数据,并记录数据。其中DBUS. 上的数据可直接用指示灯显示,DR2中的数据可通过运算器ALU, 用直通方式将其送往DBUS。
(4)用8位数码开关SW0-SW7 向AR1送入一个地址0FH,然后将R0中的0FH写入双端口RAM。用同样的方法,依次将R1至R3中的数据写入RAM中的0F0H、55H、 0AAH 单元。
(5)分别将RAM中0AAH单元的数据写入R0,55H 单元的数据写入R1,0F0H单元写入R2,0FH单元写入R3。然后将R3、R2、R1、 R0中的数据读出到DBUS上,通过指示灯验证读出的数据是否正确,并记录数据。
(6)进行RF并行输入输出试验。
a.选择RS端口(B端口)对应R0, RD端口(A端口)对应R1, WR端口对应R2, 并使WRD= 1,观察并行输入输出的结果。选择RS端口对应R2, 验证刚才的写入是否生效。记
录数据。
b.保持RS端口(B端口)和WR端口同时对应R2,WRD=1,而ER中置入新的数据,观察并行输入输出的结果,RS 端口输出的是旧的还是新的数据?
(7)在数据传送过程中,发现了什么故障?如何克服的?
三、实验工具
模拟程序
四、实验步骤及实验结果
1、根据数据通路仿真面板要求进行连线
2、向RF中的四个通用寄存器分别置入数据
令K1(RS_BUS#)=1,K2(ALU_BUS)=0,K3(CEL#)=1,K4(LRW)=1,K5(LDAR1)=0,K6 (LDDR2) = 0, K8 (RS0) = 0,K9 (RS1) = 0, K10 (RD0) =0, K11 (RD1) =0,K12 (WR0) = 0,K13 (WR1) = 0,K14 (WRD) = 0。令K0 (SW_ BUS#) =0,K7 (LDER) = 1。置SW7-SW0 为0FH,按一次QD按钮,将0FH写入暂存寄存器ER。
令K7(LDER)=0,K14(WRD)=1,K12(WR0)=0,K13(WR1)=0,按一次QD按钮,将0FH (在ER中)写入R0寄存器。
令K0 (SW_ BUS#) = 0, K7 (LDER) = 1。置SW7-SW0 为0F0H,按一次QD按钮,将0FOH写入暂存寄存器ER。
令K7 (LDER) = 0,K14 (WRD) = 1, K12 (WR0) = 1,K13 (WR1)=0,按一次QD按钮,将0FOH (在ER中)写入R1寄存器。
令K0 (SW_ BUS#) = 0, K7 (LDER) = 1。置SW7-SW0为55H,按一次QD按钮,将55H写入暂存寄存器ER。
令K7(LDER)=0,K14(WRD)=1,K12(WR0)=0,K13(WR1)=1,按一次QD按钮,将55H (在ER中)写入R2寄存器。
令K0(SW_ BUS#) = 0,K7 (LDER) = 1。置SW7-SW0 为0AAH,按一次QD按钮,将0AAH写入暂存寄存器ER。
令K7(LDER)=0,K14(WRD)=1,K12(WR0)=1,K13(WR1)=1,按一次QD按钮,将0AAH (在ER中)写入R3寄存器。
3、 分别将R0至R3中的数据同时读入到DR2寄存器中和DBUS上,观察其数据是否是存入R0至R3中的数据。
a.令K0(SW_BUS#)=1,K2(ALU_BUS)=0,K3(CEL#)=1,K4(LRW)=1,K5(LDAR1)=0,K6 (LDDR2) =0,K7 (LDER) =0,K10 (RD0) =0, K11 (RD1) =0,K12 (WR0) =0,K13 (WR1)=0,K14(WRD)=0。将开关IR/DBUS至于DBUS位置。令K1 (RS_ BUS#) = 0,使寄存器堆中的数据送DBUS总线。令K8 (RS0)=0, K9 (RS1) =0, R0中的数据通过B端口送DBUS,数据指示灯应显示0FH。
令K8 (RS0)= 1,K9 (RS1) = 0,R1中的数据通过B端口送DBUS, 数据指示灯应显示0F0H。
令K8 (RS0) = 0,K9 (RS1) =1, R2中的数据通过B端口送DBUS,数据指示灯应显示55H。
令K8 (RS0)=1, K9 (RS1)=1,R3中的数据通过B端口送DBUS,数据指示灯应显示OAAH。
b.令K0(SW_BUS#)=1,K1(RS_BUS#)=1,K3(CEL#)=1,K4(LRW)=1,K5(LDAR1)=0,K7(LDER)=0,K8(RS0)=0,K9(RS1)=0,K12(WR0)=0,K13(WR1)=0,K14(WRD)= 0。将开关IR/DBUS至于DBUS位置。令K2 (ALU_ BUS) =1,使运算器ALU的运算结果送DBUS总线。
由于S2接GND,S1接GND,S0接VCC,ALU做直通运算,因此DBUS数据指示灯显示的是DR2寄存器的值。令K10(RD0)=0,K11(RD1)=0,K6(LDDR2)=1,按一次QD按钮,R0中的数据通过A端口送入DR2,DBUS 数据指示灯应显示0FH。
令K10 (RD0) = 1, K11 (RD1) = 0,K6 (LDDR2) = 1,按一次QD按钮,R1 中的数据通过A端口送入DR2,DBUS 数据指示灯应显示0F0H。
令K6 (LDDR2) =1,K10 (RD0) = 0,K11 (RD1) = 1,按一次QD按钮,R2中的数据通过A端口送入DR2,DBUS数据指示灯应显示55H。
令K10 (RD0) = 1, K11 (RD1) = 1, K6 (LDDR2) = 1,按一次QD按钮,R3中的数据通过A端口送入DR2,DBUS数据指示灯应显示0AAH。
4、将R0、R1、R2、R3中的数据依次送入存储器0FH、 0F0H、 55H、 0AAH单元。
令K2 (ALU_BUS) = 0, K5 (LDAR1) = 0, K6 (LDDR2) = 0,K7 (LDER) = 0,K10(RD0)=0,K11(RD1)=0,K12(WR0)=0,K13(WR1)=0,K14(WRD)=0。置AR1/AR2开关到AR1位置。令K1 (RS_ BUS#) = 1, K0 (SW_ BUS#) = 0, K5 (LDAR1) = 1, K3(CEL#) = 1,置SW7-SW0为0FH,按一次QD按钮,将AR1置为0FH,地址指示灯应显示0FH。
令K0 (SW_ BUS#) = 1,K1 (RS_BUS#) = 0,禁止数据开关SW7-SW0送DBUS,允许寄存器堆送数据总线DBUS。令K5(LDAR1)=0,K8(RS0)=0,K9(RS1)=0,K3(CEL#)=0,K4(LRW)=0,按一次QD按钮,将R0中的数据写入存储器0FH单元。
置AR1/AR2开关到AR1位置。令K1 (RS_BUS#) = 1,K0 (SW_ BUS#) = 0, K5 (LDAR1) = 1, K3(CEL#) = 1,置SW7-SW0为0F0H,按一次QD按钮,将AR1置为0F0H,地址指示灯应显示0F0H。
令K0 (SW_ BUS#)= 1, K1 (RS_ BUS#) = 0,禁止数据开关SW7-SW0 送DBUS,允许寄存器堆送数据总线DBUS。令K5(LDAR1)=0,K8(RS0)=1,K9(RS1)=0,K3(CEL#)=0,K4(LRW)=0,按一次QD按钮,将R1中的数据写入存储器0F0H单元。
置AR1/AR2开关到AR1位置。令K1 (RS_BUS#) = 1, K0 (SW_BUS#) = 0, K5 (LDAR1) = 1,K3(CEL#)= 1,置SW7-SW0为55H,按一次QD按钮,将AR1置为55H,地址指示灯应显示55H。
令K0 (SW_ BUS#) = 1,K1 (RS_BUS#) = 0,禁止数据开关SW7-SW0送DBUS,允许寄存器堆送数据总线DBUS。令K5 (LDAR1) = 0, K8 (RS0) = 0,K9 (RS1)= 1,K3 (CEL#)=0,K4 (LRW)=0,按一次QD按钮,将R2中的数据写入存储器55H单元。
置AR1/AR2开关到AR1位置。令K1 (RS_BUS#) = 1, K0 (SW_ BUS#) = 0, K5 (LDAR1)= 1,K3(CEL#)=1,置SW7—SW0为0AAH,按一次QD按钮,将AR1置为OAAH,地址指示灯应显示0AAH。
令K0 (SW_ BUS#)= 1, K1 (RS_ BUS#) = 0,禁止数据开关SW7-SW0送DBUS, 允许寄存器堆送数据总线DBUS。令K5(LDAR1)=0,K8(RS0)=1,K9(RS1)=1,K3(CEL#)=0,K4(LRW)=0,按一次QD按钮,将R3中的数据写入存储器0AAH单元。
5.将RAM中0AAH、55H、 0F0H、 0FH 单元的数据依次写入R0、R1、 R2、 R3。 然后将R3、R2、 R1、R0中的数据读出到DBUS上,通过指示灯验证读出的数据是否正确。
a.令K1(RS_BUS#)=1,K2(ALU_BUS)=0,K6(LDDR2)=0,K8(RS0)=0,K9(RS1)=0,K10 (RD0) = 0, K11 (RD1) = 0。令K0 (SW_BUS#) =0, K5 (LDAR1) =1, K3 (CEL#) =1, K14 (WRD) =0,置SW7-SW0为0AAH,按一次QD按钮,将AR1置为0AAH。
令K14 (WRD)=0, K0 (SW_ BUS#)=1, K3 (CEL#)=0, K4 (LRW)= 1, K5 (LDAR1)= 0, K7 (LDER) = 1,按一次QD按钮,将存储器0AAH单元的内容读出,写入到暂存寄存器ER。
令K0 (SW_BUS#)=1, K5 (LDAR1) =0, K7 (LDER) =0, K3 (CEL#)= 1, K14 (WRD)= 1,K12 (WR0) = 0, K13 (WR1) = 0,按一次QD按钮,将ER中的数据写入R0。
令K0 (SW_BUS#) = 0, K5 (LDAR1) = 1,K3 (CEL#) = 1, K14 (WRD) = 0,置SW7-SW0为55H,按一次QD按钮,将AR1置为55H。
令K14 (WRD) =0, K0 (SW_BUS#)=1, K3 (CEL#)=0, K4 (LRW)= 1,K5 (LDAR1) =0, K7 (LDER)= 1,按一次QD按钮,将存储器55H单元的内容读出,写入到暂存寄存器ER。
令K0 (SW_BUS#) =1,K5 (LDAR1) =0,K7 (LDER) =0, K3 (CEL#) = 1, K14 (WRD)= 1, K12 (WR0) = 1, K13 (WR1) = 0,按一次QD按钮,将ER中的数据写入R1。
令K0 (SW_BUS#) =0, K5 (LDAR1) =1, K3 (CEL#) =1, K14 (WRD) =0,置SW7-SW0为0F0H,按一次QD按钮,将AR1置为0F0H。
令K14 (WRD)=0, K0 (SW_BUS#)=1, K3 (CEL#)=0, K4 (LRW)= 1, K5 (LDAR1)= 0, K7 (LDER) = 1,按一次QD按钮,将存储器0F0H单元的内容读出,写入到暂存寄存器ER。
令K0(SW_BUS#)=1,K5 (LDAR1)=0,K7 (LDER)=0,K3 (CEL#)=1, K14 (WRD)= 1,K12 (WR0) = 0, K13 (WR1) = 1,按一次QD按钮,将ER中的数据写入R2。
令K0 (SW_BUS#) = 0, K5 (LDAR1) = 1,K3 (CEL#) = 1, K14 (WRD) = 0,置SW7-SW0为0FH,按一次QD按钮,将AR1置为0FH。
令K14 (WRD) =0, K0 (SW_ BUS#)=1, K3 (CEL#)=0, K4 (LRW)= 1, K5 (LDAR1) =0,K7 (LDER)= 1,按一次QD按钮,将存储器OFH单元的内容读出,写入到暂存寄存器ER。
令K0 (SW_BUS#) =1,K5 (LDAR1) =0,K7 (LDER) =0,K3 (CEL#) = 1, K14 (WRD)= 1, K12 (WR0) = 1, K13 (WR1) = 1,按一次QD按钮,将ER中的数据写入R3。
b.令K0(SW_ BUS#)= 1,K2 (ALU_ BUS) = 0, K3 (CEL#) = 1, K4 (LRW) = 1,K5 (LDAR1) = 0,K6 (LDDR2) =0,K7 (LDER) =0,K10 (RD0) =0,K11 (RD1) =0,K12 (WR0) =0,K13 (WR1)= 0, K14 (WRD)=0。将开关IR/DBUS 至于DBUS位置。
令K1 (RS_ BUS#) = 0,K8 (RS0) = 0,K9 (RS1)= 0,数据指示灯显示R0的值,应为0AAH。
令K8 (RS0) = 1, K9 (RS1) =0,数据指示灯显示R1的值,应为55H。
令K8(RS0)=0,K9(RS1)=1,数据指示灯显示R2的值,应为0F0H。
令K8(RS0)=1,K9 (RS1) = 1,数据指示灯显示R3的值,应为0FH。
6.进行RF并行输入输出试验
a.选择RS端口(B端口)对应RO,RD端口(A端口)对应R1,WR端口对应R2,并使WRD= 1,观察并行输,入输出的结果。选择RS端口对应R2,验证刚才的写入是否生效。
令K3 (CEL#) = 1, K4 (LRW) = 1,K5 (LDAR1) = 0。将开关IR/DBUS至于DBUS位置。令K0 (SW_ BUS#) =0, K1 (RS_BUS#) =1, K2 (ALU_ BUS) =0,K6 (LDDR2) =0,K7 (LDER) = 1, K14 (WRD) =0。将SW7-SW0置为35H,按一次QD按钮,将35H写入暂存寄存器ER。
令K0 (SW_BUS#) = 1, K1 (RS_BUS#) = 0,K2 (ALU_ BUS) = 0, K14 (WRD) = 1,K6 (LDDR2)=1。再令K8(RS0)=0,K9(RS1)=0,RS端口选择R0;K10(RD0)=1,K11(RD1)=0,RD端口选择R1; K12 (WR0) = 0, K13 (WR1) = 1, WR 端口选择R2。按一次QD按钮,这时ER中的数据(35H)写入了R2,同时R1中的数据(55H) 写入了DR2,R0中的数据送数据总线DBUS ( 其实,R0中的数据并不受QD按钮的影响)。数据指示灯应显示R0中的数据0AAH。
如果令K1 (RS_BUS#)=1,K2(ALU_BUS)= 1,数据指示灯应显示DR2的内容(即R1的内容),应为55H。
再令K1 (RS_ BUS#)= 0,K2 (ALU_ BUS) = 0,使数据指示灯仍显示RS端口的内容,同时令K8 (RSO) = 0, K9 (RS1) =1,RS端口选择R2,数据指示灯应显示新的R2的值,即35H。
b.保持RS端口(B端口)和WR端口同时对应R2,WRD= 1,而ER中置入新的数据,观察并行输入输出的结果,RS端口输出的是旧的还是新的数据?
令K2 (ALU_ BUS) =0,K3 (CEL#) = 1,K4 (LRW) = 1, K5 (LDAR1) =0, K6 (LDDR2) =0,K10(RD0) = 0,K11 (RD1) = 0。将开关IR/DBUS至于DBUS位置。令K0(SW_BUS#) = 0, K1 (RS_BUS#) = 1,K7 (LDER) = 1,K14 (WRD)=0。将SW7-SW0置为53H,按一次QD 按钮,将53H写入暂存寄存器ER。
令K0 (SW_ BUS#)=1, K1 (RS_ BUS#) =0,K8 (RS0) =0,K9 (RS1) = 1, RS端口选择R2,数据指示灯显示R2的值,应为35H。
令K14 (WRD)= 1, K12 (WR0)= 0, K13 (WR1)= 1, WR 端口选择R2,允许写操作。当按下QD按钮时,新的值53H从ER写入R2,数据指示灯立即变为53H。
7.在数据传送过程中,遇到的问题
数据传输的过程中发现,双端口RAM中F0的地址存放的数据不是F0的数据,导致在传过去ER时,数据不是F0。
解决:结合上次实验的步骤内容,重新给F0的地址赋予F0的数值。