模型机实验报告.docx
- 文档编号:26902529
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:22
- 大小:532.35KB
模型机实验报告.docx
《模型机实验报告.docx》由会员分享,可在线阅读,更多相关《模型机实验报告.docx(22页珍藏版)》请在冰豆网上搜索。
模型机实验报告
哈尔滨工程大学
实验报告
实验名称:
复杂模型机设计与实现
班级:
学号:
姓名:
实验时间:
成绩:
指导教师:
程旭辉附小晶
实验室名称:
计算机专业实验中心
一、实验名称:
复杂模型机的设计与实现
二、实验目的:
1.综合运用所学计算机原理知识,设计并实现较为完整的计算机。
2.设计指令系统。
3.编写简单程序,在所设计的复杂模型计算机上调试运行。
三、实验设备:
GW-48CPP系列计算机组成原理实验系统。
四、实验原理:
1.数据格式
模型机采用定点补码表示法表示数据,字长为8位,其格式如下:
7
6543210
符号
尾数
其中第7位为符号位,数值表示范围是:
-1≤1。
2.指令格式
所设计的指令分为四大类共十六条,其中包括算术逻辑指令、I/O指令、访问、转移指令和停机指令。
(1)算术逻辑指令
设计9条算术逻辑指令并用单字节表示,采用寄存器直接寻址方式,其格式如下:
7654
32
10
OP-CODE
rs
rd
其中,OP-CODE为操作码,rs为源寄存器,rd为目的寄存器,并规定:
Rs或rd
选定的寄存器
00
01
10
R0
R1
R2
(2)访问指令及转移指令
访问指令有2条,即存数(STA)、取数(LDA);2条转移指令,即无条件转移(JMP)、结果为零或有进位转移指令(BZC),指令格式为:
76
54
32
10
00
M
OP-CODE
rd
D
其中,OP-CODE为操作码,rd为目的寄存器地址(用于LDA、STA指令)。
D为位移量(正负均可),M为寻址模式,其定义如下:
寻址模式M
有效地址E
说明
00
01
10
11
E=D
E=(D)
E=(RI)+D
E=(PC)+D
直接寻址
间接寻址
RI变址寻址
相对寻址
在本模型机中规定变址寄存器RI为寄存器R2。
(3)I/O指令
输入(IN)和输出(OUT)指令采用单字节指令,其格式如下:
7654
32
10
OP-CODE
addr
rd
其中,addr=01时选中“INPUTDEVICE”中的键盘输入设备,addr=10时,选中“OUTPUTDEVICE”中的LCD点阵液晶屏作为输出设备。
(4)停机指令
指令格式如下:
7654
32
10
OP-CODE
00
00
3.指令系统
共有16条基本指令,其中算术逻辑指令7条,访问内存指令和程序控制指令4条,输入/输出指令2条,其他指令1条。
各条指令的格式、汇编符号、功能如表7-1所示。
助记符号
指令格式
功能
CLRrd
MOVrs,rd
ADCrs,rd
SBCrs,rd
INCrd
ANDrs,rd
COMrd
RRCrs,rd
RLCrs,rd
0111
00
rd
0→rd
1000
rs
rd
rs→rd
1001
rs
rd
rs+rd+cy→rd
1010
rs
rd
rs–rd–cy→rd
1011
rd
rd+1→rd
1100
rd
rs∧rd→rd
1101
rd
→rd
1110
rd
1111
rd
LDAM,D,rd
STAM,D,rd
JMPM,D
BZCM,D
00
M
00
rd
D
E→rs
00
M
01
rd
D
rd→E
00
M
10
rd
D
E→PC
00
M
11
rd
D
当CY=1或Z=1时,
E→PC
INaddr,rd
OUTaddr,rd
0100
01
rd
addr→rd
0101
10
rd
rd→addr
HALT
0110
00
00
停机
本模型机的数据通路框图如图7-1。
根据机器指令系统要求,设计微程序流程图及确定微地址,如图7-2。
图7-2微程序流程图
五、实验内容:
按照系统建议的微指令格式,参照微指令流程图,将每条微指令代码化,译成二进制代码表,并将二进制代码表转换为联机操作时的十六进制格式文件。
微代码定义如表7-1所示。
24
23
22
21
20
19
18
17
16
151413
121110
987
6
5
4
3
2
1
S3
S2
S1
S0
M
Cn
WE
A9
A8
A
B
C
uA5
uA4
uA3
uA2
uA1
uA0
微程序
六、实验框图设计:
模型机设计主要是包括:
控制器、存储器、运算器、输入、输出。
主要的设计是SE-5是根据FC,FZ,T4,P[4..1],SWA,SWB,I[7..2]来控制输出的SE[1..6],控制地址的跳转。
当SE输出0时Q输出1,当SE输出1时,Q输出D;
SE-5:
(SE6-1):
在波形图中实现跳转的时候,会出现如图:
刚开始对此变化不理解,自习观察SE6-1时,SE[6..1]作为控制端,SE为1时Q输出D,SE为0时Q输出1,达到跳转的功能,但是还隐含一个细节是:
在SE有0的时候,SE不用T2的时钟触发,地址会直接会发生跳转,所以会出现如图微地址由20直接跳到31。
1和3:
移位寄存器:
SHEFT和控制移位器的进位:
说明:
移位寄存器的M位有M[20]来控制,S[1..0]由M[22..21]来控制,控制进位由SHE_C0来控制,假设上次的移位器有进位,那么上次的SHEFT_CN输出1,在控制移位器进位的器件上,当需要进位时,即:
AR=1,(通过观察微指令开看AR进位时才选中)那么会有进位,此时在下一次带进位的移位时,SHE_C0=1;
2.控制ALU进位的器件:
说明:
在此器件中,AR为控制端,上次的进位溢出位FC连到D0上M[19]与Q非的或,连接到ALU_CN,当M[19]=1时表示不带进位的运算,那么ALU_CN的结果肯定是1,在下次运算时肯定是不带进位的运算。
当M[19]=0,时,表示运算器运算是带进位的运算,若上次的运算FC=1,若选中AR则,表示本次的运算时带进位的运算,则在T2周期时,Q=1,那么ALU_CN的输出是0,将结果输入到ALU的进位控制端,控制本次的进位运算。
4.通过编程控制可编码寄存器的选择:
.
内部结构:
说明:
这是通过两个2-4译码器组合而成的选择器,根据decoder_b产生的控制信号,并且在编程时编写的
I0——I3指令来控制,RS,RD,RI.寄存器的选择。
为了方便起见,在实验过程中用一一对应的实现:
R0RS;
R1RD;R2RI;
七、程序表设计:
实验程序如下:
根据框图的设计以及书中的指令系统功能表,在编码的时候考虑到的情况主要是用指令指定哪个寄存器,以及在实现LDA,STA,JMP,BZC,是选用的哪种寻址方式,为了全面的测试框图实现功能的正确性,在设计程序流程的时候所有的功能,以及所有的寻址方式都用到了,下面就是我设计的实验程序:
地址
数据
16进制表示
助记符
00
01000001
41
IN:
SW->RD(27)
01
01000000
40
IN:
SW->RS(26)
02
A1
SBC:
(RD-RS)=>RD
03
01011001
59
OUT:
RD=>LED
04
91
ADC:
(RD+RS)=>RD
05
01011001
59
OUT:
RD=>LED
06
B1
INC:
RD+1=>RD
07
01011001
59
OUT:
RD=>LED
08
C1
AND:
(RD)AND(RS)=>RD
09
01011001
59
OUT:
RD=>LED
0A
D1
COM:
RD取反=>RD
0B
01011001
59
OUT:
RD=>LED
0C
E1
RRC:
将RS中的数循环左移
0D
01011001
59
OUT:
RD=>LED
0E
F1
RLC:
将RS中的数循环右移
0F
01011001
59
OUT:
RD=>LED
10
81
MOV:
RS->RD
11
01011001
59
OUT:
RD=>LED
12
01000010
42
IN:
SW=>RI(存入的数:
10H)
13
00000001
01
LDA:
RAM=>RD
14
00011110
1E
把1E里的数送到RD中
15
00010101
15
STA:
RD=>RAM
16
00011111
1F
将RD中的数存到1F的地址中去
17
00101010
2A
JMP:
18
00010001
11
在变址寻址中用到(10H+11H)
19
00111101
3D
BZC:
1A
00000011
03
没有用到
1B
01100000
60
HALT:
停机指令
1C
00000000
00
没有用到
1D
00000000
00
没有用到
1E
00001111
0F
在执行LDA是会用到0F
1F
00001111
0F
在执行STA时会存到此地址
20
00000000
00
在执行LDA存到此位置
21
01011001
OUT
读出RD中的数
22
00101010
2A
JMP:
跳回到断点位置
23
00001001
09
执行JMP时用到此数
将设计好的程序表写入到内存中,然后读内存,然后执行程序。
七、实验过程分析:
模型机过程分析:
1.首先在ROM中已经存入了微代码,这里,在实验中发现35是错误的,正确的应该是:
01A426,这是通过
实验验证的。
在SE-5的控制下,产生SE信号,控制微代码的后六位是否发生改变,从而判定是否发生跳
转,产生的微地址送到uaddr中,指示到下一条的指令。
2.每一条微代码,通过decodera,decoderb,decoderc,decoder2-4产生相应的控制信号,在观察了四个器
件的的内部结构后,得出decodera选中的信号是输出1,得出decoderb选中的信号是输出0,得出
decoderc选中的信号是输出1,decoder2-4输出0,这样在结合74148优先权编码器后才能完整的控制总
线以及相应的输出。
3.reg_3是可编程寄存器,利用指令可以选用不同的寄存器,在此模型机自己设计了一个DECODERREG部件
通过,RD_B,RD_B,RD_B,以及I3-I0来控制选用相应的寄存器。
为了方便起见,在实验过程中用一一对应的实现:
R0RS;R1RD;R2RI;
4.在微程序流程图中在进行相对寻址时框图47是错误的应该是:
PCBUS,BUSDR2;
波形图分析:
1.开始执行程序,执行指令是40,执行的是IN指令,将27存入了指定的寄存器RD。
说明:
为编程方便用I0,I1,I2,I3,来控制选取:
2.此时指令是:
40,将26存入RS:
3.指令:
A1:
(RD-RS)=27-26=01,将结果存入RD中。
4.将RD中的结果输出到led中显示:
此时的指令是(OUT:
59)。
5.执行ADC(91)指令:
(RS+RD)=(26+01)=27存入RD中:
6.执行OUT指令,将RD中的结果输出:
7.执行INC指令,并将加1的结果输出到led中:
8.执行AND(C1)指令,(RD)AND(RS)=(28AND26)=20,然后执行OUT(59)指令,并将结果输出到led中显示:
9.执行COM取反指令,RD中的值是20取反后为DF,并执行OUT指令后在led中显示:
10.执行RRC指令,RS中值是26循环右移后的结果是13,并执行OUT指令,在led中显示:
11.执行RLC指令,将RS中的26循环左移后的结果是4C并将结果在led中显示:
12.执行MOV指令(RS->RD)=26,并执行OUT指令,在led中显示:
13.先执行IN指令(01000010),将10存入到指定的RI寄存器中,然后执行LDA指令,将指令中的0F存入到RD中。
14.通过间接寻址方式执行STA(15)存数指令,将RD中的0F存入到RAM中:
15.通过变址寻址方式执行JMP指令,跳到21执行OUT指令,读出LDA中RD中的数:
16.执行OUT指令,将RD中的数读出来,然后执行JMP指令跳回到断点地址继续执行。
17.通过相对寻址方式,执行BZC指令:
在PC值为1A时将PC送到AR,此时RAM里的值是03H,并送入DR1,在执行完微地址为23后,PC的值变为1B,将1BH送入DR2中,03H与1BH相加,相加后FC与FZ的值都不为1,所以在进行P(3)测试后跳到了44.
八、实验结果中遇到的问题:
实验结果中遇到的问题:
在刚开始的时候,在看流程图时,在刚开始的时候,明白微地址的跳转是如何实现的,但是每个框图的具体实现却搞得不是很明白,在看明白了decodea,decodeb,decodec,和74148以及reg_3的内部结构,才明白了具体的电路,以及最终的信号输出的正负,如何控制总线的选择,在不同的时钟周期,实现不同的功能。
在复杂的模型机设计的时候,对于可编码寄存器的选择,以及ALU以及SHEFT的进位控制端的控制信号的实现。
在设计程序表的时候花的时间比较多,对于实现JMP跳转的时候,对于它的跳转煞费苦心,要实现原来书本中提到的断点跳转功能。
九、实验体会:
通过模型机的实验,对于计算机五大部件的协同工作,以及微命令的产生和控制信号的控制的具体实现,在实验中遇到困难和问题时与队友惊醒商量,互相提出方案,设计部件,实现要得到的功能。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模型 实验 报告