当前位置:文档之家› 计算机组成原理课设

计算机组成原理课设

计算机组成原理课程设计报告班级:09计算机03 班姓名:** 学号:********完成时间:2012年1月3日一、课程设计目的1.在实验机上设计实现机器指令及对应的微指令(微程序)并验证,从而进一步掌握微程序设计控制器的基本方法并了解指令系统与硬件结构的对应关系;2.通过控制器的微程序设计,综合理解计算机组成原理课程的核心知识并进一步建立整机系统的概念;3.培养综合实践及独立分析、解决问题的能力。

二、课程设计的任务针对COP2000实验仪,从详细了解该模型机的指令/微指令系统入手,以实现乘法和除法运算功能为应用目标,在COP2000的集成开发环境下,设计全新的指令系统并编写对应的微程序;之后编写实现乘法和除法的程序进行设计的验证。

三、课程设计使用的设备(环境)1.硬件●COP2000实验仪●PC机2.软件●COP2000仿真软件四、课程设计的具体内容(步骤)1.详细了解并掌握COP 2000模型机的微程序控制器原理,通过综合实验来实现(1)该模型机指令系统的特点:①总体概述COP2000模型机包括了一个标准CPU所具备所有部件,这些部件包括:运算器ALU、累加器A、工作寄存器W、左移门L、直通门D、右移门R、寄存器组R0-R3、程序计数器PC、地址寄存器MAR、堆栈寄存器ST、中断向量寄存器IA、输入端口IN、输出端口寄存器OUT、程序存储器EM、指令寄存器IR、微程序计数器uPC、微程序存储器uM,以及中断控制电路、跳转控制电路。

其中运算器和中断控制电路以及跳转控制电路用CPLD来实现,其它电路都是用离散的数字电路组成。

微程序控制部分也可以用组合逻辑控制来代替。

模型机为8位机,数据总线、地址总线都为8位,但其工作原理与16位机相同。

相比而言8位机实验减少了烦琐的连线,但其原理却更容易被学生理解、吸收。

模型机的指令码为8位,根据指令类型的不同,可以有0到2个操作数。

指令码的最低两位用来选择R0-R3寄存器,在微程序控制方式中,用指令码做为微地址来寻址微程序存储器,找到执行该指令的微程序。

而在组合逻辑控制方式中,按时序用指令码产生相应的控制位。

在本模型机中,一条指令最多分四个状态周期,一个状态周期为一个时钟脉冲,每个状态周期产生不同的控制逻辑,实现模型机的各种功能。

模型机有24位控制位以控制寄存器的输入、输出,选择运算器的运算功能,存储器的读写。

模型机的缺省的指令集分几大类:算术运算指令、逻辑运算指令、移位指令、数据传输指令、跳转指令、中断返回指令、输入/输出指令。

②模型机的寻址方式表1模型机的寻址方式(2)该模型机微指令系统的特点(包括其微指令格式的说明等):①总体概述该模型机的微命令是以直接表示法进行编码的,其特点是操作控制字段中的每一位代表一个微命令。

这种方法的优点是简单直观,其输出直接用于控制。

缺点是微指令字较长,因而使控制存储器容量较大。

②微指令格式的说明模型机有24位控制位以控制寄存器的输入、输出,选择运算器的运算功能,存储器的读写。

微程序控制器由微程序给出24位控制信号,而微程序的地址又是由指令码提供的,也就是说24位控制信号是由指令码确定的。

该模型机的微指令的长度为24位,其中微指令中只含有微命令字段,没有微地址字段。

其中微命令字段采用直接按位的表示法,哪位为0,表示选中该微操作,而微程序的地址则由指令码指定。

这24位操作控制信号的功能如表2所示:(按控制信号从左到右的顺序依次说明)COP2000中有7个寄存器可以向数据总线输出数据, 但在某一特定时刻只能有一个寄存器输出数据. 由X2,X1,X0决定那一个寄存器输出数据。

0 0 0 IN_OE 外部输入门0 0 1 IA_OE 中断向量0 1 0 ST_OE 堆栈寄存器0 1 1 PC_OE PC寄存器1 0 0 D_OE 直通门1 0 1 R_OE 右移门1 1 0 L_OE 左移门1 1 1 没有输出COP2000中的运算器由一片EPLD实现. 有8种运算, 通过S2,S1,S0来选择。

运算数据由寄存器A及寄存器W给出, 运算结果输出到直通门D。

S2 S1 S0 功能0 0 0 A+W 加0 0 1 A-W 减0 1 0 A|W 或0 1 1 A&W 与1 0 0 A+W+C 带进位加1 0 1 A-W-C 带进位减1 1 0 ~A A取反1 1 1 A 输出A2。

计算机中实现乘法和除法的原理(1)无符号乘法①实例演示(即,列4位乘法具体例子演算的算式):以0011×0100为例0 0 1 1 被乘数0 1 0 0 乘数___________________________________0 0 0 0 部分积为00 0 0 0 (0)乘数最低位为0,部分积加0,被乘数左移___________________________________一位,乘数右移一位。

0 0 0 0 部分积0 0 0 0 (0)乘数最低位为0,部分积加0,被乘数左移___________________________________一位,乘数右移一位。

0 0 0 0 部分积1 1 0 0 (1)乘数最低位为1,部分积累加被乘数,被乘__________________________________数左移一位,乘数右移一位。

1 1 0 0 部分积0 0 0 0 (0)乘数最低位为0,部分积加0,被乘数左移___________________________________一位,乘数右移一位。

(0) 1 1 0 0 计算完毕,结果为00001100 即:0011×0100=00001100②硬件原理框图:乘法指令硬件原理框图R0,被乘数,左移R1,乘数,右移R3,部分积,最终积被乘数送W中间结果送A③算法流程图:初始化(2)无符号除法①实例演示(即,列4位除法具体例子演算的算式): 以01001010÷1000为例 被除数:01001010 除数:1000000010010000100000000001开始始初始化 被乘数,乘数,积乘数末位为1?计算部分积 被乘数左移一位,乘数右移一位结束 Y N乘数为0? YN00000010 一位000010000000010100000101000010000000101000001000________________________________00000010②硬件原理框图:被除数右移,下一位落下除数送W,作为减数减法有进位相应位置为0,否则为1被除数/中间结果与除数做差大于0,结果即为余数中间结果送A,作为被减数③算法流程图:…………除法指令算法路程图3.对应于以上算法如何分配使用COP2000实验仪中的硬件(1)无符号乘法表3 无符号乘法的硬件分配情况(2)无符号除法表4 无符号除法的硬件分配情况4.在COP2000集成开发环境下设计全新的指令/微指令系统 设计结果如表所示(可按需要增删表项) (1)新的指令集(设计两个不同指令集要分别列表)下图为实验过程中指令系统的截图(2)新的微指令集助记符状态微地址微程序数据输出数据打入地址输出运算器移位控制 PC PC_FATCH_ T0 ->00 CBFFFF 浮空指令寄存器IRPC输出A输出写入+101 FFFFFF 浮空浮空A输出+102 FFFFFF 浮空浮空A输出+103 FFFFFF 浮空浮空A输出+1PUSH A T1 04 FFFF9F ALU直通堆栈寄存器ST浮空A输出+1T0 05 CBFFFF 浮空指令寄存器IRPC输出A输出写入+106 FFFFFF 浮空浮空A输出+107 FFFFFF 浮空浮空A输出+1POP A T1 08 FFFF57 堆栈寄存器ST寄存器A 浮空A输出+1T0 09 CBFFFF 浮空指令寄存器IRPC输出A输出写入+1 0A FFFFFF 浮空浮空A输出+10B FFFFFF 浮空浮空A输出+1ADD A,#II T2 0C C7FFFF 存贮器值EM寄存器W标志位C,ZPC输出A输出+1 +1 T1 0D FFFF90 ALU直通寄存器A 浮空加运算+1T0 0E CBFFFF 浮空指令寄存器IRPC输出A输出写入+1 0F FFFFFF 浮空浮空A输出+1T2 49 FFF7F7 寄存器值R?寄存器A 浮空A输出+1T1 4A FFFA93 ALU直通寄存器R?寄存器A标志位C,Z浮空与运算+1T0 4B CBFFFF 浮空指令寄存器IRPC输出A输出写入+1GOTO MM T1 4C C6FFFF 存贮器值EM寄存器PC PC输出A输出+1 写入T0 4D CBFFFF 浮空指令寄存器IRPC输出A输出写入+1 4E FFFFFF 浮空浮空A输出+14F FFFFFF 浮空浮空A输出+1GC MM T1 50 C6FFFF 存贮器值EM寄存器PC PC输出A输出+1 写入T0 51 CBFFFF 浮空指令寄存器IRPC输出A输出写入+152 FFFFFF 浮空浮空A输出+153 FFFFFF 浮空浮空A输出+1GZ MMT1 54 C6FFFF 存贮器值EM寄存器PC PC输出A输出+1 写入T0 55 CBFFFF 浮空指令寄存器IRPC输出A输出写入+1 如下为实验过程中新建微指令的截图5.用设计完成的新指令集编写实现无符号二进制乘法、除法功能的汇编语言程序(1)乘法4位乘法的算法流程图与汇编语言程序清单:LD R0,#03HLD R1,#04HLD R2,#00HLOOP1:LD A,R1SHR ALD R1,AGC LOOP2LD A,R0SAL ALD R0,AGOTO LOOP1LOOP2:LD A,R0ADD R2,ALD A,R1SUB A,#00HGZ FINALGOTO LOOP1FINAL:END(3)除法(选作)4位除法的算法流程图与汇编语言程序清单:LD R0,#4AH;被除数LD R1,#08H;除数LD R2,#00H;商LD R3,#4AH;余数;R3暂时存放中间结果;切记不能用两个存储器操作数LD A,R0HR AHR AHR A ;第一次----不带进位右移三位SUB A,R1PUSH A ;中间商,暂存第一次差GC LS0;减不开转LS0,减得开继续ADD R2,#08H;商的第四位为1,带寄存器的加减法都会使A中值改变POP ALOOP0:PUSH AAND R0,#04H;得被除数第三位SUB R0,#00H;判断被除数第三位是否为0POP A ;中间结果GZ NEXT0;若为0,跳转至NEXT0;若非0,继续SAL AADD A,#01H ;非0即1 ,还原为1GOTO TAG0NEXT0:SAL A;直接左移,原被乘数的第三位(中间结果的最后一位)为0 TAG0:SUB A,R1 ;继续做差,需要带进位GC LS1;减不开转LS1PUSH A;减得开,继续ADD R2,#04H;商的第三位为1POP ALOOP1:PUSH ALD A,R3LD R0,APOP APUSH AAND R0,#02HSUB R0,#00HPOP AGZ NEXT1;被除数的第二位为0SAL AADD A,#01HGOTO TAG1NEXT1:SAL ATAG1:SUB A,R1GC LS2;减不开转2PUSH AADD R2,#02H;商的第二位为1POP ALOOP2:PUSH ALD A,R3LD R0,APOP APUSH AAND R0,#01HSUB R0,#00HPOP AGZ NEXT2;被除数的第一位为0SAL AADD A,#01HGOTO TAG2NEXT2:SAL ATAG2:PUSH ALD A,R3LD R0,APOP APUSH ASUB A,R1GC NEXT3PUSH AADD R2,#01H;商的第一位为1POP AGOTO TAG3NEXT3: ADD R2,#00H;商的第一位为0 POP ATAG3: LD R3,AGOTO FINALLS0: ADD A,R1GOTO LOOP0LS1: ADD A,R1GOTO LOOP1LS2: ADD A,R1GOTO LOOP2FINAL: END6.上述程序的运行情况(跟踪结果)无符号乘法程序的运行过程SUB A,#00H 13 3400 将寄存器A中的数据与立即数A相减送至A,影响标志位+1+1写入EM:34R2:0CA:0CR0:0CR1:02GZ 19 15 5419 无条件跳转至19 +1写入写入+1EM:54R2:0CA:0CR0:0CR1:02实验过程中的截图如下:无符号除法程序的运行过程汇编指令程序地址机器码指令说明微程序PC PC 运行时寄存器或存储器的值LD R0,#4AH 00 144A 将立即数4AH送至R0寄存器C7FBFFCBFFFF+1+1写入+1 EM:14A:00R0:4AR1:00R2:00R3:00W:00LD R1,#08H 02 1508 将立即数08H送至R1寄存器C7FBFFCBFFFF+1+1写入+1 EM:08A:00R0:4AR1:08R2:00R3:00W:00LD R2,#00H 04 1600 将立即数00H送至R2寄存器C7FBFFCBFFFF+1+1写入+1 EM:00A:00R0:4AR1:00GOT0 70 65 4C70 无条件跳转至70 C6FFFFCBFFFF 写入+1+1写入EM:08A:09R0:4AR1:08R2:09R3:4AW:01FATCH 70 00=03 机器占用,不可修改。

相关主题