资源描述
计算机组成原理
课程设计试验汇报
设计题目
复杂模型机设计和实现
专业班级
计算机科学和技术1004
指导老师
日期
.01.10
开发小组组员
组员:岂亚娟
杨 娜
吴兴欢
刘 甜
复杂模型机设计和实现
一、 课程设计目标
综合利用所学计算机原理试验知识,设计并实现较为完整计算机。
二、 设计要求
1、确定设计目标
参考试验指导书上复杂模型机设计过程,利用其微指令格式,独立设计指令系统。并用该指令系统中指令编一完成简单运算程序(有数据输入和输出)。并进行调试运行。
2、确定指令系统
确定数据表示格式、位数、指令编码、类型、需要设计哪些指令及使用寻址方法。
3、总体结构和数据通路
总体结构设计包含确定各部件设置和它们之间数据通路结构。在此基础上,就能够拟出多种信息传送路径,和实现这些传送所需要微命令。
对于部件设置,比如要确定运算器部件采取什么结构,控制器采取微程序控制。
综合考虑计算机速率、性能价格比、可靠性等要求,设计合理数据通路结构,采取何种方案内总线及外总线。数据通路不一样,实施指令所需要操作就不一样,计算机结构也就不一样。
4、设计指令实施步骤
数据通路确定后,就能够设计指令系统中每条指令实施步骤。
依据指令复杂程度,每条指令所需要机器周期数。对于微程序控制计算机,依据总线结构,需考虑哪些微操作能够安排在同一个微指令中,哪些微操作不能安排在同一条微指令中。
5、确定微程序地址
依据后续微地址形成方法,确定每条微程序地址及分支转移地址。
6、依据微指令格式,将微程序步骤中全部微指令代码化,转化成对应二进制代码,写入到控制存放器中对应单元中。
7、组装、调试
在总调试前,先按功效模块进行组装和分调,因为只有各功效模块工作正常后,才能确保整机运行正确。
当全部功效模块全部调试正常后,进入总调试。连接全部模块,用单步微指令方法实施机器指令微程序步骤图,当全部微程序步骤图检验完后,若运行结果正确,则在内存中装入一段机器指令,进行其它运行方法等功效调试及实施指令正确性验证。
三、 数据格式和指令格式
1、数据格式
模型机要求采取定点补码表示法表示数据,且字长为8位,其格式以下:
7
6 5 4 3 2 1
符 号
尾 数
2、指令格式
模型机设计四大类指令共十六条,其中包含算术逻辑指令、I/O指令、访问存放器及转移指令和停机指令。
(1) 算术逻辑指令
设计9条算术逻辑指令并用单字节表示,寻址方法采取寄存器直接寻址,其格式以下:
7 6 5 4
3 2
1 0
OP-CODE
Rs
Rd
其中,OP-CODE为操作码,Rs为源寄存器,Rd为目标寄存器,并要求:
选中寄存器(Rs或Rd)
R0
R1
R2
寄存器编码
00
01
10
(2) 访存指令及转移指令
模型机设计2条访问指令,即存数(STA)、取数(LDA)、2条转移指令,即无条件转移(JMP)、结果为零或有进位转移指令(BZC)。其格式以下:
7 6
5 4
3 2
1 0
OP-CODE
M
OP-CODE
Rd
D
其中,OP-CODE为操作码, Rd为目标寄存器,D为位移量(正负均可),M为寻址方法,其定义以下:
寻址方法
有效地址
说 明
00
E=D
直接寻址
01
E=(D)
间接寻址
10
E=(RI)+D
RI 变址寻址
11
E=(PC)+D
相对寻址
本模型机要求变址寄存器RI指定为寄存器R2。
(3) I/O指令
输入和输出指令采取单字节指令,其格式以下:
7 6 5 4
3 2
1 0
OP-CODE
addr
RD
其中,addr=01 时,表示选中“输入单元”中开关组作为输入设备,addr=10时,表示选中“输出单元”中数码块作为输出设备。
(4) 停机指令
这类指令只有1条,即停机指令HALT,用于实现停机操作,指令格式以下:
7 6 5 4
3 2
1 0
0 1 1 0
0 0
0 0
3、指令系统
(1)本模型机共有16条基础指令。其中,算术逻辑指令7条,访问内存指令和程序控制指令4条,输入输出指令2条,其它它指令1条。表1列出了各条指令格式、汇编符号、指令功效。
表1 复杂模型机指令系统
序号
汇编符号
指令格式
功效说明
1
CLR Rd
0111 00 Rd
0→Rd
2
MOV RS,Rd
1000 RS Rd
RS→Rd
3
ADC RS,Rd
1001 RS Rd
RS+Rd+Cy→Rd
4
SBC RS,Rd
1010 RS Rd
RS-Rd-Cy→Rd
5
INC Rd
1011 -- Rd
Rd+1→Rd
6
AND RS,Rd
1100 RS Rd
RS∧Rd →Rd
7
COM Rd
1101 00 Rd
Rd →Rd
8
RRC RS,Rd
1110 RS Rd
RS带进位右循环一位,RS→Rd
9
RLC RS,Rd
1111 RS Rd
RS带进位左循环一位,RS→Rd
10
LDA M,D, Rd
00 M 00 Rd,D
E→Rd
11
STA M,D, Rd
00 M 01 Rd,D
Rd→E
12
JMP M,D
00 M 10 00,D
E→PC
13
BZC M,D
00 M 11 00,D
当CY=1或ZI=1时,E→PC
14
IN addr, Rd
0100 01 Rd
addr→Rd
15
OUT addr, Rd
0101 10 Rd
Rd→addr
16
HALT
0110 00 00
停机
(2)微指令格式
表2 复杂模型机微指令结构图
微程序
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
控制信号
S3
S2
S1
S0
M
CN
WE
A9
A8
A
B
C
uA5
uA4
uA3
uA2
uA1
uA
0
A字段
B字段
C字段
15
14
13
控制信号
12
11
10
控制信号
9
8
7
控制信号
0
0
0
0
0
0
0
0
0
0
0
1
LDRI
0
0
1
RS_B
0
0
1
P1
0
1
0
LDDR1
0
1
0
RD_B
0
1
0
P2
0
1
1
LDDR2
0
1
1
RI_B
0
1
1
P3
1
0
0
LDIR
1
0
0
299_B
1
0
0
P4
1
0
1
LOAD
1
0
1
ALU_B
1
0
1
AR
1
1
0
LDAR
1
1
0
PC_B
1
1
0
LDPC
其中uA5~uA0为6位后继微地址,A、B、C为三个译码字段,分别由三个控制位译码出多位。C字段中P1~P4是四个测试字位,其功效是依据机器指令及对应微代码进行译码,使微程序转入对应为地址入口,从而实现微程序次序、分支、循环运行。具体来说,P1测试用于“取指令”微指令,它用下址低四位(uA3~uA0)和指令寄存器高四位(IR7~IR4)相或得到各路分支;P2测试用下址低2位(uA1~uA0)和指令寄存器IR3IR2相或得到各路分支;P3测试用于条件转移,它用下址uA4和(ZI +CY)相或得到各路分支;
P4测试用于控制台操作,它用下址低2位(uA1~uA0)和SWB、SWA相或得到各路分支。
在上述各测试下址中未用到位均直接保留。AR为算术运算是否影响进位及判零标志控制位,其为零有效。B字段中RS_B、RD_B、RI_B分别为源寄存器选通信号,目标寄存器选通信号及变址寄存器选通信号,其功效是依据机器指令来进行三个工作寄存器R0、R1及R2选通译码。三字段中其它位类似和此,均是某芯片选通信号,它们功效全部是依据机器指令来进行对应芯片选通译码。
(3)微程序步骤图
本模型机数据通路图1所表示。依据机器指令系统要求,设计微程序步骤图及确定微地址,图2所表示.
工作时序波形图图3所表示
指令译码器及逻辑表示式图4所表示
寄存器译码器图5所表示
图3 时序波形图
图4 指令译码器
SE1=I4•T4•P1+I2•T4•P2+P4•T4•SWA
SE2=I5•T4•P1+I3•T4•P2+P4•T4•SWB
SE3=I6•T4•P1
SE4=I7•T4•P1
SE5=P3•T4•(FC+FZ)
图5 寄存器译码器
图1 复杂模型机设计数据通路图
图2 微程序步骤图
微地址
S3~CN
WE
A9 A8
A
B
C
uA5~uA0
00
000000
0
11
000
000
100
001000
01
000000
0
11
110
110
110
000010
02
000000
0
01
100
000
001
010000
20
000000
0
11
110
110
110
000011
03
000000
0
01
010
000
000
000100
04
000000
0
01
110
000
010
100000
40
000000
0
01
110
110
110
000101
05
000000
0
01
110
000
000
000110
06
000000
0
01
010
000
000
000111
07
000000
0
01
110
000
010
100000
22
000000
0
11
110
110
110
001101
15
000000
0
01
010
000
000
001110
16
100101
0
11
110
101
000
100101
45
100101
0
11
010
101
010
100000
23
000000
0
11
110
110
110
100110
46
000000
0
01
010
000
000
100111
47
000000
0
11
011
110
000
101000
50
100101
0
11
110
101
000
101001
51
100101
0
11
010
101
010
100000
24
000000
0
11
001
000
000
000001
25
000000
1
10
000
010
000
000001
26
000000
0
11
000
000
000
010110
27
001111
0
11
001
101
000
000001
30
000000
0
11
001
001
000
000001
31
000000
0
11
010
001
000
101010
52
000000
0
11
011
010
000
101011
53
100101
0
11
011
001
000
101100
32
000000
0
11
010
010
000
001101
54
000000
0
11
010
010
000
101101
55
011001
0
11
010
101
101
101110
56
000011
0
11
001
101
000
000001
62
000000
0
11
001
101
000
000001
34
000000
0
11
010
001
000
110011
63
000000
0
11
011
010
000
110101
65
101110
0
11
001
101
101
000001
41
000000
1
01
000
010
000
000001
42
000001
0
11
101
101
110
000001
43
000000
0
11
000
000
011
100100
44
000000
0
11
000
000
000
000001
64
000001
0
11
101
101
110
000001
11
000000
0
11
110
110
110
001100
14
000000
0
00
010
000
000
111100
74
000001
1
01
000
101
000
001001
10
000000
0
11
110
110
110
001010
12
000000
0
01
010
000
000
111011
73
000001
1
10
000
101
000
001000
13
000000
0
11
000
000
000
000001
35
000000
0
11
010
001
000
110110
37
001100
0
11
000
001
000
111001
36
001100
0
11
000
001
000
110111
66
000011
0
11
001
101
000
000001
67
001010
0
11
000
100
000
111000
70
000000
0
11
001
100
000
000001
71
000110
0
11
000
100
000
111010
72
000000
0
11
001
100
000
000001
图3 试验线路图
(4)试验接线图为:
图4 试验接线图
四、 试验步骤
1、按图3连接试验线路,仔细查线无误后,接通电源。
2、编程
A.将控制台单元编程开关SP06设置为WRITE(编程)状态。
B.将控制台单元上SP03置为STEP,SP04置为RUN状态。
C.用开关单元二进制模拟开关设置微地址UA5~UA0。
D.在微控制器单元开关LM24~LM01上设置微代码,24位开关对应24位显示灯,开关量为1时灯亮,开关量为0时灯灭。
E. 按动START键,开启时序电路,立即微代码写入到28C16对应地址单元中。
F.反复C~E步骤,将表3微代码写入28C16中。
3、校验
A. 将编程开关SP06设置为READ(校验)状态。
B. 将试验板SP03开关置为STEP状态,SP04开关置为RUN状态。
C. 用二进制开关置好微地址μA5~μA0。
D. 按动START键,开启时序电路,读出微代码.观察显示灯LM24~LM01状态(灯亮为“1”,灭为“0”),检验读出微代码是否和写入相同。假如不一样,则将开关置于WRITE编程状态,重新实施(2)即可
4、写程序/运行程序
A. 将控制台单元上SP03置为STEP状态,SP04置为RUN状态,SP05置为NORM状态,SP06置为RUN状态。
B.拨动开关单元总情开关CLR(1→0→1),微地址寄存器清0,程序计数器清0。然后使开关单元SWB、SWA开关设置为“0 1”,按动一次START,微地址显示灯显示“001001”,再按动一次START,微地址灯显示“001100”,此时数据开关内容置为要写入机器指令,按动两次START键后,即完成该条指令写入。若仔细阅读KWE步骤,就不难发觉,机器指令首地址总清后为00H,以后每个循环PC自动加1,所以,每次按动START,只有在微地址灯显示“001100”时,才设置内容,直到全部机器指令写完。
C. 写完程序后须进行校验。拨动总清开关CLR(1→0→1)后,微地址清零。PC程序计数器清零,然后使控制台开关SWB,SWA为“0 0”,按动开启START,微地址灯将显示“001000”;再按START,微地址灯显示为“001010”;第3次按START,微地址灯显示为“111011”;再按START后,此时输出单元数码管显示为该首地址中内容。不停按动START,以后每个循环PC会自动加1,可检验后续单元内容。每次在微地址灯显示为“001000”时,是将目前地址中机器指令写入到输出设备中显示。
5、运行程序。
(1)单步运行程序
① 使编程开关SP06处于RUN状态,SP03为STEP状态,SP04为RUN状态,SP05为NORM状态,开关单元SWB,SWA为“1 1”。
② 拨动总清开关CLR(1→0→1),微地址清零,程序计数器清零,程序首址为00H。
③ 单步运行一条微指令,每按动一次START键,即单步运行一条微指令。对照微程序步骤图,观察微地址显示灯是否和步骤一致。
④当运行结束后,可检验运行结果是否和理论值一致。
(2)连续运行程序
① 使编程开关SP06处于RUN状态,SP03为RUN状态,SP04为RUN状态,SP05为NORM状态,开关单元SWB,SWA为“1 1”。
② 拨动CLR开关,清微地址及程序计数器,然后按动START,系统连续运行程序,稍后将SP04拨至“STOP”时,系统停机。
③停机后,可检验运行结果是否和理论值一致。
提醒:
1.联机运行能测试新功效,只限复杂模型机。
2.装在指令集微指令后就需运行(做其它可能会覆盖代码)。
3.需要有运行程序方法
4.SWA,SWB必需为11状态。
五、系统测试
试验程序以下:
采取机器指令:IN,ADD,STA,OUT,JMP,LDA,RLC,BZC,HLAT,MOV,
COM,RRC,CLR,ADC,SBC
地址 内容 助记符 说明
00 44 IN 01,R0 输入02
01 BO INC R0
02 81 MOV R0,R1
03 72 CLR R2
05 E4 RLC R1,R2
06 96 RRC R1,R0
07 A8 ADC R1.R2
08 D2 SBC R2,R0
09 C2 AND R0,R2
0A 00 LAD 00,19,R0
0B 19 (19)=09
0C 11 LDA 01,1A,R1
0D 1A (1A)=20,(20)=03
0E 22 LDA 10,1B,R2
0F 1B (1B)=18
10 58 OUT 10,R0
11 08 JMP 60H
12 60 HALT 停机
微程序
$M00018108
$M0101ED82
$M0200C050
$M0300A004
$M0400E0A0
$M0500E006
$M0600A007
$M0700E0A0
$M0801ED8A
$M0901ED8C
$M0A00A03B
$M0B018001
$M0C00203C
$M0D00A00E
$M0E01B60F
$M2205DB81
$M230180E4
$M24018001
$M2595AAA0
$M2600A027
$M2701BC28
$M2895EA29
$M2995AAA0
$M2A01B42B
$M2B959B41
$M2C01A42D
$M2D65AB6E
$M2E0D9A01
$M2F01AA30
$M0D00A00E
$M0E01B60F
$M0F95EA25
$M1001ED83
$M1101ED85
$M1201ED8D
$M1301EDA6
$M14001001
$M15030401
$M16018016
$M173D9A01
$M18019201
$M1901A22A
$M1A01B22C
$M1B01A232
$M1C01A233
$M1D01A236
$M1E318237
$M1F318239
$M9001
$M21028401
$M2205DB81
$M230180E4
$M24018001
$M2595AAA0
$M2600A027
$M2701BC28
$M2895EA29
$M2995AAA0
$M2A01B42B
$M2B959B41
$M2C01A42D
$M2D65AB6E
$M2E0D9A01
$M2F01AA30
$M300D8171
$M31959B41
$M3A01
$M3301B435
$M3405DB81
$M35B99B41
$M360D9A01
$M37298838
$M38019801
$M3919883A
$M3A019801
$M3B070A08
$M3C068A09
六、结束语
这次课程设计原来要求是要花上两周时间来设计及完成,假如要认认真真完成者试验,在了对设计题目标了解和分析之上就要花很长时间。因为刚开始接触题目标时候比较茫然,不知道改怎样下手,不过仔细分析以后,对试验基础要求还是有了一定了解,原来这次试验要很认真完成。
在设计过程中,我们是以四人一组搭档试验,不过在试验过程,一开始我们认为是按试验指导书要求去做,认为很简单,不过就是指导书简单试验我们也犯下了部分小错误,是接线方面小错误,好在改完后能够顺利根据试验书上要求运行。
经过本课程设计,加深对计算机系统各模块工作原理及相互联络认识,尤其是对微程序控制器了解,深入巩固所学理论知识,并提升利用所学知识分析和处理实际问题能力;锻炼计算机硬件设计能力、调试能力;培养严谨科学试验作风和良好工程素质,为以后工作打下基础。
在以后学习中,我们还应该不停完善自己知识体系结构,注意理论和实践结合,学以致用。
开发同时,和同学们之间相互探讨也使我获益匪浅。短短几周时间内,我学到了兢兢业业,奋发向上精神,这种精神是我以后人生前进道路上一个力量。衷心感谢学校,是它给了我舒适学习、工作环境,同时感谢全部指导、关心、照料和帮助我老师、同学们。
展开阅读全文