计算机组成原理课程设计报告指导教师:班级:姓名:学号:一、目的和要求1.实验目的:深入了解计算机各种指令的执行过程,以及控制器的组成,指令系统微程序设计的具体知识,进一步理解和掌握动态微程序设计的概念;完成微程序控制的特定功能计算机的指令系统设计和调试。
2、实验要求:要进行这项大型实验,必须清楚地懂得:(1)TEC-2机的功能部件及其连接关系;(2)TEC-2机每个功能部件的功能与具体组成;(3)TEC-2机支持的指令格式;(4)TEC-2机的微指令格式,AM2910芯片的用法;(5)已实现的典型指令的执行实例,即相应的微指令与其执行次序的安排与衔接;(6)要实现的新指令的格式与功能。
二、实验环境PC机模拟TEC-2机三、具体内容一、实验内容:选定指令格式、操作码,设计如下指令:(1)把用绝对地址表示的内存单元ADDR1中的内容与内存单元ADDR2中的内容相减,结果存于内存单元ADDR3中。
指令格式:D4××,ADDR1,ADDR2, ADDR3 四字指令(控存入口100H)功能: [ADDR3]=[ADDR1]-[ADDR2](2)将一通用寄存器内容减去某内存单元内容,结果放在另一寄存器中。
指令格式:E0 DR SR,ADDR (SR,DR源、目的寄存器各4位)双字指令(控存入口130H)功能: DR=SR+ [ADDR](3)转移指令。
判断两个通用寄存器内容是否相等,若相等则转移到指定绝对地址,否则顺序执行。
指令格式:E5 DR SR,ADDR 双字指令(控存入口140H)功能: if DR==SR goto ADDR else 顺序执行。
设计:利用指令的CND字段,即IR10~8,令IR10~8=101,即CC=Z则当DR==SR时Z=1,微程序不跳转,接着执行MEM PC(即ADDR PC)而当DR!=SR时Z=0,微程序跳转至A4。
二、实验要求:(1)根据内容自行设计相关指令微程序;(务必利用非上机时间设计好微程序)(2)设计测试程序、实验数据并上机调试。
(3)设计报告内容:包括1、设计目的2、设计内容3、微程序设计(含指令格式、功能、设计及微程序)4、实验数据(测试所设计指令的程序及结果)。
(具体要求安最新规范为准)(4)课程设计实验报告必须打印成册,各班班长收齐大型实验报告于18周星期六下午(15:00)前,交张芳老师办公室。
四、实验程序与分析:(一).把用绝对地址表示的内存单元ADDR1中的内容与内存单元ADDR2中的内容相减,结果存于内存单元ADDR3中。
指令格式:D4××,ADDR1,ADDR2, ADDR3 四字指令(控存入口100H)功能: [ADDR3]=[ADDR1]-[ADDR2] 指令格式:微程序:PC→AR,PC+1→PC:0000 0E00 A0B5 5402; 程序计数器加1,开辟1个内存单元 MEM→AR: 0000 0E00 10F0 0002; 将指令地址送AR (ADDR1)MEM→Q:0000 0E00 00F0 0000; 将内存单元中的数据送入Q 寄存器PC→AR,PC+1→PC: 0000 0E00 A0B5 5402; PC 加1,开辟第二个内存单元MEM→AR:0000 0E00 10F0 0002; 将指令地址送AR (ADDR2)Q-MEM→Q: 0000 0E01 01E0 0000; 完成减法(Q 内容-ADDR2内容→Q 寄存器)PC→AR,PC+1→PC: 0000 0E00 A0B5 5402; PC 加1,开辟第三个内存单元MEM →AR: 0000 0E00 10F0 0002; 将指令地址送AR (ADDR3)Q→MEM,CC#=0: 0029 0300 1020 0010; 将结果送入ADDR3,低电平有效指令分析:① PC→AR,PC+1→PC: 0000 0E00 A0B5 5402 程序计数器加1,开辟1个内存单元0 0 0 E 0 0 A 0 B 5 5 4 0 2B 55-B 44 B 43-B 40 B 39-B 37 B 34-B 32 B 30-B 28B 26-B 24 B 22-B 20B 19-B 16B 15-B 12B 11 B 9 B 6-B 4 B 2-B 0 B 36B 35 B 31 B 27 B 23 B 10 B 8 B 7 B 3 (B 2-B 0)DC2:2/GAR 地址寄存器接收,故DC2为010 (B 6-B 4)DC1:未向IB 总线发送控制,故DC1为000 (B 7)SA=0,作Am2901 (B 3)SB=0,作Am2901 (B 9 B 8)SSH :未移位 (B 11 B 10)SCI :自加1(B 15-B 12)B 口:使用了寄存器R5,即程序计数器PC ,即0101 (B 19-B 16)A 口:使用了寄存器R5,即程序计数器PC ,即0101 (B 22-B 20)MI2-0:此时ALU 的R 端输入为0,S 端输入为B (B 26-B 24)MI5-3:运算功能选择为“R+S ”,即执行+1功能(B 30-B 28)BI8-6:有返回值,且返回值返回至B ,而Y 的输出选择为A(B 31 B 27 B 23)MI0#,REQ ,WE#:三位用于控制内外数据总线的读和写,此处不操作,故取10X (B 34-B 32)SST :状态位不需进行判断,即为000 (B 35)备用位为0(B36)SC CC#始终低电平有效,即SC=000,CC=0(B39-B37)SCC(B43-B40)CI3-CI0:Am2901命令第14#命令,即为顺序执行(B55-B44)下地址:由于顺序执行,并未使用下地址,故下地址为0②M EM→AR: 0000 0E00 10F0 0002 将指令地址送AR(ADDR1)0 0 0 E 0 0 1 0 F 0 0 0 0 2B55-B44 B43-B40 B39-B37 B34-B32 B30-B28B26-B24 B22-B20B19-B16B15-B12B11 B9 B6-B4 B2-B0B36B35 B31 B27 B23 B10 B8 B7 B3(B2-B0)DC2:地址寄存器接收,故DC2为010(B6-B4)DC1:未向IB总线发送控制,故DC1为000(B7)SA=0,作Am2901,即0000(B3)SB= 0,作Am2901,即0000(B9 B8)SSH:未移位,即00(B11 B10)SCI:未进位.,即00(B15-B12)B口:未使用寄存器,故为0000(B19-B16)A口:未使用寄存器,故为0000(B22-B20)MI2-0:此时ALU的R端输入为D(外部数据),S端输入为0(B26-B24)MI5-3:运算功能选择为“R+S”,即执行D+0(B30-B28)BI8-6:没有返回值, Y的输出选择为F(B31 B27 B23)MI0#,REQ,WE#:三位用于控制内外数据总线的读和写,此处为存储器读,故取001(B34-B32)SST:状态位不需进行控制,故为000(B35)备用位为0(B36)SC CC#始终低电平有效,即SC=000,CC=0(B39-B37)SCC(B43-B40)CI3-CI0:Am2901命令第14#命令,即为顺序执行(B55-B44)下地址:由于顺序执行,并未使用下地址,故下地址为0③[MEM]→Q:0000 0E00 00F0 0000 将内存单元中的数据送入Q寄存器0 0 0 E 0 0 0 0 F 0 0 0 0 055444340 39373432302826242220191615121196420B36B35 B31 B27 B23 B10 B8 B7 B3(B2-B0)DC2:寄存器未接收,故DC2为000(B6-B4)DC1:未向IB总线发送控制,故DC1为000(B7)SA=0,作Am2901,即0000(B3)SB=0,作Am2901,即0000(B9 B8)SSH:未移位,为00(B11 B10)SCI:未进位,为00(B15-B12)B口:未使用寄存器,故为0000(B19-B16)A口:未使用寄存器,故为0000(B22-B20)MI2-0:此时ALU的R端输入为D(外部数据),S端输入为0(B26-B24)MI5-3:运算功能选择为“R+S”,即执行D+0(B30-B28)BI8-6:有返回值,且返回值返回至Q,而Y的输出选择为F ,故此处为000(B31 B27 B23)MI0#,REQ,WE#:存储器读即取001(B34-B32)SST:状态位不需进行控制,故为000(B35)备用位为0(B36)SC CC#始终低电平有效,即为0000(B39-B37)SCC(B43-B40)CI3-CI0:Am2901命令第14#命令,即为顺序执行,(B55-B44)下地址:由于顺序执行,并未使用下地址,故下地址为0④PC→AR,PC+1→PC: 0000 0E00 A0B5 5402 PC加1,开辟第二个内存单元0 0 0 E 0 0 A 0 B 5 5 4 0 2B55-B44 B43-B40 B39-B37 B34-B32 B30-B28B26-B24 B22-B20B19-B16B15-B12B11 B9 B6-B4 B2-B0B36B35 B31 B27 B23 B10 B8 B7 B3⑤MEM→AR: 0000 0E00 10F0 0002 将指令地址送AR(ADDR2)0 0 0 E 0 0 1 0 F 0 0 0 0 2B55-B44 B43-B40 B39-B37 B34-B32 B30-B28B26-B24 B22-B20B19-B16B15-B12B11 B9 B6-B4 B2-B0B36B35 B31 B27 B23 B10 B8 B7 B3这两条指令同①②。
⑥[MEM]-Q→Q: 0000 0E01 01E0 0000 完成减法(ADD2内容-Q内容→Q寄存器)0 0 0 E 0 1 0 1 E 0 0 0 0 055444340 39373432302826242220191615121196420B36B35 B31 B27 B23 B10 B8 B7 B3(B2-B0)DC2:寄存器未接收,故DC2为000(B6-B4)DC1:未向IB总线发送控制,故DC1为000(B7)SA:为0,作Am2901(B3)SB:为0,作Am2901(B9 B8)SSH:未移位,即00(B11 B10)SCI:未进位,即00(B15-B12)B口:未使用寄存器,故为0000(B19-B16)A口:未使用寄存器,故为0000(B22-B20)MI2-0:此时ALU的R端输入为D(外部数据),S端输入为Q(B26-B24)MI5-3:运算功能选择为“S-R”,即执行D-Q(B30-B28)BI8-6:有返回值,且返回值返回至Q,而Y的输出选择为F ,故此处为000(B31 B27 B23)MI0#,REQ,WE#:存储器读即取001(B34-B32)SST:由运算带来的状态保存,故为001(B35)备用位为0(B36)SC CC#始终低电平有效,即为0000(B39-B37)SCC(B43-B40)CI3-CI0:Am2901命令第14#命令,即为顺序执行(B55-B44)下地址:由于顺序执行,并未使用下地址,故下地址为0⑦PC→AR,PC+1→PC: 0000 0E00 A0B5 5402 PC加1,开辟第三个内存单元0 0 0 E 0 0 A 0 B 5 5 4 0 2B55-B44 B43-B40 B39-B37 B34-B32 B30-B28B26-B24 B22-B20B19-B16B15-B12B11 B9 B6-B4 B2-B0B36B35 B31 B27 B23 B10 B8 B7 B3⑧MEM →AR: 0000 0E00 10F0 0002 将指令地址送AR(ADDR3)0 0 0 E 0 0 1 0 F 0 0 0 0 2B55-B44 B43-B40 B39-B37 B34-B32 B30-B28B26-B24 B22-B20B19-B16B15-B12B11 B9 B6-B4 B2-B0B36B35 B31 B27 B23 B10 B8 B7 B3这两条指令同①②。