计算机组成原理课程设计报告指导教师:班级:姓名:学号:一、目的和要求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)将一通用寄存器内容减去某内存单元内容,结果放在另一寄存器中。指令格式: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)课程设计实验报告必须打印成册,各班班长收齐大型实验报告于18周星期六下午(15:00)前,交张芳老师办公室。四、实验程序与分析:(一).把用绝对地址表示的内存单元ADDR1中的内容与内存单元ADDR2中的内容相减,结果存于内存单元ADDR3中。指令格式:D4××,ADDR1,ADDR2,ADDR3四字指令(控存入口100H)功能:[ADDR3]=[ADDR1]-[ADDR2]指令格式:微程序:PC→AR,PC+1→PC:00000E00A0B55402;程序计数器加1,开辟1个内存单元MEM→AR:00000E0010F00002;将指令地址送AR(ADDR1)MEM→Q:00000E0000F00000;将内存单元中的数据送入Q寄存器PC→AR,PC+1→PC:00000E00A0B55402;PC加1,开辟第二个内存单元MEM→AR:00000E0010F00002;将指令地址送AR(ADDR2)Q-MEM→Q:00000E0101E00000;完成减法(Q内容-ADDR2内容→Q寄存器)PC→AR,PC+1→PC:00000E00A0B55402;PC加1,开辟第三个内存单元MEM→AR:00000E0010F00002;将指令地址送AR(ADDR3)Q→MEM,CC#=0:0029030010200010;将结果送入ADDR3,低电平有效指令分析:①PC→AR,PC+1→PC:00000E00A0B55402程序计数器加1,开辟1个内存单元000E00A0B5540200000000000011100000000010100000101101010101010000000010B55-B44B43-B40B39-B37B34-B32B30-B28B26-B24B22-B20B19-B16B15-B12B11B9B6-B4B2-B0B36B35B31B27B23B10B8B7B3(B2-B0)DC2:2/GAR地址寄存器接收,故DC2为010(B6-B4)DC1:未向IB总线发送控制,故DC1为000(B7)SA=0,作Am2901(B3)SB=0,作Am2901(B9B8)SSH:未移位(B11B10)SCI:自加1(B15-B12)B口:使用了寄存器R5,即程序计数器PC,即0101(B19-B16)A口:使用了寄存器R5,即程序计数器PC,即0101(B22-B20)MI2-0:此时ALU的R端输入为0,S端输入为B(B26-B24)MI5-3:运算功能选择为“R+S”,即执行+1功能(B30-B28)BI8-6:有返回值,且返回值返回至B,而Y的输出选择为A(B31B27B23)MI0#,REQ,WE#:三位用于控制内外数据总线的读和写,此处不操作,故取10X(B34-B32)SST:状态位不需进行判断,即为000(B35)备用位为0(B36)SCCC#始终低电平有效,即SC=000,CC=0(B39-B37)SCCD4XXADDR1ADDR2ADDR3(B43-B40)CI3-CI0:Am2901命令第14#命令,即为顺序执行(B55-B44)下地址:由于顺序执行,并未使用下地址,故下地址为0②MEM→AR:00000E0010F00002将指令地址送AR(ADDR1)000E0010F0000200000000000011100000000000010000111100000000000000000010B55-B44B43-B40B39-B37B34-B32B30-B28B26-B24B22-B20B19-B16B15-B12B11B9B6-B4B2-B0B36B35B31B27B23B10B8B7B3(B2-B0)DC2:地址寄存器接收,故DC2为010(B6-B4)DC1:未向IB总线发送控制,故DC1为000(B7)SA=0,作Am2901,即0000(B3)SB=0,作Am2901,即0000(B9B8)SSH:未移位,即00(B11B10)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(B31B27B23)MI0#,REQ,WE#:三位用于控制内外数据总线的读和写,此处为存储器读,故取001(B34-B32)SST:状态位不需进行控制,故为000(B35)备用位为0(B36)SCCC#始终低电平有效,即SC=000,CC=0(B39-B37)SCC(B43-B40)CI3-CI0:Am2901命令第14#命令,即为顺序执行(B55-B44)下地址:由于顺序执行,并未使用下地址,故下地址为0③[MEM]→Q:00000E0000F00000将内存单元中的数据送入Q寄存器000E0000F0000000000000000011100000000000000000111100000000000000000000B55-B44B43-B40B39-B37B34-B32B30-B28B26-B24B22-B20B19-B16B15-B12B11B9B6-B4B2-B0B36B35B31B27B23B10B8B7B3(B2-B0)DC2:寄存器未接收,故DC2为000(B6-B4)DC1:未向IB总线发送控制,故DC1为000(B7)SA=0,作Am2901,即0000(B3)SB=0,作Am2901,即0000(B9B8)SSH:未移位,为00(B11B10)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(B31B27B23)MI0#,REQ,WE#:存储器读即取001(B34-B32)SST:状态位不需进行控制,故为000(B35)备用位为0(B36)SCCC#始终低电平有效,即为0000(B39-B37)SCC(B43-B40)CI3-CI0:Am2901命令第14#命令,即为顺序执行,(B55-B44)下地址:由于顺序执行,并未使用下地址,故下地址为0④PC→AR,PC+1→PC:00000E00A0B55402PC加1,开辟第二个内存单元000E00A0B5540200000000000011100000000010100000101101010101010000000010B55-B44B43-B40B39-B37B34-B32B30-B28B26-B24B22-B20B19-B16B15-B12B11B9B6-B4B2-B0B36B35B31B27B23B10B8B7B3⑤MEM→AR:00000E0010F00002将指令地址送AR(ADDR2)000E0010F0000200000000000011100000000000010000111100000000000000000010B55-B44B43-B40B39-B37B34-B32B30-B28B26-B24B22-B20B19-B16B15-B12B11B9B6-B4B2-B0B36B35B31B27B23B10B8B7B3这两条指令同①②。⑥[MEM]-Q→Q:00000E0101E00000完成减法(ADD2内容-Q内容→Q寄存器)000E0101E0000000000000000011100000000100000001111000000000000000000000B55-B44B43-B40B39-B37B34-B32B30-B28B26-B24B22-B20B19-B16B15-B12B11B9B6-B4B2-B0B36B35B31B27B23B10B8B7B3(B2-B0)DC2:寄存器未接收,故DC2为000(B6-B4)DC1:未向IB总线发送控制,故DC1为000(B7)SA:为0,作Am2901(B3)SB:为0,作Am2901(B9B8)SSH:未移位,即00(B11B10)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(B31B27B23)MI0#,REQ,WE#:存储器读即取001(B34-B32)SST:由运算带来的状态保存,故为001(B35)备用位为0(B36)SCCC#始终低电平有效,即为0000(B39-B37)SCC(B43-B40)CI3-CI0:Am2901命令第14#命令,即为顺序执行(B55-B44)下地址:由于顺序执行,并未使用下地址,故下地址为0⑦PC→AR,PC+1→PC:00000E00A0B55402PC加1,开辟第三个内存单元000E00A0B5540200000000000011100000000010100000101101010101010000000010B55-B44B43-B40B39-B37B34-B32B30-B28B26-B24B22-B20B19-B16B15-B12B11B9B6-B4B2-B0B36B35B31B27B23B10B8B7B3⑧M