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

上传人:b****8 文档编号:12536533 上传时间:2023-06-06 格式:DOCX 页数:30 大小:593.03KB
下载 相关 举报
计算机组成原理 乘法器和除法器课程设计.docx_第1页
第1页 / 共30页
计算机组成原理 乘法器和除法器课程设计.docx_第2页
第2页 / 共30页
计算机组成原理 乘法器和除法器课程设计.docx_第3页
第3页 / 共30页
计算机组成原理 乘法器和除法器课程设计.docx_第4页
第4页 / 共30页
计算机组成原理 乘法器和除法器课程设计.docx_第5页
第5页 / 共30页
计算机组成原理 乘法器和除法器课程设计.docx_第6页
第6页 / 共30页
计算机组成原理 乘法器和除法器课程设计.docx_第7页
第7页 / 共30页
计算机组成原理 乘法器和除法器课程设计.docx_第8页
第8页 / 共30页
计算机组成原理 乘法器和除法器课程设计.docx_第9页
第9页 / 共30页
计算机组成原理 乘法器和除法器课程设计.docx_第10页
第10页 / 共30页
计算机组成原理 乘法器和除法器课程设计.docx_第11页
第11页 / 共30页
计算机组成原理 乘法器和除法器课程设计.docx_第12页
第12页 / 共30页
计算机组成原理 乘法器和除法器课程设计.docx_第13页
第13页 / 共30页
计算机组成原理 乘法器和除法器课程设计.docx_第14页
第14页 / 共30页
计算机组成原理 乘法器和除法器课程设计.docx_第15页
第15页 / 共30页
计算机组成原理 乘法器和除法器课程设计.docx_第16页
第16页 / 共30页
计算机组成原理 乘法器和除法器课程设计.docx_第17页
第17页 / 共30页
计算机组成原理 乘法器和除法器课程设计.docx_第18页
第18页 / 共30页
计算机组成原理 乘法器和除法器课程设计.docx_第19页
第19页 / 共30页
计算机组成原理 乘法器和除法器课程设计.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

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

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

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

哈尔滨理工大学

课 程 设 计

(计算机组成原理)

 

题  目:

 简单模型机指令系统的设计

班  级:

姓  名:

   

指导教师:

    

系主任:

 

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

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2