计组课设-微指令的设计实验

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

班级:计算机/物联网班姓名:学号:

完成时间:2016.1.14

一、课程设计目的

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

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

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

二、课程设计的任务

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

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

1.硬件

●COP2000实验仪

●PC机

2.软件

●COP2000仿真软件

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

1.详细了解并掌握COP 2000模型机的微程序控制器原理,通过综合实验来实现该模型机指令系统的特点:

从指令字长来看该模型机指令系统包含单字长和双字长两种格式的指令,字长为8位,对于需要访问内存的指令都是双字长的,指令系统中大多数指令是单字长;从指令操作码是定长和变长来看,这里认为,虽然ADD A, R?和ADD A, @R?都是执行加法操作,但他们是不同的指令,将指令格式中寻址寄存器的两位也认为是操作码的一部分,这两条指令的操作码不同。因此,指令系统的指令格式是定长操作码的,操作码为6位。

1)双字长的指令格式如下:

2)单字长的指令格式如下:

举例:

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

该模型机微指令系统的微指令格式是水平型微指令,微指令的字长为24位,是机器字长的3倍,每条微指令仅包含微操作控制字段,无顺序控制字段。操作控制字段的每一位对应一个微操作,采用字段直接译码的方式对系统进行控

举例:微指令CBFFFF:取指令

COP2000中有7个寄存器可以向数据总线输出数据, 但在某一特定时刻只能有一个寄存器输出数据. 由X2,X1,X0决定那一个寄存器输出数据。

COP2000中的运算器由一片EPLD实现. 有8种运算, 通过S2,S1,S0来选择。运算数据由寄存器A及寄存器W给出, 运算结果输出到直通门D。

2. 计算机中实现乘法和除法的原理(1)无符号乘法

①算法流程图:

开始

初始化

(被)乘数=0

NO

(被)乘数>0FH

NO

乘数带进位右移

CF=1

YES

积加乘数

被乘数不带进位左移计数器减1

ZF=1

YES

保存结果

YES YES

NO

NO

结束

②硬件原理框图:

A

W

ST

R0

R1

R2

ALU

被乘数

乘数

计数值4

CY

左移

右移

(2)无符号除法

①算法流程图:

开始

商清0

除数左移4位

除数为0

NO

被除数减除数

CF=0

NO

除数右移1位商左移1位被除数减除数

CF=0

YES

商加1

移位次数为4

YES

保存结果

结束

YES

YES

NO

NO

②硬件原理框图:

A ALU

W

R0

R1

ST

R2

CY

右移

左移

除数

被除数

3.对应于以上算法如何分配使用COP2000实验仪中的硬件 (初步分配,设计完成后再将准确的使用情况填写在此处)

4.在COP2000集成开发环境下设计全新的指令/微指令系统设计结果如表所示(可按需要增删表项)

(1)新的指令集

(如果针对乘除法设计了两个不同指令集要分别列表)

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

4位乘法的算法流程图与汇编语言程序清单:

1)流程图如下:

开始

被乘数送入R0

乘数送入R1(被)乘数=0

NO

(被)乘数>0FH

NO

将4送入R3做计数寄存器清0

R1带进位右移

CF=1

YES

ADD A,R0

R0不带进位左移

暂存A

R3减1

恢复A

ZF=1

YES

MOV R0,A存结果

结束

YES

YES

NO

NO 2)汇编语言程序清单如下:

MOV R3#0FH 将A赋值,用于比较

MOV A,R3

MOV R0,#0FH ---被乘数在R0中

TEST R0,#0FH 判断被乘数是否为0,是则结束

JZ T3 判断被乘数是否溢出,是则结束

CMP A,R0

JC T3

MOV R1,#0FH ---乘数在R1中

TEST R1,#0FH 判断乘数是否为0,是则结束

JZ T3

CMP A,R1 判断乘数是否溢出,是则结束

MOV R3,#04H

AND A,#00H

LOOP1:

SHR R1

JC T1

JMP LOOP2

T1:ADD A,R0

LOOP2:SHLN R0

PUSH A

SUB R3,#01H

POP A

JZ T2

JMP LOOP1

T2:MOV R0,A --乘积结果在R0中

JMP EN

T3:MOV R0,#00H

EN:END

JMP END

(2)除法

4位除法的算法流程图与汇编语言程序清单:

1)算法流程图如下

1)算法流程图如下

相关文档
最新文档