江苏大学
计算机组成原理课程设计报告
专业名称: 网络工程
班级学号:3130610031
学生姓名:张杰
指导教师:胡广亮
设计时间: 2013年 6 月 24 日— 2013年 7 月 2 日
第一天:熟悉微程序的设计和调试方法
一、设计目标
1、掌握微程序的设计方法
2、熟悉利用调试软件运行、调试微程序的方法
二、操作提示
1、连接实验设备
注意:请在断电状态下连接调试电缆。
2、下载 FPGA 配置数据
从课程网站下载CPU.sof等文件,使用 Quartus II Programmer 软件将 CPU.sof 下载到
FPGA。
3、输入微程序
利用调试软件将微程序写入控存,微程序如下。
取指令微程序
取源操作数为立即数的微程序
取目的操作数为寄存器寻址的微程序
MOV 指令的微程序(目的数寄存器寻址)
4、输入调机程序
今天的将调机程序就是一条指令: “ MOV #0001H, R1 ”。首先将指令翻译成机器码,根
据指令的编码规则,该指令的编码是:0761 0001。然后利用调试软件将指令码写入主存,
地址从主存的 0030H 开始。
5、调试微程序。
利用调试软件“ Step”按钮控制微指令单步执行,执行结果如图2.3 所示
2.3 例 2.1 MOV 指令的单步运行跟踪数据
6、分析微程序的执行结果,一般方法如下:
首先分析微程序执行流程是否正确,根据前面指令微流程的设计,理论上该指令微程序
的执行顺序应该是001→002→003→ 004→ 00B→00F→016→006→ 018→ 007→031→02D→
02E→ 000,通过调试软件的执行结果图2.3 可以看出,该指令微程序的微指令次序是正确
的。
如果执行的微指令次序不正确,那就要分析原因, 检查 BM 和 NC 设置是否正确、 检查 uAR
的各个输入信号的值是否正确,如IR、NA 等。
然后分析指令的运行结果。理论上本条测试指令执行完后,R1 的值应该是 0001。通过
调试软件的执行结果图2.3 可以看出,指令执行结果是正确的。如果结果不对,就需要进
一
步分析每一条微指令。分析的方法是针对微指令的每一条微命令,查看相应微操作前后相
关
模块的数据变化是否与指令微流程一致。下面举个例子说明如何分析每条微指令的。
图 2.3 的微地址为 000B(uAR= 000B)的控存单元所对应的内容为2008000F,即微指
令为 2008000F,所代表的微操作是: PCoe,ARce,即 PC 的内容送 IB、IB 的内容送 AR,
理论上的正确结果应该是IB=0031, AR=0031;通过图2.3 的 000B 单元微指令的执行结果
可
以看出, IB 的数据由上一条微指令的结果0000→ 0031, AR 的数据由上一条微指令的结果
0030→0031,说明本条微指令执行结果是正确。
从上面的分析可以看出,要想检查运行结果是否正确,关键是要清楚理论上正确的结果
是什么。这就要求实验者对指令的微程序流程非常清楚,从而达到了理解计算机内部信息
流
动过程、掌握计算机工作原理的目的。所以实验者应重视实验数据的分析工作,否则就失
去
了实验的意义。
1、测试内容:立即数寻址、寄存器寻址
测试指令(或程序):MOV #0001H, R1
机器码:
内存地址
机器码 (H)汇编指令
(H)
00300761 0001MOV #0001H, R1
运行结果:
第二天取操作数微程序的设计和调试
一、设计目标
设计并调试取操作数的微程序。
二、取操作数微流程
取目的操作数流程:
三、测试程序、数据及运行结果
格式如下 :
1、测试内容:间接寻址、寄存器寻址
测试指令(或程序):MOF (0048)R1
机器码:
内存地址
机器码 (H)汇编指令
(H)
0721 0048 0058 MOF ( 0048)R1
0030
0001
运行结果:
四、设计中遇到的问题及解决办法
在设计过程中开始对调试程序的运行不熟悉,不是很了解了此程序的运行。在操作过
程中,粗心导致了输入机器码的错误,或者是所在位置错误,重新输入解决了此问题。我
详细地了解了它的整个过程和对于每一步的分析和验证,对微程序设计有了更深入的了解。
第三天双操作数指令的微程序设计与调试
一、设计目标
设计并调试运算指令的微程序。
二、双操作数指令微程序入口地址
指令编码
指令助记符
入口地址
( H )
FEDCBA9876543210
MOV src, dst
目的地址031
000001
源地址码
码
ADD src, dst
目的地址032
000010
源地址码
码
ADDC src, dst
目的地址033
00001