计算机组成原理课程设计.docx
《计算机组成原理课程设计.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计.docx(28页珍藏版)》请在冰豆网上搜索。
![计算机组成原理课程设计.docx](https://file1.bdocx.com/fileroot1/2023-2/21/4a03fbde-82d9-4deb-98b8-a8256d9fea04/4a03fbde-82d9-4deb-98b8-a8256d9fea041.gif)
计算机组成原理课程设计
《计算机组成原理》
课
程
设
计
(2013/2014第二学期------第19周)
指导教师:
许建龙张芳
班级:
姓名:
学号:
计算机组成原理大型实验任务书(计算机12级1、2、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)设计报告内容:
包括1、设计目的2、设计内容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日
计算机组成原理课程设计实验报告
一、目的和要求
深入了解计算机各种指令的执行过程,以及控制器的组成,指令系统微程序设计的具体知识,进一步理解和掌握动态微程序设计的概念;完成微程序控制的特定功能计算机的指令系统设计和调试。
二、实验环境
TEC-2机,PC机
三、具体内容
1)把用绝对地址表示的内存单元A中的内容与内存单元B中的内容相加,结果存于内存单元C中。
指令格式:
D4××,ADDR1,ADDR2,ADDR3四字指令(控存入口100H)
功能:
[ADDR3]=[ADDR1]+[ADDR2]
指令格式:
微程序:
1)PCAR,PC+1PC:
00000E00A0B55402
2)MEMAR:
00000E0010F00002
3)MEMQ:
00000E0000F00000
4)PCAR,PC+1PC:
00000E00A0B55402
5)MEMAR:
00000E0010F00002
6)MEM+QQ:
00000E0100E00000
7)PCAR,PC+1PC:
00000E00A0B55402
8)MEMAR00000E0010F00002
9)QMEM,CC#=0:
0029030010200010
1)程序计数器加1,开辟一个内存单元
2)指令地址送AR(ADDR1)
3)将内存单元中的数据送入Q寄存器
4)PC加1,开辟第二个内存单元
5)将指令地址送AR
6)完成加法(ADDR2内容+Q寄存器内容送Q寄存器)
7)PC加1,开辟第三个内存单元
8)将指令地址送AR(ADDR3)
9)将结果送ADDR3,低电位有效
用E命令输入微码:
>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
用D命令查看输入的微码:
>D900
090000000E00A0B5540200000E0010F00002......T.........
090800000E0000F0000000000E00A0B55402..............T.
091000000E0010F0000200000E0100E00000................
091800000E00A0B5540200000E0010F00002......T.........
092000290300102000100000000000000000.)..............
092800000000000000000000000000000000................
093000000000000000000000000000000000................
093800000000000000000000000000000000................
094000000000000000000000000000000000................
094800000000000000000000000000000000................
095000000000000000000000000000000000................
095800000000000000000000000000000000................
096000000000000000000000000000000000................
096800000000000000000000000000000000................
097000000000000000000000000000000000................
用A命令输入加载微码的程序:
>A800
0800:
MOVR1,900
0802:
MOVR2,9
0804:
MOVR3,100
0806:
LDMC
0807:
RET
0808:
用G命令运行加载微码的程序:
>G800
用A命令输入程序:
>A820
0820:
MOVR0,0023
0822:
MOV[A00],R0
0824:
MOVR0,0032
0826:
MOV[A01],R0
0828:
NOP
0829:
NOP
082A:
NOP
082B:
NOP
082C:
RET
082D:
用E命令输入新指令:
>E828
08280000:
D4000000:
0A000000:
0A010000:
0A02
用U命令查看输入程序:
>U820
0820:
2C000023MOVR0,0023
0822:
34000A00MOV[0A00],R0
0824:
2C000032MOVR0,0032
0826:
34000A01MOV[0A01],R0
0828:
D400DWD400
0829:
0A00ADCR0,R0
082A:
0A01ADCR0,R1
082B:
0A02ADCR0,R2
082C:
AC00RET
082D:
0000NOP
082E:
0000NOP
082F:
0000NOP
0830:
0000NOP
0831:
0000NOP
0832:
0000NOP
0833:
0000NOP
用G命令运行程序:
>G820
用D命令查看运行结果:
>DA00
0A0000230032005500000000000000000000.#.2.U..........
0A0800000000000000000000000000000000................
0A1000000000000000000000000000000000................
0A1800000000000000000000000000000000................
0A2000000000000000000000000000000000................
0A2800000000000000000000000000000000................
0A3000000000000000000000000000000000................
0A3800000000000000000000000000000000................
0A4000000000000000000000000000000000................
0A4800000000000000000000000000000000................
0A5000000000000000000000000000000000................
0A5800000000000000000000000000000000................
0A6000000000000000000000000000000000................
0A6800000000000000000000000000000000................
0A7000000000000000000000000000000000................
2)将一通用寄存器内容减去某内存单元内容,结果放在另一寄存器中。
指令格式:
E0DRSR,ADDR(SR,DR源、目的寄存器各4位)双字指令(控存入口130H)
功能:
DR=SR-[ADDR]微程序:
指令格式:
1)PCAR,PC+1PC:
00000E00A0B55402
2)MEMAR:
00000E0010F00002
3)SR-[ADDR]DR:
0029030131D00088
1)程序计数器加1
2)指令地址送AR
3)完成加法,最后结果送寄存器
用E命令输入微码:
>E900
09000000:
00000000:
0E000000:
A0B50000:
54020000:
0000
09050000:
0E000000:
10F00000:
00020000:
00290000:
0301
090A0000:
31D00000:
0088
用D命令查看输入的微码:
>D900
090000000E00A0B5540200000E0010F00002......T.........
09080029030131D000880000000000000000.)..1...........
091000000000000000000000000000000000................
091800000000000000000000000000000000................
092000000000000000000000000000000000................
092800000000000000000000000000000000................
093000000000000000000000000000000000................
093800000000000000000000000000000000................
094000000000000000000000000000000000................
094800000000000000000000000000000000................
095000000000000000000000000000000000................
095800000000000000000000000000000000................
096000000000000000000000000000000000................
096800000000000000000000000000000000................
097000000000000000000000000000000000................
用A命令输入加载微码的程序:
>A800
0800:
MOVR1,900
0802:
MOVR2,3
0804:
MOVR3,130
0806:
LDMC
0807:
RET
0808:
用G命令运行加载微码的程序:
>G800
用A命令输入程序:
>A820
0820:
MOVR7,0024
0822:
MOVR8,0023
0824:
MOV[A00],R8
0826:
NOP
0827:
NOP
0828:
RET
0829:
用E命令输入新指令:
>E826
08260000:
E0070000:
0A00
用U命令查看输入的程序:
>U820
0820:
2C700024MOVR7,0024
0822:
2C800023MOVR8,0023
0824:
34080A00MOV[0A00],R8
0826:
E007DWE007
0827:
0A00ADCR0,R0
0828:
AC00RET
0829:
0000NOP
082A:
0000NOP
082B:
0000NOP
082C:
0000NOP
082D:
0000NOP
082E:
0000NOP
082F:
0000NOP
0830:
0000NOP
0831:
0000NOP
0832:
0000NOP
用G命令运行程序:
>G820
用D命令查看运行结果:
>DA00
0A0000220000000000000000000000000000."..............
0A0800000000000000000000000000000000................
0A1000000000000000000000000000000000................
0A1800000000000000000000000000000000................
0A2000000000000000000000000000000000................
0A2800000000000000000000000000000000................
0A3000000000000000000000000000000000................
0A3800000000000000000000000000000000................
0A4000000000000000000000000000000000................
0A4800000000000000000000000000000000................
0A5000000000000000000000000000000000................
0A5800000000000000000000000000000000................
0A6000000000000000000000000000000000................
0A6800000000000000000000000000000000................
0A7000000000000000000000000000000000................
用R命令查看寄存器内容:
>R
R0=0001R1=090CR2=0000R3=0133SP=FFFFPC=0820IP=0828R7=0024R8=0023
R9=0000R10=0000R11=0000R12=0000R13=0000R14=0000R15=0000F=00001111
0820:
2C700024MOVR7,0024
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)SR-DR:
00000E0191900088
2)PCAR,CC#=CND:
PC+1PC:
002903E0A0B55402
3)MEMPC:
0029030030F05000
1)SR-DR
2)PC送AR,CC#=CND,PC+1送PC
3)MEM送PC,CC#=0
用E命令输入微码:
>E900
09000000:
00000000:
0E010000:
91900000:
00880000:
0029
09050000:
03E00000:
A0B50000:
54020000:
00290000:
0300
090A0000:
30F00000:
5000
用D命令查看输入的微码:
>D900
090000000E0191900088002903E0A0B55402.........)....T.
09080029030030F050000000000000000000.)..0.P.........
091000000000000000000000000000000000................
091800000000000000000000000000000000................
092000000000000000000000000000000000................
092800000000000000000000000000000000................
093000000000000000000000000000000000................
093800000000000000000000000000000000................
094000000000000000000000000000000000................
094800000000000000000000000000000000................
095000000000000000000000000000000000................
09580000000000000000000