浙江理工大学计算机组成原理课程设计报告.docx
《浙江理工大学计算机组成原理课程设计报告.docx》由会员分享,可在线阅读,更多相关《浙江理工大学计算机组成原理课程设计报告.docx(17页珍藏版)》请在冰豆网上搜索。
浙江理工大学计算机组成原理课程设计报告
计算机组成原理课程设计
报告
(2013/2014第二学期------第19周)
指导教师:
许建龙张芳
班级:
12计科2班
姓名:
学号:
计算机组成原理大型实验任务书(计算机12级一、二、3班和实验班)
一、实验目的:
深切了解计算机各类指令的执行进程,和控制器的组成,指令系统微程序设计的具体知识,进一步理解和掌握动态微程序设计的概念;完成微程序控制的特定功能计算机的指令系统设计和调试。
二、实验说明:
要进行这项大型实验,必需清楚地知道:
(1)TEC-2机的功能部件及其连接关系;
(2)TEC-2机每一个功能部件的功能与具体组成;
(3)TEC-2机支持的指令格式;
(4)TEC-2机的微指令格式,AM2910芯片的用法;
(5)已实现的典型指令的执行实例,即相应的微指令与其执行顺序的安排与衔接;
(6)要实现的新指令的格式与功能。
三、实验内容:
选定指令格式、操作码,设计如下指令:
(1)把用绝对地址表示的内存单元A中的内容与内存单元B中的内容相加,结果存于内存单元C中。
指令格式:
D4××,ADDR1,ADDR2,ADDR3四字指令(控存入口100H)
功能:
[ADDR3]=[ADDR1]+[ADDR2]
(2)将一通用寄放器内容减去某内存单元内容,结果放在另一寄放器中。
指令格式:
E0DRSR,ADDR(SR,DR源、目的寄放器各4位)双字指令(控存入口130H)
功能:
DR=SR-[ADDR]
(3)转移指令。
判断两个通用寄放器内容是不是相等,若相等则转移到指定绝对地址,不然顺序执行。
指令格式:
E5DRSR,ADDR双字指令(控存入口140H)
功能:
ifDR==SRgotoADDRelse 顺序执行。
设计:
利用指令的CND字段,即IR10~8,令IR10~8=101,即CC=Z
则当DR==SR时Z=1,微程序不跳转,接着执行MEMPC(即ADDRPC)
而当DR!
=SR时Z=0,微程序跳转至A4。
四、实验要求:
(1)按照内容自行设计相关指令微程序;(务必利用非上机时间设计好微程序)
(2)设计测试程序、实验数据并上机调试。
(3)设计报告内容:
包括一、设计目的二、设计内容3、微程序设计(含指令格式、功能、设计及微程序)4、实验数据(测试所设计指令的程序及结果)。
(具体要求安最新规范为准)
(4)大型实验报告必需打印成册,各班班长收齐大型实验报告于19周礼拜五前,交张芳老师办公室。
五、上机时间安排:
2014计算机组成原理课程设计安排如下:
(第十九周)
(地址:
10-413和414机房)
时间
星期
9:
00---12:
00
1:
00---4:
00
17:
30—20:
30
备注
星期三
6月25日
12计算机
(1)12计算机
(2)12计算机(3)
电信实验班
星期四
6月26日
12计算机
(1)12计算机
(2)12计算机(3)
电信实验班
12计算机
(1)
12计算机
(2)
12计算机(3)
电信实验班
星期五
6月27日
12计算机
(1)12计算机
(2)12计算机(3)
电信实验班
12计算机
(1)12计算机
(2)12计算机(3)
电信实验班
备注:
1.各班每2人一组,可自由组合但要固定,各班班长将各组组号及学生名单于第一次上机时上报指导教师;
2.各班学生须严格依照规定的时间上机,不得无端缺席、迟到早退,指导教师会严格考勤。
指导教师:
许建龙、张芳2014年6月18日
计算机组成原理课程设计实验报告
一、目的和要求
深切了解计算机各类指令的执行进程,和控制器的组成,指令系统微程序设计的具体知识,进一步理解和掌握动态微程序设计的概念;完成微程序控制的特定功能计算机的指令系统设计和调试。
二、实验环境
PC机与TEC-2机模拟程序
三、具体内容
(一)把用绝对地址表示的内存单元A中的内容与内存单元B中的内容相加,结果存于内存单元C中。
指令格式:
D4××,ADDR1,ADDR2,ADDR3四字指令(控存入口100H)
功能:
[ADDR3]=[ADDR1]+[ADDR2]
1.微程序:
(1)PC→AR,PC+1→PC00000E00A0B55402
当前程序计数器内容送地址寄放器,为读取第一个操作数地址做准备;程序计数器指向下一单元地址
B55----------------------------------------------------------------------------------------------------------------B0
0000
0000
0000
1110
0000
0000
1010
0000
1011
0101
0101
0100
0000
0010
CI3-CI0(B43-B40)为1110,功能为顺序执行;
SCC(B39-B37)为000,CC#=1,不发生转移;
SST(B34-B32)为000,标志位不发生改变;
MIO#(B31)REQ(B27)WE#(B23)为101,表示不操作;
B口地址(B15-B12)为0101,BI8-BI6(B30-B28)为010,MI5-MI3(B26-B24)为000,MI2-MI0(B22-B20)为011,SCI(B11-B10)为01,SA(B7)为0,SB(B3)为0,表示5号通用寄放器R5,即PC通过B话柄现加1,再通过B口写回到PC(B+0+Cin→B);
(2)MEM→AR00000E0010F00002
从主存读取第一个操作数地址,为读取第一个操作数做准备
B55-----------------------------------------------------------------------------------------------------------------B0
0000
0000
0000
1110
0000
0000
0001
0000
1111
0000
0000
0000
0000
0010
MIO#REQWE#为001,表示从主存储器读入数据(地址);
B口地址为0000,BI8-BI6为001,MI5-MI3为000,MI2-MI0为111,SCI为00,表示AM2901不做运算;
(3)MEM→Q00000E0000F00000
从主存读取第一个操作数
B55--------------------------------------------------------------------------------------------------------------------B0
0000
0000
0000
1110
0000
0000
0000
0000
1111
0000
0000
0000
0000
0000
MIO#REQWE#(B23)为001,表示从主存储器读入数据(地址);
I8-6为000,MI5-3为000,MI2-0为111,表示将主存中读出的数据加上0,再将结果回送到Q寄放器;
(4)PC→AR,PC+1→PC00000E00A0B55402
当前程序计数器内容送地址寄放器,为读取第二个操作数地址做准备;程序计数器指向下一单元地址
B55--------------------------------------------------------------------------------------------------------------------B0
0000
0000
0000
1110
0000
0000
1010
0000
1011
0101
0101
0100
0000
0010
(5)MEM→AR00000E0010F00002
从主存读取第二个操作数地址,为读取第二个操作数做准备
B55--------------------------------------------------------------------------------------------------------------------B0
0000
0000
0000
1110
0000
0000
0001
0000
1111
0000
0000
0000
0000
0010
(6)MEM+Q→Q00000E0000E00000
从主存读取第二个操作数
B55--------------------------------------------------------------------------------------------------------------------B0
0000
0000
0000
1110
0000
0000
0000
0000
1110
0000
0000
0000
0000
0000
MIO#REQWE#为001,BI8-6为000,MI5-3为000,MI2-0为110,表示将第二个操作数从主存读出而且加上Q寄放器的内容,再将结果回送到Q寄放器;
(7)PC→AR,PC+1→PC00000E00A0B55402
当前程序计数器内容送地址寄放器,为读取计算结果存储单元地址做准备;程序计数器指向下一单元地址
B55--------------------------------------------------------------------------------------------------------------------B0
0000
0000
0000
1110
0000
0000
1010
0000
1011
0101
0101
0100
0000
0010
(8)MEM→AR00000E0010F00002
从主存读取结果存储单元地址
B55--------------------------------------------------------------------------------------------------------------------B0
0000
0000
0000
1110
0000
0000
0001
0000
1111
0000
0000
0000
0000
0010
(9)Q→MEM,CC#=00029030010200010
计算结果送结果存储单元
B55--------------------------------------------------------------------------------------------------------------------B0
0010
1001
0000
0011
0000
0000
0001
0000
0010
0000
0000
0000
0001
0000
MIO#REQWE#为000,BI8-6为001,MI5-3为000,MI2-0为010,表示将Q寄放器里面的内容存到AR存储的单元地址对应的存储单元;
B55-B46为00(4AH),即下地址,CI3-0为0011(3号命令,条件转移),SCC为00(CC#),表示转移到4AH中断。
2.输入微码
>E900
09000000:
00000000:
0E000000:
A0B50000:
54020000:
0000
09050000:
0E000000:
10F00000:
00020000:
00000000:
0E00
090A0000:
00F00000:
00000000:
00000000:
0E000000:
A0B5
090F0000:
54020000:
00000000:
0E000000:
10F00000:
0002
09140000:
00000000:
0E010000:
00E00000:
00000000:
0000
09190000:
0E000000:
A0B50000:
54020000:
00000000:
0E00
091E0000:
10F00000:
00020000:
00290000:
03000000:
1020
09230000:
0010
;将微程序的16进制代码输入到从900H开始的内存单元中
3.查看微码
>D900
090000000E00A0B5540200000E0010F00002
090800000E0000F0000000000E00A0B55402
091000000E0010F0000200000E0100E00000
091800000E00A0B5540200000E0010F00002
092000290300102000100000000000000000
;查看单元内容是不是正确
4.加载微码
>A800
0800:
MOVR1,900;微码在内存中的首地址为900H
0802:
MOVR2,9;微程序一共有9条微指令
0804:
MOVR3,100;微码加载到微控存中的首地址
0806:
LDMC;加载微码指令
0807:
RET;返回
0808:
>G800;执行加载微码程序
5.输入程序,测试新指令
>A820
0820:
MOVR0,0023将操作数放到寄放器R0,这里两个操作数都是23H
0822:
MOV[A00],R0将R0寄存的操作数放到A00地址单元
0824:
MOV[A01],R0将R0寄存的操作数放到A01地址单元
0826:
NOP
0827:
NOP
0828:
NOP
0829:
NOP
082A:
RET
082B:
>E826编辑0826开始到0829单元内容,将新指令输入
08260000:
D4000000:
0A000000:
0A010000:
0A02
>U820查看
0820:
2C000023MOVR0,0023
0822:
34000A00MOV[0A00],R0
0824:
34000A01MOV[0A01],R0
0826:
D400DWD400
0827:
0A00ADCR0,R0
0828:
0A01ADCR0,R1
0829:
0A02ADCR0,R2
082A:
AC00RET
>G820运行
6.运算结果
>DA00
0A0000230023004600000000000000000000
;0A00单元和0A01单元内容为操作数,相加后结果为0046,存在0A02单元,正确
(二)将一通用寄放器内容减去某内存单元内容,结果放在另一寄放器中。
指令格式:
E0DRSR,ADDR(SR,DR源、目的寄放器各4位)双字指令(控存入口130H)
功能:
DR=SR-[ADDR]
1.微程序
(1)PC→AR,PC+1→PC00000E00A0B55402
当前程序计数器内容送地址寄放器,为读取操作数地址做准备;程序计数器指向下一单元地址
B55--------------------------------------------------------------------------------------------------------------------B0
0000
0000
0000
1110
0000
0000
1010
0000
1011
0101
0101
0100
0000
0010
(2)MEM→AR00000E0010F00002
从主存读取第一个操作数地址,为读取操作数做准备
B55--------------------------------------------------------------------------------------------------------------------B0
0000
0000
0000
1110
0000
0000
0001
0000
1111
0000
0000
0000
0000
0010
(3)SR-[ADDR]→DR0029030131D00088
寄放器SR寄存的操作数减去ADDR单元内容,并存入DR
B55--------------------------------------------------------------------------------------------------------------------B0
0010
1001
0000
0011
0000
0001
0011
0001
1101
0000
0000
0000
1000
1000
MIO#REQWE#为000,BI8-6为011,MI5-3为001,MI2-0为101,SA(B7)=1,SB(B3)=1,表示将寄放器SR(A口)寄存的操作数减去ADDR单元内容,并存入DR(通过B口);
B55-B46为00(4AH),即下地址,CI3-0为0011(3号命令,条件转移),SCC为00(CC#),表示转移到4AH中断。
2.输入微码
>E900
09000000:
00000000:
0E000000:
A0B50000:
54020000:
0000
09050000:
0E000000:
10F00000:
00020000:
00290000:
0301
090A0000:
31D00000:
0088
;将微程序的16进制代码输入到从900H开始的内存单元中
3.查看微码
>D900
090000000E00A0B5540200000E0010F00002
09080029030131D000880000000000000000
;查看单元内容是不是正确
4.加载微码
>A800
0800:
MOVR1,900;微码在内存中的首地址为900H
0802:
MOVR2,3;微程序一共有9条微指令
0804:
MOVR3,130;微码加载到微控存中的首地址
0806:
LDMC;加载微码指令
0807:
RET;返回
0808:
>G800;执行加载微码程序
5.输入程序,测试新指令
>A820
0820:
MOVR0,0023将减数放到通用寄放器R0
0822:
MOVR3,0027将被减数放到通用寄放器R3
0824:
MOV[A00],R0将R0中减数放到0A00单元
0826:
NOP
0827:
NOP
0828:
RET
0829:
>E826编辑0826开始到0827单元,将新指令输入,其中SR为R3,DR为R2
08260000:
E0230000:
0A00
>U820查看
0820:
2C000023MOVR0,0023
0822:
2C300027MOVR3,0027
0824:
34000A00MOV[0A00],R0
0826:
E023DWE023
0827:
0A00ADCR0,R0
0828:
AC00RET
>G820运行
6.运算结果
>R
R0=0023R1=090CR2=0004R3=0027SP=FFFFPC=0820IP=0828R7=0000R8=0000
R9=0000R10=0000R11=0000R12=0000R13=0000R14=0000R15=0000F=00001111
0820:
2C000023MOVR0,0023
;源寄放器为R3,目的寄放器为R2,被减数为0023,减数为0027,结果为0004寄存于R2,正确
(三)转移指令。
判断两个通用寄放器内容是不是相等,若相等则转移到指定绝对地址,不然顺序执行。
指令格式:
E5DRSR,ADDR双字指令(控存入口140H)
功能:
ifDR==SRgotoADDRelse 顺序执行。
设计:
利用指令的CND字段,即IR10~8,令IR10~8=101,即CC=Z
则当DR==SR时Z=1,微程序不跳转,接着执行MEMPC(即ADDRPC)
而当DR!
=SR时Z=0,微程序跳转至A4。
1.微程序
(1)SR-DR00000E0191900088
SR内容减DR内容,若相等,则标志符Z=1,不然Z=0
B55--------------------------------------------------------------------------------------------------------------------B0
0000
0000
0000
1110
0000
0001
1001
0001
1001
0000
0000
0000
1000
1000
SST=01,表示接收运算结果设置标志位状态
(2)PC→AR,CC#=CND,PC+1→PC002903E0A0B55402
当前程序计数器内容送地址寄放器,条件转移信号CC#=CND,即判断Z是不是为1,若为1则中断条件成立;程序计数器指向下一单元地址
B55--------------------------------------------------------------------------------------------------------------------B0
0010
1001
0000