华北科技学院计算机学院设计性实验报告第1页《计算机组成原理A》课程设计性实验报告开课实验室:计算机组成原理实验室年月日实验题目指令扩展实验一、实验目的深入了解教学计算机微程序控制器的组成和设计技术,包括Am2910器件的功能与具体用法,教学计算机的总体组成和部件之间的连接方法,总之应该深入理解控制器部件的组成、设计、控制与使用等诸项知识。二、设备与环境TEC-XP+教学机,微机(装有WindowsXP、ISPLEVER、ispVMSystem等软件)。三、实验内容在现有的基本指令系统上,扩展2条指令,分别是:指令一:NXORDR,SR,其功能是(DR⊕SR)DR。指令二:SWRMDR,[SR],其功能是DR与[SR]的值互换,实现寄存器与内存单元(通过间接寻址方式)之间的数据传送。四、实验步骤1、CPU模型华北科技学院计算机学院设计性实验报告第2页2、微程序控制器组成原理框图3、机器指令与微指令关系①PC:存放下一条机器指令的地址(向指令存储器提供指令地址)。②指令存储器:(存放所有机器指令),经地址译码,选中相应存储单元,取出相应机器指令,送入指令寄存器IR。③指令寄存器IR:存放正在执行的机器指令。机器指令包含两个字段:操作码(OP)、地址码。④由操作码(OP)映射得到微地址(译码过程),即机器指令所对应的微程序入口地址,存入微地址寄存器。⑤控制存储器存放所有的微程序,经地址译码读出一条微指令。⑥由控制存储器读出的一条微指令存入微指令寄存器。4、教学机TEC-XP的控制器提供的控制信号(微指令格式)①B0-B5字段:DC1:CPU内部总线数据来源选择控制,详见表1-1;DC2:专用寄存器接收控制,详见表1-2。②B6-B11字段:SSHSCI:最低进位输入、移位输入控制信号,详见表2-1;SST:状态寄存器控制信号,详见表2-2。③B12-B19字段:A口:0000表示不使用寄存器,1000表示取IR中的SR,0100表示R4(SP),0101表示R5(PC);B口:0000表示不使用寄存器,1000表示取IR中的DR,0100表示R4(SP),0101表示R5(PC)。华北科技学院计算机学院设计性实验报告第3页表1-1DC1-CPU内部总线数据来源选择表1-2DC2-专用寄存器接收控制表2-1状态寄存器表2-2最低进位输入、移位输入控制信号④B20-B28字段:I5-I3,I8-I6,I2-I0,为Am2901的9位控制码,详见下表3-1。⑤B29-B31字段:/MIOREQ/WE对内存和I/O接口读写控制:/MIO(0:有内存或串口的读写,1:无)REQ(0:读写内存,1:读写串行口)/WE(0:写操作,1:读操作)DC1编码译码信号操作说明000/SWTOIB送开关内容到内部总线001/RTOIB送ALU输出到内部总线010/ETOIB送IR低位字内容到内部总线011/FTOIB送程序状态字到内部总线100/16位机不用101/16位机不用110/INTV送中断向量到内部总线111NC无操作DC1编码译码信号操作说明000NC无操作001/GIR指令寄存器接收010/16位机不用011/GAR地址寄存器接收100/INTR恢复中断优先级101/INTN接收中断优先级110/EI用于开中断指令111/DI用于关中断指令SSHSCICin/Shift000Cin=0001Cin=1010Cin=C100逻辑移位101循环移位SSTCZVS000CZVS001CyZROVF15010内部总线0110ZVS1001ZVS101RAM0ZVS110RAM15ZVS111Q0ZVSI8-I6:运算结果处理I5-I3:运算功能I2-I0:数据来源编码通用寄存器Q寄存器Y的输出RS000F→QFR+SAQ001FS-RAB010F→BAR-S0Q011F→BFR∨S0B100F/2→BQ/2→QFR∧S0A101F/2→BF/R∧SDA110F*2→BQ*2→QFR∀SDQ111F*2→BF/(R∀S)D0MRW编码功能000写内存001读内存010写串口011读串口1XX无内存和串口的读写操作华北科技学院计算机学院设计性实验报告第4页⑥B32-B39字段:顺序控制字段,CI3-CI0,SCC3-0=00100000(20H)时,表示MAPROM映射入口地址;CI3-CI0,SCC3-0=11100000(E0H)时,表示顺序执行;当CI3-CI0=0011(3H)时SCC3-0字段有效,此时SCC编码及功能详见下表4-1。⑦B40-B47字段:微下地址字段5、扩展的2条机器指令的格式及功能扩展的2条机器指令的格式、功能、寻址方式、操作码编码、微程序步数、微程序入口地址如下表所示:6、指令所对应的微程序每条机器指令对应的微程序、以及每步(微指令)的功能及各字段值的意义:(1)如下表所示,为两条指令所对应的微程序:(2)扩展的两条机器指令的功能及各字段的意义如下:SCC编码(CI3-CI0=0011时有效)功能(下面条件满足时,使/CC=0)0000必转移0010有中断,INT=0时转移0100C、Z测试,JRC、JRNC、JRZ、JRNZ指令微指令转移条件不成立时,转移0101S测试,JRS、JRNS指令微指令转移条件不成立时,转移0110IR10=0时(IN),转移0111IR8=1时(PUSH、POP),转移序号格式功能寻址方式编码微程序步数微程序入口地址1NXORDR,SRDR与SR的值异或送DR寄存器直接寻址22H1802SWRMDR,[SR]DR与[SR]的值互换DR为寄存器直接寻址,[SR]为寄存器间接寻址E9H48A序号指令入口地址下址CI3-0SCC3-0MRWI2-0I8-6I5-3B口A口SSTSSHSCIDC2DC11NXORDR,SR8030304,13,78,81,00,02SWRMDR,[SR]8A00E04,30,08,00,00,000E04,41,00,80,03,000E01,73,08,00,00,030300,21,00,00,00,1华北科技学院计算机学院设计性实验报告第5页指令一:NXORDR,SR机器指令NXOR共包括一条微指令,该微指令的功能及各字段值的意义如下:①入口地址:表示该机器指令对应的微程序入口地址为80H;②下址:表示下一条机器指令的微程序入口地址为30H,并且为结束程序指令;③CI3-0/SCC3-0:CI3-0=0011,表示进行条件微转移;SCC3-0=0000,表示必转移,即执行完该条微指令后必须转移到下一条机器指令所对应的地址;④MRW/I2-0:MRW=100,表示无内存和串口的读写操作;I2-0=001,表示数据来源于A,B两个寄存器;⑤I8-I6/I5-I3:I8-I6=011,I5-I3=111,I8-I6表示将运算结果存入B寄存器;I5-I3表示进行异或运算;⑥B口/A口:B=A=1000,表示A口和B口的地址均为1000,该指令使用了A和B两个寄存器;⑦SST/SSHSCI:该指令中SST为1,转换为二进制位001,SST的功能为设置状态寄存器的值,表示为CZVS为C(Cy)Z(ZR)V(OV)S(F15);SSHSCI为0,其功能是设置进位输入,转换为二进制为000,表示Cin=0;⑧DC2/DC1:该指令中DC1和DC2分别为0,0,转换为二进制为000,000,其功能为DC1送开关内容到内部总线,DC2不进行操作。指令二:SWRMDR,[SR]机器指令SWRM包括四条微指令,以下是四条微指令执行过程概述:①机器指令入口地址为8A,下址为00,微指令顺序执行,无内存操作,数据来源为011,运算结果送入Q寄存器,由Y口输出,进行R与S的加法操作,B口为IR的DR,不使用A口数据,状态寄存器的值不变,进位输入为0,专用寄存器无操作,送开关内容到内部总线;②微指令的入口地址为8B,下址为00,微指令顺序执行,无内存操作,数据来源为100,运算结果送入Y输出,进行R与S的加法运算,不使用B口数据,A口为IR的SR,状态寄存器的值不变,进位输入为0,地址寄存器接收数据,送开关内容到内部总线;③微指令的入口地址为8C,下址为00,微指令顺序执行,对内存进行读操作,运算器获得数据,运算结果送入B口,并由Y输出,进行R与S的或运算,B口为IR的DR,不使用A口数据,状态寄存器的值不变,进位输入为0,专用寄存器无操作,送开关内容到内部总线;④微指令的入口地址为8D,下址为30,执行完后必转,对内存进行写操作,数据来华北科技学院计算机学院设计性实验报告第6页源为010,运算结果送入Y输出,进行R与S的加法运算,不使用A口与B口数据,状态寄存器的值不变,进位输入为0,专用寄存器无操作,送ALU输出到内部总线。7、ABEL语言源程序编辑以及JED文件生成(1)添加指令操作码NXOR=(IR==[0,0,1,0,0,0,1,0]);SWRM=(IR==[1,1,1,0,1,0,0,1]);(2)添加入口地址添加NXOR指令的入口地址:MA80=(Y==[1,0,0,0,0,0,0,0]);添加SWRM指令的入口地址:MA8A=(Y==[1,0,0,0,1,0,1,0]);MA8B=(Y==[1,0,0,0,1,0,1,1]);MA8C=(Y==[1,0,0,0,1,1,0,0]);MA8D=(Y==[1,0,0,0,1,1,0,1]);(3)入口地址定义对NXOR指令做如下修改:D7=!C_M&(!_MAP&(NXOR#......)#NXTADDR7&!_PL)&!Bit8;对SWRM指令做如下修改:D1=!C_M&(!_MAP&(SWRM#······)#NXTADDR1&!_PL)&!Bit8;D3=!C_M&(!_MAP&(SWRM#······)#NXTADDR3&!_PL)&!Bit8;D7=!C_M&(!_MAP&(NXOR#SWRM#······)#NXTADDR7&!_PL)&!Bit8;(4)下址定义对NXOR指令做如下修改:NXTADDR5:=!C_M&(MA80#......)&!Bit8;NXTADDR4:=!C_M&(MA80#......)&!Bit8;对SWRM指令做如下修改:NXTADDR5:=!C_M&(MA8D#......)&!Bit8;NXTADDR4:=!C_M&(MA8D#......)&!Bit8;(5)条件转移字段定义对NXOR指令做如下修改:CI0:=!C_M&(MA80#......)&NRST&!Bit8;对SWRM指令做如下修改:CI3:=!C_M&(MA8A#MA8B#MA8C#......)&NRST&!Bit8;CI2:=!C_M&(MA8A#MA8B#MA8C#......)&NRST&!Bit8;CI1:=!C_M&(MA8A#MA8B#MA8C#......)&NRST&!Bit8;CI0:=!C_M&(MA8D#......)&NRST&!Bit8;(6)MRW定义对NXOR指令做如下修改:!_MIO00:=!(MA80#......);对SWRM指令做如下修改:华北科技学院计算机学院设计性实验报告第7页!_MIO00:=!(MA8A#MA8B#......);_WE00:=(MA8C#......);(7)I2-I0,I8-I6,I5-I3定义I200:=(MA8B#MA8C#......);I100:=(MA8A#MA8C#MA8D#......);!I000:=!(MA8A#MA8C#......);I700:=(MA8C#......);!I600:=!(MA8B#MA8C#MA8D#MA80#......);I500:=(MA80#......);I400:=(MA80#......);I300:=(MA80#......);(8)B口、A口定义B30=(MA80#MA8A#MA8C#......);A30=(MA8B#MA80#......);(9)SST/SSHSCI定