计算机组成原理课设.docx
- 文档编号:25820587
- 上传时间:2023-06-15
- 格式:DOCX
- 页数:20
- 大小:378.66KB
计算机组成原理课设.docx
《计算机组成原理课设.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课设.docx(20页珍藏版)》请在冰豆网上搜索。
计算机组成原理课设
目录
第1章设计概述1
1.1设计题目1
1.2设计目的1
1.3设备器材1
第2章设计原理及内容2
2.1设计基本原理2
2.2需执行的机器指令2
2.3数据通路图3
2.4微指令格式4
2.5微程序地址的转移5
2.6机器指令的写入、读出和执行5
第3章设计与操作步骤7
3.1编写机器指令7
3.2绘制微程序流程图7
3.3编写微指令7
3.4连接实验线路9
3.5写指令10
3.5.1写微指令10
3.5.2写机器指令10
3.6运行程序11
3.6.1单步运行程序11
3.6.2连续运行程序11
第4章遇到问题及解决方法12
4.1遇到问题12
4.2解决方法12
参考文献13
设计总结14
第1章设计概述
1.1设计题目
基本模型机的设计与实现。
1.2设计目的
1.掌握机器指令与微程序的对应关系。
2.掌握机器指令的执行流程。
3.掌握机器指令的微程序的编制、写入。
4.在掌握部件单元电路实验的基础上,进一步将组成系统,构成一台基本模型计算机。
5.为其定义10条机器指令,并编写相应的微程序,上机调试,掌握整机概念。
1.3设备器材
TDN-CM计算机组成原理教学实验系统一台,排线若干。
第2章设计原理及内容
2.1设计基本原理
部件实验过程中,各部件单元的控制信号是人为模拟产生的,而本次实验将能在微程序控制下自动产生各部件单元控制信号,实现特定指令的功能。
这里,计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一段微程序。
本系统使用两种外部设备,一种是二进制代码开关(DATAUNIT),它作为输入设备;另一种是发光二极管(BUSUNIT上的一组发光二极管),它作为输出设备。
例如:
输入时,二进制开关数据直接经过三态门送到总线上,只要开关状态不变,输入的信息也不变。
输出时,将输出数据送到数据总线BUS上,驱动发光二极管显示。
2.2需执行的机器指令
本次设计采用10条机器指令:
IN、SUB、NRA、INC、INCR、NOT、DEC5、RSA、RCR、RCL,其机器指令程序及数据存放地址如表2-1所示。
表2-1机器指令表
地址
内容
助记符
说明
01000000
00000000
IN
“DATAUNIT”开关→R0
01000001
00010000
SUB[54H]
R0-[54H]→[54H]
01000010
01010100
01000011
00100000
NRA[55H]
OR[55H]→[55H]
01000100
01010101
01000101
00110000
INC[56H],3
[56H]+3→[56H]
01000110
00000011
01000111
01010110
01001000
01000000
INCR[57H]
R0+1→[57H]
01001001
01010111
01001010
01010000
NOT[58H]
→R0
01001011
01011000
01001100
01100000
DEC5[59H]
[59H]-5→[59H]
01001101
00000101
01001110
01011001
01001111
01110000
RSA[60H]
R0-[60H]+1→R0
01010000
01011010
01010001
10000000
RCRR0,2
R0带进位循环右移2位
01010010
10010000
RCL[61H],2
[61H]循环左移2位
01010011
01011011
01010100
00000001
54H
设定初始值为1
01010101
00000001
55H
设定初始值为1
01010110
00000001
56H
设定初始值为1
01010111
00000001
57H
设定初始值为1
01011000
00000001
58H
设定初始值为1
01011001
00000001
59H
设定初始值为1
01011010
00000001
60H
设定初始值为1
01011011
00000001
61H
设定初始值为1
01011100
00000001
62H
设定初始值为1
2.3数据通路图
实验系统的数据通路图,如图2.1所示。
图2.1数据通路图
注意:
⑴片选信号CE=0为有效电平,CE=1为无效电平。
⑵WE=1为写入,WE=0为读出。
⑶LOAD和LDPC同时为“1”时,可将总线上的数据装入到PC中;LDPC为“1”,同时LOAD为“0”时,将PC中内容加1。
⑷M=0为算术运算,M=1为逻辑运算。
⑸CN=0表示运算开始时低位有进位,否则低位无进位。
图2.1中包括运算器、存储器、微控器、输入设备、输出设备以及寄存器。
这些部件的动作控制信号都有微控器根据微指令产生。
需要特别说明的是由机器指令构成的程序存放在存储器中,而每条机器指令对应的微程序存储在微控器中的存储器中。
2.4微指令格式
微指令字长共24位,其控制位顺序如图2.2所示。
图2.2微指令格式图
其中UA5~UA0为下一条微指令微地址,A、B、C为三个译码字段,分别由三个控制位译码出多种不同控制信号。
A字段中的LDRi为打入工作寄存器信号的译码器使能控制位。
B字段中的RS-B、RD-B、RI-B分别为源寄存器选通信号、目的寄存器选通信号及变址寄存器选通信号,其功能是根据机器指令来进行三个工作寄存器R0、R1及R2的选通译码。
C字段中的P
(1)~P(4)是四个测试字位。
其功能是根据机器指令及相应微代码进行译码,使微程序转入相应的微地址入口,从而实现微程序的顺序、分支、循环运行,其原理如图2.3所示。
AR为算术运算是否影响进位及判零标志控制位,其为零有效。
注意:
根据后面的实验接线图,A字段的LDRi与数据通路图中的LDR0为同一个信号。
B字段的RS-B与数据通路图中的R0-B为同一个信号。
2.5微程序地址的转移
本实验系统的指令寄存器(IR)用来保存当前正在执行的一条指令。
当执行一条指令时,先把该指令从内存取到缓冲寄存器中,然后再传送至指令寄存器。
指令划分为操作码和地址码字段,由二进制数构成,为了执行任何给定的指令,必须对操作码进行测试[P
(1)],通过节拍脉冲T4的控制以便识别所要求的操作。
“指令译码器”(实验板上标有“INSDECODE”的芯片)根据指令中的操作码译码后的结果,将微控器单元的微地址修改为下一条微指令的地址。
地址修改要依靠实验系统的微程序地址转移电路来完成,该电路如图2.3所示。
图2.3微程序地址转移电路
图中左侧的FC、FZ、P
(1)~P(4)均为低电平有效。
当T4有正脉冲信号到来时该电路开始工作。
I7~I2中输入指令寄存器的第7~2位,SE5~SE1为微程序地址转移电路的输出结果。
根据SE5~SE1的值,实验系统自动将下一条微指令的原始地址UA4~UA0修改为实际的正确地址。
修改方法是将SE5~SE1中的1的位对应的原始地址UA4~UA0中的位强制为1。
2.6机器指令的写入、读出和执行
为了向RAM中装入机器指令程序和数据,检查写入是否正确,并能启动机器指令程序执行,还必须设计三个控制台操作微程序。
存储器读操作(KRD):
拨动总清开关CLR(使CLR从1→0→1)后,控制台开关SWB、SWA置为“00”时,按START微动开关,可对RAM连续手动读操作。
存储器写操作(KWE):
拨动总清开关CLR后,控制台开关SWB、SWA置为“01”时,按START微动开关可对RAM进行连续手动写入。
启动程序:
拨动总清开关CLR后,控制台开关SWB、SWA置为“11”时,按START微动开关,即可转入到第01号“取指”微指令,启动程序运行。
上述三条控制台指令用两个开关SWB、SWA的状态来设置,其定义如表2-2所示。
表2-2控制台指令
SWB
SWA
控制台指令
0
0
读内存(KRD)
0
1
写内存(KWE)
l
l
启动程序(RP)
三个控制台操作微程序的流程如图2.4所示。
图2.4控制台操作微程序流程图
控制台操作为P(4)测试,它以控制台开关SWB、SWA作为测试条件,出现了3路分支,占用3个固定微地址单元。
当分支微地址单元固定后,余下的微指令可以存放在控制存储器的其他任意单元中。
当设计“取指”微指令时,该微指令的判别测试字段为P
(1)测试。
由于“取指”微指令是所有微程序都使用的公用微指令,因此P
(1)的测试结果出现多路分支。
本机用指令寄存器的前4位(IR7—IR4)作为测试条件,出现7路分支,占用7个固定微地址单元。
第3章设计与操作步骤
3.1编写机器指令
仿照课程设计指导书中的机器指令的数据及其存放地址。
本课程设计机器指令程序如表2-1所示。
3.2绘制微程序流程图
根据每条机器指令的功能,为每条机器指令画出微程序流程图,并为其中的每条微指令分配地址。
微程序流程图如图3.1所示。
图3.1微程序流程图
3.3编写微指令
将画好的微程序流程图中每一CPU周期的微操作转化成二进制代码,填入微指令二进制代码表中。
填写好的微指令二进制代码表如表3-1所示。
表3-1微指令二进制代码表
微地址
S3
S2
S1
S0
M
CN
WE
CE
LDPC
A
B
C
UA5-UA0
00Q
0
0
0
0
0
0
0
1
1
101
110
100
0
1
0
0
0
0
20Q
0
0
0
0
0
0
0
1
1
110
111
000
0
1
0
0
1
0
21Q
0
0
0
0
0
0
0
1
1
110
111
000
0
1
0
1
0
0
22Q
0
0
0
0
0
0
0
0
0
000
000
000
0
1
0
0
0
0
23Q
0
0
0
0
0
0
0
1
1
110
111
000
0
1
0
1
0
1
24Q
0
0
0
0
0
0
1
0
0
000
110
000
0
1
0
0
0
1
25Q
0
0
0
0
0
0
0
0
0
100
000
001
1
0
0
0
0
0
(IN)40Q
0
0
0
0
0
0
0
1
1
001
110
000
0
1
0
0
1
1
(SUB)41Q
0
0
0
0
0
0
0
1
1
110
111
000
0
0
0
0
0
1
01Q
0
0
0
0
0
0
0
0
0
110
000
000
0
0
0
0
1
0
02Q
0
0
0
0
0
0
0
0
0
011
000
000
0
0
0
0
1
1
03Q
0
0
0
0
0
0
0
1
0
010
001
000
0
0
0
1
0
0
04Q
0
1
1
0
0
0
1
0
0
000
101
000
0
1
0
0
1
1
(NRA)42Q
0
0
0
0
0
0
0
1
1
110
111
000
0
0
0
1
0
1
05Q
0
0
0
0
0
0
0
0
0
110
000
000
0
0
0
1
1
0
06Q
0
0
0
0
0
0
0
0
0
011
000
000
0
0
0
1
1
1
07Q
0
0
0
0
0
0
0
1
0
010
001
000
0
0
1
0
0
0
10Q
1
0
0
0
1
0
1
0
0
000
101
000
0
1
0
0
1
1
(INC)43Q
0
0
0
0
0
0
0
1
1
110
111
000
0
0
1
0
0
1
11Q
0
0
0
0
0
0
0
0
0
011
000
000
0
0
1
0
1
0
12Q
0
0
0
0
0
0
0
1
1
110
111
000
0
0
1
0
1
1
13Q
0
0
0
0
0
0
0
0
0
110
000
000
0
0
1
1
0
0
14Q
0
0
0
0
0
0
0
0
0
010
000
000
0
0
1
1
0
1
15Q
1
0
0
1
0
1
1
0
0
000
101
000
0
1
0
0
1
1
(INCR)44Q
0
0
0
0
0
0
0
1
1
110
111
000
0
0
1
1
1
0
16Q
0
0
0
0
0
0
0
0
0
110
000
000
0
0
1
1
1
1
17Q
0
0
0
0
0
0
0
1
0
010
001
000
0
1
1
0
0
0
30Q
0
0
0
0
0
0
1
0
0
000
101
000
0
1
0
0
1
1
(NOT)45Q
0
0
0
0
0
0
0
1
1
110
111
000
0
1
1
0
0
1
31Q
0
0
0
0
0
0
0
0
0
110
000
000
0
1
1
0
1
0
32Q
0
0
0
0
0
0
0
0
0
010
000
000
0
1
1
0
1
1
33Q
0
0
0
0
1
0
0
1
0
001
101
000
0
1
0
0
1
1
(DEC5)46Q
0
0
0
0
0
0
0
1
1
110
111
000
0
1
1
1
0
0
34Q
0
0
0
0
0
0
0
0
0
011
000
000
0
1
1
1
0
1
35Q
0
0
0
0
0
0
0
1
1
110
111
000
0
1
1
1
1
0
36Q
0
0
0
0
0
0
0
0
0
110
000
000
0
1
1
1
1
1
37Q
0
0
0
0
0
0
0
0
0
010
000
000
1
0
1
0
1
0
52Q
0
1
1
0
0
0
1
0
0
000
101
000
0
1
0
0
1
1
(RSA)47Q
0
0
0
0
0
0
0
1
1
110
111
000
1
0
1
0
1
1
53Q
0
0
0
0
0
0
0
0
0
110
000
000
1
0
1
1
0
0
54Q
0
0
0
0
0
0
0
0
0
011
000
000
1
0
1
1
0
1
55Q
0
0
0
0
0
0
0
1
0
010
001
000
1
0
1
1
1
0
56Q
0
1
1
0
0
0
0
1
0
001
101
000
1
0
1
1
1
1
57Q
0
0
0
0
0
0
0
1
0
010
001
000
1
1
0
0
0
0
60Q
0
0
0
0
0
0
0
1
0
001
101
000
0
1
0
0
1
1
(RCR)50Q
0
0
1
1
0
1
0
1
0
000
001
000
1
1
0
0
0
1
61Q
0
0
1
0
1
1
0
1
0
000
100
000
1
1
0
0
1
0
62Q
0
0
1
0
1
1
0
1
0
000
100
000
1
1
0
0
1
1
63Q
0
0
0
0
0
0
0
1
0
001
100
000
0
1
0
0
1
1
(ROL)51Q
0
0
0
0
0
0
0
1
1
110
111
000
1
1
0
1
0
0
64Q
0
0
0
0
0
0
0
0
0
110
000
000
1
1
0
1
0
1
65Q
0
0
1
1
0
1
0
0
0
000
100
000
1
1
0
1
1
0
66Q
0
0
0
1
0
1
0
1
0
000
100
000
1
1
0
1
1
1
67Q
0
0
0
1
0
1
0
1
0
000
100
000
1
1
1
0
0
0
70Q
0
0
0
0
0
0
1
0
0
000
100
000
0
1
0
0
1
1
3.4连接实验线路
按图3.2连接实验线路,仔细查线路无误后接通电源。
图3.2实验接线图
3.5写指令
3.5.1写微指令
⑴将编程开关置为PROM(编程)状态。
⑵将实验板上“STATEUNIT”中的“STEP”置为“STEP”,“STOP”置为“RUN”状态。
⑶用二进制模拟开关UA0~UA5置微地址MA0~MA5。
⑷在MK23~MK0开关上置微指令代码,24位开关对应24位显示灯,开关置为“0”时灯亮,开关置为“l”时灯灭。
⑸启动时序电路(按动启动按钮“START”),即将微代码写入到E2PROM2816的相应地址对应的单元中。
⑹重复⑶~⑸步骤,将表3-2中的微代码写入E2PROM2816。
写完微指令后须进行校验。
将编程开关设置为READ(校验)状态。
将实验板的“STEP”开关置为“STEP”状态。
“STOP”开关置为“RUN”状态。
用二进制模拟开关UA0~UA5置好微地址MA0~MA5。
按动“START”键,启动时序电路,读出微代码。
观察显示灯MD23~MD0的状态(灯亮为“0”,灭为“1”),检查读出的微代码是否与写入的相同。
如果不同,则将开关置于PROM编程状态,重新写入微指令即可。
3.5.2写机器指令
使用图2.4所示的控制台KWE和KRD微程序进行机器指令程序的装入和检查。
⑴使编程开关处于“RUN”,STEP为“STEP”状态,STOP为“RUN”状态。
⑵拨动总清开关CLR(1→0→1),微地址寄存器清零。
此时用“DATAUNIT”单元的8位二进制开关给出要写入RAM区的首地址,控制台SWB、SWA开关置为“01”,按动一次启动开关START,微地址显示灯显示“010001”,再按动一次START,微地址灯显示“010100”,此时数据开关的内容置为要写入的机器指令,按动一次START键,即完成该条指令的写入。
若仔细阅读KWE的流程,就不难发现,机器指令的首地址只要第一次给入即可,PC会自动加1,所以,每次按动START,只有在微地址灯显示“010100'’时,才设置内容,直到所有机器指令写完。
写完机器指令后须进行校验。
拨动总清开关CLR(1→0→1)后,微地址清零。
此时用“DATAUNIT'’单元的8位二进制开关置要读的RAM区的首地址,控制台开关SWB、SWA为“00”,按动启动START,微地址灯将显示“010000",再按START,微地址灯显示为“010010",第三次按START,微地址灯显示为“010000”,此时总线单元的显示灯显示为该首地址的内容。
不断按动START,可检查后续单元内容,注意:
每次仅在微地址灯显示为“010000”时,显示灯的内容才是相应地址中的机器指令内容。
3.6运行程序
3.6.1单步运行程序
⑴使编程开关处于“RUN”状态,STEP为“STEP”状态,STOP为“RUN”状态。
⑵拨动总清开关CLR(1→0→1),微地址清零。
⑶将“DATAUNIT”的8位数据开关(D7~D0)设置为机器指令首地址。
⑷按动START启动键,单步运行一条微指令,每按动一次START键,即单步运行一条微指令。
对照微程序流程图,观察微地址显示灯是否和流程一致。
⑸当运行结束后,可检查存数单元中的结果是否和理论值一致。
3.6.2连续运行程序
⑴使“STATEUNIT”中的STEP开关置为“EXEC”状态。
STOP开关置为“RUN”状态。
⑵将“DATAUNIT”的8位二进制开关设置为机器指令程序首地址,然后按动START,系统连续运行程序,稍后将STOP拨至“STOP”时,系统停机。
⑶停机后,可检查存数单元结果是否正确。
第4章遇到问题及解决方法
4.1遇到问题
在本次课程设计的过程中,我们遇到了很多的问题,虽然在调试下终于解决了,但还是有必要再次进行分析,下面分析几个比较有代表性的问题。
1在编写各功能首地址的时候,通过微程序地址转移电路得的微地址有时会出现错误。
2在校验微指令的时候,偶尔会出现与预先做好的微指令表不一致的地方。
3输入微指令后,在进行机器指令的输入时,微地址的显示灯那几个灯没有按预期的值来显示,例如从23Q→25Q→40Q形成死循环。
4在校验机器指令的时候,出现指令和其地址不对应等错误。
5在运行整个程序的时候,RCR,RCL功能内微指令的执行不是按照预期的设计来执行的。
4.2解决方法
在此次课程设计的过程中,遇到的问题有很多很多,在通过组内成员的讨论和向老师的请教后,得到了很好的解决,下面是根据在实际操作时遇到的问题进行逐一分析。
①编写各功能的首地址时,通过微程序地址转移电路所得的微地址,要经过反复的验证无误后才向机器里送入,否则不容易导致程序执行时,指令的“乱跳”问题。
其实在每个功能的微指令首地址是有规律的,例如我们组是从40Q开始
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组成 原理
![提示](https://static.bdocx.com/images/bang_tan.gif)