计算机组成原理 乘法器和除法器课程设计.docx
- 文档编号:12536533
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:30
- 大小:593.03KB
计算机组成原理 乘法器和除法器课程设计.docx
《计算机组成原理 乘法器和除法器课程设计.docx》由会员分享,可在线阅读,更多相关《计算机组成原理 乘法器和除法器课程设计.docx(30页珍藏版)》请在冰点文库上搜索。
计算机组成原理乘法器和除法器课程设计
哈尔滨理工大学
课 程 设 计
(计算机组成原理)
题 目:
简单模型机指令系统的设计
班 级:
姓 名:
指导教师:
系主任:
2017年03月10日
计算机组成原理(课程设计)设计过程情况表
学生姓名
学号
班级
第一周
遇到的问题及解决方法等情况(和同学讨论、教师解答、查阅资料等)
问题1:
乘法指令如何设计循环语句
解决方法:
和老师讨论模型机的原有的语句后,决定用减法和为零跳转实现控制循环
问题2:
乘法指令如何取出每一位数字
解决方法:
查阅网上的资料,用乘数右移,和01B进行和运算,直到乘数为零
第二周
遇到的问题及解决方法等情况(和同学讨论、教师解答、查阅资料等)
问题1:
除法指令如何判断假除数和除数大小,假除数和被除数大小
解决方法:
查阅资料后,决定自己设计指令,操作数两组分别为寄存器和寄存器,
寄存器和累加器
问题2:
除法指令如何控制除数的移位
解决方法:
查阅网上的资料和和同学讨论后,决定除数固定位数,先左移四位,再逐一右移。
验收
教师提问、指出的问题及学生回答情况(必须按实验室实际情况填写)。
问题1:
如何判断是八位数?
回答:
和FFH进行和运算
问题2:
除法实现第一步干什么?
回答:
固定除数的位数,先左移四位
指出的问题:
八位数的乘法,积的还是用一个寄存器保存会导致结果丢失
1.课程设计的目的
1.在实验机上设计机器指令及对应的微指令(微程序),从而进一步掌握微程序设计控制器的基本方法并了解指令系统和硬件结构的对应关系;
2.通过控制器的微程序设计,综合理解计算机组成原理课程的核心知识并进一步建立整机系统的概念;
3.培养综合实践及独立分析、解决问题的能力。
2.课程设计的任务
针对COP2000实验仪,首先通过综合实验了解该模型机微程序控制器原理(主要指熟悉该模型机指令/微指令系统的详细情况),然后以实现二进制乘法和除法运算功能为应用目标,在COP2000的集成开发环境下,设计全新的指令系统并编写对应的微程序;并编写并运行实现乘法和除法的程序进行设计的验证。
3.课程设计所用设备及所需资料
1.COP2000实验系统
2.PC机(COP2000仿真软件)
3.COP2000计算机组成原理实验仪说明书
4.设计内容
4.1设计原理
4.1.1总体概述
COP2000模型机包括了一个标准CPU所具备所有部件,这些部件包括:
运算器ALU、累加器A、工作寄存器W、左移门L、直通门D、右移门R、寄存器组R0-R3、程序计数器PC、地址寄存器MAR、堆栈寄存器ST、中断向量寄存器IA、输入端口IN、输出端口寄存器OUT、程序存储器EM、指令寄存器IR、微程序计数器uPC、微程序存储器uM,以及中断控制电路、跳转控制电路。
其中运算器和中断控制电路以及跳转控制电路用CPLD来实现,其它电路都是用离散的数字电路组成。
微程序控制部分也可以用组合逻辑控制来代替。
结构图如图1所示
模型机为8位机,数据总线、地址总线都为8位,但其工作原理和16位机相同。
图1仿真结构图
模型机的指令码为8位,根据指令类型的不同,可以有0到2个操作数。
指令码的最低两位用来选择R0-R3寄存器,在微程序控制方式中,用指令码做为微地址来寻址微程序存储器,找到执行该指令的微程序。
而在组合逻辑控制方式中,按时序用指令码产生相应的控制位。
在本模型机中,一条指令最多分四个状态周期,一个状态周期为一个时钟脉冲,每个状态周期产生不同的控制逻辑,实现模型机的各种功能。
模型机有24位控制位以控制寄存器的输入、输出,选择运算器的运算功能,存储器的读写。
模型机的缺省的指令集分几大类:
算术运算指令、逻辑运算指令、移位指令、数据传输指令、跳转指令、中断返回指令、输入/输出指令。
4.1.2模型机的寻址方式
模型机的寻址方式分五种,具体说明如表1所示。
4.1.3模型机微指令系统的特点
1.模型机微指令系统格式
模型机有24位控制位以控制寄存器的输入、输出,选择运算器的运算功能,存储器的读写。
微程序控制器由微程序给出24位控制信号,而微程序的地址又是由指令码提供的,也就是说24位控制信号是由指令码确定的。
该模型机的微指令的长度为24位,其中
微指令中只含有微命令字段,没有微地址字段。
其中微命令字段采用直接按位的表示法,哪位为0,表示选中该微操作,而微程序的地址则由指令码指定。
这24位操作控制信号的功能如表2所示:
(按控制信号从左到右的顺序依次说明)
表1模型机的寻址方式
模型机的寻址方式
寻址方式说明
指令举例
指令说明
累加器寻址
操作数为累加器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
将存储器EM中40H单元的数据和累加器A的值作逻辑和运算,结果存入累加器A
立即数寻址
参和运算的数据为指令的操作数。
SUBA,#10H
从累加器A中减去立即数10H,结果存入累加器A
COP2000中有7个寄存器可以向数据总线输出数据,但在某一特定时刻只能有一个寄存器输出数据.由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
中断返回时清除中断响应和中断请求标志,便于下次中断。
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内部的标志寄存器。
X2
X2、X1、X0三位组合来译码选择将数据送到DBUS上的寄存器。
X1
X0
WEN
将数据总线DBUS的值打入工作寄存器W中。
AEN
将数据总线DBUS的值打入累加器A中。
S2
S2、S1、S0三位组合决定ALU做何种运算。
S1
S0
X2X1X0
输出寄存器
000
IN_OE外部输入门
001
IA_OE中断向量
010
ST_OE堆栈寄存器
011
PC_OEPC寄存器
100
D_OE直通门
101
R_OE右移门
110
L_OE左移门
111
没有输出
COP2000中的运算器由一片EPLD实现.有8种运算,通过S2,S1,S0来选择。
运算数据由寄存器A及寄存器W给出,运算结果输出到直通门D,如表4所示。
S2S1S0
功能
000
A+W加
001
A-W减
010
A|W或
011
A&W和
100
A+W+C带进位加
101
A-W-C带进位减
110
~AA取反
111
A输出A
表3.寄存器微指令表4.运算器微指令
4.2.1.模拟乘法除法的原理
1.无符号乘法:
(1)实例演示(列乘法具体例子演算的算式):
乘数和被乘数假设为00010000(16)和00000110(6),结果应该为0101000(80)。
运算图示为表5所示。
表5乘法演示
00010000
被乘数
×00000110
乘数
00000000
初始部分积
+00000000
乘数最低位为0,部分积加0
00000000
部分积
00100000
被乘数左移一位
×00000011
乘数右移一位
00000000
部分积
+00100000
乘数最低位为1,部分积加被乘数
00100000
部分积
01000000
被乘数左移一位
×00000001
乘数右移一位
00100000
部分积
+01000000
乘数最低位为1,部分积加被乘数
(0)01100000
计算完毕,01100000(80),且无进位
(2)硬件原理框图:
硬件原理实现及分配如图2所示。
图2乘法实现硬件原理图
(3)算法流程图:
算法流程实现及顺序如图3所示。
图3乘法实现流程图
2.无符号除法
(1)实例演示(即,列4位除法具体例子演算的算式):
假设被除数和除数为01010111(87)和1010(10)
结果商为1000(8))
运算图示为:
表6除法演示
0
初始商
101001010111
初始除数和被除数
10100000
由除数初始化假除数,将除数左移4位
01010111
判断被除数和假除数的关系,小于假除数
(0)01010000
假除数右移一位,商左移一位
00000111
被除数大于假除数,相减产生新的被除数
(01)00101000
假除数右移一位,商左移一位并加一
00000111
被除数小于假除数
(010)00010100
假除数右移一位,商左移一位
00000111
被除数小于假除数
(0100)00001010
假除数右移一位,商左移一位
00001010
被除数小于假除数
(01000)00000101
假除数右移一位,商左移一位此时
此时商为01000余数为00000111。
余数小于除数,算法结束
(2)硬件原理框图:
硬件原理实现及分配如图4所示。
图4除法实现硬件原理图
(3)算法流程图:
算法流程实现及顺序如图5所示。
图5乘法实现流程图
4.2.2.对应算法分配硬件
1.无符号乘法
符号乘法对应于COP2000实验仪的硬件具体分配使用情况如表7所示:
表7无符号乘法的硬件分配情况
硬件名称
实现算法功能描述
寄存器R0
计算时用来存放部分积和最后的积
寄存器R1
①初始化时,用来存放被乘数;
②在程序执行的过程中,用来存放向左移位后的被乘数。
寄存器R2
①初始化时,用来存放乘数;
②在程序执行的过程中,用来存放向右移位后的乘数。
累加器A
执行ADDA,R?
(加法)、SHLR?
(左移一位)、SHRR?
(右移一位)等命令时所必须使用的寄存器。
寄存器W
执行ADDA,R?
(加法)、TESTR?
#II(测试R2的末位)等双操作数命令时所必须使用的寄存器。
左移门L
用来实现相应数据左移一位的运算,并能够控制该运算后的结果是否输出到数据总线。
直通门D
用来控制ALU的执行结果是否输出到数据总线。
右移门R
用来实现相应数据右移一位的运算,并能够控制该运算后的结果是否输出到数据总线。
程序计数器PC
①控制程序按顺序正常执行;
②当执行转移指令时,从数据线接收要跳转的地址,使程序能够按需要自动执行。
③当要从EM中读取数据时,由PC提供地址。
存储器EM
存储指令和数据。
微程序计数器μPC
向微程序存储器μM提供相应微指令的地址。
微程序存储器μM
存储相应指令的微指令。
输出寄存器OUT
可以将运算结果输出到输出寄存器OUT(本实验未用)。
堆栈ST
当存储于累加器A的值将要受到破坏时,将其数据保存在堆栈ST中,使程序能够正常地执行。
2.无符号除法
无符号除法对应于COP2000实验仪的硬件具体分配使用情况如表8所示:
表8无符号除法的硬件分配情况
硬件名称
实现算法功能描述
寄存器R0
①初始化时,用来存放除数
②在程序执行过程中,用来存放向右移位后的假除数
寄存器R1
初始化时,用来存放被除数;
寄存器R2
在程序执行过程中,用来保存当前算得的商。
寄存器R3
在程序执行过程中,用来保存除数的值。
累加器A
①计算时用来存放中间结果;
②执行CMPR?
A(比较)SUBA,R?
(减法)等命令时所必须使用的寄存器。
寄存器W
执行SUBA,R?
(减法)等双操作数命令时所必须使用的寄存器。
左移门L
用来实现相应数据左移一位的运算,并能够控制该运算后的结果是否输出到数据总线。
直通门D
用来控制ALU的执行结果是否输出到数据总线。
右移门R
用来实现相应数据右移一位的运算,并能够控制该运算后的结果是否输出到数据总线。
程序计数器PC
①控制程序按顺序正常执行;
②当执行转移指令时,从数据线接收要跳转的地址,使程序能够按需要自动执行。
③当要从EM中读取数据时,由PC提供地址。
存储器EM
存储指令和数据。
微程序计数器μPC
向微程序存储器μM提供相应微指令的地址。
微程序存储器μM
存储相应指令的微指令。
输出寄存器OUT
可以将运算结果输出到输出寄存器OUT(本实验未用)。
4.2.3设计全新的指/微指令系统
1.设计新的指令集,如图6所示
图6指令系统
2.设计新的微指令集,如图7所示
图7-1微指令系统
图7-2微指令系统
图7-3微指令系统
4.3设计结果及分析
4.3.1汇编语言程序
1.无符号乘法汇编程序
MOVR0,#00H积初始化
MOVR1,#10H被乘数初始化
MOVR2,#05H乘数
LOOP:
ANDR2,#0FFH判断乘数是否为零
JZLAST为零,则结束计算
ANDR2,#01H判断乘数末尾是否为一
JZNEXT为一跳转
MOVA,R1
ADDR0,A部分积更新
JCIFYC溢出判断
NEXT:
SHLR1被乘数左移
SHRR2乘数左移
JMPLOOP
IFYC:
MOVR3,#11H
LAST:
OVER
2.无符号除法汇编程序
MOVR0,#0AH
MOVR1,#57H
MOVR2,#00H
MOVR3,#0AH
SHLR0
SHLR0
SHLR0
SHLR0
BEGIN:
MOVA,R3
CMPR0,A
JCLAST
MOVA,R0
CMPR1,A
JCSMALL
JMPNEXT
NEXT:
MOVA,R0
SUBR1,A
SHLR2
ADDR2,#01H
SHRR0
MOVA,R3
CMPR0,A
JCLAST
JMPBEGIN
SMALL:
SHLR2
SHRR0
MOVA,R3
CMPR0,A
JCLAST
4.3.2程序执行跟踪
1.乘法程序跟踪,如表9所示
表9乘法程序跟踪
汇编指令
程序地址
机器码
指令说明
微程序
PC
μPC
运行时寄存器或存储器的值
MOVR0,#00H
00
0400
初始化部分积
E7FBFF
CBFFFF
01
02
04
05
R0:
00H
MOVR1,#08H
02
0508
初始化被乘数
E7FBFF
CBFFFF
03
04
04
05
R1:
08H
MOVR2,#07H
04
0607
初始化乘数
E7FBFF
CBFFFF
05
06
04
05
R2:
07H
LOOP:
ANDR2,#0FFH
06
0E0F
乘数是否为0
C7FFEF
FFF7F7
FFFE9B
CBFFFF
07
08
08
08
0C
0D
0E
0F
A:
07H
W:
0FH
JZLAST
08
1414
为0则跳转结束
C6FFFF
CBFFFF
09
0A
14
15
EM:
14H
TESTR2,#01H
0A
0E01
乘数末尾是否为0
C7FFEF
FFF7F7
FFFE9B
CBFFFF
0B
0C
0C
0C
0C
0D
0E
0F
A:
07H
W:
01H
JZNEXT
0C
1410
为0跳转
C6FFFF
CBFFFF
0D
0E
14
15
EM:
10H
MOVA,R1
0E
09
将被乘数放到A寄存器中
E7FBFF
CBFFFF
0F
0F
04
05
A:
08H
ADDR0,A
0F
1C
将部分积和被乘数相加
FFF7EF
FFFA98
CBFFFF
10
10
10
1C
1D
1E
R0:
08H
NEXT:
SHLR1
10
25
被乘数左移
FFF7F7
FFF9DF
CBFFFF
11
11
11
24
25
26
R1:
10H
SHRR2
11
2A
乘数右移
FFF7F7
FFF9BF
CBFFFF
12
12
12
28
29
2A
R2:
03H
JMPLOOP
12
1806
进行循环
C6FFFF
CBFFFF
13
06
18
19
EM:
18H
EM:
06H
LAST:
OVER
14
2C
结束
CBFFFF
15
2C
EM:
2CH
2.除法程序执行跟踪,如表10所示。
表10除法程序跟踪
汇编指令
程序地址
机器码
指令说明
微程序
PC
μPC
运行时寄存器或存储器的值
MOVR0,#10
00
040A
初始化除数
E7FBFF
CBFFFF
01
02
04
05
R0:
0AH
MOVR1,#87
02
0557
初始化被除数
E7FBFF
CBFFFF
03
04
04
05
R1:
57H
MOVR2,#0
04
0600
初始化商
E7FBFF
CBFFFF
05
06
04
05
R2:
00H
MOVA,R0
06
08
将R0放在寄存器A中
E7FBFF
CBFFFF
07
07
04
05
A:
00H
SHLR0
08
24
将原除数左移产生假除数
FFF7F7
FFF9DF
CBFFFF
09
09
09
24
25
26
A:
0AH
L:
14H
R0:
14H
SHLR0
09
24
将原除数左移产生假除数
FFF7F7
FFF9DF
CBFFFF
0A
0A
0A
24
25
26
A:
14H
L:
28H
R0:
28H
SHLR0
0A
24
将原除数左移产生假除数
FFF7F7
FFF9DF
CBFFFF
0B
0B
0B
24
25
26
A:
28H
L:
50H
R0:
50H
SHLR0
0B
24
将原除数左移产生假除数
FFF7F7
FFF9DF
CBFFFF
0C
0C
0C
24
25
26
A:
50H
L:
A0H
R0:
A0H
BEGIN:
MOVA,R0
0C
34
将假除数放在A寄存器
FFFF57
CBFFFF
0D
0D
34
35
A:
0AH
CMPR0,A
0E
3D
比较除数和假除数
FFFF8F
FFF7F7
FFFE99
CBFFFF
0F
0F
0F
0F
3C
3D
3E
3F
W:
00H
A:
0AH
D:
4DH
JCLAST
0F
1021
假除数小于除数则跳转结束
C6FFFF
CBFFFF
10
11
10
11
EM:
10H
EM:
21H
MOVA,R0
11
08
将假除数放到A寄存器
E7FBFF
CBFFFF
12
12
08
09
A:
A0H
CMPR1,A
12
3D
比较余数和假除数的大小
FFFF8F
FFF7F7
FFFE99
CBFFFF
13
13
13
13
3C
3D
3E
3F
A:
57H
W:
A0H
D:
B7H
JCSMALL
13
101D
余数小于假除数跳转
C6FFFF
CBFFFF
14
1D
10
11
E:
10H
E:
1DH
NEXT:
JMPNEXT
14
18
跳转
C6FFFF
CBFFFF
1E
1E
11
12
E:
10H
E:
1DH
MOVA,R0
15
08
将假除数放到A寄存器
E7FBFF
CBFFFF
16
16
08
09
R0:
50H
SUBR1,A
16
39
用余数减去假除数
FFFF8F
FFF7F7
FFFA99
CBFFFF
17
17
17
17
38
39
3A
3B
R1:
07H
SHLR2
17
26
将商左移一位
FFF7F7
FFF9DF
CBFFFF
18
18
18
24
25
26
R2:
00H
ADDR2,#01
18
2201
将商加一
FFF7F7
C7FFEF
FFFA98
CBFFFF
19
19
1A
1A
20
21
22
23
R2:
01H
SHRR0
1A
28
将假除数右移一位
FFF7F7
FFF9BF
CB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机组成原理 乘法器和除法器课程设计 计算机 组成 原理 乘法器 法器 课程设计