2024年3月20日发(作者:)
武汉理工大学《计算机组成原理》课程设计说明书
课程设计任务书
学生姓名: 专业班级:
指导教师: 工作单位:
题 目: 基本模型机的设计——
跳转指令的实现
初始条件:
理论:学完“电工电子学”、“数字逻辑”、“汇编语言程序设计”
、
和“计算机组
成原理”课程,掌握计算机组成原理实验平台的使用。
实践:计算机学院科学系实验中心提供计算机、实验的软件、硬件平台,在实验中心
硬件平台验证设计结果。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1、基本模型机系统分析与设计,利用所学的计算机组成原理课程中的知识和提供的
实验平台完成设计任务,从而建立清晰完整的整机概念。
2、根据课程设计题目的要求,编制实验所需的程序,上机测试并分析所设计的程序。
3、课程设计的书写报告应包括:
(1)课程设计的题目。
(2)设计的目的及设计原理。
(3)根据设计要求给出模型机的逻辑框图。
(4)设计指令系统,并分析指令格式。
(5)设计微程序及其实现的方法(包括微指令格式的设计,后续微地址的产生方
法以及微程序入口地址的形成)。
(6)模型机当中时序的设计安排。
(7)设计指令执行流程。
(8)给出编制的源程序,写出程序的指令代码及微程序。
(9)说明在使用软件HKCPT的联机方式与脱机方式的实现过程(包括编制程序中
跳转指令的时序分析,累加器A和有关寄存器、存储器的数据变化以及数据
流程)。
(10)课程设计总结(设计的特点、不足、收获与体会)。
时间安排:
设计时间为第18周
周一:熟悉相关资料。 周二:系统分析,设计程序。
周三、四:编程并上实验平台调试 周五:撰写课程设计报告。
指导教师签名: 年 月 日
系主任(或责任教师)签名: 年 月 日
1
武汉理工大学《计算机组成原理》课程设计说明书
基本模型机的设计
——跳转指令的实现
1、课程设计的题目
基本模型机的设计——跳转指令的实现
2设计的目的及设计的原理
2.1设计的目的
1、掌握了各个单元模块的工作原理,进一步将其组成整的系统,构造成1台基本的模型
计算机。
2、根据实验要求,规划读写内存、寄存器、数值计算等功能,并且编写相应的微程序。
用软件HKCPT的微单步功能观察指令运行状态,掌握微程序控制原理。
3、利用所学的计算机组成原理课程中的知识和提供的实验平台完成设计任务,从而建
立清晰完整的整机概念,具体上机调试各个模块单元以便进一步掌握整机的概念。
2.2设计的原理
在各个模型实验中,各模块的控制信号都是由实验者手动模拟产生的。而在真正的试
验系统中,模型机的运行是在微程序的控制下,实现特定指令的功能。在本实验平台中,
模型机从内存中取出、解释、执行机器指令都由微指令和与之相配合的时序来完成,既1
条机器指令对应1个微程序。
3模型机的总体设计
3.1基本模型机系统分析与设计
1、简单的模型计算机是由算术逻辑运算单元、微程序单元、堆栈寄存器单元、累加器、
启停、时序单元、总线和存储器单元组成。
2、在模型机中,我们将要实现RAM的读写指令,寄存器的读写指令,跳转指令,ALU的
加、减指令。把通用寄存器作为累加器A们进行左、右移等操作指令,整体构成一个单累
加器多寄存器的系统。
2
武汉理工大学《计算机组成原理》课程设计说明书
3、根据设计要求,对实验仪硬件资源进行逻辑组合,便可设计出该模型机的整机逻辑
框图。
3.2模型机的逻辑框图
4设计指令系统
本实验平台内采用的是8位数据总线和8位地址总线,在设计指令系统时考
虑有如下几种类型的指令和寻址方式及编码方式:
4.1指令类型
4.1.1算术/逻辑运算类指令
如:加法、减法、取反、逻辑运算
ADD A,Ri , SUB A,Ri
4.1.2移位操作类指令
3
武汉理工大学《计算机组成原理》课程设计说明书
带进位或不带进位的移位指令
RRC A , RLC A , RR A
4.1.3数据传送类指令
CPU内部寄存器之间数据传递
MOV A , Ri
MOV Ri , A
4.1.4程序跳转指令
跳转指令分为无条件跳转指令和有条件跳转指令。可根据寄存器内容为零来标志(ZD)、
有无进位来标志(CY),也可根据用户自定义标志。
JMP addr 无条件跳转
JZ addr ZD=0 时跳转
JC addr CY=0 时跳转
JN addr 自定义
4.1.5存储器操作类指令
存储器读/写指令。把内存某单元内容写入寄存器中或把寄存器中的内容写入存储器。
如: LDA addr (addr)->A
STA addr (A)->addr
4.2操作数寻址方式及编码
4.2.1直接地址寻址
如:双字节指令
LDA addr (addr)->A
STA addr (A)->addr
第1字节
I7 I6 I5 I4 I3 I2 I1 I0
操作码
4
武汉理工大学《计算机组成原理》课程设计说明书
第2字节
A7 A6 A5 A4 A3 A2 A1 A0
操作数地址addr
4.2.2寄存器直接寻址
指令字节中含有寄存器选择码,决定选择哪个寄存器进行操作。
如:单字节指令
MOV A , Ri (Ri)->A
单字节
I7 I6 I5 I4 I3 I2 I1 I0
操作码与Ri选择码
如:双字节指令
MOV Ri ,#data data->Ri
第1字节
I7 I6 I5 I4 I3 I2 I1 I0
操作码与Ri选择码
第2字节
D7 D6 D5 D4 D3 D2 D1 D0
Data
4.2.3寄存器间接寻址
如:单字节指令
MOV A ,@Ri (Ri)->A
Ri选择码
I7 I6 I5 I4 I3 I2 I1 I0
操作码
4.2.4立即数寻址
如:单字节指令
5
武汉理工大学《计算机组成原理》课程设计说明书
MOV A ,#data data->A
MOV Ri,#data data->Ri
第1字节
I7 I6 I5 I4 I3 I2 I1 I0
操作码与Ri选择码
第2字节
D7 D6 D5 D4 D3 D2 D1 D0
Data
5设计微程序及其实现的方法
5.1微指令格式的设计
在本实验平台的硬件设计中,采用24位微指令,若微指令采用全水平不编码纯控制场
的格式,那么至多可有24个微操作控制信号,可右微代码直接实现。如果采用多组编码
译码,那么24位微代码通过二进制译码可实现
2
n
个互斥的微操作控制信号。
由于模型机指令系统规模较小,功能也不太复杂,所以采用全水平不编码纯控制场的
微指令格式。
5.2后续微地址的产生方法
每条指令由不超过4条的微指令组成,那么可根据下表组成每条微程序的首地址。微
指令的运行顺序为下地址确定法,即采用计数增量方法,每条微指令执行过后微地址自动
加1,指向下下一条微指令地址。例如:确定了一条程序的微程序入口地址位07H,那么当
执行完07H这条微指令后微地址加1,指向08H微地址。微地址寄存器由2篇74LS161组
成,当模型机在停机状态下,微地址被清零。当实验平台开始运行时,微地址从00H开始
运行。且00H放置一条取指指令,根据程序开始地址从内存中读出第一条指令。
00
01
02
03
04
05
取指微指令
减法指令微程序(1)
减法指令为程序(2)
6
武汉理工大学《计算机组成原理》课程设计说明书
06
07
08
09
0A
0B
0C
0D
0E
0D
…
MOV指令微程序(1)
MOV指令微程序(2)
MOV指令微程序(3)
…
5.3微程序入口地址的形成
在模型机中,用指令操作码的高4位作为核心扩展成8位的微程序入口地址MD0~MD7,
这种方法成为“按操作码散转”(如下表所示)。
MD7
0
MD6
0
MD5
I7
微程序首地址形成
MD4 MD3 MD2
I6 I5 I4
MD1
1
MD0
1
按操作码散转
MD7、MD6
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
指令操作码
I7 I6 I5
0 0 0
0 0 0
0 0 1
0 0 1
0 1 0
0 1 0
0 1 1
0 1 1
1 0 0
1 0 0
1 0 1
1 0 1
1 1 0
1 1 0
1 1 1
1 1 1
I4
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
7
MD1、MD0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
微程序首地址
MD7~MD0
003H
007H
00BH
00FH
013H
017H
01BH
01FH
023H
027H
02BH
02FH
033H
037H
03BH
03FH
武汉理工大学《计算机组成原理》课程设计说明书
6模型机当中时序的设计安排
1、由于模型机已经确定了指令系统,微指令采用全水平不编码纯控制场的格式,微程
序的入口地址采用操作码散转方式,微地址采用技术增量方式,所以可确定模型机中时序
单元中所产生的每一节拍的作用。
2、在本实验中,由监控单元产生了一个PLS-O的信号来控制时序产生(如下图所示)。
PLS-O信号经过时序单元的处理产生了4个脉冲信号。4个脉冲信号组成一个为周期,为
不同的寄存器提供工作脉冲。它们分别实现的功能是:(1)PLS1:微地址寄存器的工作脉冲,
用来设置微程序的首地址及微地址加1.(2)PLS2:PC计数器的工作脉冲,根据微指令的控
制实现PC计数器加1和重置PC计数器(跳转指令)等功能。(3)PLS3:把24位微指令打
入3片微指令锁存器。(4)PLS4:把当前总线上的数据打入微指令选通的寄存器中。
SIGN
PLS1
PLS2
PLS3
PLS4
微指令周期 微指令周期
7设计指令执行流程
在每个系统中,一条指令从内存取出到执行完毕,需要若干个机器周期,任何指令周
期中都必须有一个机器周期作为“取指令周期”,成为公操作周期。而一条指令共需要几
个机器周期取决于指令在机器内实现的复杂程度。
8
武汉理工大学《计算机组成原理》课程设计说明书
对于微程序控制的计算机,在设计指令执行流程时,要保证每条指令所含有的微操作
的必要性和合理性,还要知道总线IAB,IDB,OAB,ODB仅是传输信息的通路,没有寄存器信
息的功能,而且必须包证总线传输信息时信息的唯一性。例如本次课程设计中用到的取值
微指令、ADD、JMP、RRC、MOVE等指令
7.1取值微指令的执行流程
在模型机处于停机状态时,模型机的微地址寄存器被清零,微指令锁存器输出无效。
在处于停机状态时,脉冲PLS1对微地址寄存器无效,微地址寄存器保持为0。脉冲PLS2
对PC计数器无效,同时PLS2把HALT=1打入启停单元中的运行状态寄存器中,把模型机
置为运行状态,使微程序锁存器输出有效。PLS3把微程序存储器00H单元中内容打入微指
令锁存器中,并且输出取指微指令。PLS4把从程序存储器中读出的数据打入指令寄存器中。
在模型机处于运行状态时,脉冲PLS1将微地址寄存器加1,脉冲PLS2将PC计数器加
1,PLS3把微程序存储器中的微指令打入微指令锁存器并且输出。PLS4把当前总线上的数
据打入当前微指令所选通的寄存器。
7.2 ADD指令的执行流程
例如:ADD A,Ri,该指令功能为(A)+(Ri)->A,需执行以下微操作:
PC ;PC加1,为取下一条指令字节准备 (PC)+1
PCCK
1,PLS4
DR1 ;累加器A内容送ALU (A)
EDR
2,PLS4
DR2 ;寄存器Ri内容送ALU (Ri)
EDR
,M,S3,S2,S1,S0
X0,X1,ERA
IDB
A ;使ALU执行加法,经IDB送入A (A)+(Ri)
Cn
C
n4
ALUO,M
CY ;据加法结果置进位标志
O
IAB
BUS
OAB ;PC计数器内容做访问内存地址 (PC)
PC
,PLSA
ODB
BUS
IDB
EIR
1
IR1 ;从内存该地址单元读出指令寄存器IR1. (RAM)
RM
此程序由四个微指令周期:
+1为取下条字节准备,累加器A内容送ALU的DR1锁存器
2.寄存器Ri内容送ALU的DR2锁存器
将计算结果送累加器A,据加法结果置进位标志CY
4.取指微指令,从内存读出指令送指令寄存器
9
武汉理工大学《计算机组成原理》课程设计说明书
7.3 JMP指令的执行流程
例如:JMP addr,该指令功能为addr->PC,需执行如下操作:
(PC)+1
PCCK
PC ;PC加1,为取下一条指令字节准备
(RAM)
RM
ODB
BUS
IDB
PLSA
IR2 ;取本指令第二字节IR2
O
IR2
PC
LAB
BUS
OAB ;由IR2内容形成转移地址送PC
O
(PC)
PC
IAB
BUS
OAB ;PC计数器内容做访问内存地址
,PLSA
(RAM)
RM
ODB
BUS
IDB
EIR
1
IR1 ;从内存该地址单元读出指令寄存器IR1
此程序由两个微指令周期:
+1从内存中取得指令第2个字节送入IR2.
2内容形成地址转移到PC,从内存中读出指令字节送指令寄存器。
7.4 RRC指令的执行流程
例如:RRC A,该指令功能是将累加器A中的内容带进位CY循环右移一位,即
->CY->A7->A6->…->A1->A0->,需执行如下微操作:
PC ;PC加1,为取下一条指令字节准备 (PC)+1
PCCK
X0,X1,ERA,PLS3
A,CY ;控制累加器A带CY右环移一位 (A)、CY
O
IAB
BUS
OAB ;PC计数器内容做访问内存地址 (PC)
PC
,PLSA
ODB
BUS
IDB
EIR
1
IR1 ;从内存该地址单元读出指令寄存器IR1 (RAM)
RM
此程序由两个微指令周期:
加1,为取下一条指令字节准备,控制累加器A带CY右环移一位
2.取指微指令,从内存中读出指令送指令寄存器
7.5 MOV指令的执行流程
7.5.1双字节指令MOV A,#data
该指令功能为data->A,需执行如下操作:
PC ;PC加1,为取本指令下一字节备 (PC)+1
PCCK
X0,X1,EIR1,PLSA
ODB
BUS
IDB
A;取出本指令第二字节 (RAM)
RM
PC ;PC加1,为取下一条指令字节备 (PC)+1
PCCK
10
武汉理工大学《计算机组成原理》课程设计说明书
O
(PC)
PC
IAB
BUS
OAB ;PC计数器内容做访问内存地址
,PLSA
(RAM)
RM
ODB
BUS
IDB
EIR
1
IR1 ;从内存该地址单元读出指令寄存器IR1.
此程序由两个微指令周期:
+1从内存中取得指令第2个字节送入累加器A。
+1执行取指微指令,从内存中读出指令送指令寄存器
7.5.2 双字节指令MOV Ri,#data
该指令功能为data->A,需执行如下操作:
PC ;PC加1,为取本指令下一字节备 (PC)+1
PCCK
,SA,SA
ODB
BUS
IDB
RR
Ri ;取出本指令第二字节 (RAM)
RM
PC ;PC加1,为取下一条指令字节备 (PC)+1
PCCK
O
IAB
BUS
OAB ;PC计数器内容做访问内存地址 (PC)
PC
,PLSA
ODB
BUS
IDB
EIR
1
IR1 ;从内存该地址单元读出指令寄存器IR1 (RAM)
RM
此程序由两个微指令周期:
+1从内存中取得指令第2个字节送入寄存器Ri。
+1执行取指微指令,从内存中读出指令送指令寄存器
8源程序以及程序的指令代码及微程序
8.1跳转、转移指令实现的源程序
MOV A
,
#82
RRC A
MOV A,#32
RLC A
MOV A,#18
RLC A
JZ 08
ADD A,R0
JC 12
JMP 0A
11
武汉理工大学《计算机组成原理》课程设计说明书
MOV R1,#42
ADD A,R1
STA 40
HALT
8.2 程序的指令
00 MOV A,#82
02 RRC A;
03 MOV A,#32;
05 RLC A;
06 MOV A,#18;
08 RLC A;
09 JZ 08;
0B ADD A,R0;
0C JC 12;
0E JMP 0A;
10 MOV R1,#42;
12 ADD A,R1;
8.3 微指令序列
M23-M0
00 [00],[00],[00] 取指指令
01 [00],[00],[00]
02 [00],[00],[00]
03 [00],[00],[00] A->Dbus->DR1
04 [00],[00],[00] Ri->Dbus->DR2
05 [00],[00],[00] ALU->Dbus->A
06 [00],[00],[00] 取指指令
13 STA 40;
15 HALT;
16 HALT;
17 HALT;
18 HALT;
19 HALT;
1A HALT;
1B HALT;
1C HALT;
1D HALT;
1E HALT;
1F HALT;
07 [00],[00],[00] Ri->Dbus->DR2
08 [00],[00],[00] ALU->Dbus->A
09 [00],[00],[00] 取指指令
0A [00],[00],[00]Ri->Dbus->IR2
0B [00],[00],[00]
[IR2]- >Abus,Dbus->A
0C [00],[00],[00] 取指指令
12
武汉理工大学《计算机组成原理》课程设计说明书
0D [00],[00],[00]
0E [00],[00],[00]
0F [00],[00],[00] Ri->Dbus->A
10 [00],[00],[00] 取指指令
11 [00],[00],[00]
12 [00],[00],[00]
13 [00],[00],[00] A->Dbus->Ri
14 [00],[00],[00] 取指指令
15 [00],[00],[00]
16 [00],[00],[00]
17 [00],[00],[00] Dbus->A
18 [00],[00],[00] 取指指令
19 [00],[00],[00]
1A [00],[00],[00]
1B [00],[00],[00] Dbus->Ri
1C [00],[00],[00] 取指指令
1D [00],[00],[00]
1E [00],[00],[00]
1F [00],[00],[00] Dbus->IR2
20 [00],[00],[00]
[IR2]->Abus,RAM->Dbus->A
21 [00],[00],[00] 取指指令
22 [00],[00],[00]
23 [00],[00],[00] Dbus->IR2
24 [00],[00],[00]
[IR2]->Abus,A->Dbus->RAM
25 [00],[00],[00] 取指指令
26 [00],[00],[00]
27 [00],[00],[00] A>>1
28 [00],[00],[00] 取指指令
29 [00],[00],[00]
2A [00],[00],[00]
2B [00],[00],[00] A<<1
2C [00],[00],[00] 取指指令
2D [00],[00],[00]
2E [00],[00],[00]
2F [00],[00],[00] Dbus->IR2
30 [00],[00],[00]
[IR2]->Abus,Dbus->PC
31 [00],[00],[00]
32 [00],[00],[00]
33 [00],[00],[00] A->Dbus->DR1
34 [00],[00],[00]
RAM->Dbus->DR2
35 [00],[00],[00] ALU->A
36 [00],[00],[00] 取指指令
37 [00],[00],[00] A->Dbus->DR1
38 [00],[00],[00]
RAM->Dbus->DR2
39 [00],[00],[00] ALU->A
3A [00],[00],[00] 取指指令
3B [00],[00],[00]
3C [00],[00],[00]
3D [00],[00],[00]
3E [00],[00],[00]
3F [00],[00],[00] 停机
13
武汉理工大学《计算机组成原理》课程设计说明书
8.使用软件HKCPT的实现过程
微地址 M23-M0
00H
数据流程 数据总线 地址总线 操作寄存器
5FH 00H IR1=5FH 4AFFFF 取指微指令RAM->Dbus->IR1
MOV A,#82 由两个微指令周期组成
17H
18H
DDFBFF Dbus->A 82H
9FH
01H
02H
A=82H
IR1=9FH 4DFFFF 取指微指令RAM->Dbus->IR1
RRC A 由两个微指令周期组成
27H
28H
FFF1EF A>>1 41H
5FH
无效
03H
A=41H
IR1=5FH 4DFFFF 取指微指令RAM->Dbus->IR1
MOV A,#32 由两个微指令周期组成
17H
18H
DDFBFF Dbus->A 32H
AFH
04H
05H
A=32H
IR1=AFH 4DFFFF 取指微指令RAM->Dbus->IR1
RLC A 由两个微指令周期组成
2BH
2CH
FFE9EF A<<1 64H
5FH
无效
06H
A=64H
IR1=5FH CDFFFF 取指微指令RAM->Dbus->IR1
MOV A,#18 由两个微指令周期组成
17H
18H
DDFBFF Dbus->A 18H
AFH
07H
08H
A=18H
IR1=AFH 4DFFFF 取指微指令RAM->Dbus->IR1
RLC A 由两个微指令周期组成
2BH
2CH
FFE9EF A<<1 30H
B3H
无效
09H
A=30H
IR1=B3H CDFFFF 取指微指令RAM->Dbus->IR1
JZ 08 由两个微指令周期组成
2FH
30H
D4FFFF
4DFFFF
Dbus->IR2
[IR2]->Abus,Dbus->PC
08H
0CH
0AH
0BH
IR2=08H
IR1=0CH
ADD A,R0 由四个微指令周期组成
14
武汉理工大学《计算机组成原理》课程设计说明书
03H
04H
05H
06H
FFFCF9
FF7F79
FFFBA9
A->Dbus->DR1
Ri->Dbus->DR2
ALU->Dbus->A
30H
FFH
2FH
B7H
无效
无效
无效
0CH
DR1=30H
DR2=FFH
A=2FH
IR=B7H 4DFFFF 取指微指令RAM->Dbus->IR1
JC 12 由两个微指令周期组成
2FH
30H
D4FFFF
4DFFFF
Dbus->IR2
[IR2]->Abus,Dbus->PC
12H
0DH
0DH
12H
IR2=12H
IR1=0DH
ADD A,R1 由四个微指令周期组成
03H FFFCF9
04H FF7F79
05H FFFBA9
A->Dbus->DR1
R1->Dbus->DR2
ALU->Dbus->A
2FH
FFH
2EH
8FH
无效
无效
无效
13H
DR1=2FH
DR2=FFH
A=2EH
IR1=8FH 06H 4DFFFF 取指微指令RAM->Dbus->IR1
STA 40 由三个微指令周期组成
23H D5FFFF
Dbus->IR2
40H
2EH
FFH
14H
40H
15H
IR2=40H
RAM(20)=2EH
IR1=FFH
24H BBFDFF [IR2]->Abus,A->Dbus->RAM
25H 4DFFFF 取指微指令RAM->Dbus->IR1
HALT 由一个微指令周期组成
3FH FFDFFF 停机 无效 无效 停止状态
微单步结构窗口截图
15
武汉理工大学《计算机组成原理》课程设计说明书
16
武汉理工大学《计算机组成原理》课程设计说明书
17
武汉理工大学《计算机组成原理》课程设计说明书
18
武汉理工大学《计算机组成原理》课程设计说明书
19
武汉理工大学《计算机组成原理》课程设计说明书
20
武汉理工大学《计算机组成原理》课程设计说明书
21
武汉理工大学《计算机组成原理》课程设计说明书
22
武汉理工大学《计算机组成原理》课程设计说明书
23
武汉理工大学《计算机组成原理》课程设计说明书
24
武汉理工大学《计算机组成原理》课程设计说明书
25
武汉理工大学《计算机组成原理》课程设计说明书
26
武汉理工大学《计算机组成原理》课程设计说明书
27
武汉理工大学《计算机组成原理》课程设计说明书
9课程设计总结
这次课程设计让我学到了很多东西。比如:在做实验的同时加深了对计算机组成
原理的认识。让我从对计算机组成原理理论知识的认知提升到对实践的研究,提高了自己
的动手能力。特别是在实验的过程中,一定要记住,找台好的实验机器是很重要的,而且,
要细心,一步一步的进行,不要急躁。遇到不懂的问题,一定要找指导老师解决。
1.
提前预习,熟悉实验的内容和细节要求,确定自己对实验有一定的了解,以免
在实验过程中手忙脚乱。
2.
查找相关资料,熟悉实验代码,理解实验的本质,有次序的去实验。
3.
实验时要认真、有耐心,因为步骤很多,而且细节地方很多,对于数据的记
录要有条理清晰,对于二进制与十六进制的转换要细心。
4.
因为机器比较老的原因,经常出现断开电脑和机器的连接,所以不要急躁,
重新实验,一步一步的耐心做好,保证实验的正确性。
5.
实验完成时认真整理数据,以免数据混乱出现错误影响实验的正确性。
28
武汉理工大学《计算机组成原理》课程设计说明书
6.
实验要求大家合作完成,需要团结合作,互帮互助,发挥团结协作的精神。
7.
在实验中学到了很多,一些书本上没有的知识,我们需要动手实践这样才能
灵活运用书本知识。
8.
由于没有学习汇编语言所以实验室出错的次数较多,自己还需要再接再厉,加
强学习。
29


发布评论