计算机组成原理乘法器和除法器课程设计.doc

上传人:rrsccc 文档编号:8925468 上传时间:2021-01-25 格式:DOC 页数:21 大小:886KB
返回 下载 相关 举报
计算机组成原理乘法器和除法器课程设计.doc_第1页
第1页 / 共21页
计算机组成原理乘法器和除法器课程设计.doc_第2页
第2页 / 共21页
计算机组成原理乘法器和除法器课程设计.doc_第3页
第3页 / 共21页
计算机组成原理乘法器和除法器课程设计.doc_第4页
第4页 / 共21页
计算机组成原理乘法器和除法器课程设计.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《计算机组成原理乘法器和除法器课程设计.doc》由会员分享,可在线阅读,更多相关《计算机组成原理乘法器和除法器课程设计.doc(21页珍藏版)》请在三一文库上搜索。

1、哈尔滨理工大学课程设计(计算机组成原理)题目: 简单模型机指令系统的设计 班级: 姓名: 指导教师: 系主任: 2017年03月10日计算机组成原理(课程设计)设计过程情况表学生姓名 学号 班级 第一周遇到的问题及解决方法等情况(与同学讨论、教师解答、查阅资料等)问题1 : 乘法指令如何设计循环语句解决方法:与老师讨论模型机的原有的语句后,决定用减法和为零跳转实现控制循环问题2:乘法指令如何取出每一位数字解决方法:查阅网上的资料,用乘数右移,与01B进行与运算,直到乘数为零第二周遇到的问题及解决方法等情况(与同学讨论、教师解答、查阅资料等)问题1 : 除法指令如何判断假除数和除数大小,假除数和

2、被除数大小解决方法:查阅资料后,决定自己设计指令,操作数两组分别为寄存器和寄存器,寄存器和累加器问题2:除法指令如何控制除数的移位解决方法:查阅网上的资料和与同学讨论后,决定除数固定位数,先左移四位,再逐一右移。 验收教师提问、指出的问题及学生回答情况(必须按实验室实际情况填写)。问题1:如何判断是八位数?回答:与FFH进行与运算问题2:除法实现第一步干什么?回答:固定除数的位数,先左移四位指出的问题:八位数的乘法,积的还是用一个寄存器保存会导致结果丢失 目 录1.课程设计的目的 12.课程设计的任务13.课程设计所用设备及所需资料14.设计内容14.1设计原理14.1.1总体概述14.1.2

3、模型机的寻址方式24.1.3模型机微指令系统的特点34.2设计过程与步骤54.2.1. 模拟乘法除法的原理54.2.2对应算法分配硬件104.2.3设计全新的指/微指令系统124.3设计结果及分析144.3.1汇编语言程序144.3.2程序执行跟踪165心得体会18 - 18-1.课程设计的目的1.在实验机上设计机器指令及对应的微指令(微程序),从而进一步掌握微程序设计控制器的基本方法并了解指令系统与硬件结构的对应关系;2. 通过控制器的微程序设计,综合理解计算机组成原理课程的核心知识并进一步建立整机系统的概念;3. 培养综合实践及独立分析、解决问题的能力。2.课程设计的任务针对COP2000

4、实验仪,首先通过综合实验了解该模型机微程序控制器原理(主要指熟悉该模型机指令/微指令系统的详细情况),然后以实现二进制乘法和除法运算功能为应用目标,在COP2000的集成开发环境下,设计全新的指令系统并编写对应的微程序;并编写并运行实现乘法和除法的程序进行设计的验证。3.课程设计所用设备及所需资料1. COP2000实验系统2. PC机( COP2000仿真软件)3. COP2000计算机组成原理实验仪说明书4.设计内容4.1设计原理4.1.1总体概述COP2000模型机包括了一个标准CPU所具备所有部件,这些部件包括:运算器ALU、累加器A、工作寄存器W、左移门L、直通门D、右移门R、寄存器

5、组R0-R3、程序计数器PC、地址寄存器MAR、堆栈寄存器ST、中断向量寄存器IA、输入端口IN、输出端口寄存器OUT、程序存储器EM、指令寄存器IR、微程序计数器uPC、微程序存储器uM,以及中断控制电路、跳转控制电路。其中运算器和中断控制电路以及跳转控制电路用CPLD来实现,其它电路都是用离散的数字电路组成。微程序控制部分也可以用组合逻辑控制来代替。结构图如图1所示 模型机为8位机,数据总线、地址总线都为8位,但其工作原理与16位机相同。图1 仿真结构图模型机的指令码为8位,根据指令类型的不同,可以有0到2个操作数。指令码的最低两位用来选择R0-R3寄存器,在微程序控制方式中,用指令码做为

6、微地址来寻址微程序存储器,找到执行该指令的微程序。而在组合逻辑控制方式中,按时序用指令码产生相应的控制位。在本模型机中,一条指令最多分四个状态周期,一个状态周期为一个时钟脉冲,每个状态周期产生不同的控制逻辑,实现模型机的各种功能。模型机有24位控制位以控制寄存器的输入、输出,选择运算器的运算功能,存储器的读写。模型机的缺省的指令集分几大类: 算术运算指令、逻辑运算指令、移位指令、数据传输指令、跳转指令、中断返回指令、输入/输出指令。4.1.2模型机的寻址方式模型机的寻址方式分五种,具体说明如表1所示。 4.1.3模型机微指令系统的特点1. 模型机微指令系统格式模型机有24位控制位以控制寄存器的

7、输入、输出,选择运算器的运算功能,存储器的读写。微程序控制器由微程序给出24位控制信号,而微程序的地址又是由指令码提供的,也就是说24位控制信号是由指令码确定的。该模型机的微指令的长度为24位,其中微指令中只含有微命令字段,没有微地址字段。其中微命令字段采用直接按位的表示法,哪位为0,表示选中该微操作,而微程序的地址则由指令码指定。这24位操作控制信号的功能如表2所示:(按控制信号从左到右的顺序依次说明)表1 模型机的寻址方式模型机的寻址方式寻址方式说明指令举例指令说明累加器寻址操作数为累加器ACPL A将累加器A的值取反隐含寻址累加器AOUT将累加器A的值输出到输出端口寄存器OUT寄存器寻址

8、参与运算的数据在R0R3的寄存器中ADD A,R0将寄存器R0的值加上累加器A的值,再存入累加器A中寄存器间接寻址参与运算的数据在存储器EM中,数据的地址在寄存器R0-R3中MOV A,R1将寄存器R1的值作为地址,把存储器EM中该地址的内容送入累加器A中存储器直接寻址参与运算的数据在存储器EM中,数据的地址为指令的操作数。AND A,40H将存储器EM中40H单元的数据与累加器A的值作逻辑与运算,结果存入累加器A立即数寻址参与运算的数据为指令的操作数。SUB A,#10H从累加器A中减去立即数10H,结果存入累加器ACOP2000中有7个寄存器可以向数据总线输出数据, 但在某一特定时刻只能有

9、一个寄存器输出数据. 由X2,X1,X0决定那一个寄存器输出数据,如表3所示。表2 微指令控制信号的功能操作控制控 制 信 号 的 说 明XRD外部设备读信号,当给出了外设的地址后,输出此信号,从指定外设读数据。EMWR程序存储器EM写信号。EMRD程序存储器EM读信号。PCOE将程序计数器PC的值送到地址总线ABUS上。EMEN将程序存储器EM与数据总线DBUS接通,由EMWR和EMRD决定是将DBUS数据写到EM中,还是从EM读出数据送到DBUS。IREN将程序存储器EM读出的数据打入指令寄存器IR和微指令计数器PC。EINT中断返回时清除中断响应和中断请求标志,便于下次中断。ELPPC打

10、入允许,与指令寄存器的IR3、IR2位结合,控制程序跳转。MAREN将数据总线DBUS上数据打入地址寄存器MAR。MAROE将地址寄存器MAR的值送到地址总线ABUS上。OUTEN将数据总线DBUS上数据送到输出端口寄存器OUT里。STEN将数据总线DBUS上数据存入堆栈寄存器ST中。RRD读寄存器组R0R3,寄存器R?的选择由指令的最低两位决定。RWR写寄存器组R0R3,寄存器R?的选择由指令的最低两位决定。CN决定运算器是否带进位移位,CN=1带进位,CN=0不带进位。FEN将标志位存入ALU内部的标志寄存器。X2X2、X1、X0三位组合来译码选择将数据送到DBUS上的寄存器。X1X0WE

11、N将数据总线DBUS的值打入工作寄存器W中。AEN将数据总线DBUS的值打入累加器A中。S2S2、S1、S0三位组合决定ALU做何种运算。S1S0X2 X1 X0输出寄存器0 0 0IN_OE 外部输入门0 0 1IA_OE 中断向量0 1 0ST_OE 堆栈寄存器0 1 1PC_OE PC寄存器1 0 0D_OE 直通门1 0 1R_OE 右移门1 1 0L_OE 左移门1 1 1没有输出COP2000中的运算器由一片EPLD实现. 有8种运算, 通过S2,S1,S0来选择。运算数据由寄存器A及寄存器W给出, 运算结果输出到直通门D,如表4所示。S2 S1 S0功能0 0 0A+W 加0 0

12、 1A-W 减0 1 0A|W 或0 1 1A&W 与1 0 0A+W+C 带进位加1 0 1A-W-C 带进位减1 1 0A A取反1 1 1A 输出A表3.寄存器微指令 表4.运算器微指令4.2.1. 模拟乘法除法的原理1. 无符号乘法:(1)实例演示(列乘法具体例子演算的算式):乘数与被乘数假设为00010000(16)与00000110(6),结果应该为0101000(80)。运算图示为表5所示。表5 乘法演示0 0 0 1 0 0 0 0被乘数 0 0 0 0 0 1 1 0乘数0 0 0 0 0 0 0 0 初始部分积 0 0 0 0 0 0 0 0 乘数最低位为0,部分积加00

13、0 0 0 0 0 0 0部分积0 0 1 0 0 0 0 0被乘数左移一位 0 0 0 0 0 0 1 1乘数右移一位0 0 0 0 0 0 0 0部分积 0 0 1 0 0 0 0 0乘数最低位为1,部分积加被乘数0 0 1 0 0 0 0 0部分积0 1 0 0 0 0 0 0被乘数左移一位 0 0 0 0 0 0 0 1乘数右移一位0 0 1 0 0 0 0 0 部分积 0 1 0 0 0 0 0 0乘数最低位为1,部分积加被乘数(0) 0 1 1 0 0 0 0 0计算完毕,01100000(80),且无进位(2)硬件原理框图:硬件原理实现及分配如图2所示。图 2乘法实现硬件原理图(

14、3)算法流程图:算法流程实现及顺序如图3所示。图 3乘法实现流程图2. 无符号除法(1)实例演示(即,列4位除法具体例子演算的算式):假设被除数和除数为01010111(87)和1010(10)结果商为1000(8)运算图示为: 表6 除法演示0初始商1 0 1 0 0 1 0 1 0 1 1 1初始除数与被除数1 0 1 0 0 0 0 0由除数初始化假除数,将除数左移4位0 1 0 1 0 1 1 1判断被除数与假除数的关系,小于假除数(0) 0 1 0 1 0 0 0 0 假除数右移一位,商左移一位 0 0 0 0 0 1 1 1被除数大于假除数,相减产生新的被除数(01) 0 0 1

15、0 1 0 0 0 假除数右移一位,商左移一位并加一0 0 0 0 0 1 1 1被除数小于假除数(010) 0 0 0 1 0 1 0 0假除数右移一位,商左移一位 0 0 0 0 0 1 1 1被除数小于假除数(0100) 0 0 0 0 1 0 1 0 假除数右移一位,商左移一位0 0 0 0 1 0 1 0被除数小于假除数(01000) 0 0 0 0 0 1 0 1假除数右移一位,商左移一位此时此时商为01000余数为00000111。余数小于除数,算法结束(2)硬件原理框图:硬件原理实现及分配如图4所示。图 4 除法实现硬件原理图(3)算法流程图:算法流程实现及顺序如图5所示。图

16、5 乘法实现流程图4.2.2对应算法分配硬件1. 无符号乘法符号乘法对应于COP2000实验仪的硬件具体分配使用情况如表7所示:表7 无符号乘法的硬件分配情况硬件名称实现算法功能描述寄存器R0计算时用来存放部分积和最后的积寄存器R1 初始化时,用来存放被乘数; 在程序执行的过程中,用来存放向左移位后的被乘数。寄存器R2 初始化时,用来存放乘数; 在程序执行的过程中,用来存放向右移位后的乘数。累加器A执行ADD A,R?(加法)、SHL R?(左移一位)、SHR R?(右移一位)等命令时所必须使用的寄存器。寄存器W执行ADD A,R?(加法)、TEST R?,#II(测试R2的末位)等双操作数命

17、令时所必须使用的寄存器。左移门L用来实现相应数据左移一位的运算,并能够控制该运算后的结果是否输出到数据总线。直通门D用来控制ALU的执行结果是否输出到数据总线。右移门R用来实现相应数据右移一位的运算,并能够控制该运算后的结果是否输出到数据总线。程序计数器PC 控制程序按顺序正常执行; 当执行转移指令时,从数据线接收要跳转的地址,使程序能够按需要自动执行。 当要从EM中读取数据时,由PC提供地址。存储器EM存储指令和数据。微程序计数器PC向微程序存储器M提供相应微指令的地址。微程序存储器M存储相应指令的微指令。输出寄存器OUT可以将运算结果输出到输出寄存器OUT(本实验未用)。堆栈ST当存储于累

18、加器A的值将要受到破坏时,将其数据保存在堆栈ST中,使程序能够正常地执行。2. 无符号除法无符号除法对应于COP2000实验仪的硬件具体分配使用情况如表8所示:表8 无符号除法的硬件分配情况硬件名称实现算法功能描述寄存器R0初始化时,用来存放除数在程序执行过程中,用来存放向右移位后的假除数寄存器R1初始化时,用来存放被除数;寄存器R2在程序执行过程中,用来保存当前算得的商。寄存器R3在程序执行过程中,用来保存除数的值。累加器A 计算时用来存放中间结果; 执行CMP R?,A(比较) SUB A,R?(减法)等命令时所必须使用的寄存器。寄存器W执行SUB A,R?(减法)等双操作数命令时所必须使

19、用的寄存器。左移门L用来实现相应数据左移一位的运算,并能够控制该运算后的结果是否输出到数据总线。直通门D用来控制ALU的执行结果是否输出到数据总线。右移门R用来实现相应数据右移一位的运算,并能够控制该运算后的结果是否输出到数据总线。程序计数器PC 控制程序按顺序正常执行; 当执行转移指令时,从数据线接收要跳转的地址,使程序能够按需要自动执行。 当要从EM中读取数据时,由PC提供地址。存储器EM存储指令和数据。微程序计数器PC向微程序存储器M提供相应微指令的地址。微程序存储器M存储相应指令的微指令。输出寄存器OUT可以将运算结果输出到输出寄存器OUT(本实验未用)。4.2.3设计全新的指/微指令

20、系统1. 设计新的指令集,如图6 所示图6 指令系统2. 设计新的微指令集,如图7 所示图7-1 微指令系统图7-2 微指令系统图7-3 微指令系统4.3设计结果及分析4.3.1汇编语言程序1.无符号乘法汇编程序MOV R0,#00H 积初始化MOV R1,#10H 被乘数初始化MOV R2,#05H 乘数LOOP :AND R2,#0FFH 判断乘数是否为零JZ LAST 为零,则结束计算AND R2,#01H 判断乘数末尾是否为一JZ NEXT 为一跳转MOV A,R1ADD R0,A 部分积更新JC IFYC 溢出判断NEXT :SHL R1 被乘数左移SHR R2 乘数左移JMP LO

21、OPIFYC :MOV R3,#11HLAST :OVER2. 无符号除法汇编程序MOV R0,#0AHMOV R1,#57HMOV R2,#00HMOV R3,#0AHSHL R0SHL R0SHL R0SHL R0BEGIN :MOV A,R3CMP R0,AJC LASTMOV A,R0CMP R1,AJC SMALLJMP NEXTNEXT :MOV A,R0SUB R1,ASHL R2ADD R2,#01HSHR R0MOV A,R3CMP R0,AJC LASTJMP BEGINSMALL:SHL R2SHR R0MOV A,R3CMP R0,AJC LAST 4.3.2程序执行跟

22、踪1. 乘法程序跟踪,如表9所示表9 乘法程序跟踪汇 编 指 令程序地址机器码指令说明微程序PC mPC运行时寄存器或存储器的值MOV R0,#00H000400初始化部分积E7FBFFCBFFFF01020405R0:00HMOV R1,#08H020508初始化被乘数E7FBFFCBFFFF03040405R1:08HMOV R2,#07H040607初始化乘数E7FBFFCBFFFF05060405R2:07HLOOP:AND R2,#0FFH060E0F乘数是否为0C7FFEFFFF7F7FFFE9BCBFFFF070808080C0D0E0FA:07HW:0FHJZ LAST0814

23、14为0则跳转结束C6FFFFCBFFFF090A1415EM:14HTEST R2,#01H0A0E01乘数末尾是否为0C7FFEFFFF7F7FFFE9BCBFFFF0B0C0C0C0C0D0E0FA:07HW:01HJZ NEXT0C1410为0跳转C6FFFFCBFFFF0D0E1415EM:10HMOV A,R10E09将被乘数放到A寄存器中E7FBFFCBFFFF0F0F0405A:08HADD R0,A0F1C将部分积与被乘数相加FFF7EFFFFA98CBFFFF1010101C1D1ER0:08HNEXT:SHL R11025被乘数左移FFF7F7FFF9DFCBFFFF11

24、1111242526R1:10HSHR R2112A乘数右移FFF7F7FFF9BFCBFFFF12121228292AR2:03HJMP LOOP121806进行循环C6FFFFCBFFFF13061819EM:18HEM:06HLAST:OVER142C结束CBFFFF152CEM:2CH2. 除法程序执行跟踪,如表10所示。表10 除法程序跟踪汇 编 指 令程序地址机器码指令说明微程序PC mPC运行时寄存器或存储器的值MOV R0,#1000040A初始化除数E7FBFFCBFFFF01020405R0:0AHMOV R1,#87020557初始化被除数E7FBFFCBFFFF0304

25、0405R1:57HMOV R2,#0040600初始化商E7FBFFCBFFFF05060405R2:00HMOV A,R00608将R0放在寄存器A中E7FBFFCBFFFF07070405A:00HSHL R00824将原除数左移产生假除数FFF7F7FFF9DFCBFFFF090909242526A:0AHL:14HR0:14HSHL R00924将原除数左移产生假除数FFF7F7FFF9DFCBFFFF0A0A0A242526A:14HL:28HR0:28HSHL R00A24将原除数左移产生假除数FFF7F7FFF9DFCBFFFF0B0B0B242526A:28HL:50HR0:

26、50HSHL R00B24将原除数左移产生假除数FFF7F7FFF9DFCBFFFF0C0C0C242526A:50HL:A0HR0:A0HBEGIN:MOV A,R00C34将假除数放在A寄存器FFFF57CBFFFF0D0D3435A:0AHCMP R0,A0E3D比较除数与假除数FFFF8FFFF7F7FFFE99CBFFFF0F0F0F0F3C3D3E3FW:00HA:0AHD:4DHJC LAST0F1021假除数小于除数则跳转结束C6FFFFCBFFFF10111011EM:10HEM:21HMOV A,R01108将假除数放到A寄存器E7FBFFCBFFFF12120809A:A

27、0HCMP R1,A123D比较余数与假除数的大小FFFF8FFFF7F7FFFE99CBFFFF131313133C3D3E3FA:57HW:A0HD:B7HJC SMALL13101D余数小于假除数跳转C6FFFFCBFFFF141D1011E:10HE:1DHNEXT :JMP NEXT1418跳转C6FFFFCBFFFF1E1E1112E:10HE:1DHMOV A,R01508将假除数放到A寄存器E7FBFFCBFFFF16160809R0:50HSUB R1,A1639用余数减去假除数FFFF8FFFF7F7FFFA99CBFFFF1717171738393A3BR1:07HSHL

28、 R21726将商左移一位FFF7F7FFF9DFCBFFFF181818242526R2:00HADD R2,#01182201将商加一FFF7F7C7FFEFFFFA98CBFFFF19191A1A20212223R2:01HSHR R01A28将假除数右移一位FFF7F7FFF9BFCBFFFF1B1B1B282930R0:28HJMP BEGIN1B180C进行循环C6FFFFCBFFFF1C0C1819EM:18HEM:0CHSMALL:SHL R21D26将商左移一位FFF7F7FFF9DFCBFFFF1E1E1E242526R2:00SHR R01E28将假除数右移一位FFF7F

29、7FFF9BFCBFFFF1F1F1F282930R0:50JMP BEGIN1F180C进行循环C6FFFFCBFFFF200C1819EM:18EM:0C5.心得体会经过了将近两周的时间,我终于完成了计算机组成原理的课程设计内容。在这两周的实验课上,我和同学和老师积极交流,讨论,课下的时间里,自己查阅书籍,资料,不断在仿真实验仪上调试,修改。在亲力亲为的动手实践中,我不但巩固了所学的计算机组成原理中有关指令系统、总线系统等等方面的知识,而且,也查补了当时疏漏未理解的方面,有了更高,更好的理解和体会。在课设的前期,因为要求是选做除法,我当时心里十分的迟疑,觉得自己动手能力比较差,有些想直接放

30、弃的念头,而且当时身边好多同学都放弃了除法,让我更加动摇。对乘法的实现,我最开始是用系统的指令十分麻烦又简单的做出了小小的成果,很大的鼓舞了我,我不断地查阅资料编写新的指令,设法减少冗余的指令,设计出了自己的指令系统,并且运行成功。于是,我决定做除法,我开始真正领会到学习真的是一个不断提高,不断进步的的过程,过程中你也许苦恼,也许无助,但是当你突破了这个挑战,翻过了这个山,山的那边就是更优秀的自己。验收的前一天,做除法的时候,纸上的模拟调试了一下午,依旧通不过调试,这时候,我也不知道我的指令是有可修改的小错误,还是不可挽回的错误,我逐个语句排查,找到了无效的语句,但是我最后还是没能发现语句为什么没能正确的执行,我选择了用多条语句间接的替代了失效的语句,最后完成了除法指令集的设计调试。这次课程设计后,我也发现了自己的疏忽和遗漏,在设计八位的乘法指令时,把积也用一个寄存器保存,还有除法指令的实现,除数限于四位的,这次课设给了我很大的动手实践,掌握深化的机会,对于计算机组成原理,对模型机有了更深入的了解。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1