计算机组成原理课程设计_乘除法运算_第1页
计算机组成原理课程设计_乘除法运算_第2页
计算机组成原理课程设计_乘除法运算_第3页
计算机组成原理课程设计_乘除法运算_第4页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、下载可编辑计算机组成原理课程设计报告班级:班姓名:学号:完成时间 :2016.1.9一、课程设计目的1 在实验机上设计实现机器指令及对应的微指令(微程序 )并验证 ,从而进一步掌握微程序设计控制器的基本方法并了解指令系统与硬件结构的对应关系;2 通过控制器的微程序设计,综合理解计算机组成原理课程的核心知识并进一步建立整机系统的概念 ;3 培养综合实践及独立分析、解决问题的能力。二、课程设计的任务针对 COP2000实验仪 ,从详细了解该模型机的指令/ 微指令系统入手,以实现乘法和除法运算功能为应用目标,在 COP2000的集成开发环境下,设计全新的指令系统并编写对应的微程序 ;之后编写实现乘法

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

3、OUT 、程序存储器 EM 、指令寄存器 IR 、微程序计数器uPC 、微程序存储器uM ,以及中断控制电路 、跳转控制电路 。其中运算器和中断控制电路以及跳转控制电路用CPLD来实现 ,其它电路都是用离散的数字电路组成。微程序控制部分也可以用组合逻辑控制来代替。模型机为 8 位机 ,数据总线 、地址总线都为 8 位,但其工作原理与 16 位机相同 。 相比而言 8 位机实验减少了烦琐的连线,但其原理却更容易被学生理解、吸收。模型机的指令码为8 位,根据指令类型的不同 ,可以有0 到 2 个操作数 。 指令码的最低两位用来选择 R0-R3寄存器 ,在微程序控制方式中 ,用指令码做为微地址来寻址

4、微程序存储器 ,找到执行该指令的微程序。而在组合逻辑控制方式中,按时序用指令码产生相应的控制位 。在本模型机中 ,一条指令最多分四个状态周期,一个状态周期为一个时钟脉冲,每个状态周期产生不同的控制逻辑,实现模型机的各种功能。 模型机有 24 位控制位以控制寄存器的输入 、输出 ,选择运算器的运算功能,存储器的读写 。.专业 .整理 .下载可编辑模型机的缺省的指令集分几大类: 算术运算指令 、逻辑运算指令、移位指令 、数据传输指令 、跳转指令 、中断返回指令、输入 / 输出指令 。 模型机的寻址方式表 1模型机的寻址方式模型机的寻址方寻址方式说明式操作数为累加器A累加器寻址隐含寻址累加器A参与运

5、算的数据在寄存器寻址R0R3 的寄存器中参与运算的数据在存寄存器间接寻址储器 EM 中,数据的地址在寄存器R0-R3 中参与运算的数据在存存储器直接寻址储器 EM 中,数据的地址为指令的操作数。参与运算的数据为指立即数寻址令的操作数 。指令举例指令说明CPLA将累加器A 的值取反将累加器A 的值输出到OUT输出端口寄存器OUT将寄存器R0 的值加上累ADDA,R0加器 A的值 ,再存入累加器A中将寄存器R1 的值作为地址,把存储器 EM 中该MOVA,R1地址的内容送入累加器A 中将存储器 EM 中 40H 单元的数据与累加器A 的ANDA,40H值作逻辑与运算,结果存入累加器 A从累加器A

6、中减去立即SUBA,#10H数 10H ,结果存入累加.专业 .整理 .下载可编辑器 A该模型机微指令系统的特点(包括其微指令格式的说明等):该模型机的微命令是以直接表示法进行编码的,其特点是操作控制字段中的每一位代表一个微命令。这种方法的优点是简单直观,其输出直接用于控制。缺点是微指令字较长,因而使控制存储器容量较大。 微指令格式的说明模型机有 24 位控制位以控制寄存器的输入、输出 ,选择运算器的运算功能,存储器的读写 。 微程序控制器由微程序给出24 位控制信号 ,而微程序的地址又是由指令码提供的,也就是说24 位控制信号是由指令码确定的。该模型机的微指令的长度为24 位,其中微指令中只

7、含有微命令字段,没有微地址字段。其中微命令字段采用直接按位的表示法,哪位为 0,表示选中该微操作,而微程序的地址则由指令码指定。这 24 位操作控制信号的功能如表 2 所示 :(按控制信号从左到右的顺序依次说明)表 2微指令控制信号的功能操作控制信号控制信号的说明外部设备读信号,当给出了外设的地址后, 输出此信号 ,从指定外设读XRD数据 。.专业 .整理 .下载可编辑EMWR程序存储器 EM 写信号 。EMRD程序存储器 EM 读信号 。PCOE将程序计数器PC 的值送到地址总线 ABUS 上 。将程序存储器EM 与数据总线 DBUS 接通 ,由 EMWR 和 EMRD 决定EMEN是将 D

8、BUS 数据写到 EM 中,还是从 EM 读出数据送到 DBUS 。IREN将程序存储器EM 读出的数据打入指令寄存器IR 和微指令计数器 PC。EINT中断返回时清除中断响应和中断请求标志,便于下次中断 。ELPPC 打入允许 ,与指令寄存器的 IR3 、 IR2位结合 ,控制程序跳转 。MAREN将数据总线 DBUS 上数据打入地址寄存器MAR 。MAROE将地址寄存器MAR 的值送到地址总线 ABUS 上 。OUTEN将数据总线 DBUS 上数据送到输出端口寄存器OUT 里。STEN将数据总线 DBUS 上数据存入堆栈寄存器ST 中。RRD读寄存器组 R0R3 ,寄存器 R?的选择由指令

9、的最低两位决定。RWR写寄存器组 R0R3 ,寄存器 R?的选择由指令的最低两位决定。CN决定运算器是否带进位移位,CN=1 带进位 ,CN=0 不带进位 。FEN将标志位存入ALU 内部的标志寄存器 。X2X1X2 、X1、X0三位组合来译码选择将数据送到DBUS 上的寄存器 。X0WEN将数据总线DBUS 的值打入工作寄存器W 中 。AEN将数据总线DBUS 的值打入累加器A 中。S2S2 、S1、 S0 三位组合决定ALU 做何种运算 。.专业 .整理 .下载可编辑S1S0COP2000中有 7 个寄存器可以向数据总线输出数据, 但在某一特定时刻只能有一个寄存器输出数据 . 由 X2,X

10、1,X0决定那一个寄存器输出数据。X2 X1 X0输出寄存器000IN_OE外部输入门001IA_OE中断向量010ST_OE堆栈寄存器011PC_OEPC 寄存器100D_OE直通门101R_OE右移门110L_OE左移门111没有输出COP2000中的运算器由一片EPLD 实现 . 有 8 种运算 , 通过 S2,S1,S0 来选择 。 运算数据由寄存器 A 及寄存器 W 给出 , 运算结果输出到直通门 D 。S2 S1 S0功能000A+W加001A-W减.专业 .整理 .下载可编辑010A|W或011A&W与100A+W+C带进位加101A-W-C带进位减110AA 取反111A输出

11、A2. 计算机中实现乘法和除法的原理(1 )无符号乘法 算法流程图 :开 始输入被乘数、乘数,初始化过程积.专业 .整理 .下载可编辑乘数为 0?NN乘数最后一位为 1?Y计算过程积被乘数左移一位乘数右移一位N输出结果OUT结束.专业 .整理 .下载可编辑 硬件原理框图 :判断乘数是否为零判断乘数最后一位是否为1.专业 .整理 .下载可编辑LDR被乘数R1R0ALU中间积R2乘数AWR3乘数右移被乘数左移.专业 .整理 .下载可编辑( 2 )无符号除法 算法流程图 :开始输入被除数,除数初始化商为0,过程除数先初始化等于除数.专业 .整理 .过程除数左移一位N下载可编辑除数为 0?YN过程除数

12、的最高位为 1?Y过程除数小于除数?Y输出商 OUT;N输出余数 OUT;余数大于等于过程除数?Y.专业 .整理 .下载可编辑结束Y过程除数右移一位;商左移一位被除数减去过程除数得到新的被除数过程除数右移一位;商左移一位并且加 1 硬件原理框图 :左移、右移.专业 .整理 .下载可编辑过程除数LDRR0被除数R1ALUR2商AWR3存除数R1-R0R2+13 对应于以上算法如何分配使用COP2000实验仪中的硬件(初步分配 ,设计完成后再将准确的使用情况填写在此处)( 1 ) 无符号乘法的硬件分配情况.专业 .整理 .下载可编辑硬件名称实现算法功能描述寄存器 R0计算时用来存放过程积和结果积

13、初始化时 ,用来存放被乘数;寄存器 R1 在程序执行的过程中,用来存放向左移位后的被乘数。 初始化时 ,用来存放乘数 ;寄存器 R2 在程序执行的过程中,用来存放向右移位后的乘数。执行ADDA,R? (加法 )、 SHLR?(左移一位 )、 SHR累加器 AR?(右移一位 )等命令时所必须使用的寄存器。执行 ADDA,R? (加法)、 CHECKR?,#II (检测乘数最寄存器 W后一位是否为1 )等双操作数命令时所必须使用的寄存器。用来实现相应数据左移一位的运算,并能够控制该运算后左移门 L的结果是否输出到数据总线。直通门 D用来控制 ALU 的执行结果是否输出到数据总线。用来实现相应数据右

14、移一位的运算,并能够控制该运算后右移门 R的结果是否输出到数据总线。 控制程序按顺序正常执行; 当执行转移指令时,从数据线接收要跳转的地址,使程程序计数器PC序能够按需要自动执行。 当要从 EM 中读取数据时,由 PC 提供地址 。存储器 EM存储指令和数据。微程序计数器PC向微程序存储器M 提供相应微指令的地址。.专业 .整理 .实现算法功能描述 初始化时 ,用来存放除数下载可编辑微程序存储器M存储相应指令的微指令。输出寄存器OUT将运算结果 ( R0 )输出到输出寄存器OUT 。当存储于累加器A 的值将要受到破坏时,将其数据保存在堆栈 ST堆栈 ST 中,使程序能够正常地执行。(2 )无符

15、号除法无符号除法对应于COP2000 实验仪的硬件具体分配使用情况如下表所示:表 4无符号除法的硬件分配情况硬件名称寄存器 R0 在程序执行过程中 ,用来存放向右移位后的过程除数寄存器 R1初始化时 ,用来存放被除数 ;寄存器 R2在程序执行过程中 ,用来保存当前算得的商。寄存器 R3初始化时 ,用来保存除数 ,运算过程中其值也不改变 。 计算时用来存放中间结果;累加器 A 执行 CMP R?,A( 比较 ) SUB A,R? (减法 )等命令时所必须使用的寄存器 。执行 SUB A,R? (减法 )等双操作数命令时所必须使用的寄存器 W寄存器 。用来实现相应数据左移一位的运算,并能够控制该运

16、算后左移门 L的结果是否输出到数据总线。直通门 D用来控制 ALU 的执行结果是否输出到数据总线。右移门 R用来实现相应数据右移一位的运算,并能够控制该运算后.专业 .整理 .下载可编辑的结果是否输出到数据总线。 控制程序按顺序正常执行; 当执行转移指令时,从数据线接收要跳转的地址,使程程序计数器 PC序能够按需要自动执行。 当要从 EM 中读取数据时 ,由 PC 提供地址 。存储器 EM存储指令和数据 。微程序计数器 PC向微程序存储器 M 提供相应微指令的地址 。微程序存储器 M存储相应指令的微指令。将运算结果输出到输出寄存器OUT (R2:商,R1:余输出寄存器 OUT数)。当存储于累加

17、器A 的值将要受到破坏时,将其数据保存在堆栈 ST堆栈 ST 中,使程序能够正常地执行。4 在 COP2000 集成开发环境下设计全新的指令/ 微指令系统设计结果如表所示(可按需要增删表项)( 1 ) 新的指令集(如果针对乘除法设计了两个不同指令集要分别列表).专业 .整理 .下载可编辑助记符机器码 1机指令说明器码2_FATCH_000000XX00-03实验机占用 ,不可修改 。 复位后 ,所有寄存器清0 ,首先执行 _FATCH_ 指令取指M0VR?,#II000001XX04-07II将立即数 II 送到寄存器 R?中MOVA,R?000010XX08-0B将寄存器 R?的值送到累加器

18、A 中ADDR?,A000011XX0C-0F将寄存器 R?的值加入累加器A 中ADDR?,#II000100XX10-13II将立即数 II 加入寄存器 R?中SUBR?,A000101XX14-17从累加器 A 中减去寄存器 R?的值CHECK R?,#II000110XX18-1BIIJMPMM000111XX1C-1FMMZF=1 ,跳转JCMM001000XX20-23MMCF=1 ,跳转JZMM001001XX24-27MM无条件跳转未使用001010XX28-2BSHLR?001011XX2C-2F左移SHRR?001100XX30-33右移CMPR?,A001101XX34-3

19、7比较OUTR?001110XX38-3B输出(2 )新的微指令集助记符状微微程序数据输出数据打入地址输出运算器移位PC态地控制PC址_FATCH_T000CBFFFF浮空指令寄存器PC 输出A 输出写入+1IR01FFFFFF浮空浮空A 输出+1.专业 .整理 .下载可编辑02FFFFFF浮空浮空A 输出+103FFFFFF浮空浮空A 输出+1MOV R?,#IIT104C7FBFF存储器值寄存器 R?PC 输出A 输出+1EMT005CBFFFF浮空指令寄存器PC 输出A 输出写入+1IR06FFFFFF浮空浮空A 输出+107FFFFFF浮空浮空A 输出+1MOV A,R?T108FFF

20、7F7寄存器值寄存器 W浮空A 输出+1R?T009CBFFFF浮空指令寄存器PC 输出A 输出+1IR0AFFFFFF浮空浮空A 输出+10BFFFFFF浮空浮空A 输出+1ADD R?,AT20CFFF7EF寄存器 R?寄存器 W浮空A 输出+1T10DFFFA98ALU 直通寄存器 R?浮空加运算+1标志位 C,ZT00ECBFFFF浮空指令寄存器PC 输出A 输出写入+1IR0FFFFFFF浮空浮空A 输出+1ADD R?,#IIT310FFF7F7寄存器值寄存器 A浮空A 输出+1R?.专业 .整理 .下载可编辑T211C7FFEF存储器值寄存器 WPC 输出A 输出写入+1EMT1

21、12FFFA98ALU 直通寄存器 R?浮空加运算+1标志位 C,ZT013CBFFFF浮空指令寄存器PC 输出A 输出写入+1IRSUB R?,AT314FFFF8FALU 直通寄存器 W浮空A 输出+1T215FFF7F7寄存器 R?寄存器 A浮空A 输出+1T116FFFA99ALU 直通寄存器 R?浮空减运算+1标志位 C,ZT017CBFFFF浮空指令寄存器PC 输出A 输出写入+1IRCHECKT318C7FFEF存储器值寄存器 WPC 输出A 输出+1+1R?,#IIEMT219FFF7F7寄存器值寄存器 A浮空A 输出+1R?T11AFFFE93ALU 直通寄存器 A标浮空与运

22、算+1志位 C,ZT01BCBFFFF浮空指令寄存器PC 输出A 输出写入+1IRJMP MMT11CC6FFFF存储器 EM寄存器 PCPC 输出A 输出+1写入T01DCBFFFF浮空指令寄存器PC 输出A 输出写入+1.专业 .整理 .下载可编辑IR1EFFFFFF浮空浮空A 输出+11FFFFFFF浮空浮空A 输出+1JCMMT120C6FFFF存储器值寄存器 PCPC 输出A 输出+1写入EMT021CBFFFF浮空指令寄存器PC 输出A 输出写入+1IR22FFFFFF浮空浮空A 输出+123FFFFFF浮空浮空A 输出+1JZMMT124C6FFFF存储器值寄存器 PCPC 输出

23、A 输出+1写入EMT025CBFFFF浮空指令寄存器PC 输出A 输出写入+1IR未使用26FFFFFF浮空浮空A 输出+107FFFFFF浮空浮空A 输出+128FFFFFF浮空浮空A 输出+129FFFFFF浮空浮空A 输出+12AFFFFFF浮空浮空A 输出+12BFFFFFF浮空浮空A 输出+1SHLR?T22CFFF7F7寄存器值寄存器 A浮空A 输出+1R?T12DFFF9DFALU 左移寄存器 R?浮空A 输出左移+1.专业 .整理 .下载可编辑T02ECBFFFF浮空指令寄存器PC 输出A 输出写入+1IR2FFFFFFF浮空浮空A 输出+1SHRR?T230FFF7F7寄存

24、器值寄存器 A浮空A 输出+1R?T131FFF9BFALU 右移寄存器 R?浮空A 输出右移+1T032CBFFFF浮空指令寄存器PC 输出A 输出写入+1IRCMP R?,AT334FFFF8FALU 直通寄存器 W浮空A 输出+1T235FFF7F7寄存器值寄存器 A浮空A 输出+1R?T136FFFE99ALU 直通标志位 C,Z浮空减运算+1T037CBFFFF浮空指令寄存器PC 输出A 输出写入+1IROUTR?T238FFD7FF寄存器值用户 OUT浮空A 输出+1R?T139FFD7F7寄存器值寄存器 A浮空A 输出+1R?用户 OUTT03ACBFFFF浮空指令寄存器PC 输

25、出A 输出写入+1IR3BFFFFFF浮空浮空A 输出+1.专业 .整理 .下载可编辑5 设计完成的新指令集编写实现无符号二进制乘法、除法功能的汇编语言程序(1 )乘法4 位乘法的算法流程图与汇编语言程序清单:乘法算法流程图开 始输入被乘数、乘数,初始化过程积N乘数为 0?.专业 .整理 .下载可编辑N输出结果 OUTN乘数最后一位为 1?结束Y计算过程积被乘数左移一位乘数右移一位.专业 .整理 .下载可编辑汇编语言程序MOV R0,#00H; 中间积MOV R1,#9;被乘数MOV R2,#6;乘数LAB :CHECK R2,#0FHJZ LASTCHECK R2,#01HJZ NEXTMO

26、V A,R1ADD R0,ANEXT :SHL R1SHR R2JMP LAB.专业 .整理 .下载可编辑LAST :OUT R0LAST1 : JMP LAST1.专业 .整理 .下载可编辑(2 )除法4 位除法的算法流程图与汇编语言程序清单:除法算法流程图:开始输入被除数,除数初始化商为0,过程除数先初始化等于除数除数为 0?YN过程除数左移一位N过程除数的最高位为 1?.专业 .整理 .下载可编辑Y过程除数小于除数?N余数大于等于过程除数?Y被除数减去过程除数得到新的被除数过程除数右移一位;商左移一位并且加 1Y输出商 OUT;输出余数OUT;Y结束过程除数右移一位;商左移一位.专业 .

27、整理 .下载可编辑汇编语言程序MOV R0,#8;过程除数MOV R1,#33;初始化被除数MOV R2,#0;初始化商MOV R3,#8; R3 用于保存除数 ,值不改变CHECK R0,#0FHJZ LASTLOOP:CHECK R0,#80HJZ LOOP1JMP BEGINLOOP1:SHL R0JMP LOOPBEGIN:MOV A,R3CMP R0,AJC LASTMOV A,R0CMP R1,AJC ONE.专业 .整理 .下载可编辑MOV A,R0SUB R1,ASHL R2ADD R2,#1SHR R0JMP BEGINONE:SHL R2SHR R0JMP BEGINLAS

28、T:OUT R2LAST1:JMP LAST16 上述程序的运行情况(跟踪结果 )按下表填写描述以上各程序运行情况的内容。按每个程序一张表进行。程序运行的过程无符号乘法汇 编 指 令程 序机器指令说明微程序PCP运行时寄存器或存地址码C储器的值MOV R0 ,#0000400初始化过程积C7FBFF0104R0=00H01CBFFFF0205.专业 .整理 .下载可编辑MOV R1 ,#9020509初始化被乘数03MOV R2 ,#6040606初始化乘数05LAB:061A0F检测乘数是否为 0(将 0FHCHECKR2 ,07送至寄存器 W,将 R2 送至寄#0FH存器 A 中,进行与运

29、算 ,结果由 D 送至 A 中。)JZ LAST082414乘数为 0 ( ZF=1 ), 则跳09转到 LASTCHECKR2 ,0A1A01检测乘数最后一位是否为 1#01H0B(将 01H 送至寄存器 W, 将R2 送至寄存器 A 中,进行与运算 ,结果由 D 送至 A中。)JZ NEXT0C2410乘数最后一位为 0(ZF=1) ,0D则跳转到 NEXTNEXT:102D被乘数左移一位 (将 R1 值送SHL R1至寄存器 A 中,左移将 L中的值送回 R1)C7FBFF0304R1=09HCBFFFF0405C7FBFF0504R2=06HCBFFFF0605C7FFEF0718W=0FHFFF7F70819A=06HFFFE93081ACBFFFF081BC6FFFF0924CBFFFF0A25C7FFEF0B18W=01HFFF7F70C19A=06HFFFE930C1ACBFFFF0C1BC6FFFF0D24CBFFFF1025FFF7F7112CR1=12HFFF9DF112DCBFFFF112E.专业 .整理 .下载可编辑SHR R21132乘数右移一位 (将 R2 值送至FFF7F71230R2=03H寄存器 A 中,右移将 R中的FFF9BF1231值送回 R2)CBFFFF1232JMP LAB121C06无条

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论