计算机组成原理组成课程设计.docx
《计算机组成原理组成课程设计.docx》由会员分享,可在线阅读,更多相关《计算机组成原理组成课程设计.docx(17页珍藏版)》请在冰豆网上搜索。
计算机组成原理组成课程设计
计算机组成原理
课程设计报告
设计题目:
中央处理器--微程序控制器设计
院系:
计算机科学与技术学院
班级:
2012级4班
设计者:
指导教师:
吴戴明
设计时间:
2015.1.7
一、课题分析4
1.1、设计目的4
1.2、设计任务4
1.3.1课题设计准备4
1.3.2读/写操作的认识5
二、总体设计5
2.1、设计原理6
2.2功能设计6
三、方案比较7
四、分步设计8
4.1小组成员设计任务分配8
4.2微程序控制器的设计8
4.2.1设计要求8
4.2.2设计内容8
4.3、指令周期流程图9
4.4、机器指令设计9
4.5系统组成框图10
4.6、各部件功能11
4.7微指令格式12
4.8微程序流程图13
4.10数据连通图和接线图14
五、设计成果15
5.2课程设计的收获16
六、存在问题及改进建议16
七、参考文献及相关网址17
一、课题分析
通过计算机组成原理理论课和几次实验的学习,编写相应的微程序,完成由基本单元电路构成一台基本模型机,再经过调试指令和模型机使其在微程序的控制下自动产生各部件单元的正常工作控制信号。
在设计基本模型机的实验基础上,完成这次的课程设计。
这次的课程设计将能在微程序控制下自动产生各部件单元控制信号,实现特定指令的功能。
这里,计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期,全部由微指令组成的序列来完成,即一条机器指令对应一条微程序。
1.1、设计目的
计算机组成与结构课程设计是“计算机组成与结构”课程的后续设计性课程,通过设计一台模型计算机,使学生更好地理解计算机组成与结构课程的基本内容,掌握计算机设计与实现的基本方法,培养学生实验动手能力和创新意识,为以后进行计算机应用系统的设计与开发奠定基础。
1.2、设计任务
设计一个8位模型计算机系统,包括运算器,微程序控制器,存储器,简单输入/输出接口和设备。
在计算机组成原理与系统结构实验系统上搭建模型计算机系统,完成运算器、微程序控制器的设计调试任务,并用所设计的指令系统编写一个实现简单功能的程序,在搭建的模型机系统上输入、调试和运行程序。
最后总结实验结果,完善所设计的模型机系统方案和电路图,写出完整的设计报告。
1.3、课程设计题目分析
基于我们对简单和复杂模型机的理解和实验,我们对课程设计分析
1.3.1、课题设计准备
⑴、确定设计目标
确定所设计计算机的功能和用途。
⑵、确定指令系统
确定数据的表示格式、位数、指令的编码、类型、需要设计哪些指令及使用的寻址方式。
确定相对应指令所包含的微操作。
⑶、总体结构与数据通路
总体结构设计包括确定各部件设置以及它们之间的数据通路结构。
在此基础上,就可以拟出各种信息传输路径,以及实现这些传输所需要的微命令。
综合考虑计算机的速率、性能价格比、可靠性等要求,设计合理的数据通路结构,确定采用何种方案的内总线及外总线。
数据通路不同,执行指令所需要的操作就不同,计算机的结构也就不一样。
⑷、设计指令执行流程
数据通路确定后,就可以设计指令系统中每条指令所需要的机器周期数。
对于微程序控制的计算机,根据总线结构,需考虑哪些微操作可以安排在同一条微指令中,哪些微操作不能安排在同一条微指令中。
⑸、确定微程序地址
根据后续微地址的形成方法,确定每个微程序地址及分支转移地址。
⑹、微指令代码化
根据微指令格式,将微程序流程中的所有微指令代码化,转化成相应的二进制代码写入到控制存储器中的相应单元中。
⑺、组装、调试
在总调试前,先按功能模块进行组装和分调,因为只有各功能模块工作正常后,才能保证整机的正常运行。
1.3.2读/写操作的认识
机器指令码的前4位为操作码。
其中IN为单字长,其余为双字长指令,XXXXXXXX为addr对应的二进制地址码。
为了向RAM中装入程序和数据,检查写入是否正确,并能启动程序执行,还必须设计三个控制台操作微程序。
存储器读操作(READ):
拨动总清开关CLR后,控制台开关SWB、SWA为“00”时,按START微动开关,可对RAM连续手动读操作。
存储器写操作(WRITE):
拨动总清开关CLR后,控制台开关SWB、SWA设置为“01”时,按START微动开关可对RAM进行连续手动写入。
启动程序(RUN):
拨动总清开关CLR后,控制台开关SWB、SWA设置为“11”时,按START微动开关,即可转入到第01号“取址”微指令,启动程序运行。
上述三条控制台指令用两个开关SWB、SWA的状态来设置,其定义如下:
SWB
SWA
控制台命令
0
0
读内存(READ)
0
1
写内存(WRITE)
1
1
启动程序运行(RUN)
二、总体设计
2.1、设计原理
CPU由运算器(ALU)、微程序控制器(MC)、通用寄存器(RO)、指令寄存器(IR)、程序计数器(PC)和地址寄存器(AR)组成,如图1所示。
这个CPU在写入相应的微指令后,就具备了执行机器指令的功能,但是机器指令一般存放在主存当中,CPU必须和主存挂接后,才有实际的意义,所以还需要在该CPU的基础上增加一个主存和基本的输入输出部件,以构成一个简单的模型计算机。
图1基本CPU构成原理图
2.2功能设计
本模型机和前面微程序控制器实验相比,共有5条指令:
IN(输入)、ADD(二进制加法)、OUT(输出)、JMP(无条件转移)、HLT(停机),其指令格式如下:
助记符实现功能机器指令代码
IN0(R0)A->R000100000
IN1(R1)B->R100110000
ADD(R0,R1)A+B->R000000000
MUL(R0,R1)AvB->R001010000
AND(R0,R1)AB->R001100000
OUT(R0)A->OUT01110000
HLTNOP10000000
均为单字节指令,********为addr对应的二进制地址码。
微程序控制器实验的指令是通过手动给出的,现在要求CPU自动从存储器读取指令并执行。
三、方案比较
方案一:
(1)选定CPU中所使用的产要器件;
(2)根据指令系统、选用的器件和设计指标,设计指令流的数据通路;
(3)根据指令系统、选用的器件和设计指标,设计数据流的数据通路。
计算机的工作过程,实质上是不同的数据流在控制信号作用下在限定的数据通路中进行传送。
数据通路不同,指令所经过的操作过程也不同,机器的结构也就不—样,因此数据通路的设计是至关重要的。
所谓数据通路的设计,也就是确定机器各逻辑部件相对位置的总框图。
数据远路的设计,目前还没有非常标准的方法。
主要是依据设计者的经验,并参考现有机器的三种典型形式(单总线、双总线或三总线结构),根据指令系统的要求,可采用试探方法来完成。
其主要步骤如下:
(1)对指令系统中的各条指令进行分析,得出所需要的指令周期与操作序列,以便决定各器件的类型和数量。
(2)构成一个总框图草图,进行各逻辑部件之间的互相连接,即初步确定数据通路,使得由指令系统所包涵的数据通路都能实现,并满足技术指标的要求。
(3)检验全部指令周期的操作序列,确定所需要的控制点和控制信号。
(4)检查所设计的数据通路,尽可能降低成本,简化线路。
方案二:
⑴、用基本的五条机器指令编写实验程序。
程序如下:
(地址和内容都是十六进制,机器指令的前4位为操作码。
)
地址内容助记符说明
0000INR0,80H80HR0。
数据80H从实验仪左下方“INPUTDEVICE”中的8位数据开关D7~D0输入,存入R0寄存器。
0110ADDR0,(0A)(R0)+(0A)R0。
R0寄存器的内容与存储器0A地址单元的内容相加,结果存入R0寄存器。
020A
0320STA(0B),R0R0(0B)。
R0寄存器的内容与存入存储器0B地址单元。
040B
0530OUTBUS,(0B)(0B)BUS。
通过总线输出存储器0B地址单元的内容。
060B
0740JMP0000PC。
无条件转移到00地址。
0800
0A01存储器0A地址单元的数据,可自定。
0B求和结果保存在存储器0B地址单元。
微指令的微代码如下:
(内容是十六进制)
十六进制地址八进制地址内容十六进制地址八进制地址内容
00001081010D15018202
010182ED010E160FE000
020248C0000F1715A000
030304E000102092ED01
040405B000112194ED01
050506A201122217A000
0606019A951323018001
07070DE0001424182000
08100110001525010A07
091183ED01162681D100
0A1287ED011727100A07
0B138EED011830118A06
0C1496ED01
⑵、修改和编写实验仪RAM和ROM数据。
方案比较:
由于方案二更符合本次课程设计的内容,而且是基于我们平时做的基本模型机(包括简单模型机和复杂模型机两部分)的基础,所以做起来比较容易。
因此,我们选择了方案二。
四、分步设计
4.1小组成员设计任务分配
表一任务分配表
小组成员任务
李雪飞
曹项飞
卫妙珠
设计机器指令执行流程
微程序流程图
分配微地址
控制台操作编码
编写设计报告
指令周期流程图
数据通路图
实验电路连接
二进制代码表
微指令格式
微指令代码化
相关文档收集
总体调试运行
4.2微程序控制器的设计
4.2.1设计要求
1.将所编写的微程序存储到控制存储器中;
2.用单步执行微指令方式执行微程序并观测所发出的控制信号;
3.每组编写的程序必须有助记符表示的汇编语言源程序,并把源程序翻译成机器指令代码,并记录相关实验结果;
4.提交微程序流程图、对应的二进制微代码表
4.2.2设计内容
1.编写出实现自定义指令系统的微程序;
2.将所编写的微程序存储到控制存储器中;
3.在实验箱调试和完成微程序控制器的设计工作;
4.3、指令周期流程图
图2指令周期流程
4.4、机器指令设计
表二机器指令码设计:
助记符
实现功能
机器指令代码
IN0(R0)
A->R0
00100000
IN1(R1)
B->R1
00110000
ADD(R0,R1)
A+B->R0
00000000
MUL(R0,R1)
AvB->R0
01010000
AND(R0,R1)
AB->R0
01100000
OUT(R0)
A->OUT
01110000
HLT
NOP
10000000
表三机器指令程序
地址(二进制)
内容(二进制)
助记符
说明
00000000
00000000
INR0
"INPUTDEVICE"→R0
00000001
00010000
ADD[10H],R0
R0+[10H]→R0
00000010
00010000
00000011
00100000
STAR0,[11H]
R0→[11H]
00000100
00010001
00000101
00110000
OUT[11H]
[11H]→LED
00000110
00010001
00000111
00000000
INR0
"INPUTDEVICE"→R0
00001000
01010000
ADD[10H],R0
R0-[10H]→R0
00001001
00010000
00001010
00100000
STAR0,[12H]
R0→[12H]
00001011
00010010
00001100
00110000
OUT[12H]
[12H]→LED
00001101
00010010
00001110
01000000
JMP00H
00H→PC
00001111
00000000
00010000
00000001
自定
00010010
求和结果
00010011
求差结果
4.5系统组成框图
图3复杂模型机控制器
4.6、各部件功能
1.LDPC微程序控制器输出的PC加1信号。
2.LOAD微程序控制器的输出信号。
LOAD=0时,PC程序计数器处于并行置数状态;LOAD=1时,PC处于计数状态。
3.ALU-BUS微程序控制器的输出信号,控制运算器的运算结果是否送到总线BUS,低电平有效。
4.PC-BUS微程序控制器的输出信号,控制程序计数器的内容是否送到总线BUS,低电平有效。
5.R0-BUS微程序控制器的输出信号,控制寄存器R0的内容是否送到总线BUS,低电平有效。
6.SW-BUS微程序控制器的输出信号,控制8位数据开关SW7-SW0的开关量是否送到总线,低电平有效。
7.LDR0微程序控制器的输出信号,控制把总线上的数据打入寄存器R0。
8.LDDR1微程序控制器的输出信号,控制把总线上的数据打入运算暂存器DR1。
9.LDDR2微程序控制器的输出信号,控制把总线上的数据打入运算暂存器DR2。
10.LDIR微程序控制器的输出信号,控制把总线上的数据(指令)输入到指令寄存器IR中。
4.7微指令格式
表四微指令格式
23
22
21
20
19
18-15
14-12
11-9
8-6
5-0
M23
M22
WR
RD
IOM
S3-S0
A字段
B字段
C字段
MA5-MA0
A、B、C各字段功能说明:
A字段
B字段
C字段
14
13
12
选择
11
10
9
选择
8
7
6
选择
0
0
0
NOP
0
0
0
NOP
0
0
0
NOP
0
0
1
LDA
0
0
1
ALU_B
0
0
1
P<1>
0
1
0
LDB
0
1
0
R0_B
0
1
0
保留
0
1
1
LDR0
0
1
1
保留
0
1
1
保留
1
0
0
保留
1
0
0
保留
1
0
0
保留
1
0
1
保留
1
0
1
保留
1
0
1
保留
1
1
0
保留
1
1
0
保留
1
1
0
保留
1
1
1
LDIR
1
1
1
保留
1
1
1
保留
4.8微程序流程图
图4微程序流程图
4.9二进制代码表
表五二进制代码表
地址
十六进制
高五位
S3—S0
A字段
B字段
C字段
MA5—MA0
00
000001
00000
0000
000
000
000
000001
01
006D43
00000
0000
110
110
101
000011
03
107070
00010
0000
111
000
001
110000
04
002605
00000
0000
010
011
000
000101
05
04B201
00000
0001
011
001
000
000001
06
002607
00000
0000
010
011
000
000111
07
003201
00000
0000
011
001
000
000001
1D
105141
00010
0000
101
000
101
000001
11
002412
00000
0000
010
000
100
010010
12
023201
0000
0010
001
100
100
000001
30
001404
00000
0000
001
010
000
000100
31
184001
00011
0000
100
000
000
000001
32
183001
00011
0000
011
000
000
000001
33
280401
00101
0000
000
010
000
000001
34
001406
00000
0000
001
010
000
000110
35
000035
00000
0000
000
000
000
110101
36
280601
00101
0000
000
011
000
000001
3C
006D5D
00000
0000
110
110
101
011101
4.10数据连通图和接线图
图5数据通路图
五、设计成果
5.1运行结果
按照以下功能分别执行:
外设输入指令IN0R0、IN1R1
二进制加法指令addR0,R1
输出到外设指令OUT0R0、OUT1R1
停机指令HLT
5.2课程设计的收获
在此次课程设计中,通过华瑞老师的悉心教导,让我从中获得了很多,一开始,我们这学期学习的是理论知识,动手能力很差,在课程设计中,老师让我们理论联系实际,不仅加强了理论知识,还提高了我们的动手能力,并更加深入的了解了理论知识,特别是微程序控制器模型机的CPU设计相关知识的认识。
我从中学到的有设计指令流程和微程序控制器,以及他的具体操作和控制。
六、存在问题及改进建议
通过这次课程设计,加强了我们动手、思考和解决问题的能力。
我终于知道了只有亲自动手才能过学到知识的道理!
在设计过程中,经常会遇到这样那样的情况,就是心里想老着这样的接法可以行得通,但实际接上电路,总是实现不了,因此耗费在这上面的时间用去很多。
我沉得做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,而且考试内容有限,所以在这次课程设计过程中,我们了解了很多元件的功能,并且对于其在电路中的使用有了更多的认识。
平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。
而且还可以记住很多东西。
比如一些芯片的功能,平时看课本,这次看了,下次就忘了,通过动手实践让我们对各个元件映像深刻。
认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。
所以这个期末测试之后的课程设计对我们的作用是非常大的。
此次课程设计,学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高,都受益非浅,今后的制作应该更轻松,自己也都能扛的起并高质量的完成项目。
在此,感谢曾老师的细心指导,也同样谢谢其他各组同学的无私帮助!
七、参考文献及相关网址
1.《计算机组成原理(第四版·立体化教材)》,白中英主编,08年1月第四版,科学出版社。
2.《计算机组成原理及系统结构实验指导书(V1.01)》,湖北众友科技实业股份有限公司。