计算机组成原理课程设计报告班级:姓名:学号:完成时间:一、课程设计目的1.在实验机上设计实现机器指令及对应的微指令(微程序)并验证,从而进一步掌握微程序设计控制器的基本方法并了解指令系统与硬件结构的对应关系;2.通过控制器的微程序设计,综合理解计算机组成原理课程的核心知识并进一步建立整机系统的概念;3.培养综合实践及独立分析、解决问题的能力。二、课程设计的任务针对COP2000实验仪,从详细了解该模型机的指令/微指令系统入手,以实现乘法和除法运算功能为应用目标,在COP2000的集成开发环境下,设计全新的指令系统并编写对应的微程序;之后编写实现乘法和除法的程序进行设计的验证。三、课程设计使用的设备(环境)1.硬件●COP2000实验仪●PC机2.软件●COP2000仿真软件四、课程设计的具体内容(步骤)1.详细了解并掌握COP2000模型机的微程序控制器原理,通过综合实验来实现该模型机指令系统的特点:1)指令系统特点与设计模型机的指令码为8位,根据指令类型的不同,可以有0到2个操作数。指令码的最低两位用来选择R0-R3寄存器,在微程序控制方式中,用指令码做为微地址来寻址微程序存储器,找到执行该指令的微程序。而在组合逻辑控制方式中,按时序用指令码产生相应的控制位。在本模型机中,一条指令最多分四个状态周期,一个状态周期为一个时钟脉冲,每个状态周期产生不同的控制逻辑,实现模型机的各种功能。模型机有24位控制位以控制寄存器的输入、输出,选择运算器的运算功能,存储器的读写。指令系统包括以下七类:算术运算指令逻辑运算指令数据传输指令跳转指令ADDA,R?ADDA,@R?ADDA,MMADDA,#IIADDCA,R?ADDCA,@R?ADDCA,MMADDCA,#IISUBA,R?SUBA,@R?SUBA,MMSUBA,#IISUBCA,R?SUBCA,@R?SUBCA,MMSUBCA,#IIANDA,R?ANDA,@R?ANDA,MMANDA,#IIORA,R?ORA,@R?ORA,MMORA,#IICPLAMOVA,R?MOVA,@R?MOVA,MMMOVA,#IIMOVR?,AMOV@R?,AMOVMM,AMOVR?,#IIJCMMJZMMJMPMMCALLMMRET移位指令中断返回指令输入/输出指令RRARLARRCARLCARETIREADMMWRITEMMINOUT2)模型机寻址方式模型机的寻址方式指令举例说明累加器寻址操作数累加器A。例如“CPLA”是将累加器A的值取反,还有些是隐含寻址累加器A;例如“OUT”是将累加器A的值输出到输出端口寄存器OUT。寄存器寻址参与运算的数据在R0-R3的寄存器中。例如“ADDA,R0”是将寄存器R0的值加上累加器A的值,再存入累加器A中寄存器间接寻址参与运算的数据在寄存器EM中,数据的地址在寄存器R0-R3中。例如“MOVA,@R1”是将寄存器R1的值作为地址,把存储器EM中该地址的内容送入累加器A中。存储器直接寻址将存储器EM中,数据的地址为指令的操作数。例如“ANDA,40H”40H单元的数据与累加器A的值作逻辑与运算,结果存入累加器A。立即数寻址参与运算的数据位指令的操作数。例如“SUBA,#10H”从累加器A中减去立即数10H,结果存入累加器A。3)指令格式助记符机器码1机器码2指令说明_FATCH-000000xx实验机占用,不可修改。复位后,所有寄存器清0,首先执行_FATCH_指令取指ADDA,R?000100xx将寄存器R?的值加入累加器A中…………该模型机微指令系统的特点(包括其微指令格式的说明等):微指令格式助记符状态微地址微程序数据输出数据打入地址输出运算器移位控制μPCPC_FATCH_T000CBFFFF指令寄存器IRPC输出A输出写入+101FFFFFFA输出+102FFFFFFA输出+103FFFFFFA输出+1……………………………2)微指令设置说明控制信号含义XRD:外部设备读信号,当给出了外设的地址后,输出此信号,从指定外设读数据。EMWR:程序存储器EM写信号。EMRD:程序存储器EM读信号。PCOE:将程序计数器PC的值送到地址总线ABUS上。EMEN:将程序存储器EM与数据总线DBUS接通,由EMWR和EMRD决定是将DBUS数据写到EM中,还是从EM读出数据送到DBUS。IREN将程序存储器EM读出的数据打入指令寄存器IR和微指令计数器uPC。EINT:中断返回时清除中断响应和中断请求标志,便于下次中断。ELP:PC打入允许,与指令寄存器的IR3、IR2位结合,控制程序跳转。MAREN:将数据总线DBUS上数据打入地址寄存器MAR。MAROE:将地址寄存器MAR的值送到地址总线ABUS上。OUTEN:将数据总线DBUS上数据送到输出端口寄存器OUT里。STEN:将数据总线DBUS上数据存入堆栈寄存器ST中。RRD:读寄存器组R0-R3,寄存器R?的选择由指令的最低两位决定。RWR:写寄存器组R0-R3,寄存器R?的选择由指令的最低两位决定。CN:决定运算器是否带进位移位,CN=1带进位,CN=0不带进位。FEN:将标志位存入ALU内部的标志寄存器。X2X1X0:X2、X1、X0三位组合来译码选择将数据送到DBUS上的寄存器。WEN:将数据总线DBUS的值打入工作寄存器W中。AEN:将数据总线DBUS的值打入累加器A中。S2S1S0S2、S1、S0三位组合决定ALU做何种运算。X2X1X0与S2S1S0的具体对应操作如表所示:X2X1X0被选中寄存器S2S1S0运算000IN000A+W001IA001A-W010ST010AORW011PC011AANDW100D100A+W+Cy101R101A-W-Cy110L110NOTA111无111A2.计算机中实现乘法和除法的原理(1)无符号乘法①实例演示(即,列4位乘法具体例子演算的算式):被乘数为1001(二进制),即为十进制的9;乘数为0110(二进制),即为十进制的6。那么,可以通过笔算得到:1001×0110=00110110即十进制运算结果为:9×6=54无符号乘法的实例演示如图1所示:1001;被乘数×0110;乘数0000;初始值(零)+0000(0);乘数最低位为0,部分积加0,被乘数左移一;位,乘数右移一位。0000;部分积+1001(1);乘数最低位为1,部分积加被乘数,被乘数左;移一位,乘数右移一位。10010;部分积+1001(1);乘数最低位为1,部分积加被乘数,被乘数左;移一位,乘数右移一位。110110;部分积+0000(0);乘数最低位为0,部分积加0,被乘数左移一;位,乘数右移一位。(0)0110110;计算完毕,结果为00110110即:1001×0110=00110110②硬件原理框图:③算法流程图:在模型机上实现无符号数乘法运算时,采用“加法—移位”的重复运算方法。因此,无符号乘法的算法流程图如图所示。初始化被乘数及乘数初始化部分积开始计算部分积乘数末位为1?结束被乘数左移一位(不带进位)乘数右移一位(不带进位)输出结果(R0)乘数为0?YNYN(2)无符号除法①实例演示(即,列4位除法具体例子演算的算式):被除数为01000011(二进制),即为十进制的67;除数为0110(二进制),即为十进制的6。那么,可以通过笔算得到:01000011÷0110=1011…0001即十进制运算结果为:67÷6=11…1无符号除法的实例演示如图4所示1011011001000011;被除数0110;除数010000110;被除数左移一位,比较,够减0110;相减,商上100100110001001100;余数左移一位,比较,不够减0110;商上0010011000;余数左移一位,比较,够减0110;相减,商上100111000001110000;余数左移一位,比较,够减0110;相减,商上10001②硬件原理框图:③算法流程图:ALUAWR1R2被除数除数DLR标志位CR2(商)R3(计数器)初始化:被除数左移初始化被除数及除数计数器初始化被除数左移开始做减法YN商0余数为负?商1计算结束?YN计算结束?YN输出结果结束计算余数3.对应于以上算法如何分配使用COP2000实验仪中的硬件(1)乘法硬件分配情况表硬件名称实现算法功能描述寄存器R0计算时用来存放中间结果和最后的积。寄存器R1①初始化时,用来存放被乘数;②在程序执行的过程中,用来存放向左移位后的被乘数。寄存器R2①初始化时,用来存放乘数;②在程序执行的过程中,用来存放向右移位后的乘数。累加器A传递中间数据。寄存器W传递中间数据。左移门L实现左移操作。直通门D用来控制ALU的执行结果是否输出到数据总线。右移门R实现右移操作程序计数器PC①控制程序按顺序正常执行;②当执行转移指令时,从数据线接收要跳转的地址,使程序能够按需要自动执行。③当要从EM中读取数据时,由PC提供地址。存储器EM存储指令和数据。微程序计数器μPC向微程序存储器μM提供相应微指令的地址。微程序存储器μM存储相应指令的微指令。(2)除法硬件分配情况表硬件名称实现算法功能描述寄存器R0在程序执行过程中,用来保存当前算得的商。寄存器R1初始化时,用来存放被除数。寄存器R2初始化时,用来存放除数,和被右移的除数。寄存器R3当作计数器使用,用来控制程序是否结束。累加器A传递中间运行数据。寄存器W传递中间运行数据。左移门L实现左移操作。直通门D用来控制ALU的执行结果是否输出到数据总线。右移门R实现右移操纵。程序计数器PC①控制程序按顺序正常执行;②当执行转移指令时,从数据线接收要跳转的地址,使程序能够按需要自动执行。③当要从EM中读取数据时,由PC提供地址。存储器EM存储指令和数据。微程序计数器μPC向微程序存储器μM提供相应微指令的地址。微程序存储器μM存储相应指令的微指令。4.在COP2000集成开发环境下设计全新的指令/微指令系统设计结果如表所示(可按需要增删表项)(1)新的指令集(设计两个不同指令集要分别列表)新的指令集(乘法和除法)助记符机器码1机器码2指令说明_FATCH_000000xx00-03实验机占用,不可修改。复位后,所有寄存器清0首先执行_FATCH_指令取指MOVR?,#II000001xx04-07II将立即数II送入寄存器R中。MOVA,R?000010xx08-0B将寄存器R中的数据送入累加器A中。MOVR?,A000011xx0C-0F将A累加器中的数据送入寄存器R中。SUBA,R?000100xx10-13带进位减法语句,结果保存在累加器A中ORA,#II000110xx18-1BII逻辑或指令,影响标志位。TESTR?000111xx1C-1F判断当前寄存器中内容是否为0,影响标志位RLR?001000xx20-23逻辑左移SHLR?001001xx24-27逻辑左移SHRR?001010xx28-2B算术右移RRR?001011xx2C-2F逻辑右移ENDD001100xx30-33程序结束。ADDR?,A001101xx34-37不带进位加法指令,结果保存在R中。JMPMM001111xx3C-3FMM实现无条件跳转JCMM010000xx40-43MM带进位跳转JZMM010001xx44-47MM带零判断跳转(2)新的微指令集助记符状态微地址微程序数据输出数据打入地址输出运算器移位控制μPCPC_FATCH_T000CBFFFF指令寄存器IRPC输出A输出写入+101FFFFFFA输出+102FFFFFFA输出+103FFFFFFA输出+1MOVR?,#IIT104C7FBFF存储器EM寄存器R?PC输出A输出+1+1T005CBFFFF指令寄存器IRPC输出A输出写入+106FFFFFFA输出+107FFFFFFA输出+1MOVA,R?T108FFF7F7寄存器值R?寄存器AA输出+1T009CBFFFF指令寄存器IRPC输出A输出写入+10AFFFFFFA输出+10BFFFFFFA输出+1