复杂试验计算机组成及加法右移指令程序设计.docx
《复杂试验计算机组成及加法右移指令程序设计.docx》由会员分享,可在线阅读,更多相关《复杂试验计算机组成及加法右移指令程序设计.docx(27页珍藏版)》请在冰豆网上搜索。
复杂试验计算机组成及加法右移指令程序设计
课程设计任务书
学院
信息学院
专业
计算机科学与技术
课程设计题目
复杂试验计算机组成及加法,右移指令程序设计
实践教学要求与任务:
利用EL-JY-II型计算机组成原理实验仪提供的硬件资源,通过设计(包括整机结构设计、指令设计、微程序设计、微指令设计、调试程序设计等)、组装、调试三个步骤完成一台微程序控制的复杂实验计算机的设计。
具体要求如下:
1、掌握实验计算机的整机结构。
熟悉实验计算机的组装和调试方法。
2、设计如下几条机器指令的格式,指令格式可以采用单字长或双字长设计。
算术加法运算指令:
ADDrs,rd(功能rs+rd->rd)
输入输出指令:
IN#DATA,rd(功能DATA->rd)
OUTRi(功能Ri的值->LED输出)
右移位运算指令:
RRCrs,rd(功能rs的值带进位循环右移一位->rd)
转移指令:
JMPADDR(功能ADDR->PC)
3、设计微指令的格式,编写上述每条机器指令所对应的微程序,并上机调试。
4、通过如下程序的编写调试,验收机器指令、微指令、微程序的设计结果。
IN#data,R0
IN#dataR1
IN#data,R2
ADDR0,R1
ADDR1,R2
RRCR2,R1
OUTR0
JMP00H
工作计划与进度安排:
第19周:
布置课程设计任务,查阅资料,分组设计,实验室组装与调试。
第20周:
调试,验收,答辩,编写课程设计报告。
指导教师:
2012年月日
专业负责人:
2012年月日
学院教学副院长:
2012年月日
目录
1实验计算机的设计1
1.1整机逻辑框图1
1.2指令系统的设计1
1.3微指令的格式设计及微操作控制部件的组成原理3
1.3.1微指令编码的格式设计3
1.3.2微操作控制信号设计4
1.3.3微程序顺序控制方式设计6
1.4微程序设计10
1.4.1每条指令对应的微程序流程图10
1.4.2每段微程序中各微指令的二进制编码、16进制编码13
1.4.3每段微程序在控存中的存放位置14
1.5编写调试程序16
3调试部分18
3.1调试前准备18
3.2程序调试过程19
3.3结果分析20
4心得体会20
5参考文献20
1实验计算机的设计
1.1整机逻辑框图
图1.1逻辑框图
1.2指令系统的设计
本实验共有14条基本指令,其中算术逻辑指令8条,访问内存指令和程序控制指令4条。
输入输出指令2条。
表8-1列出了各条指令的格式、汇编符号和指令功能。
表1.1
汇编符号
指令的格式
功能
MOVrd,rs
ADDrd,rs
SUBrd,rs
1000rsrd
1001rs rd
1010rsrd
rsrd
rs+rdrd
rd-rsrd
INCrd
ANDrd,rs
NOTrd
RORrd
1011rdrd
1100rsrd
1101rdrd
1110rdrd
rd+1rd
rs∧rdrd
rdrd
rd
ROLrd
1111rdrd
rd
MOV[D],rd
001000rd
D
rd[D]
MOVrd,[D]
001001rd
D
[D]rd
MOVrd,D
000001rd
D
Drd
JMPD
0000 10 00
D
D PC
INrd,KIN
OUTDISP,rd
010010rd
010001rd
KINrd
rdDISP
1.3微指令的格式设计及微操作控制部件的组成原理
1.3.1微指令编码的格式设计
1、数据格式:
本实验计算机采用定点补码表示法表示数据,字长为16位,其格式如下:
15
1413……..0
符号
尾数
其中第16位为符号位,数值表示范围是:
-32768≤X<32767。
2、指令格式:
1)算术逻辑指令
设计9条单字长算术逻辑指令,寻址方式采用寄存器直接寻址。
其格式如下:
7654
32
10
OP-CODE
rs
rd
其中OP-CODE为操作码,rs为源寄存器,rd为目的寄存器,并规定:
OP-CODE
0111
1000
1001
1010
1011
1100
1101
1110
1111
指令
CLR
MOV
ADD
SUB
INC
AND
NOT
ROR
ROL
Rs或rd
选定寄存器
00
Ax
01
Bx
10
Cx
9条算术逻辑指令的名称、功能和具体格式见表8-2。
2)存储器访问及转移指令
存储器的访问有两种,即存数和取数。
它们都使用助记符MOV,但其操作码不同。
转移指令只有一种,即无条件转移(JMP)。
指令格式如下:
76
54
32
10
00
M
OP-CODE
rd
D
其中OP-CODE为操作码,rd为寄存器。
M为寻址模式,D随M的不同其定义也不相同,如下表所示:
OP-CODE
00
01
10
指令说明
写存储器
读存储器
转移指令
寻址模式M
有效地址E
D定义
说明
00
E=(PC)+1
立即数
立即寻址
10
E=D
直接地址
直接寻址
11
E=100H+D
直接地址
扩展直接寻址
注:
扩展直接寻址用于面包板上扩展的存储器的寻址。
3)I/O指令
输入(IN)和输出(OUT)指令采用单字节指令,其格式如下:
7654
32
10
OP-CODE
addr
rd
其中,当OP-CODE=0100且addr=10时,从“数据输入电路”中的开关组输入数据;当OP-CODE=0100且addr=01时,将数据送到“输出显示电路”中的数码管显示。
本系统设计的微程序字长共24位,其控制位顺序如下:
24
23
22
21
20
19
18
17
16
151413
121110
987
6
5
4
3
2
1
S3
S2
S1
S0
M
Cn
WE
1A
1B
F1
F2
F3
uA5
uA4
uA3
uA2
uA1
uA0
F1、F2、F3三个字段的编码方案如表8-2:
F1字段
F2字段
F3字段
151413
选择
121110
选择
987
选择
000
LDRi
000
RAG
000
P1
001
LOAD
001
ALU-G
001
AR
010
LDR2
010
RCG
010
P3
011
自定义
011
自定义
011
自定义
100
LDR1
100
RBG
100
P2
101
LAR
101
PC-G
101
LPC
110
LDIR
110
299-G
110
P4
111
无操作
111
无操作
111
无操作
1.3.2微操作控制信号设计
设计三个控制操作微程序:
存储器读操作(MRD):
拨动清零开关CLR对地址、指令寄存器清零后,指令译码输入CA1、CA2为“00”时,按“单步”键,可对RAM连续读操作。
存储器写操作(MWE):
拨动清零开关CLR对地址、指令寄存器清零后,指令译码输入CA1、CA2为“10”时,按“单步”键,可对RAM连续写操作。
启动程序(RUN):
拨动开关CLR对地址、指令寄存器清零后,指令译码输入CA1、CA2为“11”时,按“单步”键,即可转入到第01号“取指”微指令,启动程序运行。
注:
CA1、CA2由控制总线的E4、E5给出。
键盘操作方式时由监控程序直接对E4、E5赋值,无需接线。
开关方式时可将E4、E5接至控制开关CA1、CA2,由开关来控制。
表1.2
指令助记符
控制信号
取指
微指令
PCO,BI
RC,B2,B3,CI,GI
P+1,CK
MLD
ADDrd,rs
LDR1,LDR2,LT1,LT2
SUBrd,rs
LDR1,LDR2,LT1,LT2
ANDA,Ai
OB,CC,CG
RR,A,B,CT,OT,
Cn,M,,S3,S2,S1,S0,
X0,X1,CA,SA,SB,CP
ORA,Ai
OB,CC,CG
RR,A,B,CT,OT,
Cn,M,,S3,S2,S1,S0,
X0,X1,CA,
SA,SB,CP
XORA,Ai
OB,CC,CG
RR,A,B,CT,OT,
Cn,M,,S3,S2,S1,S0,
X0,X1,CA,
SA,SB,CP
NOTA
OB,CT,OT,
Cn,M,S3,S2,S1,S0,
X0,X1,CA
DECAi
A,B,RR,CT,OT
Cn,M,S3,S2,S1,S0
X0,X1,CA
OB,A,B,WR
INCAi
A,B,RR,CT,OT
Cn,M,S3,S2,S1,S0
X0,X1,CA
OB,A,B,WR
MOVAi,Aj
A,B,RR,CT,OT,
Cn,M,S3,S2,S1,S0
X0,X1,CA
OB,A,B,WR
NOTAi
A,B,RR,CT,OT
Cn,M,S3,S2,S1,S0
X0,X1,CA
OB,A,B,WR
1.3.3微程序顺序控制方式设计
微程序控制部件组成原理
三片EEPROM2816构成24位控制存储器,两片8D触发器74LS273和一片4D触发器74LS175
构成18位微命令寄存器,三片3线-8线译码器74LS138对微命令进行译码。
三片2D触发器
74LS74
构成6位微地址寄存器,它们带有清“0”端和预置端。
在不判别测试的情况下,T2时刻打入微
地址器的内
容即为下一条微指令地址。
当T4时刻进行测试判别时,转移逻辑满足条件后输出的负脉冲通过
强置端将某一触发器置为“1”状态,完成地址修改。
SA5~SA0为微控制器电路微地址锁存器的
强置端输出。
在该电路中有一组开关K1,K2,K3,K4,它们可以设成三种状态:
写入,读出和运行。
当处
于“写入”状态时,可以根据微地址和微指令二进制代码写入到2816中。
当处于“读出”状态
时,可以将写入的二进制代码读出,从而可以对写入控存的二进制代码的正确性进行验证。
当处
于“运行”状态时,只要给出微程序的入口微地址,则可根据微程序流程图自动执行微程序。
图1.2程序控制部件组成
微程序入口地址形成方法
由于每条机器指令都需要取指操作,所以将取指操作编制成一段公用微程序,通常安排在控存的0号或特定单元开始的一段控存空间内。
每一条机器指令对应着一段微程序,其入口就是初始微地址。
首先由“取指令”微程序取出一条机器指令到IR中,然后根据机器指令操作码转换成该指令对应的微程序入口地址。
这是一种多分支(或多路转移)的情况,常用三种方式形成微程序入口地址。
(1)一级功能转移
如果机器指令操作码字段的位数和位置固定,可以直接使操作码与入口地址码的部分位相对应。
例如,某计算机有16条机器指令,指令操作码用4位二进制数表示,分别为0000、0001、…、1111。
现以字母Q表示操作码,令微程序的入口地址为Q11B,例如000011B为MOV指令的入口地址,000111B为ADD指令的入口地址,001011B为SUB指令的入口地址……。
(2)二级功能转移
若各类指令的操作码的位数和位置不固定时,需采用分级转移,第一次先按指令类型标志转移,以区分出指令属于哪一类,如单操作数指令、双操作数指令等。
在每一类机器指令中的操作码的位数和位置应当是固定的,第二次即可按操作码区分出具体是哪条指令,以便转移到相应微程序入口。
(3)通过PLA电路实现功能转移
可编程逻辑阵列PLA实质上是一种译码-编码阵列,具有多个输入和多个输出,PLA的输入是机器操作码和其他判别条件,PLA的输出就是相应微程序的入口地址,这种方法对于变长度、变位置的操作码的处理更为有效而且转移速度较快。
控存的下地址确定方法
(1)计数增量方式
这种方式的特点是微程序控制部件中的微地址中的微地址产生线路主要是微地址计数器MPC。
MPC的初值由微程序首址形成线路根据指令操作码编码形成。
在微程序执行过程中该计数器增量
计数,产生下一条微指令地址。
这使得微指令格式中可以不设置“下地址场”。
缩短了微指令长度
,也使微程序控制部件结构较简单。
但微程序必须存放在控存若干连续单元中。
微操作控制信号
指令操作码
图1.3计数增量方式
(2)断定方式
微指令中设有“下地址场”,它指出下条微指令的地址,这使一条指令的微程序中的微指令在
控存中不一定要连续存放。
在微程序执行过程中,微程序控制部件中的微地址形成电路直接接受
微指令下地址场信息来产生下条微指令地址,微程序的首址也由此微地址形成线路根据指令操作
码产生。
图1.4断定方式
1.4微程序设计
1.4.1每条指令对应的微程序流程图
控制开关
00
P(4)测试
MWE(01)MRD(00)RUN(11)
PCAR,PC+111PCAR,PC+11013
(D_INPUT)D_BUSLT114RAMD_BUSLT11201
LT1RAM74LT1LED73
图1.5微程序流程图
图1.6微程序流程图
表1.3据本实验程序流程图设计的二进制微代码表
1.4.2每段微程序中各微指令的二进制编码、16进制编码
微地址
S3S2S1S0MCNWE1A1B
F1
F2
F3
UA5--UA0
000000
000000000
111
111
110
001000
000001
000000000
101
101
101
000010
000010
000000010
110
111
111
111101
000110
000000010
101
111
111
100101
000111
000000010
101
111
111
100101
001000
000000000
101
101
101
001010
001001
000000000
101
101
101
001100
001010
000000010
100
111
111
111011
001011
000000000
111
111
111
000001
001100
000000011
100
111
111
111100
010000
000000000
101
101
101
100101
010010
000000000
101
101
101
000111
010011
000000000
101
101
101
000110
010100
000000000
111
111
100
010101
010101
000000101
111
010
111
000001
010111
000000011
000
111
111
000001
011000
000000000
000
000
111
000001
011001
000000000
100
000
111
101010
011010
000000000
100
000
111
101100
011011
000000000
100
000
111
110010
011100
000000000
100
000
111
110011
011101
000000000
100
000
111
110110
011110
001100000
111
000
111
110111
011111
001100000
000
000
111
111001
100000
000000110
111
100
111
000001
100001
000000010
000
111
111
000001
100010
000000010
001
111
101
000001
100101
000000000
111
111
100
100000
101010
000000000
010
010
111
101011
101011
100101000
000
001
111
000001
101100
000000000
010
100
111
101101
101101
011000000
000
001
111
000001
110010
000000000
000
001
111
000001
110011
000000000
010
010
111
110101
110101
101110000
000
001
111
000001
110110
000011000
000
001
111
000001
110111
001000000
111
110
111
111000
111000
000000000
000
110
111
000001
111001
000100000
111
110
111
111010
111010
000000000
000
110
111
000001
111011
000001101
111
001
111
001000
111100
111111110
111
001
111
001001
111101
000000010
110
111
000
010000
表1.4二进制代码表
1.4.3每段微程序在控存中的存放位置
微地址(八进制)
微地址(二进制)
微代码(十六进制)
00
000000
007F88
01
000001
005B42
02
000010
016FFD
03
000011
014FC4
04
000100
015F20
05
000101
015FC6
06
000110
014FC7
07
000111
015F20
10
001000
005B4A
11
001001
005B4C
12
001010
014FFB
13
001011
007FC1
14
001100
01CFFC
15
001101
014FCE
16
001110
0025CF
17
001111
9453E5
20
010000
005B43
21
010001
005B45
22
010010
005B4D
23
010011
005B66
24
010100
018FC1
25
010101
02F5C1
26
010110
007FD6
27
010111
3C03C1
30
011000
0001C1
31
011001
0041EA
32
011010
0021EC
33
011011
0041F2
34
011100
0041F3
35
011101
0041F6
36
011110
3001F7
37
011111
3001F9
40
100000
010FC1
41
100001
0379C1
42
100010
011F41
43
100011
007EA4
44
100100
007FC1
45
100101
844920
46
100110
014FE7
47
100111
002BE8
50
10100
9459E9
51
101001
944920
52
101010
0025EB
53
101011
9403FE
54
101100
0049ED
55
101101
0449EE
56
101110
0C49EF
57
101111
0049F0
60
110000
0C7F31
61
110001
9403C1
62
110010
0003C1
63
110011
0025F5
64
110100
041341
65
110101
B803C1
66
110110
0C03C1
67
110111
287DF8
70
111000
000DC1
71
111001
187DFA
72
111010
000DC1
73
111011
06F3C8
74
111100
FF73C9
75
111101
016E10
76
111110
0041C1
1.5编写调试程序
设计如下几条机器指令的格式,指令格式可以采用单字长或双字长设计。
算术加法运算指令:
ADDrs,rd(功能rs+rd->rd)
输入输出指令:
IN#DATA,rd(功能DATA->rd)
OUTRi(功能Ri的值->LED输出)
右移位运算指令:
RRCrs,rd(功能rs的值带进位循环右移一位->rd)
转移指令:
JMPADDR(功能ADDR->PC)
通过如下程序的编写调试,验收机器指令、微指令、微程序的设计结果。
IN#data,R0
IN#dataR1
IN#data,R2
ADDR0,R1
ADDR1,R2
RRCR2,R1
O