东北大学计算机组成原理课设报告.docx

上传人:b****5 文档编号:7316035 上传时间:2023-01-22 格式:DOCX 页数:52 大小:298.54KB
下载 相关 举报
东北大学计算机组成原理课设报告.docx_第1页
第1页 / 共52页
东北大学计算机组成原理课设报告.docx_第2页
第2页 / 共52页
东北大学计算机组成原理课设报告.docx_第3页
第3页 / 共52页
东北大学计算机组成原理课设报告.docx_第4页
第4页 / 共52页
东北大学计算机组成原理课设报告.docx_第5页
第5页 / 共52页
点击查看更多>>
下载资源
资源描述

东北大学计算机组成原理课设报告.docx

《东北大学计算机组成原理课设报告.docx》由会员分享,可在线阅读,更多相关《东北大学计算机组成原理课设报告.docx(52页珍藏版)》请在冰豆网上搜索。

东北大学计算机组成原理课设报告.docx

东北大学计算机组成原理课设报告

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

班级:

计算机XX班姓名:

XX学号:

XXX

完成时间:

2017.1.6

一、课程设计目的

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

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

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

二、课程设计的任务

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

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

1.硬件

●COP2000实验仪

●PC机

2.软件

●COP2000仿真软件

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

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

该模型机指令系统的特点:

COP2000模型机的指令为8位,根据操作的内容,可以有0到2个操作数。

每个操作数支持5种寻址方式,包括累加器A寻址,寄存器R0~R3寻址,寄存器R0~R3间接寻址,内存直接寻址以及立即数寻址。

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.顺序控制

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

2。

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

(1)无符号乘法

①实例演示:

1010×1011=1101110

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

1010

×1011

0000

+1010

1010

+1010

11110

+0000

011110

+1010

(0)1101110

即:

1001×0110=1101110

②硬件原理框图:

③算法流程图:

 

 

(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

②硬件原理框图:

③算法流程图:

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

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

R0~R3中。

资源分配如下:

直接乘法:

R0:

中间结果及最终结果

R1:

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

R2:

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

加减交替除法:

R0:

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

R1:

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

R2:

商(低4位)

R3:

计数器

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

设计结果如表所示(可按需要增删表项)

(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)新的微指令集

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

(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

MOVA,R1

SUBR0,A

JCLOOP1

LOOP2:

SHLR2

SHRR1

ADDR2,#01H

SUBR3,#01H

JZLOOP4

MOVA,R0

PUSHA

MOVA,R1

SUBR0,A

JCLOOP1

JMPLOOP2

LOOP3:

MOVR2,#0FFH

LOOP4:

END

6.上述程序的运行情况(跟踪结果)

程序运行的过程

乘法

汇编指令

程序地址

机器码

指令说明

微程序

PC

PC

运行时寄存器或存储器的值

_FATCH_

00

00

实验机占用,不可修改。

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

CBFFFF

+1

写入

EM:

14

MOVR0,#00

00

1400

将立即数00H存放到寄存器R0中。

C7FBFF

CBFFFF

+1

+1

+1

写入

EM:

14

EM:

00R0:

00

MOVR1,#09

02

1509

将立即数09H存放到寄存器R1中。

C7FBFF

CBFFFF

+1

+1

+1

写入

EM:

15

EM:

09R1:

09

MOVR2,#09

04

1609

将立即数09H存放到寄存器R2中。

C7FBFF

CBFFFF

+1

+1

+1

写入

EM:

16

EM:

09R2:

09

SUBR2,#00

06

0E00

寄存器R2减去立即数00H后存入寄存器R2中,改变标志位

FFF7F7

C7FFEF

FFFA99

CBFFFF

+1

+1

+1

+1

+1

写入

EM:

0E

EM:

0EA:

09

EM:

00

EM:

00

JZ15

08

3415

若零标志位置1,跳转到15H地址。

C6FFFF

CBFFFF

写入

+1

+1

写入

EM:

34

EM:

15

MOVA,R2

0A

1A

将累加器A中的数存放到寄存器R2中。

FFF7F7

CBFFFF

+1

+1

写入

EM:

1A

EM:

1AW:

09

ANDA,#01

0B

3001

累加器A中的数与立即数01H做与运算,结果存入累加器A中

C7FFEF

FFFE93

CBFFFF

+1

+1

+1

+1

写入

EM:

30

EM:

01

EM:

01A=01

JZ11

0D

3411

若零标志位置1,跳转到11H地址。

C6FFFF

CBFFFF

写入

+1

+1

写入

EM:

34

EM:

11

MOVA,R1

0F

19

将累加器A中的数存放到寄存器R1中。

FFF7F7

CBFFFF

+1

+1

写入

EM:

19

EM:

19A:

09

ADDR0,A

10

08

寄存器R0中的值加上累加器A中的值,结果存入寄存器R0中

FFF7EF

FFFA98

CBFFFF

 

+1

+1

+1

写入

EM:

08

EM:

08W=00

EM:

01R0=09

SHLR1

11

1D

寄存器R1中的数不带进位向左移一位,并不影响标志位。

FFF7F7

FFF9DF

CBFFFF

 

+1

+1

+1

写入

EM:

1D

EM:

1DA:

09

EM:

1DR1:

12

SHRR2

12

22

寄存器R2中的数不带进位向右移一位,并不影响标志位。

FFF7F7

FFF9BF

CBFFFF

 

+1

+1

+1

写入

EM:

22

EM:

22A:

09

EM:

22R2:

04

JMP06

13

3C06

跳转到06H地址。

C6FFFF

CBFFFF

写入

+1

+1

写入

EM:

3C

EM:

06

SUBR2,#00

06

0E00

寄存器R2减去立即数00H后存入寄存器R2中,改变标志位

FFF7F7

C7FFEF

FFFA99

CBFFFF

+1

+1

+1

+1

+1

写入

EM:

0E

EM:

0EW:

04

EM:

00

EM:

00

JZ15

08

3415

若零标志位置1,跳转到15H地址。

C6FFFF

CBFFFF

写入

+1

+1

写入

EM:

34

EM:

15

MOVA,R2

0A

1A

将累加器A中的数存放到寄存器R2中。

FFF7F7

CBFFFF

+1

+1

写入

EM:

1A

EM:

1AA=04

ANDA,#01

0B

3001

累加器A中的数与立即数01H做与运算,结果存入累加器A中

C7FFEF

FFFE93

CBFFFF

+1

+1

+1

+1

写入

EM:

30

EM:

01W:

01

EM:

01A:

00

JZ11

0D

3411

若零标志位置1,跳转到11H地址。

C6FFFF

CBFFFF

写入

+1

+1

写入

EM:

34

EM:

11

SHLR1

11

1D

寄存器R1中的数不带进位向左移一位,并不影响标志位。

FFF7F7

FFF9DF

CBFFFF

 

+1

+1

+1

写入

EM:

1D

EM:

1DA:

12

EM:

1DR1:

24

SHRR2

12

22

寄存器R2中的数不带进位向右移一位,并不影响标志位。

FFF7F7

FFF9BF

CBFFFF

 

+1

+1

+1

写入

EM:

22

EM:

22A:

04

EM:

22R2:

02

JMP06

13

3C06

跳转到06H地址。

C6FFFF

CBFFFF

写入

+1

+1

写入

EM:

3C

EM:

06

SUBR2,#00

06

0E00

寄存器R2减去立即数00H后存入寄存器R2中,改变标志位

FFF7F7

C7FFEF

FFFA99

CBFFFF

+1

+1

+1

+1

+1

写入

EM:

0E

EM:

0EA:

02

EM:

00W:

00

EM:

00

JZ15

08

3415

若零标志位置1,跳转到15H地址。

C6FFFF

CBFFFF

写入

+1

+1

写入

EM:

34

EM:

15

MOVA,R2

0A

1A

FFF7F7

CBFFFF

+1

+1

写入

EM:

1A

EM:

1AA=02

ANDA,#01

0B

3001

寄存器R2与立即数01H,只改变标志位,并不改变R2中的数值。

C7FFEF

FFFE93

CBFFFF

+1

+1

+1

+1

写入

EM:

30

EM:

01W:

01

EM:

01A:

00

JZ11

0D

3411

若零标志位置1,跳转到11H地址。

C6FFFF

CBFFFF

写入

+1

+1

写入

EM:

34

EM:

11

SHLR1

11

1D

寄存器R1中的数不带进位向左移一位,并不影响标志位。

FFF7F7

FFF9DF

CBFFFF

 

+1

+1

+1

写入

EM:

1D

EM:

1DA:

24

EM:

1DR1:

48

SHRR2

12

22

寄存器R2中的数不带进位向右移一位,并不影响标志位。

FFF7F7

FFF9BF

CBFFFF

 

+1

+1

+1

写入

EM:

22

EM:

22A:

02

EM:

22R2:

01

JMP06

13

3C06

跳转到06H地址。

C6FFFF

CBFFFF

写入

+1

+1

写入

EM:

3C

EM:

06

SUBR2,#00

06

0E00

寄存器R2减去立即数00H后存入寄存器R2中,改变标志位

FFF7F7

C7FFEF

FFFA99

CBFFFF

+1

+1

+1

+1

+1

写入

EM:

0E

EM:

0EA:

01

EM:

00W:

00

EM:

00

JZ15

08

3415

若零标志位置1,跳转到15H地址。

C6FFFF

CBFFFF

写入

+1

+1

写入

EM:

34

EM:

15

MOVA,R2

0A

1A

FFF7F7

CBFFFF

+1

+1

写入

EM:

1A

EM:

1AA=01

ANDA,#01

0B

3001

寄存器R2与立即数01H,只改变标志位,并不改变R2中的数值。

C7FFEF

FFFE93

CBFFFF

+1

+1

写入

+1

+1

写入

+1

EM:

30

EM:

01W:

01

EM:

01A:

01

EM:

01

JZ11

0D

3411

若零标志位置1,跳转到11H地址。

C6FFFF

CBFFFF

写入

+1

+1

写入

EM:

34

EM:

11

MOVA,R1

0F

19

将累加器A中的数存放到寄存器R1中。

FFF7F7

CBFFFF

+1

+1

写入

EM:

19

EM:

19A=48

ADDR0,A

10

08

寄存器R0中的值加上累加器A中的值,结果存入寄存器R0中

FFF7EF

FFFA98

CBFFFF

 

+1

+1

+1

写入

EM:

08

EM:

08W:

09

EM:

08R0:

51

SHLR1

11

1D

寄存器R1中的数不带进位向左移一位,并不影响标志位。

FFF7F7

FFF9DF

CBFFFF

 

+1

+1

+1

写入

EM:

1D

EM:

1DA:

48

EM:

1DR1:

90

SHRR2

12

22

寄存器R2中的数不带进位向右移一位,并不影响标志位。

FFF7F7

FFF9BF

CBFFFF

 

+1

+1

+1

写入

EM:

22

EM:

22A:

01

EM:

22R2:

00

JMP06

13

3C06

跳转到06H地址。

C6FFFF

CBFFFF

写入

+1

+1

写入

EM:

3C

EM:

06

SUBR2,#00

06

0E00

寄存器R2减去立即数00H后存入寄存器R2中,改变标志位

FFF7F7

C7FFEF

FFFA99

CBFFFF

+1

+1

+1

+1

+1

写入

EM:

0E

EM:

0EA:

00

EM:

00W:

00

EM:

00

JZ15

08

3415

若零标志位置1,跳转到15H地址。

C6FFFF

CBFFFF

写入

+1

+1

写入

EM:

34

EM:

15

_FATCH_

00

00

实验机占用,不可修改。

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

CBFFFF

+1

写入

EM:

00

除法:

汇编指令

程序地址

机器码

指令说明

微程序

PC

PC

运行时寄存器或存储器的值

_FATCH

00

0

实验机占用,不可修改。

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

CBFFFF

+1

写入

EM=14

MOVR0,#86H

00

1486

将立即数86H存放到寄存器R0中。

C7FBFF

CBFFFF

+1

+1

+1

写入

EM=14

EM=86R0=86

MOVR1,#09H

02

1509

将立即数09H存放到寄存器R1中。

C7FBFF

CBFFFF

+1

+1

+1

写入

EM=15

EM=09R1=09

MOVR2,#00H

04

1600

将立即数00H存放到寄存器R2中。

C7FBFF

CBFFFF

+1

+1

+1

写入

EM=16

EM=00R2=00

MOV

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

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1