(完整word版)CPU组成与机器指令执行实验 下载本文

内容发布更新时间 : 2024/7/9 4:42:04星期一 下面是文章的全部内容请认真阅读。

CPU组成与机器指令执行实验

一、实验目的

(1)将微程序控制器同执行部件(整个数据通路)联机,组成一台模型计算机; (2)用微程序控制器控制模型机数据通路;

(3)通过CPU运行九条机器指令(排除中断指令)组成的简单程序,掌握机器指令与微指令的关系,牢固建立计算机的整机概念。

二、实验电路

本次实验用到前面四个实验中的所有电路,包括运算器、存储器、通用寄存器堆、程序计数器、指令寄存器、微程序控制器等,将几个模块组合成为一台简单计算机。因此,在基本实验中,这是最复杂的一个实验,也是最能得到收获的一个实验。 在前面的实验中,实验者本身作为“控制器”,完成数据通路的控制。而在本次实验中,数据通路的控制将由微程序控制器来完成。CPU从内存取出一条机器指令到执行指令结束的一个机器指令周期,是由微指令组成的序列来完成的,即一条机器指令对应一个微程序。

三、实验设备

(1)TEC-4计算机组成原理实验系统一台 (2)双踪示波器一台 (3)直流万用表一只 (4)逻辑测试笔一支

四、实验任务

(1)对机器指令系统组成的简单程序进行译码。

将下表的程序按指令格式手工汇编成十六进制机器代码,此项任务应在预习时完成。

地址 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 指令 LDA R0,[R2] LDA R1,[R3] ADD R0,R1 JC +5 AND R2,R3 SUB R3,R2 STA R3,[R2] MUL R0,R1 STP JMP [R1] 机器代码

(2)按照下面框图,参考前面实验的电路图完成连线,控制器是控制部件,数据通路(包括上面各模块)是执行部件,时序产生器是时序部件。连线包括控制台、时序部分、数据通路和微程序控制器之间的连接。其中,为把操作数传送给通用寄存器组RF,数据通路上的RS1、RS0、RD1、RD0应分别与IR3至IR0连接,WR1、WR0也应接到IR1、IR0上。

开关控制

控制台 时序发生器 时序信号 开关控制 指示灯信号 控制信号 时序信号 控制信号

微程序控制器 数据通路 指令代码、条件信号

模型计算机连线示意图

(3)将上述任务(1)中的程序机器代码用控制台操作存入内存中,并根据程序的需要,用数码开关SW7—SW0设置通用寄存器R2、R3及内存相关单元的数据。注意:由于设置通用寄存器时会破坏内存单元的数据,因此一般应先设置寄存器的数据,再设置内存数据。 (4)用单拍(DP)方式执行一遍程序,列表记录通用寄存器堆RF中四个寄存器的数据,以及由STA指令存入RAM中的数据(程序结束后从RAM的相应单元中读出),与理论分析值作对比。单拍方式执行时注意观察微地址指示灯、IR/DBUS指示灯、AR2/AR1指示灯和判断字段指示灯的值,以跟踪程序中取指令和执行指令的详细过程(可观察到每一条微指令)。 (5)以单指(DZ)方式重新执行程序一遍,注意观察IR/DBUS指示灯、AR2/AR1指示灯的值(可观察到每一条机器指令)。执行结束后,记录RF中四个寄存器的数据,以及由STA指令存入RAM中的数据,与理论分析值作对比。注意:单指方式执行程序时,四个通用寄存器和RAM中的原始数据与第一遍执行程序的结果有关。

(6)以连续方式(DB、DP、DZ都设为0)再次执行程序。这种情况相当于计算机正常运行程序。由于程序中有停机指令STP,程序执行到该指令时自动停机。执行结束后,记录RF中四个寄存器的数据,以及由STA指令存入RAM中的数据,与理论分析值作对比。同理,程序执行前的原始数据与第二遍执行结果有关。

五、实验步骤和实验结果

(1)对机器指令系统组成的简单程序进行译码。

地址 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 指令 LDA R0,[R2] LDA R1,[R3] ADD R0,R1 JC +5 AND R2,R3 SUB R3,R2 STA R3,[R2] MUL R0,R1 STP JMP [R1] 机器代码

(2)接线

本实验的接线比较多,需仔细。 1. 将跳线开关J1用短路子短接。时序发生器的输入TJI接控制存储器的输出TJ。控制器

的输入C接运算器ALU的C。控制器的输入IR7、IR6、IR5、IR4依次指令寄存器IR的输出IR7、IR6、IR5、IR4。共6条线。 2. 控制器的输出LDIR(CER)、LDPC(LDR4)、PC_ADD、PC_INC、M4、LDIAR、LDAR1(LDAR2)、

AR1_INC、M3、LDER、IAR_BUS#、SW_BUS#、RS_BUS#、ALU_BUS、CEL#、LRW、WRD、LDDR1(LDDR2)、M1(M2)、S2、S1、S0依次与数据通路的对应信号连接。共27条线。 3. 指令寄存器IR的输出IR0接双端口寄存器堆的RD0、WR0,IR1接RD1、WR1,IR2接RS0,

IR3接RS1。共6条线。

合上电源。按CLR#按钮,使实验系统处于初始状态。

(3)存程序机器代码,设置通用寄存器R2、R3及内存相关单元的数据。

? 设置通用寄存器R2、R3的值。

在本操作中,我们打算使R2 = 60H,R3 = 61H。

1.令DP = 0,DB = 0,DZ =0,使实验系统处于连续运行状态。令SWC = 0、SWB = 1、SWA

= 1,使实验系统处于寄存器加载工作方式KLD。按CLR#按钮,使实验系统处于初始状态。

2. 在SW7—SW0上设置一个存储器地址,该存储器地址供设置通用寄存器使用。该存储器

地址最好是不常用的一个地址,以免设置通用寄存器操作破坏重要的存储器单元的内容。例如可将该地址设置为0FFH。按一次QD按钮,将0FFH写入AR0和AR1。

3. 在SW7—SW0上设置02H,作为通用寄存器R2的寄存器号。按一次QD按钮,则将02H写

入IR。

4. 在SW7—SW0设置60H,作为R2的值。按一次QD按钮,将60H写入IR指定的R2寄存

器。

5. 在SW7—SW0上设置03H,作为通用寄存器R3的寄存器号。按一次QD按钮,将03H写入

IR。

6. 在SW7—SW0设置61H,作为R3的值。按一次QD按钮,将61H写入R3。 7. 设置R2、R3结束,按CLR#按钮,使实验系统恢复到初始状态。

? 存程序机器代码。 本操作中,我们从00地址开始存10个机器代码:58H,5DH,04H,95H,3EH,1BH,4BH,24H,60H,84H。在60H存入24H,用于给R0置初值;在61H存入83H,用于给R0置初值。 1. 令DP = 0,DB = 0,DZ =0,使实验系统处于连续运行状态。令SWC = 0、SWB = 1、SWA

= 0,使实验系统处于写双端口存储器工作方式KWE。按CLR#按钮,使实验系统处于初始状态。 2. 置SW7—SW0为00H,按QD按钮,将00H写入AR1。 3. 置SW7—SW0 为58H,按QD按钮,将58H写入存储器00H单元。AR1自动加1,变为01H。 4. 置SW7—SW0为5DH,按QD按钮,将5DH写入存储器01H单元。AR1自动加1,变为02H。 5. 按QD按钮,使AR1+1。AR1此时为02H。 6. 重复进行下去,一直到将84H写入存储器09H单元。按CLR#按钮,使实验系统恢复到初

始状态。 7. 置SW7—SW0为60H,按QD按钮,将60H写入AR1。 8. 置SW7—SW0 为24H,按QD按钮,将24H写入存储器60H单元。AR1自动加1,变为61H。 9. 置SW7—SW0 83H,按QD按钮,将83H写入存储器61H单元。按CLR#按钮,使实验系统

恢复到初始状态。