机组课程设计报告
机组课程设计报告本文简介:计算机组成原理——课程设计报告学院:班级:学号:姓名:指导老师:2013年1月5日目录一、实验目的3二、实验设备3三、实验原理31.微程序控制电路32、微指令格式43、三条机器指令54、微程序流程图6四、实验步骤71、连接实验线路72、根据指令系统编写程序83、运行程序9五、心得体会10一、实验目的
机组课程设计报告本文内容:
计算机组成原理
——课程设计报告
学
院:
班
级:
学
号:
姓
名:
指导老师:
2013年1月5日
目录
一、实验目的3
二、实验设备3
三、实验原理3
1.
微程序控制电路3
2、微指令格式4
3、三条机器指令5
4、微程序流程图6
四、实验步骤7
1、连接实验线路7
2、根据指令系统编写程序8
3、运行程序9
五、心得体会10
一、实验目的
1.
掌握微程序控制器的组成原理。
2.
掌握微程序的编制、写入,观察微程序的运行。
3.
在“微程序控制器的组成与微程序设计实验”的基础上,将第一部分中的各单元组成系统,构造一台基本模型计算机。
4.
根据定义的五条机器指令,编写相应的微程序,并运行,形成整机概念。
2、
实验设备
EL-JY-II型计算机组成原理实验系统一套,排线若干。
3、
实验原理
1.微程序控制电路
图中运算器ALU由U7—U10四片74LS181构成,暂存器1由U3、U4两片74LS273构成,暂存器2由U5、U6两片74LS273构成。微控器部分控存由U13—U15三片2816构成。除此之外,CPU的其它部分都由EP1K10集成(其原理见系统介绍部分)。
存储器部分由两片6116构成16位存储器,地址总线只有低八位有效,因而其存储空间为00H—FFH。
输出设备由底板上的四个LED数码管及其译码、驱动电路构成,当D-G和W/R均为低电平时将数据总线的数据送入数码管显示。在开关方式下,输入设备由16位电平开关及两个三态缓冲芯片74LS244构成,当DIJ-G为低电平时将16位开关状态送上数据总线。在键盘方式或联机方式下,数据可由键盘或上位机输入,然后由监控程序直接送上数据总线,因而外加的数据输入电路可以不用
注:本系统的数据总线为16位,指令、地址和程序计数器均为8位。当数据总线上的数据打入指令寄存器、地址寄存器和程序计数器时,只有低8位有效。
图1.微程序控制电路
2、
微指令格式
本系统设计的微程序字长共24位,其控制位顺序如下:
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
1A
1B
F1
F2
F3
uA5
uA4
uA3
uA2
uA1
uA0
F1、F2、F3三个字段的编码方案如表1:
F1字段
F2字段
F3字段
15
14
13
选择
12
11
10
选择
9
8
7
选择
0
0
0
LDRi
0
0
0
RAG
0
0
0
P1
0
0
1
LOAD
0
0
1
ALU-G
0
0
1
AR
0
1
0
LDR2
0
1
0
RCG
0
1
0
P3
0
1
1
自定义
0
1
1
自定义
0
1
1
自定义
1
0
0
LDR1
1
0
0
RBG
1
0
0
P2
1
0
1
LAR
1
0
1
PC-G
1
0
1
LPC
1
1
0
LDIR
1
1
0
299-G
1
1
0
P
4
1
1
1
无操作
1
1
1
无操作
1
1
1
无操作
表1
系统涉及到的微程序流程见图8-2(图中各方框内为微指令所执行的操作,方框外的标号为该条微指令所处的八进制微地址)。控制操作为P4测试,它以CA1、CA2作为测试条件,出现了写机器指令、读机器指令和运行机器指令3路分支,占用3个固定微地址单元。当分支微地址单元固定后,剩下的其它地方就可以一条微指令占用控存一个微地址单元随意填写。
机器指令的执行过程如下:首先将指令在外存储器的地址送上地址总线,然后将该地址上的指令传送至指令寄存器,这就是“取指”过程。之后必须对操作码进行P1测试,根据指令的译码将后续微地址中的某几位强制置位,使下一条微指令指向相应的微程序首地址,这就是“译码”过程。然后才顺序执行该段微程序,这是真正的指令执行过程。
在所有机器指令的执行过程中,“取指”和“译码”是必不可少的,而且微指令执行的操作也是相同的,这些微指令称为公用微指令,对应于图1中01、02、75地址的微指令。75地址为“译码”微指令,该微指令的操作为P(1)测试,测试结果出现多路分支。本实验用指令寄存器的前4位(I7-I4)作为测试条件,出现12路分支,占用12个固定微地址单元。如I7—I4相同,则还需进行P2测试,以指令寄存器的I3、I2位作为测试条件,以区分不同的指令,如MOV指令和IN、OUT指令。
三条机器指令
其指令格式如下:
助记符
机器指令码
说明
THADD
0000
0000
1001
0100
二进制三个数的加法,Ax+Bx+Cx—Ax
NOTEO
0000
0000
1010
0100
二进制两个数异或非,Ax
Bx—Ax
EXCOR
0000
0000
1100
0100
二进制两个数异或,
Ax
Bx—Ax
表2
在机器指令的执行过程中,从CPU从内存取出一条机器指令到执行结束为一个指令周期,指令由微指令组成的序列来完成,一条机器指令对应一段微程序。另外,读、写机器指令也分别由相应的微程序段来完成。
为了向RAM中装入程序和数据,检查写入是否正确,并能启动程序执行,必须设计三个控制操作微程序。
存储器读操作(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,由开关来控制
4.
微程序流程图
控制开关
00
P(4)测试
MWE(01)
MRD(00)
RUN(11)
PC
AR,PC+1
11
PC
AR,PC+1
10
13
(D_INPUT)
D_BUS
LT1
14
RAM
D_BUS
LT1
12
01
LT1
RAM
74
LT1
LED
73
开始
图2微程序流程图
根据本实验程序流程图设计的二进制微代码表:
微地址
S3S2S1
S0
M
CN
WE
1A
1B
F1
F2
F3
UA5--UA0
000000
000000000
111
111
110
001000
000001
000000000
101
101
101
000010
000010
000000010
110
111
111
111101
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
010100
000000000
111
111
100
010101
010101
000000101
111
000
111
000001
010111
000000011
000
111
111
000001
011001
000000000
100
000
111
101010
011010
000000000
100
000
111
101100
011100
000000000
100
000
111
110011
100001
000000010
000
111
111
000001
100010
000000010
001
111
101
000001
100101
000000000
111
111
100
100000
101010
000000000
010
100
111
101011
101011
100101000
100
001
111
101000
101000
000000000
010
010
111
101001
101001
100101000
000
001
111
000001
101100
000000000
010
100
111
101101
101101
100110000
000
001
111
000001
110011
000000000
010
100
111
110101
110101
011010000
000
001
111
000001
111011
000001101
111
001
111
001000
111100
111111110
111
001
111
001001
111101
000000010
110
111
000
010000
表3
二进制微代码表
四、实验步骤
1、连接实验线路
实验连线图如图8-3所示。
连线时应按如下方法:对于横排座,应使排线插头上的箭头面向自己插在横排座上;对于竖排座,应使排线插头上的箭头面向左边插在竖排座上。
在图8-3接线图上更改如下接线:
断开控制总线C1——C6和F4——F1上的接线
数据输入电路DIJ1
接
数据总线BD7-----BD0
数据输入电路DIJ2
接
数据总线BD15-----BD8
数据输入电路DIJ-G
接
I/O控制电路Y3
微控器接口UAJ1
接
控制开关电路UA5---UA0
脉冲源及时序电路fin
接
脉冲源及时序电路f/8
脉冲源及时序电路T4—T1
接
控制总线T4---T1
控制开关电路CA1
接
控制总线E4
控制开关电路CA2
接
控制总线E5
2、
根据指令系统编写程序
地址
机器指令
助记符
00H
0000
0100
37H—>Ax
01H
0011
0111
02H
0000
0101
45H—>Bx
03H
0100
0101
04H
1010
0100
Ax
Bx—>Ax
05H
0100
0100
Ax—>DISP
06H
0100
1000
a—>Ax
07H
0100
1001
b—>Bx
08H
0100
1010
c—>Cx
09H
1001
0100
a+b+c—>DISP
0AH
0100
0100
Ax—>DISP
0BH
0100
1000
d—>Ax
0CH
0100
1001
e—>Bx
0DH
1100
0100
Ax
Bx—>Ax
0EH
0100
0100
Ax—>DISP
0FH
0000
1000
JMP—>00H
10H
0000
0000
表4
3.运行程序:
1).写微代码
:
首先将微程序控制电路上的开关K1K2K3拨到写入状态,即K1
off、K2
on、K3
off,然后将24位微代码输入及显示电路上的开关K4拨到on状态。置控制开关UA5
……
UA0=“000000”,输入微地址“000000”,
置24位微代码开关MS24---MS1为:“00000000
01111111
10001000”,输入24位二进制微代码,即“007F88”,按【单步】,微地址灯显示“000
000”,写入微代码。保持K1K2K3K4状态不变,写入表3的所有微代码。
2).读微代码并验证结果:
将微程序控制电路上的开关K1K2K3拨到读出状态,即K1
off、K2
off、K3
on,然后将24位微代码输入及显示电路上的开关K4拨到off状态。置控制开关UA5
……
UA0=“000000”,输入微地址“000000”,
按【单步】,微地址灯显示“000
000”,24位微代码显示“00000000
01111111
10001000”,即第一条微代码。保持K1K2K3K4状态不变,改变UA5
……
UA0微地址的值,读出相应的微代码,并和表3的微代码比较,验证是否正确。如发现有误,则需重新输入该微地址相应的微代码。
3).写机器指令
将微程序控制电路上的开关K1K2K3拨到运行状态,即K1
on、K2
off、K3
on,然后将24位微代码输入及显示电路上的开关K4拨到off状态。拨动控制开关电路上的清零开关CLR,对地址寄存器、指令寄存器清零。确定清零后,把控制开关CA1、CA2置为“10”,按动一次【单步】按钮,微地址显示灯显示“001001”,再按动一次【单步】,微地址灯显示
“001100”,此时通过数据输入电路的开关输入要写入的机器指令,置D15----D0=“000000000100
1000”,按【单步】,即完成本实验的第一条机器。再按【单步】,微地址显示灯(黄色)显示“111100”,数据总线显示灯显示“0000000001001000”,即输入的机器指令。再连续按【单步】,微地址显示灯(黄色)显示“001100”时,按上面的方法通过数据输入电路的开关输入第二条机器指令指令“000000000000
0101”,直至写完表4的所有二进制机器指令。注意,每当微地址显示灯显示“001100”时,地址指示灯自动加1显示。
4).读机器指令及校验机器指令:
拨动控制开关电路上的清零开关CLR,对地址寄存器、指令寄存器清零,清零结果是微地址指示灯(6个黄色指示灯)和地址指示灯(8个黄色指示灯,在地址寄存器电路上)全灭,置CA1、CA2开关置为“00”,
连续按【单步】键,微地址显示灯(黄色)显示从“000000”开始,然后按“001000”、
“001010”
、“111011”方式循环显示。当微地址灯再次显示为“001000”时,输出显示数码管上显示写入的机器指令。读的过程注意微地址显示灯,地址显示灯和数据总线指示灯的对应关系。如果发现机器指令有误,则需重新输入机器指令。机器指令存放在RAM里,掉电丢失,故断电后需重新输入。
5).运行程序
将微程序控制电路上的开关K1K2K3拨到运行状态,即K1
on、K2
off、K3
on,然后将24位微代码输入及显示电路上的开关K4拨到off状态。拨动控制开关电路上的清零开关CLR,对地址寄存器、指令寄存器清零,清零结果是微地址指示灯和地址指示灯全灭,使程序的入口地址位00H,置CA1、CA2开关置为“11”连续按【单步】,当微地址显示灯显示“010
100”时,通过数据输入电路输入二进制数据,
再连续按【单步】来运行程序。实验结果参照键盘实验的结果。00H~05H是逻辑异或非运算,对0037H~0045H进行逻辑非运算结果为FF8DH与计算结果相符。06~0AH是三个数相加运算。0B~0EH是逻辑异或运算。
5.
心得体会
通过这次的计组课程设计,自己对计算机CPU又有了更深入的了解。知道了机器指令与微指令之间的关系:一条机器指令对应一个微程序,而一个微程序还有多个微指令。一条微指令前6个控制运算器,1A和1B控制外部片选信号,WE来控制对寄存器的读写,F1控制寄存器的入口,F2控制寄存器的出口,F3控制对指令的测试和PC的自增,最后6位来指定下一条微指令的地址。知道这些就可以来给微指令控制存储器进行编写指令,并且可以知道哪些代码对应什么操作,让运算器干什么,让寄存器进行读还是写。当然,了解这些与老师和同学的帮助分不开。
在这感谢胡老师的指导和帮助。
参与工作:连线,设计机器指令和微指令,写入代码并进行检查,运
行指令并进行验证,梳理课程设计报告。
11