复杂模型机方案合肥工业大学计算机组成课程方案报告.docx
《复杂模型机方案合肥工业大学计算机组成课程方案报告.docx》由会员分享,可在线阅读,更多相关《复杂模型机方案合肥工业大学计算机组成课程方案报告.docx(14页珍藏版)》请在冰豆网上搜索。
![复杂模型机方案合肥工业大学计算机组成课程方案报告.docx](https://file1.bdocx.com/fileroot1/2023-1/29/6b286fd7-3bef-44d2-9a4d-12a1af5cfc1a/6b286fd7-3bef-44d2-9a4d-12a1af5cfc1a1.gif)
复杂模型机方案合肥工业大学计算机组成课程方案报告
课程设计报告
一.设计目的
本课程设计是《计算机组成原理》课程之后开设的实践环节课程。
通过本课程设计,使学生进一步加深对计算机原理系列课程相关内容的理解,掌握CPU设计的基本方法和计算机系统的组成原理,进一步巩固所学的理论知识,提高运用所学知识分析和解决实际问题的能力;锻炼计算机硬件的设计能力、调试能力;培养严谨的科学实验作风、良好的工程素质及团队协作精神,为今后的工作打下基础。
二.设计题目
复杂模型机设计
三.设计要求
基于计算机组成原理教案实验系统设计并实现一个具有16条机器指令、采用微程序控制器的8位计算机。
具体要求做到:
1.根据设计课题要求,给出模型机的设计方案<包括指令系统和硬件结构)。
2.画出所设计计算机的硬件连接图,针对所设计的指令系统编写出相应的微程序。
3.对所设计的计算机进行安装与调试。
4.编写测试程序,对系统进行验证。
5.编写课程设计报告。
四.实验设备
Dais-CMX16+计算机组成原理教案实验系统一台,PC机一台
五.指令格式与指令系统
模型机设计四大类之类指令共16条,其中包括算术逻辑指令、I/O指令、访问及转移指令和停机指令。
⑴算术逻辑指令
设计9条算术逻辑指令并用单字节表示,寻址方式采用寄存器直接寻址,其格式如下:
7654
32
10
OP-CODE
Rd
Rs
其中,OP-CODE为操作码,Rs为源寄存器,Rd为目的寄存器,并规定:
Rs或Rd
选定的寄存器
00
01
10
11
R0
R1
R2
R3
9条算术逻辑指令的名称、功能和具体格式见表7-12-1。
⑵访问指令及转移指令
模型机设计2条访问指令,即存数位转移指令7
6
54
32
10
0
0
M
2OP-CODE
Rd
D<低八)
D<高八)
其中“00M”为源码段,2OP-CODE为目的码段D为十六位地址段<低八在前,高八随后),M为源寻址模式,其定义如下:
寻址模式M
有效地址E
说明
00
01
10
11
E=D
E=(D>
E=(SP>+D
E=(PC>+D
直接寻址
间接寻址
SP变址寻址
相对寻址
⑶I/O指令
输入7654
32
10
OP-CODE
00
Rd
⑷停机指令
指令格式如下:
7654
32
10
OP-CODE
00
00
HALT指令,用于实现停机操作。
1>指令系统
本模型机共有16条基本指令,其中算术逻辑指令7条,访问内存指令和程序控制指令4条,输入输出指令2条,其它指令1条。
下表列出了各条指令的格式、汇编符号、指令功能。
助记符
指令格式
功 能
LDAM,D,Rd
0
0
M
00
Rd
E→Rd
STAM,D,Rd
0
0
M
01
Rd
Rd→E
JMPM,D
0
0
M
10
00
E→PC
BZCM,D
0
0
M
11
00
当CY=0或Z=0时,E→PC
MOVRd,Rs
0
1
0
0
Rs
Rd
Rs→Rd
ADCRd,Rs
0
1
0
1
Rs
Rd
Rs+Rd+CY→Rd
SBCRd,Rs
0
1
1
0
Rs
Rd
Rs-Rd-CY→Rd
ANDRd,Rs
0
1
1
1
Rs
Rd
Rs∧Rd→Rd
CLRRd
1
0
0
0
00
Rd
0→Rd
INCRd,Rs
1
0
0
1
00
Rd
Rs+1→Rd
CPLRd
1
0
1
0
00
Rd
Rd→Rd
RHRRd
1
0
1
1
00
Rd
Rd→Rd
RHLRd
1
1
0
0
00
Rd
Rd→Rd
INRd,I/O
1
1
0
1
00
Rd
I/O→Rd
OUTRd,I/O
1
1
1
0
00
Rd
Rd→I/O
HALT
1
1
1
1
00
00
停机
2>复杂模型机指令系统
。
助记符操作数指令码长度
。
-----------------------------------------------------
LDADR0,*003。
直接字节送寄存器R0
LDADR1,*013。
直接字节送寄存器R1
LDADR2,*023。
直接字节送寄存器R2
LDADR3,*033。
直接字节送寄存器R3
LDAIR0,*103。
间接字节送寄存器R0
LDAIR1,*113。
间接字节送寄存器R1
LDAIR2,*123。
间接字节送寄存器R2
LDAIR3,*133。
间接字节送寄存器R3
LDAXR0,*203。
变址字节送寄存器R0
LDAXR1,*213。
变址字节送寄存器R1
LDAXR2,*223。
变址字节送寄存器R2
LDAXR3,*233。
变址字节送寄存器R3
LDARR0,*303。
相对字节送寄存器R0
LDARR1,*313。
相对字节送寄存器R1
LDARR2,*323。
相对字节送寄存器R2
LDARR3,*333。
相对字节送寄存器R3
STAD*,R0043。
寄存器R0送直接字节
STAD*,R1053。
寄存器R1送直接字节
STAD*,R2063。
寄存器R2送直接字节
STAD*,R3073。
寄存器R3送直接字节
STAI*,R0143。
寄存器R0送间接字节
STAI*,R1153。
寄存器R1送间接字节
STAI*,R2163。
寄存器R2送间接字节
STAI*,R3173。
寄存器R3送间接字节
STAX*,R0243。
寄存器R0送变址字节
STAX*,R1253。
寄存器R1送变址字节
STAX*,R2263。
寄存器R2送变址字节
STAX*,R3273。
寄存器R3送变址字节
STAR*,R0343。
寄存器R0送相对字节
STAR*,R1353。
寄存器R1送相对字节
STAR*,R2363。
寄存器R2送相对字节
STAR*,R3373。
寄存器R3送相对字节
JMPD*083。
直接转移
JMPI*183。
间接转移
JMPX*283。
变址转移
JMPR*383。
相对转移
BNZCD*0C3。
CY=0或Z=0时直接转移
BNZCI*1C3。
CY=0或Z=0时间接转移
BNZCX*2C3。
CY=0或Z=0时变址转移
BNZCR*3C3。
CY=0或Z=0时相对转移
MOVR0,R0401。
寄存器R0送寄存器R0
MOVR1,R0411。
寄存器R0送寄存器R1
MOVR2,R0421。
寄存器R0送寄存器R2
MOVR3,R0431。
寄存器R0送寄存器R3
MOVR0,R1441。
寄存器R1送寄存器R0
MOVR1,R1451。
寄存器R1送寄存器R1
MOVR2,R1461。
寄存器R1送寄存器R2
MOVR3,R1471。
寄存器R1送寄存器R3
MOVR0,R2481。
寄存器R2送寄存器R0
MOVR1,R2491。
寄存器R2送寄存器R1
MOVR2,R24A1。
寄存器R2送寄存器R2
MOVR3,R24B1。
寄存器R2送寄存器R3
MOVR0,R34C1。
寄存器R3送寄存器R0
MOVR1,R34D1。
寄存器R3送寄存器R1
MOVR2,R34E1。
寄存器R3送寄存器R2
MOVR3,R34F1。
寄存器R3送寄存器R3
ADCR0,R0501。
寄存器R0带进位加到寄存器R0
ADCR1,R0511。
寄存器R0带进位加到寄存器R1
ADCR2,R0521。
寄存器R0带进位加到寄存器R2
ADCR3,R0531。
寄存器R0带进位加到寄存器R3
ADCR0,R1541。
寄存器R1带进位加到寄存器R0
ADCR1,R1551。
寄存器R1带进位加到寄存器R1
ADCR2,R1561。
寄存器R1带进位加到寄存器R2
ADCR3,R1571。
寄存器R1带进位加到寄存器R3
ADCR0,R2581。
寄存器R2带进位加到寄存器R0
ADCR1,R2591。
寄存器R2带进位加到寄存器R1
ADCR2,R25A1。
寄存器R2带进位加到寄存器R2
ADCR3,R25B1。
寄存器R2带进位加到寄存器R3
ADCR0,R35C1。
寄存器R3带进位加到寄存器R0
ADCR1,R35D1。
寄存器R3带进位加到寄存器R1
ADCR2,R35E1。
寄存器R3带进位加到寄存器R2
ADCR3,R35F1。
寄存器R3带进位加到寄存器R3
SBCR0,R0601。
寄存器R0带进位减到寄存器R0
SBCR1,R0611。
寄存器R0带进位减到寄存器R1
SBCR2,R0621。
寄存器R0带进位减到寄存器R2
SBCR3,R0631。
寄存器R0带进位减到寄存器R3
SBCR0,R1641。
寄存器R1带进位减到寄存器R0
SBCR1,R1651。
寄存器R1带进位减到寄存器R1
SBCR2,R1661。
寄存器R1带进位减到寄存器R2
SBCR3,R1671。
寄存器R1带进位减到寄存器R3
SBCR0,R2681。
寄存器R2带进位减到寄存器R0
SBCR1,R2691。
寄存器R2带进位减到寄存器R1
SBCR2,R26A1。
寄存器R2带进位减到寄存器R2
SBCR3,R26B1。
寄存器R2带进位减到寄存器R3
SBCR0,R36C1。
寄存器R3带进位减到寄存器R0
SBCR1,R36D1。
寄存器R3带进位减到寄存器R1
SBCR2,R36E1。
寄存器R3带进位减到寄存器R2
SBCR3,R36F1。
寄存器R3带进位减到寄存器R3
ANDR0,R0701。
寄存器R0"与"到寄存器R0
ANDR1,R0711。
寄存器R0"与"到寄存器R1
ANDR2,R0721。
寄存器R0"与"到寄存器R2
ANDR3,R0731。
寄存器R0"与"到寄存器R3
ANDR0,R1741。
寄存器R1"与"到寄存器R0
ANDR1,R1751。
寄存器R1"与"到寄存器R1
ANDR2,R1761。
寄存器R1"与"到寄存器R2
ANDR3,R1771。
寄存器R1"与"到寄存器R3
ANDR0,R2781。
寄存器R2"与"到寄存器R0
ANDR1,R2791。
寄存器R2"与"到寄存器R1
ANDR2,R27A1。
寄存器R2"与"到寄存器R2
ANDR3,R27B1。
寄存器R2"与"到寄存器R3
ANDR0,R37C1。
寄存器R3"与"到寄存器R0
ANDR1,R37D1。
寄存器R3"与"到寄存器R1
ANDR2,R37E1。
寄存器R3"与"到寄存器R2
ANDR3,R37F1。
寄存器R3"与"到寄存器R3
CLRR0801。
清零寄存器R0
CLRR1811。
清零寄存器R1
CLRR2821。
清零寄存器R2
CLRR3831。
清零寄存器R3
INCR0,R0901。
寄存器R0加1到R0
INCR0,R1911。
寄存器R1加1到R0
INCR0,R2921。
寄存器R2加1到R0
INCR0,R3931。
寄存器R3加1到R0
CPLR0A01。
寄存器R0取反
CPLR1A11。
寄存器R1取反
CPLR2A21。
寄存器R2取反
CPLR3A31。
寄存器R3取反
RHRR0,R0B01。
寄存器R0带进位循环右移
RHRR0,R1B11。
寄存器R1带进位循环右移
RHRR0,R2B21。
寄存器R2带进位循环右移
RHRR0,R3B31。
寄存器R3带进位循环右移
RLR0,R0C01。
寄存器R0带进位循环左移
RLR0,R1C11。
寄存器R1带进位循环左移
RLR0,R2C21。
寄存器R2带进位循环左移
RLR0,R3C31。
寄存器R3带进位循环左移
INR0,IOLD01。
将IOL数据读出到寄存器R0
INR1,IOLD11。
将IOL数据读出到寄存器R1
INR2,IOLD21。
将IOL数据读出到寄存器R2
INR3,IOLD31。
将IOL数据读出到寄存器R3
OUTIOH,R0E01。
将寄存器R0数据写入到IOH
OUTIOH,R1E11。
将寄存器R1数据写入到IOH
OUTIOH,R2E21。
将寄存器R2数据写入到IOH
OUTIOH,R3E31。
将寄存器R3数据写入到IOH
HALT""F01。
停机(总线锁定>
六.复杂模型及数据通路图
七.微程序控制器原理
采用微程序设计方法设计控制单元的过程就是编写每一条机器指令的微程序,它是按执行每条机器指令所需的微操作命令的先后顺序而编写的,因此,一条机器指令对应一个微程序,由于任何一条机器指令的取指令操作是相同的,因此将取指令操作的命令统一编成一个微程序,这个微程序只负责将指令从主存单元中取出送至指令寄存器中。
如果指令是间接寻址,其操作也是可以预测的,也可以编出对应间址周期的微程序。
当出现中断时,中断隐指令所需完成的操作可由一个对应中断周期的微程序控制完成。
这样,控制存储器中的微程序个数应为机器指令数再加上对应取址、间接寻址和中断周期的微程序。
按照系统建议的微指令格式,参照微指令流程图,将每条微指令代码化,译成二进制代码,并将二进制代码表转换成十六进制格式文件。
M23
M22
M21
M20
M19
M18
M17
M16
M15
M14
M13
M12
M11
M10
M9
M8
M7
M6
M5
M4
M3
M2
M1
M0
E/M
IP
MWR
R/M
目的编码
OP
M
CN
S2
S1
S0
源编码
XP
W
ALU
Iu
IE
IR
Icz
Ids
源编码
目的编码
M10
M9
M8
功能
M19
M18
M17
功能
X2
X1
X0
O2
O1
O0
1
1
1
禁止
1
1
1
禁止
1
1
0
ALU
1
1
0
MAR
1
0
1
SP
1
0
1
BX
1
0
0
IOR
1
0
0
AX
0
1
1
MRD
0
1
1
SP
0
1
0
XRD
0
1
0
IOW
0
0
1
RRD
0
0
1
XWR
0
0
0
PC
0
0
0
RWR
八.测试源程序
。
复杂模型机程序
#LOAD"MXJ4.IS"。
预调入指令系统/微程序
org0
start:
CLRr0。
CLRr1。
CLRr2。
CLRr3。
寄存器清零
LDA_Xr0,0060h。
变址送寄存器R0
INCr0,r2。
r2自加送到R0
CLRr0。
r0清零
INr0,iol。
从IO输入到R0
INr2,iol。
从IO输入到R2
RLr3,r0。
R0左移送到R3
CLRR3
ANDr0,r2。
R2R0与运算
CPLr0。
R0取反
OUTioh,r0。
从R0输出数据到IO
MOVr1,r0。
R0送到R1
MOVR3,R2。
SBCr2,r0。
R2R0带借位减送到R2
ADCr0,r2。
R0R2带进位加送到R0
RRR0,R3。
RO右移一位送到R3
STA_R0030h,R2。
相对寻址送到
JMP_I0011H。
跳转指令到[0011]
bnzc_dstart。
halt
end
九.
复杂模型及微程序流程图
十.课程设计心得
这次的课程设计让我对计算机组成原理这门课程有了一个新的认识:
软件与硬件的统一、程序与电路的融合。
让我对“硬件是软件的身躯、软件是硬件的灵魂”有了更进一步的理解。
通过这次课程设计,我掌握了复杂模型机的特点。
掌握了复杂模型机的基本原理和方法。
运用微程序,微指令完成了复杂模型机的程序设计。
在课程设计的过程中,遇到了一些问题,都是粗心大意而造成,并非是对复杂模型机和编程的熟悉问题,说明了我再以后的实验中应该更细心的编写程序的每一步,对于本次课程设计所出现的马虎,应该牢记,以后不再犯同样的错误。
通过这次课程设计,也让自己更加的了解复杂模型机。
总之,通过这次课程设计使自己受益良多,我相信别的同学也得到的不少!
最后非常感谢各位老师为我们辛勤的付出以及给与我们计算机组成原理学习方面的帮助。
谢谢各位老师。
Whenyouareoldandgreyandfullofsleep,
Andnoddingbythefire,takedownthisbook,
Andslowlyread,anddreamofthesoftlook
Youreyeshadonce,andoftheirshadowsdeep;
Howmanylovedyourmomentsofgladgrace,
Andlovedyourbeautywithlovefalseortrue,
Butonemanlovedthepilgrimsoulinyou,
Andlovedthesorrowsofyourchangingface;
Andbendingdownbesidetheglowingbars,
Murmur,alittlesadly,howlovefled
Andpaceduponthemountainsoverhead
Andhidhisfaceamidacrowdofstars.
Thefurthestdistanceintheworld
Isnotbetweenlifeanddeath
ButwhenIstandinfrontofyou
Yetyoudon'tknowthat
Iloveyou.
Thefurthestdistanceintheworld
IsnotwhenIstandinfrontofyou
Yetyoucan'tseemylove
Butwhenundoubtedlyknowingthelovefromboth
Yetcannotbetogether.
Thefurthestdistanceintheworld
Isnotbeingapartwhilebeinginlove
ButwhenIplainlycannotresisttheyearning
Yetpretendingyouhaveneverbeeninmyheart.
Thefurthestdistanceintheworld
Isnotstrugglingagainstthetides
Butusingone'sindifferentheart
Todiganuncrossableriver
Fortheonewholovesyou.