组成原理课程设计 曲丽3062.docx

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

组成原理课程设计 曲丽3062.docx

《组成原理课程设计 曲丽3062.docx》由会员分享,可在线阅读,更多相关《组成原理课程设计 曲丽3062.docx(51页珍藏版)》请在冰点文库上搜索。

组成原理课程设计 曲丽3062.docx

组成原理课程设计曲丽3062

计算机组成原理课程设计报告

班级:

09计算机班姓名:

学号

完成时间:

一、课程设计目的

1.在实验机上设计实现机器指令及对应的微指令(微程序)并验证,从而进一步掌握微程序设计控制器的基本方法并了解指令系统与硬件结构的对应关系;

2.通过控制器的微程序设计,综合理解计算机组成原理课程的核心知识并进一步建立整机系统的概念;

3.培养综合实践及独立分析、解决问题的能力。

二、课程设计的任务

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

三、课程设计使用的设备(环境)

1.硬件

●COP2000实验仪

●PC机

2.软件

●COP2000仿真软件

四、课程设计的具体内容(步骤)

1.详细了解并掌握COP2000模型机的微程序控制器原理,通过综合实验来实现

(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位控制位以控制寄存器的输入、输出,选择运算器的运算功能,存储器的读写。

模型机的缺省的指令集分几大类:

算术运算指令、逻辑运算指令、移位指令、数据传输指令、跳转指令、中断返回指令、输入/输出指令。

COP2000模型机指令的最低两位(IR0和IR1)用来寻址R0~R3四个寄存器;IR2和IR3与ELP微控制信号,Cy和Z两个程序状态信号配合,控制PC的置数即程序的转移。

各种转移的条件判断逻辑如下所示:

PC置数逻辑

当ELP=1时,不允许PC被预置

当ELP=0时

当IR3=1时,无论Cy和Z什么状态,PC被预置

当IR3=0时

若IR2=0,则当Cy=1时PC被预置

若IR2=1,则当Z=1时PC被预置

本模型机时序控制采用不定长机器周期的同步控制方式,一条指令最多分四个节拍。

系统提供的默认指令系统包括以下7类指令:

算术运算指令:

逻辑运算指令:

数据传输指令:

跳转指令:

ADDA,R?

ADDA,@R?

ADDA,MM

ADDA,#II

ADDCA,R?

ADDCA,@R?

ADDCA,MM

ADDCA,#II

SUBA,R?

SUBA,@R?

SUBA,MM

SUBA,#II

SUBCA,R?

SUBCA,@R?

SUBCA,MM

SUBCA,#II

ANDA,R?

ANDA,@R?

ANDA,MM

ANDA,#II

ORA,R?

ORA,@R?

ORA,MM

ORA,#II

CPLA

MOVA,R?

MOVA,@R?

MOVA,MM

MOVA,#II

MOVR?

A

MOV@R?

A

MOVMM,A

MOVR?

#II

JCMM

JZMM

JMPMM

CALLMMRET

移位指令:

中断返回指令:

输入/输出指令:

RRA

RLA

RRCA

RLCA

RETI

READMM

WRITEMM

IN

OUT

该模型机微指令系统的特点(包括其微指令格式的说明等):

COP2000模型机的微指令字长为24位,全部为操作控制部分,不含顺序控制字段。

微指令编码采用混合表示法,微地址形成采用计数器方式。

微指令格式为水平型微指令。

下面分别从为操作控制和顺序控制两方面进行说明:

a.微操作控制:

24位微操作控制信号含义如下表:

表1:

COP2000模型机24位微控制信号功能

控制信号

含义

XRD:

外部设备读信号,当给出了外设的地址后,输出此信号,从指定外设读数据。

EMWR:

程序存储器EM写信号。

EMRD:

程序存储器EM读信号。

PCOE:

将程序计数器PC的值送到地址总线ABUS上。

EMEN:

将程序存储器EM与数据总线DBUS接通,由EMWR和EMRD决定是将DBUS

数据写到EM中,还是从EM读出数据送到DBUS。

IREN:

将程序存储器EM读出的数据打入指令寄存器IR和微指令计数器uPC。

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内部的标志寄存器。

X2X1X0:

X2、X1、X0三位组合来译码选择将数据送到DBUS上的寄存器。

 

WEN:

将数据总线DBUS的值打入工作寄存器W中。

AEN:

将数据总线DBUS的值打入累加器A中。

S2S1S0

S2、S1、S0三位组合决定ALU做何种运算。

X2X1X0

被选中寄存器

S2S1S0

运算

000

IN

000

A+W

001

IA

001

A-W

010

ST

010

AORW

011

PC

011

AANDW

100

D

100

A+W+Cy

101

R

101

A-W-Cy

110

L

110

NOTA

111

111

A

b.模型机的寻址方式:

表2模型机的寻址方式

模型机的寻址方式

寻址方式说明

指令举例

指令说明

累加器寻址

操作数为累加器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

c.顺序控制:

COP2000微程序控制器的微地址生成部件是一个计数器,分别控制该计数器的使能端(自动加一)和置数端(跳转至其他指令对应的位程序地址)生成微命令的地址。

2。

计算机中实现乘法和除法的原理

(1)无符号乘法

①实例演示:

1010×1011=1101110

无符号乘法的实例演示如图1所示:

1010

×1011

0000

+1010

1010

+1010

11110

+0000

011110

+1010

(0)1101110

即:

1001×0110=1101110

图1无符号乘法的实例演示

 

②硬件原理框图:

图2无符号乘法的硬件原理框图

在模型机上实现无符号数乘法运算时,采用“加法—移位”的重复运算方法。

那么,

无符号乘法的硬件原理框图如图2所示。

③算法流程图:

图3无符号乘法的算法流程图

(2)无符号除法

①实例演示:

无符号除法使用加减交替法,若余数为正,则下一步执行减法,商置1;反之商置0,下一步执行加法。

0

1

1

1

1

0

1

1

1

1

0

1

1

0

1

0

1

0

1

1

1

1

0

1

0

0

0

1

0

0

1

1

1

1

0

1

1

1

0

1

1

1

1

1

1

1

0

1

1

1

1

1

1

0

0

1

1

1

0

1

0

0

0

0

0

1

1

0

123÷13商为9,余数为6

②硬件原理框图:

图5无符号除法的硬件原理框图

③算法流程图:

在模型机上实现无符号数除法运算时,采用“加减交替算法”的运算方法。

因此,无符号除法的算法流程图如图6所示。

图6无符号除法的算法流程图

3.对应于以上算法如何分配使用COP2000实验仪中的硬件

由于循环控制运算时会占用累加器A,因此参与运算的操作数均应保存在通用寄存器

R0~R3中。

资源分配如下:

表3无符号乘法的硬件分配情况

硬件名称

实现算法功能描述

寄存器R0

中间结果及最终结果

寄存器R1

被乘数(每次运算左移1位)

寄存器R2

乘数(每次运算右移1位)

累加器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中,使程序能够正常地执行。

表4无符号除法的硬件分配情况

硬件名称

实现算法功能描述

寄存器R0

被除数(部分余数,最终得到余数)

寄存器R1

除数(初始化时左移4位,每次计算时右移1位)

寄存器R2

商(低4位)

寄存器R3

当作计数器使用,用来控制程序是否结束(初始值5)。

累加器A

①计算时用来存放中间结果;

②执行ADDA,R?

(加法)、SUBA,R?

(减法)等命令时所必须使用的寄存器。

寄存器W

执行SUBA,R?

(减法)等双操作数命令时所必须使用的寄存器。

左移门L

用来实现相应数据左移一位的运算,并能够控制该运算后的结果是否输出到数据总线。

直通门D

用来控制ALU的执行结果是否输出到数据总线。

右移门R

用来实现相应数据右移一位的运算,并能够控制该运算后的结果是否输出到数据总线。

程序计数器PC

①控制程序按顺序正常执行;

②当执行转移指令时,从数据线接收要跳转的地址,使程序能够按需要自动执行。

③当要从EM中读取数据时,由PC提供地址。

存储器EM

存储指令和数据。

微程序计数器μPC

向微程序存储器μM提供相应微指令的地址。

微程序存储器μM

存储相应指令的微指令。

输出寄存器OUT

可以将运算结果输出到输出寄存器OUT(本实验未用)。

堆栈ST

当存储于累加器A的值将要受到破坏时,将其数据保存在堆栈ST中,使程序能够正常地执行。

4.在COP2000集成开发环境下设计全新的指令/微指令系统

设计结果如表所示:

(1)新的指令集(所设计的乘法与除法用一个指令系统中)

表1新的指令系统列表

助记符

机器码1

机器码2

指令说明

_FATCH_

000000XX00-03

实验机占用,不可修改。

复位后,所有寄存器清0,首先执行_FATCH_指令取指。

ADD

R?

#II

000001XX04-07

II

R?

←R?

+立即数II

ADD

R?

A

000010XX08-0B

R?

←A+R?

SUB

R?

#II

000011XX0C-0F

II

R?

←R?

-立即数II

SUB

R?

A

000100XX10-13

R?

←R?

-A

MOV

R?

#II

000101XX14-17

R?

←R?

MOV

A,R?

000110XX18-1B

A←R?

SHL

R?

000111XX1C-1F3

R?

不带进位左移1位

SHR

R?

001000XX20-23

R?

不带进位右移1位

PUSH

A

001001XX24-27

A压栈

POP

A

001010XX28-2B

将栈顶元素值给A

MOV

R?

A

001011XX2C-2F

R?

←A

AND

A,#II

001100XX30-33

II

A与立即数II进行与运算

JZMM

001101XX34-37

MM

ZF=1时跳转

JMPMM

001111XX3C-3F

MM

跳转

JCMM

010000XX40-43

MM

CF=1时跳转

(2)新的微指令集

助记符

状态

微地址

微程序

数据输出

数据打入

地址输出

运算器

移位控制

PC

PC

_FATCH_

T0

->00

CBFFFF

浮空

指令寄存器IR

PC输出

A输出

写入

+1

01

FFFFFF

浮空

浮空

A输出

+1

02

FFFFFF

浮空

浮空

A输出

+1

03

FFFFFF

浮空

浮空

A输出

+1

ADD

R?

#IT

T3

04

FFF7F7

寄存器R?

寄存器A

浮空

A输出

+1

T2

05

C7FFEF

寄存器EM

寄存器W

PC输出

A输出

+1

+1

T1

06

FFFA98

ALU直通

寄存器R?

标志位C,Z

浮空

加运算

+1

T0

07

CBFFFF

浮空

指令寄存器IR

PC输出

A输出

写入

+1

ADD

R?

A

T2

08

FFF7EF

寄存器R?

寄存器W

浮空

A输出

+1

T1

09

FFFA98

ALU直通

寄存器R?

标志位C,Z

浮空

加运算

+1

T0

0A

CBFFFF

浮空

指令寄存器IR

PC输出

A输出

写入

+1

0B

FFFFFF

浮空

浮空

A输出

+1

SUB

R?

#IT

T3

0C

FFF7F7

寄存器R?

寄存器A

浮空

A输出

+1

T2

0D

C7FFEF

存贮器值EM

寄存器W

PC输出

A输出

+1

+1

T1

0E

FFFA99

ALU直通

寄存器R?

标志位C,Z

浮空

减运算

+1

T0

0F

CBFFFF

浮空

指令寄存器IR

PC输出

A输出

写入

+1

SUB

R?

#IT

T3

10

FFFF8F

ALU直通

寄存器W

浮空

A输出

+1

T2

11

FFF7F7

寄存器R?

寄存器A

浮空

A输出

+1

T1

12

FFFA99

ALU直通

寄存器R?

标志位C,Z

浮空

减运算

+1

T0

13

CBFFFF

浮空

指令寄存器IR

PC输出

A输出

写入

+1

MOV

R?

#IT

T1

14

C7FBFF

存贮器值EM

寄存器R?

PC输出

A输出

写入

+1

T0

15

CBFFFF

浮空

指令寄存器IR

PC输出

A输出

写入

+1

16

FFFFFF

浮空

浮空

A输出

+1

17

FFFFFF

浮空

浮空

A输出

+1

MOV

A,R?

T1

18

FFF7FB

寄存器R?

寄存器A

浮空

A输出

+1

T0

19

CBFFFF

浮空

指令寄存器IR

PC输出

A输出

写入

+1

1A

FFFFFF

浮空

浮空

A输出

+1

1B

FFFFFF

浮空

浮空

A输出

+1

SHLR?

T2

1C

FFF7F7

寄存器R?

寄存器A

浮空

A输出

T1

1D

FFF9DF

ALU左移

寄存器R?

浮空

A输出

左移

T0

1E

CBFFFF

浮空

指令寄存器IR

PC输出

A输出

1F

FFFFFF

浮空

浮空

A输出

SURR?

T2

20

FFF7F7

寄存器R?

寄存器A

浮空

A输出

T1

21

FFF9BF

ALU右移

寄存器R?

浮空

A输出

右移

T0

22

CBFFFF

浮空

指令寄存器IR

PC输出

A输出

23

FFFFFF

浮空

浮空

A输出

PUSHA

T1

24

FFEF9F

ALU直通

堆栈寄存器ST

浮空

T0

25

CBFFFF

浮空

指令寄存器IR

PC输出

A输出

26

FFFFFF

浮空

浮空

A输出

27

FFFFFF

浮空

浮空

A输出

POPA

T1

28

FFFF57

堆栈寄存器ST

T0

29

CBFFFF

浮空

指令寄存器IR

PC输出

A输出

2A

FFFFFF

浮空

浮空

A输出

2B

FFFFFF

浮空

浮空

A输出

MOV

R?

A

T1

2C

FFFB9F

ALU直通

寄存器R?

浮空

A输出

T0

2D

CBFFFF

浮空

指令寄存器IR

PC输出

A输出

2E

FFFFFF

浮空

浮空

A输出

2F

FFFFFF

浮空

浮空

A输出

AND

A,#IT

T2

30

C7FFEF

存贮器值EM

寄存器PC

PC输出

A输出

T1

31

FFFE93

ALU直通

寄存A标志位C,Z

浮空

与运算

T0

32

CBFFFF

浮空

指令寄存器IR

PC输出

A输出

33

FFFFFF

浮空

浮空

A输出

JZMM

T2

34

C6FFFF

存贮器值EM

寄存器PC

PC输出

A输出

T1

35

CBFFFF

浮空

指令寄存器IR

PC输出

A输出

T0

36

FFFFFF

浮空

浮空

A输出

37

FFFFFF

浮空

浮空

A输出

图7新的微指令集截图

5.用设计完成的新指令集编写实现无符号二进制乘法、除法功能的汇编语言程序

(1)乘法(详细执行过程见跟踪过程)

MOVR0,#00H

MOVR1,#09H

MOVR2,#09H

LOOP1:

SUBR2,#00H

JZLOOP3

MOVA,R2

ANDA,#01H

JZLOOP2

MOVA,R1

ADDR0,A

LOOP2:

SHLR1

SHRR2

JMPLOOP1

LOOP3:

END

 

 

图8无符号乘法流程图

(2)除法(详细执行过程见跟踪过程)

MOVR0,#86H

MOVR1,#09H

MOVR2,#00H

MOVR3,#05H

MOVA,R1

ANDA,#0FFH

JZLOOP3

SHLR1

SHLR1

SHLR1

SHLR1

MOVA,R0

PUSHA

MOVA,R1

SUBR0,A

JCLOOP1

JMPLOOP3

LOOP1:

POPA

MOVR0,A

SHLR2

SHRR1

SUBR3,#01H

JZLOOP4

MOVA,R0

PUSHA

M

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

当前位置:首页 > 医药卫生 > 基础医学

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

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