




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机组成原理课程设计报告1.在实验机上设计实现机器指令及对应的微指令(微程序)并验证,从而进一步掌握微程序设计控制器的基本方法并了解指令系统与硬件结构的对应关系;2.通过控制器的微程序设计,综合理解计算机组成原理课程的核心知识并进一步建立整机3.培养综合实践及独立分析、解决问题的能力。二、课程设计的任务法运算功能为应用目标,在COP2000的集成开发环境下,设计全新的指令系统并编写对应的微程序;之后编写实现乘法和除法的程序进行设计的验证。三、课程设计使用的设备(环境)COP2000实验仪PC机2.软件COP2000仿真软件四、课程设计的具体内容(步骤)1.详细了解并掌握COP2000模型机的微程序控制器原理,通过综合实验来实现①总体概述COP2000模型机包括了一个标准CPU所具备所有部件,这些部件包括:运算器ALU、累加器A、工作寄存器W、左移门L、直通门D、右移门R、寄存器组R0-R3、程序计数器PC、地址寄存器MAR、堆栈寄存器ST、中断向量寄存器IA、输入端口IN、输出端口寄存器OUT、程序存储器EM、指令寄存器IR、微程序计数器uPC、微程序存储器uM,以及中断控制电路、跳转控制电路。其中运算器和中断控制电路以及跳转控制电路用CPLD来实现,其它电路都是用离散的数字电路组成。微程序控制部分也可以用组合逻辑控制来代替。态周期产生不同的控制逻辑,实现模型机的各种功能。模型机有24位控制位以控制寄存器的输入、输出,选择运算器的运算功能,存储器的读写。模型机的缺省的指令集分几大类:算术运算指令、逻辑运算指令、移位指令、数据传输指令、跳转指令、中断返回指令、输入/输出指令。②模型机的寻址方式指令说指令说明将累加器A的值输出到输出端口寄存器OUT址的内容送入累加器A中将存储器EM中40H单元的数据与累加器A的值从累加器A中减去立即A寻址方式说明操作数为累加器AR0~R3的寄存器中参与运算的数据在存储器EM中,数据的地址参与运算的数据在存储器EM中,数据的地址。参与运算的数据为指令模型机的寻址方式累加器寻址寄存器寻址寄存器间接寻址存储器直接寻址立即数寻址指令举例CPLAOUTADDA,R0MOVA,@R1ANDA,40HSUBA,#10H(2)该模型机微指令系统的特点(包括其微指令格式的说明等):①总体概述该模型机的微命令是以直接表示法进行编码的,其特点是操作控制字段中的每一位代表而使控制存储器容量较大。②微指令格式的说明模型机有24位控制位以控制寄存器的输入、输出,选择运算器的运算功能,存储器的读写。微程序控制器由微程序给出24位控制信号,而微程序的地址又是由指令码提供的,令表示选中该微操作,而微程序的地址则由指令码指定。这24位操作控制信号的功能如表2控控制信号的说明外部设备读信号,当给出了外设的地址后,输出此信号,从指定外设读数程序存储器EM写信号。程序存储器EM读信号。PCABUS上。将程序存储器EM与数据总线DBUS接通,由EMWR和EMRD决定是将DBUS数据写到EM中,还是从EM读出数据送到DBUS。中断返回时清除中断响应和中断请求标志,便于下次中断。将数据总线DBUS上数据打入地址寄存器MAR。将地址寄存器MAR的值送到地址总线ABUS上。将数据总线DBUS上数据送到输出端口寄存器OUT里。DBUS上数据存入堆栈寄存器ST中。读寄存器组R0~R3,寄存器R?的选择由指令的最低两位决定。写寄存器组R0~R3,寄存器R?的选择由指令的最低两位决定。CNCN将标志位存入ALU内部的标志寄存器。X2、X1、X0三位组合来译码选择将数据送到DBUS上的寄存器。将数据总线DBUS的值打入工作寄存器W中。将数据总线DBUS的值打入累加器A中。操作控制信号XRDEMWREMRDPCOEEMENIRENEINTELPMARENMAROEOUTENSTENRRDRWRCNFENX2X1X0WENAENCOP2000中有7个寄存器可以向数据总线输出数据,但在某一特定时刻只能有一个寄存数左数左移XX2X1X0输出寄存器00IN_OE外部输入门001IA_OE10ST_OE堆栈寄存器011PC_OEPC寄存器D_OE直通门01R_OE右移门L_OE左移门11没有输出00A+W加001A-W减10A|W或011A&W与A+W+C带进位加01A-W-C带进位减~AA取反11A理(1)无符号乘法在模型机上实现无符数乘法运算时,采用LDRLDR被被乘R0(部分积判断乘数末位和结果)ALUAWRR2被乘数乘数号运乘数右移(2)无符号除法始初始化被乘数及乘数初始化部分积YNNYN计算部分积被乘数左移一位(不带进位)乘数右移一位(不带进位)0输出结果(R)0在模型机上实现无符号数除法运算时,采用“加减交替算法”的运算方法。初始化:被除数,除数,商,计数器N做减法余数为负N商上1计算结束吗YY商上0计算结束吗Y计算余数N做加法输出结果结束除除数右移初始化:除数左移LLDRAWR3(计数器)RR1被除数除数ALU3.对应于以上算法如何分配使用COP2000实验仪中的硬件(1)无符号乘法符号乘法对应于COP2000实验仪的硬件具体分配使用情况如下表所示:实实现算法功能描述计算时用来存放部分积和最后的积①初始化时,用来存放被乘数;②在程序执行的过程中,用来存放向左移位后的被乘数。①初始化时,用来存放乘数;②在程序执行的过程中,用来存放向右移位后的乘数。执行ADDA,R?(加法)、SHLR?(左移一位)、SHRR? (右移一位)等命令时所必须使用的寄存器。等双操作数命令时所必须使用的寄存器。制该运算后的结果是否输出到数据总线。硬件名称寄存器W用来控用来控制ALU的执行结果是否输出到数据总线。制该运算后的结果是否输出到数据总线。①控制程序按顺序正常执行;②当执行转移指令时,从数据线接收要跳转的地址,使程序能够按需要自动执行。③当要从EM中读取数据时,由PC提供地址。存储相应指令的微指令。可以将运算结果输出到输出寄存器OUT(本实验未用)。当存储于累加器A的值将要受到破坏时,将其数据保存在程序计数器PC存储器EM输出寄存器OUT直通门D(2)无符号除法无符号除法对应于COP2000实验仪的硬件具体分配使用情况如下表所示:硬硬件名称寄存器W直通门D程序计数器PC存储器EM输出寄存器OUT实现算法功能描述初始化时,用来存放被除数和计算后的余数。①初始化时,用来存放除数;②在程序执行的过程中,用来存放向右移位后的除数。在程序执行过程中,用来保存当前算得的商。当作计数器使用,用来控制程序是否结束(初始值5)。①计算时用来存放中间结果;ADDARSUBAR法)等命令时所SUBAR数命令时所必须使用的寄制该运算后的结果是否输出到数据总线。用来控制ALU的执行结果是否输出到数据总线。制该运算后的结果是否输出到数据总线。①控制程序按顺序正常执行;②当执行转移指令时,从数据线接收要跳转的地址,使程序能够按需要自动执行。③当要从EM中读取数据时,由PC提供地址。存储相应指令的微指令。可以将运算结果输出到输出寄存器OUT(本实验未用)。当存储于累加器A的值将要受到破坏时,将其数据保存在4.在COP2000集成开发环境下设计全新的指令/微指令系统(1)新的指令集(乘除法指令集)助记符_FATCH_ADDADDSUBSUBTESTPUSHAPOPAMOVMOVSHLR?SHRR?JCMMJZMMMMMM指令说明实验机占用,不可修改。复位后,所有寄存器清0,首先执行_FATCH_指令取指。将累加器A中的数加入到寄存器R?中,并影响将立即数II加入到寄存器R?中,并影响标志将堆栈寄存器ST中的数据弹出到累加器A寄存器R?中的数不带进位向左移一位,并不寄存器R?中的数不带进位向右移一位,并不若进位标志位置1,跳转到MM地址。若零标志位置1,跳转到MM地址。JMPMMOVER跳转到MM地址。(2)新的微指令集(乘除法微指令集)助记符状态微地址微程序数据输出数据打入地址输出运算器移位控制PCPC_FATCH_T0CBFFFFPC输出+1FFFFFFFFFFFFFFFFFF+1+1+1ADDT2FFF7EF寄存器W+1R?T1FFFA98ALU直通寄存器R?加运算+1T0CBFFFFPC输出+1FFFFFF+1ADDT3FFF7F7+1R?T2C7FFEFEM寄存器WPC输出+1+1T10AFFFA98ALU直通寄存器R?加运算+1T00BCBFFFFPC输出+1SUBT30CFFFF8FALU直通寄存器W+1T20DFFF7F7+1T10EFFFA99ALU直通减运算+1T00FCBFFFFPC输出+1SUBT3FFF7F7+1T2C7FFEFEM寄存器WPC输出+1+1T1FFFA99ALU直通寄存器R?减运算+1T0CBFFFFPC输出+1TESTT3C7FFFF寄存器WPC输出+1+1EMT2FFF7F7+1T1FFFE93ALU直通寄存器R?与运算+1T0CBFFFFPC输出+1PUSHAT1FFEF9FALU直通+1T0CBFFFFPC输出+11AFFFFFFA输出+11BFFFFFFA输出+1POPAT11CFFFF57堆栈寄存寄存器AA输出+1T01DCBFFFF指令寄存PC输出A输出写入+11EFFFFFFFFFFFF+1+1MOVT1FFF7F7+1R?T0CBFFFFPC输出+1FFFFFFFFFFFFMOVT1C7FBFFPC输出+1+1EMT0CBFFFFPC输出+1FFFFFFFFFFFF+1+1SHLR?T2FFF7F7R?+1T1FFF9DFALU左移A输出左移+1T02ACBFFFFPC输出+12BFFFFFF+1SHRR?T22CFFF7F7R?+1T12DFFF9BFALU右移A输出右移+1T02ECBFFFFPC输出+12FFFFFFF+1JCMMT1C6FFFFEM存器PCPC输出+1T0CBFFFFPC输出+1JZMMT1T0FFFFFFFFFFFFC6FFFFCBFFFFEM存器PCPC输出PC输出+1+1+1+1FFFFFFFFFFFF+1+1JMPMMT1C6FFFFEM存器PCPC输出+1T0CBFFFFPC输出+13A3BFFFFFFFFFFFF+1+1OVERT03CCBFFFFPC输出+13D3E3FFFFFFFFFFFFFFFFFFF+1+1+15.用设计完成的新指令集编写实现无符号二进制乘法、除法功能的汇编语言程序(1)乘法MOVR0,#00HMOVR1,#09HMOVR2,#06HLOOP:TESTR2,#0FHJZLASTTESTR2,#01HJZNEXTMOVA,R1ADDR0,ANEXT:SHLR1SHRR2JMPLOOPLAST:OVER乘法的算法流程图:始R,被乘数R1,乘数R2YNNY0输出结果(R)0(2)除法MOVR0,#31HMOVR1,#07HMOVR2,#00HMOVR3,#05HTESTR1,#0FHJZOVERFLOWMOVA,R1PUSHASHLR1SHLR1SHLR1SHLR1MOVA,R1SUBR0,AJCZEROJMPOVERFLOWZERO:SHLR2SHRR1SUBR3,#01HJZFINISHMOVA,R1ADDR0,AJCONEJMPZERO减去移位后除数;有进位跳到ZERO,上0处理;首次没借位会得出5位商,溢出处理减1;计数器为0,跳转到FINISH位后除数位后除数;有借位跳到ONE,上1处理;没借位跳到ZERO,上0处理JIESHU:ONE:SHLR2ADDR2,#01HSHRR1SUBR3,#01HJZFINISHMOVA,R1SUBR0,AJCZEROJMPONEOVERFLOW:MOVR2,#0FFHJMPJIESHUTESTR0,#80HJZJIESHUPOPAADDR0,AJMPJIESHU加1减1;计数器为0,跳转到FINISH减去移位后除数;有借位跳到ZERO,上0处理;没借位跳到ONE,上1处理;溢出,商置为全1OVERCYCLE:JMPCYCLE开始开始初始化:被除数R0,除数R1,商YNYN溢出处理YNNYNNYYY计数器R3为0?NYN6.上述程序的运行情况(跟踪结果)汇编指令_FATCH_MOVR0,#00MOVR1,#09MOVR2,#06TESTR2,#0FJZ14TESTR2,#01JZ10地址0A0C机器码指令说明位后,所有寄存器清0,首先执行_FATCH_指令取微程序CBFFFFC7FBFFCBFFFFC7FBFFCBFFFFC7FBFFCBFFFFC7FFEFFFF7F7FFFE93CBFFFFC6FFFFCBFFFFC7FFEFFFF7F7FFFE93CBFFFFC6FFFFCBFFFFPC+1+1+1+1+1+1+1+1+1写入+1+1+1写入PC写入+1写入+1写入+1写入+1+1+1写入+1写入+1+1+1写入+1写运行时寄存器或存储器的值EM:24EM:24EM:00EM:25EM:09EM:26EM:06EM:16EM:0FEM:0FEM:0FEM:34EM:14EM:16EM:01EM:01EM:01EM:34EM:10W:0FW:01+1入SHLR1SHRR2JMP06TESTR2,#0FJZ14TESTR2,#01JZ10MOVA,R1ADDR0,ASHLR1SHRR20A0C0E0F160F寄存器R2与立即数0FH,FFF7F7FFF9DFCBFFFFFFF7F7FFF9BFCBFFFFC6FFFFCBFFFFC7FFEFFFF7F7FFFE93CBFFFFC6FFFFCBFFFFC7FFEFFFF7F7FFFE93CBFFFFC6FFFFCBFFFFFFF7F7CBFFFFFFF7EFFFFA98CBFFFFFFF7F7FFF9DFCBFFFFFFF7F7FFF9BFCBFFFF+1+1写入+1+1+1写入+1+1+1写入+1+1+1+1+1+1+1写入+1+1写入+1写入+1+1+1写入+1写入+1+1+1写入+1写入+1写入+1+1写入+1+1写入+1+1写EM:29EM:29EM:29EM:2EEM:2EEM:2EEM:38EM:06EM:16EM:0FEM:0FEM:0FEM:34EM:14EM:16EM:01EM:01EM:01EM:34EM:10EM:21EM:21EM:04EM:04EM:04EM:29EM:29EM:29EM:2EEM:2EEM:2EW:0FW:01W:00JMP06TESTR2,#0FJZ14TESTR2,#01JZ10MOVA,R1ADDR0,ASHLR1SHRR2JMP06TESTR2,#0F0A0C0E0F160F寄存器R2与立即数0FH,160F寄存器R2与立即数0FH,C6FFFFCBFFFFC7FFEFFFF7F7FFFE93CBFFFFC6FFFFCBFFFFC7FFEFFFF7F7FFFE93CBFFFFC6FFFFCBFFFFFFF7F7CBFFFFFFF7EFFFFA98CBFFFFFFF7F7FFF9DFCBFFFFFFF7F7FFF9BFCBFFFFC6FFFFCBFFFFC7FFEFFFF7F7FFFE93CBFFFF写入+1+1+1写入+1+1+1写入+1+1+1+1+1写入+1+1入+1写入+1+1+1写入+1写入+1+1+1写入+1写入+1写入+1+1写入+1+1写入+1+1写入+1写入+1+1+1写EM:38EM:06EM:16EM:0FEM:0FEM:0FEM:34EM:14EM:16EM:01EM:01EM:01EM:34EM:10EM:21EM:21EM:04EM:04EM:04EM:29EM:29EM:29EM:2EEM:2EEM:2EEM:38EM:06EM:16EM:0FEM:0FEM:0FW:0FW:01W:12W:0F3C程序结束。C6FFFFCBFFFFCBFFFFJZ14OVEREM:34EM:14EM:3C入+1入写入入+1+1②除法程序运行过程指令说指令说明先执行_FATCH_指令取R0中的数放入累R1中的数放入累R2中的数放入累R3中的数放入累R与立即数0FH,不改变R1若零标志位置1,跳转到R1中的数放入累将累加器A中的数据压入R的数不带进位运行时寄存器或PC存储器的值写入EM:24+1+1+1+1+1+1+1+1+1+1+1+1EM:24EM:31EM:25EM:07EM:26EM:00EM:27EM:05EM:15EM:0FEM:0FEM:0FEM:34EM:32EM:21EM:21EM:18EM:18EM:29EM:29W:0F汇编指令_FATCHMOVR0,#31MOVR1,#07MOVR2,#00MOVR3,#05TESTR1,#0FJZOVERFLOWMOVA,R1PUSHASHLR1微程序CBFFFFC7FBFFCBFFFFC7FBFFCBFFFFC7FBFFCBFFFFC7FBFFCBFFFFC7FFEFFFF7F7FFFE93CBFFFFC6FFFFCBFFFFFFF7F7CBFFFFFFEF9FCBFFFFFFF7F7FFF9DF机器码址0A0C0D0EPC+1+1+1+1+1+1+1+1+1+1+1+1+1+1SHLR1SHLR1SHLR1MOVA,R1SUBR0,AJCZEROSHLR2SHRR1SUBR3,#01JZFINISHMOVA,R1ADDR0,AJCONEJMPZEROSHLR2SHRR10F1A1C1ER的数不带进位R的数不带进位R的数不带进位R1中的数放入累0C器R0中减去累加器A0C进位标志位置1,跳转到2A寄存器R2中的数不带进位2D寄存器R1中的数不带进位从寄存器R3中减去立即数01H,并影响标志位。3436若零标志位置1,跳转到21将寄存器R1中的数放入累04将累加器A中的数加入到R0中,并影响标志进位标志位置1,跳转到2A寄存器R2中的数不带进位2D寄存器R1中的数不带进位CBFFFFFFF7F7FFF9DFCBFFFFFFF7F7FFF9DFCBFFFFFFF7F7FFF9DFCBFFFFFFF7F7CBFFFFFFFF8FFFF7F7FFFA99CBFFFFC6FFFFCBFFFFFFF7F7FFF9DFCBFFFFFFF7F7FFF9BFCBFFFFFFF7F7C7FFEFFFFA99CBFFFFC6FFFFCBFFFFFFF7F7CBFFFFFFF7EFFFFA98CBFFFFC6FFFFCBFFFFC6FFFFCBFFFFFFF7F7FFF9DFCBFFFFFFF7F7+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1写入EM:29R1:0E+1EM:29+1EM:29A:0E写入EM:29R1:1C+1EM:29+1EM:29A:1C写入EM:29R1:38+1EM:29+1EM:29A:38写入EM:29R1:70EM:21EM:21A:70+1EM:0C+1EM:0CW:70+1EM:0CA:31写入EM:0CR0:C1+1EM:30写入EM:18+1EM:2A+1EM:2AA:00写入EM:2AR2:00+1EM:2D+1EM:2DA:70写入EM:2DR1:38+1EM:13+1EM:13A:05+1EM:01W:01写入EM:01R3:04+1EM:34写入EM:36+1EM:21写入EM:21A:38+1EM:04+1EM:04W:C1写入EM:04R0:F9+1EM:30写入EM:24+1EM:38写入EM:18+1EM:2A+1EM:2AA:00写入EM:2AR2:00+1EM:2DFFF9BF+1EM:2DCBFFFF+1EM:2DSUBR3,#011A器R3中减去立即数FFF7F7+1EM:1301H,并影响标志位。C7FFEFFFFA99+1+1+1EM:13EM:01W:01CBFFFF+1EM:01JZFINISH1C若零标志位置1,跳转到C6FFFFCBFFFF+1+1EM:34EM:36MOVA,R11ER1中的数放入累FFF7F7+1EM:21CBFFFF+1EM:21A:1CADDR2,#010A01将立即数01H加入到寄存器FFF7F7+1EM:0AR2中,并影响标志位。C7FFEFFFFA98+1+1+1EM:0AEM:01W:01CBFFFF+1EM:01JC24C6FFFFCBFFFF+1+1EM:30EM:24SHLR22AR的数不带进位FFF7F7+1EM:2AFFF9DF+1EM:2ACBFFFF+1EM:2ASHRR12DR的数不带进位FFF7F7+1EM:2DFFF9BF+1EM:2DCBFFFF+1EM:2DADDR2,#010A01将立即数01H加入到寄存器FFF7F7+1EM:0AR2中,并影响标志位。C7FFEFFFFA98+1+1+1EM:0AEM:01W:01CBFFFF+1EM:01SHRR12DR的数不带进位FFF7F7+1EM:2DFFF9BF+1EM:2DA:1CCBFFFF+1EM:2DSUBR3,#01器R3中减去立即数FFF7F7+1EM:1301H,并影响标志位。C7FFFFFFFA99+1+1+1EM:13EM:01W:01CBFFFF+1EM:01JZ362A若零标志位置1,跳转到C6FFFFCBFFFF+1+1EM:34EM:36MOVA,R12CR1中的数放入累FFF7F7+1EM:21CBFFFF+1EM:21A:0ESUBR0,A2D0C器R0中减去累加器FFFF8F+1EM:0CA中的数,并影响标志位。FFF7F7FFFA99+1+1EM:0CEM:0CW:0ECBFFFF+1EM:0CJC182EC6FFFFCBFFFF+1+1EM:30EM:18JMP24C6FFFFCBFFFF+1+1EM:38EM:24SHLR22AR的数不带进位FFF7F7+1EM:2AFFF9DF+1EM:2ACBFFFF+1EM:2AADDR2,#010A01将立即数01H加入到寄存FFF7F7+1EM:0AC7FFEFFFFA98+1+1+1EM:0AEM:01W:01CBFFFF+1EM:01SHRR12DR的数不带进位FFF7F7+1EM:2DFFF9BF+1EM:2DA:0ECBFFFF+1EM:2DSUBR3,#01器R3中减去立即数FFF7F7+1EM:1301H,并影响标志位。C7FFFFFFFA99+1+1+1EM:13EM:01W:01CBFFFF+1EM:01JZ362A若零标志位置1,跳转到C6FFFFCBFFFF+1+1EM:34EM:36MOV2CMOVA,R12CR1中的数放入累FFF7F7+1EM:21CBFFFF+1EM:21SUBR0,A2D0C器R0中减去累加器F
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论