(实验五 CPU组成与指令周期实验)
课程 计算机组成原理实验
实验日期 2015 年 12 月 8 日
一、实验目的
1.将微程序控制器同执行部件(整个数据通路)联机,组成一台模型计算机。
2.用微程序控制器控制模型计算机的数据通路。
3.通过TEC-5执行由8条机器指令组成的简单程序,掌握机器指令与微指令的关系,牢固建立计算机的整机概念。
二、实验内容
1. 实验电路图1
2.实验任务
(1)将下表5-1的程序按机器指令格式手工汇编成二进制机器代码(要求预习时完成)。
表5-1
内存地址 |
机器指令 |
机器代码(十六进制表示) |
00H |
ADD R1, R0 |
01H |
01H |
JC R3 |
5CH |
02H |
STA R1, [R2] |
39H |
03H |
LDA R2, [R2] |
4AH |
04H |
AND R2, R0 |
22H |
05H |
SUB R2, R3 |
1EH |
06H |
OUT R2 |
78H |
07H |
STP |
60H |
(2) 将实验任务(1)中的程序代码用控制台指令存入内存中,并根据程序的需要,用数码开关SW7-SW0设置通用寄存器的数据和内存数据。要求使用两组寄存器数据,第一组寄存器数据在执行 ADD R1,R0指令时产生进位,第二组寄存器数据在执行ADD R1,R0指令时不产生进位,以观察同一程序的不同执行流程。
(3)用单拍(DP)方式执行一遍程序,记录最后得到的四个寄存器的数据,以及由STA指令存入RAM中的数据,与理论分析值比较。执行时注意观察各个指示灯的显示,以跟踪程序执行的详细过程(可观察到每一条微指令的执行过程)。
(4)用连续方式再次执行程序。这种情况相当于计算机正常的工作。程序执行到STP指令后自动停机。读出寄存器中的运算结果,与理论值比较。
参考数据:
假设第一组数据:
预置寄存器数据R0=35H,R1=43H,R2=10H,R3=07H。存储器10H单元的内容为55H。
假设第二组数据:
预置寄存器数据R0=86H,R1=88H,R2=10H,R3=07H。存储器10H单元的内容为55H。
三、实验环境
软件: WIN XP、串口调试助手软件
硬件:1.微机 1台
2.TEC-5实验系统 1台
3.逻辑测试笔 1支
4.编程器 公用
四、实验步骤和实验结果
(一)对机器指令系统组成的简单程序进行手工译码的结果如下:
内存地址 |
机器指令 |
机器代码(十六进制表示) |
00H |
ADD R1, R0 |
01H |
01H |
JC R3 |
5CH |
02H |
STA R1, [R2] |
39H |
03H |
LDA R2, [R2] |
4AH |
04H |
AND R2, R0 |
22H |
05H |
SUB R2, R3 |
1EH |
06H |
OUT R2 |
78H |
07H |
STP |
60H |
(二)接线表:
控制器 |
LDIR |
PC+1 |
LDPC# |
AR+1 |
LDAR# |
LDDR1 |
LDDR2 |
LDRi |
数据通路 |
LDIR |
PC+1 |
LDPC# |
AR+1 |
LDAR# |
LDDR1 |
LDDR2 |
LDRi |
控制器 |
SW_BUS# |
Rs_BUS# |
ALU_BUS# |
RAM_BUS# |
CER# |
CEL# |
数据通路 |
SW_BUS# |
Rs_BUS# |
ALU_BUS# |
RAM_BUS# |
CER# |
CEL# |
控制器 |
LR/W# |
Cn# |
M |
S0 |
S1 |
S2 |
S3 |
数据通路 |
LR/W# |
Cn# |
M |
S0 |
S1 |
S2 |
S3 |
控制器 |
进位C |
IR7 |
IR6 |
IR5 |
IR4 |
数据通路 |
进位C |
IR7 |
IR6 |
IR5 |
IR4 |
数据通路 |
IR3 |
IR2 |
IR1 |
IR0 |
IR1 |
IR0 |
数据通路 |
RS1 |
RS0 |
RD1 |
RD0 |
WR1 |
WR0 |
控制器 |
TJ |
时序电路 |
TJ |
(三)打开TEC-5电源。
(四)用串口调试助手对控存EEPROM进行改写。
首先需要用串口调试助手对控存EEPROM进行改写:
TEC-5中的4片EEPROM(CM0-CM3,U35-U38)是控存,里面装有TEC-5微程序的微代码。由于它是电可擦除可编程的EEPROM,因此可以实现不用将CM0-CM3从插座上取出就能实现对其编程的目的。为此我们在TEC-5上用1片单片机芯片89S52(U39)和一些附加电路实现了不用拔出CM0-CM3就能对其编程,从而改写这些EEPROM中微代码的目的。89S52中包含一个监控程序,它负责通过串行口和PC机通讯,向PC机发出提示信息、接收命令和数据,并根据接收到的命令(0,1,2,3)决定将随后收到的64个数据写入指定的EEPROM。命令0、1、2、3指定写那个器件,0对应CM0,1对应CM1,2对应CM2,3对应CM3。64个字节的数据将写入指定EEPROM的前64个单元(地址00H-3FH)。
注意波特率为1200波特。
CM0-CM3的下载步骤:
(1)在TEC-5关闭电源的情况下,用出厂时提供的RS232串口线将TEC-5实验仪的串口与主机的串口连接起来。TEC-5上的编程开关拨到“1编程”位置。将串口调试助手程序打开,设置好参数。打开电源。按一下复位键RESET,使控制存储器处于接收信息状态,此时TEC-5中微地址与微码的指示灯全亮。(注意:在数据传送过程中这些指示灯会闪烁)。
(2)软件的数据接收区此时会显示‘WAITING FOR COMMAND ...’,如下图4。按“清空重填”按钮,然后请在数据发送窗口写入‘0’,按‘手动发送’按钮,将命令‘0’发送给89S52,表示通知它要写CM0文件了。
(3)此时数据接收区会出现‘PLEASE CHOOSE A CM FILE’,如下图5所示,请通过按钮‘选择发送文件’,选择要写入二进制文件(如CM0.BIN),文件必须是“BIN”格式,长度为64字节。然后点击‘发送文件’按钮,将文件发往89S52。89S52接收数据并对CM0编程,然后它读出CM0的数据和从PC机接收到数据比较,不管正确与否,89S52都向PC机发出结果信息,在串口调试助手软件数据接收窗口显示出来。如果发送成功,则结果如下图6所示。
图4 数据接收区等待命令窗口
图5 选择发送文件窗口
图6 数据接收区发送成功窗口
(4)等待文件发送完毕的提示(注意看软件的最底下的状态行和数据接收区),请注意看数据接收区的命令提示,重复(2)-(3)步骤,分别输入命令‘1’、‘2’、‘3’,同时,应分别选择CM1、CM2、CM3文件,对相应的EEPROM编程。CM1、CM2、CM3全部编程完后,按RESET按钮结束编程。最后将TEC-5上的编程开关拨到正常位置。
注意:对CM0、CM1、CM2、CM3的编程顺序无规定,只要在发出器件号后紧跟着发送该器件的编程数据(文件)即可。例如,可以按CM3、CM2、CM0、CM1的顺序编程。编程也可以只对一个或者几个EEPROM编程,不一定对4个EEPROM全部编程,只要编程结束后按RESET按钮结束编程,最后将TEC-5上的编程开关拨到正常位置即可
(五)存程序代码。
设置通用寄存器R0、R1、R2和R3的第一组值及存储器相关单元的数据。
设本组的寄存器数据R0=35H,R1=43H,R2=10H,R3=07H。存储器10H单元的内容为55H。选择这组数据的目的是执行ADD R1,R0指令时不产生进位C,从而在执行JC R3指令时不产生跳转,而是顺序执行。
设置通用寄存器R0、R1、R2和R3的值
在本操作中,置R0=35H,R1=43H,R2=10H,R3=07H
(1)令DP=0,DB=0,使系统处于连续运行状态。令SWC=0,SWB=1,SWA=1,使系统处于写寄存器状态WRF。按CLR#按钮,使实验系统处于初始状态。
(2)在SW7—SW0上设置一个存储器地址,该存储器地址供设置通用寄存器使用。即该地址设