指令系统设计.docx

上传人:b****7 文档编号:10283617 上传时间:2023-02-09 格式:DOCX 页数:19 大小:248.25KB
下载 相关 举报
指令系统设计.docx_第1页
第1页 / 共19页
指令系统设计.docx_第2页
第2页 / 共19页
指令系统设计.docx_第3页
第3页 / 共19页
指令系统设计.docx_第4页
第4页 / 共19页
指令系统设计.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

指令系统设计.docx

《指令系统设计.docx》由会员分享,可在线阅读,更多相关《指令系统设计.docx(19页珍藏版)》请在冰豆网上搜索。

指令系统设计.docx

指令系统设计

 

课程设计说明书

 

题目:

指令系统设计

 

院系:

专业班级:

学号:

学生姓名:

指导教师:

 

2014年12月16日

安徽理工大学课程设计(论文)任务书

计算机科学与工程院系监控与嵌入式教研室

学号

学生姓名

专业(班级)

设计题目

指令系统设计

1.本系统采用DJ-CPTH超强型计算机组成原理教学实验系统搭建电路图,在实验箱上实现指令系统。

2.利用软件工程中的可行性研究以及分析方法,进行系统分析。

1.构建一组能实现带进位的加法和减法运算的指令系统,要求有四种寻址方式;

2.编程测试指令系统。

1.课程设计说明书约5000字;

2.编写微指令代码构建微指令系统;

3.编写程序测试指令系统

1.首先认真研究老师所给的题目,了解题目要求做什么。

2.查阅资料,解决难题。

3.编写源程序并调试之。

4.写课程设计说明

[1]张昆藏.计算机系统结构.北京:

科学出版社,1994

[2]平玲娣,潘雪增.计算机组成与设计.浙江大学出版社,出版日期:

2004

[3]白中英.计算机组成原理(第二版).北京:

科学出版社,1998

[4]DJ-CPTH超强型计算机组成原理与系统结构实验指导书

[5]李敬兆.8086/8088和基于RAM核汇编语言程序设计.第二版.合肥:

中国科学技术大学出版社.2012

[6]张晨曦,王志英,张春元,戴蔡,肖晓强.计算机体系结构.高等教育出版社,2004

[7]李文兵.计算机组成原理(第二版).清华大学出版社,2002

 

指导教师签字

教研室主任签字

2014年11月18日

安徽理工大学课程设计(论文)成绩评定表

指导教师评语:

 

成绩:

指导教师:

年月日

摘要

本设计采用的系统是DJ-CPTH型计算机组成原理实验系统,采用总线结构,并采用模块结构化设计,提供了两种实验模式:

1.手动模式2.自动运行。

系统提供两种控制器方式,即微程序控制器和组合逻辑控制器。

本次使用的是微程序控制器。

本次课程设计正是用到了用户设计指令/微指令的功能。

设计的内容简要如下:

1.带进位加法:

ADDCA,#*;ADDCA,R?

;ADDCA,*;ADDCA,@R?

;

2.带进位减法:

SUBCA,#*;SUBCA,R?

;SUBCA,*;SUBCA,@R?

;

3.辅助指令:

MOVA,#*;MOV*,A;MOV@R?

#*;MOVR?

#*;

关键字:

指令系统,微程序,计算机组成原理,DJ-CPTH

目录

1原理介绍1

1.1实验仪器逻辑图1

1.2功能简介1

1.3微程序控制器2

2实验环境介绍3

2.1模型机的总体结构3

2.2模型机的组成3

2.3模型机的寻址方式4

3系统设计及实现5

3.1设计思路5

3.2指令设计详述6

3.3实验过程11

4总结14

4.1设计体会14

4.2设计改进14

参考文献15

1原理介绍

1.1实验仪器逻辑图

图1-1DJ-CPTH超强型计算机组成原理教学实验系统逻辑时序图

1.2功能简介

表1-1数据输出功能表表1-2运算器功能控制

X2X1X0

输出寄存器

000

IN_OE外部输入门

001

IA_OE中断向量

010

ST_OE堆栈寄存器

011

PC_OEPC寄存器

100

D_OE直通门

101

R_OE右移门

110

L_OE左移门

111

没有输出

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

表1-3其余功能简介

XRD

外部设备读信号

MAROE

MAR地址输出

EMWR

存储器写允许

MAREN

MAR写允许

EMRD

存储器读允许

OUTEN

OUT寄存器写允许

EMEN

存储器接数据总线

STEN

堆栈寄存器写使能

PCOE

PC地址输出

RRD

通用寄存器读允许

IREN

IR,uPC写允许

RWR

通用寄存器写允许

EINT

清除中断寄存器值

CN

移位是否带进位

ELP

预置允许

FEN

标志寄存器(存标志位)

AEN

选通A(A可写)

WEN

选通W(W可写)

以上三个表格正是本次课程设计的模型机功能简介,课程设计中的微指令功能正是由这些功能参数结合完成的。

1.3微程序控制器

本次课程设计是由模型机作为一个整体来实验,由前面的实验课程中可以得知,此模型机可以手动由开关输入输出;现在应切换至由软件介入控制。

J1接入J2,使系统处于非手动状态;控制方式又原先的逻辑控制切换至“微程序控制”,还有一个切换至CPTH控制的开关。

最后,就是连接电脑和仪器的串行口。

2实验环境介绍

2.1模型机的总体结构

要设计指令就要了解本次实验的环境,以便于设计指令。

CPTH模型机包括了一个标准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寄存器,在微程序控制方式中,用指令码做为微地址来寻址微程序存储器,找到执行该指令的微程序。

而在组合逻辑控制方式中,按时序用指令码产生相应的控制位。

在本模型机中,一条指令最多分四个状态周期,一个状态周期为一个时钟脉冲,每个状态周期产生不同的控制逻辑,实现模型机的各种功能。

因此指令的设计就受限于四个状态周期之中。

2.2模型机的组成

CPTH计算机组成原理实验系统由实验平台、开关电源、软件三大部分组成。

实验平台上有寄存器组R0-R3、运算单元、累加器A、暂存器W、直通/左移/右移单元、地址寄存器、程序计数器、堆栈、中断源、输入/输出单元、存储器单元、微地址寄存器、指令寄存器、微程序控制器、组合逻辑控制器、扩展单元、总线接口区、微动开关/指示灯、逻辑笔、脉冲源、管理单片机、24个按键、字符式LCD、RS232。

2.3模型机的寻址方式

寻址方式尤为重要,寻址方式的多寡决定了指令的实现方式,而本模型机所提供的寻址方式有以下五种。

累加器寻址:

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

以上五种寻址方式的具体实现就在系统设计里具体介绍。

3系统设计及实现

3.1设计思路

本设计项目的内容是带进位的加减法指令实现,由此可知,为了测试项目就需要其他的指令辅助。

带进位的加减法需要四种寻址方式,为了测试这四种寻址方式,也要借由四种存储指令将操作数存入其中。

我选取的四种寻址方式:

寄存器寻址,内存寻址,立即数寻址,寄存器间接寻址。

经过一系列的实验,以及模型机的指令结构描述。

基本上,组成每个指令的微指令中的最后一个为CBFFFF,原因如下:

单看高8位“CB”代表EMRD,PCOE,IREN为低电平(使能状态),PCOE将地址送到地址线端,由EMRD功能得到了指令,IREN将指令存入IR寄存器当中,同时,uPC的值也与IR的相同。

图3-1指令读取

CBFFFF完成了读取指令的功能,是设计过程中最为重要的环节,本指令系统基本上每条指令中都有这个微指令,可见其重要性。

若具体到带进位加减法的设计,那就是按照指令本身着手,比如ADDCA,#?

这个是实现将立即数和寄存器A相加在存入A的功能。

构思如下:

Step1:

根据立即数为操作数,首先找到存放的地方——EM(内存)。

Step2:

实现加法操作,需要ALU的帮助,而其中的累加器A是我们的另一个操作数,现在的步骤正是将立即数存入另一个寄存器W中。

Step3:

A中的数与W中的数相加,送入数据缓冲器,再将数据缓冲器中的内容写入寄存器A。

Step4:

读取下一条指令。

以上只是想法,真实的实现步骤可能并不是按照所述发展。

具体见设计详述。

现在讲述辅助指令的构成:

四种寻址方式的Move指令。

为了实现加减法,需要这样的辅助指令,至于输入输出指令,构思的时候并没有涉及,主要就是节省设计时间;但就一个指令系统而言,那是必需的;否则,无法实现交互。

项目里没有实现的原因也很简单,就是CPTH实验仪已经实现了各个部件数据的显示。

3.2指令设计详述

按照思路,首先就是实现指令的书写。

在设计指令时,我们把ADDCA,#?

称为助记符,其中ADDC就是名称,A是左操作数,而#?

是右操作数。

在CPTH微程序设计软件中,提供了相应的功能。

机器码的选择也可以交由设计者自行选择。

请注意,指令集里的_FATCH_是默认的,是指令入口地址。

其指令是CBFFFF。

如果删除,则无法通过该软件修改。

图3-2指令集设计界面

设计好指令集后,就可以进一步的设计微程序。

微程序由四个状态周期构成,意味着程序功能的实现受到了限制,也表明功能简单需要组合实现更多的功能。

图3-3微程序设计界面

当然,指令设计完成后,要存档。

1.ADDCA,#*

带进位加法的操作数中有立即数,所以要将立即数读取出来并存放到ALU的W寄存器中,立即数又是暂时存取在内存单元。

那么我们就知道第一步所要启用的功能,EMRD,EMEN两个使能;当然,还要WEN置零;但是立即数的存取地址我们并不知道,这个存取地址由PC提供,所以,PCOE需要置零。

就此,我们完成了ADDCA,#*的第一步。

接下来,设计的就是核心内容带进位加法,这又是如何实现的呢?

首先加法功能借由S2S1S0这三位实现置为010实现A+W,至于进位就交由FEN实现,这就是标志寄存器实现进位存储。

当A+W后直接送入数据寄存器,接下来就是把数据寄存器的内容送到累加器A。

而这只需一条指令就能完成。

最后还要取下一条指令。

所以这条指令的微程序就是C7FFEF,FFFE94,CBFFFF。

2.ADDCA,R?

带进位加法的操作数中有通用寄存器,那么将通用寄存器中的数存入W寄存器中就是第一步。

RRD,WEN就需要使能,剩下的就不需要。

接下来,加法功能借由S2S1S0这三位实现置为010实现A+W,至于进位就交由FEN实现,这就是标志寄存器实现了进位存储。

当A+W后直接送入数据寄存器,接下来就是把数据寄存器的内容送到累加器A。

最后还要取下一条指令。

所以这条指令的微程序就是FFF7EF,FFFE94,CBFFFF。

3.ADDCA,@R?

带进位加法的操作数中有通用寄存器间接寻址。

这个实现就费些功夫,首先要在通用寄存器中存入地址,而这个地址实际上是指向内存单元。

我们要做的就是将内存单元的值放入W寄存器。

那么该如何实现呢?

既然要内存单元的值那么肯定需要知道内容所在地址。

我们将R?

中的值交给MAR保管,因为读取其中的值需要MAR帮助。

所以,MAREN,RRD置零。

接下来,读取内存单元的值并存入W寄存器。

现在EMEN,EMRD,MAROE,WEN需要置零。

其中,MAROE就是将内存偏移地址给EM,并找取内存单元的值。

之后,加法功能借由S2S1S0这三位实现置为010实现A+W,至于进位就交由FEN实现,这就是标志寄存器实现了进位存储。

当A+W后直接送入数据寄存器,接下来就是把数据寄存器的内容送到A中。

最后还要取下一条指令。

四个状态周期全都用上。

所以这条指令的微程序就是FF77FF,D7BFEF,FFFE94,CBFFFF。

4.ADDCA,*

带进位加法的操作数中有内存单元。

和寄存器的间接寻址很相似,不过差别就在于内存单元地址的获取。

这个偏移地址的获取通过PCOE,EMEN,EMRD,MAREN置零,这样就将偏移地址存入MAR寄存器中。

接下来,读取内存单元的值并存入W寄存器。

现在EMEN,EMRD,MAROE,WEN需要置零。

其中,MAROE就是将内存偏移地址给EM,并找取内存单元的值。

之后,加法功能借由S2S1S0这三位实现置为010实现A+W,至于进位就交由FEN实现,这就是标志寄存器实现了进位存储。

当A+W后直接送入数据寄存器中,接下来就是把数据寄存器的内容送到A中。

最后还要取下一条指令。

四个状态周期全都用上。

所以这条指令的微程序就是C77FFF,D7BFEF,FFFE94,CBFFFF。

5.MOVA,#*

这是辅助指令,用于将用户想存取的内容放到相应的位置。

这个指令将立即数存入累加器A。

首先,立即数的获取。

PCOE,EMRD,EMEN置零,获取到了立即数,接着就要存储到A寄存器中。

AEN置零。

这个功能的实现其实只用到了一条微指令。

最后还要取下一条指令。

所以这条指令的微程序就是C7FFF7,CBFFFF。

6.MOVR?

#*

这个辅助指令,是将立即数放入到通用寄存器R?

首先,立即数的获取。

PCOE,EMRD,EMEN置零,获取到立即数,并把数据放到数据总线上。

接下来,RWD置零,立即数就写入到通用寄存器R?

最后取下一条指令。

这条指令的微程序就是C7FBFF,CBFFFF。

7.MOV@R?

#*

这个指令的设计难度不亚于带进位加法寄存器间接寻址。

为什么这么讲?

第一,这个指令的左右操作数的寻址方式比较难以实现;第二,微指令的状态周期限制。

首先,将立即数存入ST堆栈寄存器中。

PCOE,EMRD,EMEN,STEN置零,由此实现立即数的存储。

我们将R?

中的值交给MAR保管,因为存储内存单元值需要MAR帮助。

所以,MAREN,RRD置零。

接着,将ST寄存器的值放入到内存单元。

EMWR,EMEN,MAROE置零。

选通ST寄存器,X2X1X0的值置为010。

最后,再取下一条指令。

这条指令的微程序就是C7EFFF,FF77FF,B7BF5F,CBFFFF。

8.MOV*,A

这条辅助指令的设计是为了将数值存储到内存单元。

因为立即数存储到内存单元的指令,被拒绝了。

(总结再详谈)

寄存器A的数值存储到内存单元中只需要一条微指令足以。

EMWR,PCOE,EMEN置零,目的就是指定可写的内存单元。

接着就是将A的数值存放到内存中,X2X1X0置为100,目的就是将数据缓冲器输出到数据总线,S2S1S0置为111,就是直接输出A的内容到数据缓冲器中。

最后,再取下一条指令。

这条指令的微程序就是B7FF97,CBFFFF。

注:

带进位减法的指令实现,与加法的不同仅在于功能也就是S2S1S0置为101。

这里就不再详细描述指令的具体实现步骤。

9.SUBCA,#*

这条指令的微程序就是C7FFEF,FFFE95,CBFFFF。

图3-4SUBCA,#*简易流程图

10.SUBCA,R?

这条指令的微程序就是FFF7EF,FFFE95,CBFFFF。

图3-5SUBCA,R?

简易流程图

11.SUBCA,@R?

这条指令的微程序就是FF77FF,D7BFEF,FFFE95,CBFFFF。

图3-6SUBCA,@R?

简易流程图

12.SUBCA,*

这条指令的微程序就是C77FFF,D7BFEF,FFFE95,CBFFFF。

图3-7SUBCA,*简易流程图

3.3实验过程

实验过程并没有截图记录,所以借用。

Step1:

调入你已经保存好的指令系统。

Likethis,

图3-8调入指令系统

Step2:

在源程序窗口输入程序,Likethis,

图3-9输入源程序

Step3:

按快捷键F7,执行“单微指令运行”功能,观察执行每条微指令时,数据是否按照设计要求流动,寄存器的输入/输出状态是否符合设计要求,各控制信号的状态,PC及uPC如何工作是否正确。

到此为止,我们利用CPTH软件系统已经建成了一个新的指令系统/微程序。

新的指令系统从汇编助记符到指令机器码到微指令都与原来的指令系统有所不同。

4总结

4.1设计体会

其实设计这些指令我并没有参考其余章节的内容,就是通过第二至第四章就可以编出指令了。

2,3章的内容介绍了大部分功能组件的实现,通过小键盘控制也对指令的存取运行有了一定的认识。

第4章模型机的综合实验便是认识和熟悉指令,微程序的概念。

本次课程设计的内容也是比较简单的,比方说这个小项目就是设计带进位加减法,并使用四种寻址方式。

在综合实验中都有涉及,比较有意思的就是辅助指令的设计,因为牵涉到了立即数到寄存器的间接寻址以及立即数存到内存单元两条指令,所以就开始设计。

很快,也就十几分钟,不过上机测试的时候出现了些问题,便继续纠正。

不过,立即数存内存单元这个指令因为ERROR告吹。

(推测是因为不支持)

课程设计的内容,如果仔细琢磨的话,还是蛮有用的,对于组成原理这门课程的认识也有不小的帮助。

看似简单的指令设计,其实牵涉到很多的内容。

这个新版的课程设计内容,也更基础;虽然比起用汇编写程序,并且根据你写程序,设计相应的指令这个项目要简单。

但重心上是回到了指令设计。

设计上需要理解总线的使用调度,以免出现,地址冲突,数据传输冲突等问题。

至少我是遇到了这样的问题,同样的,只设计所要求的指令会导致测试上的麻烦,没有辅助指令的输入,仍然无法实现,测试指令的时候也可以通过软件的逻辑图输入你的内容做测试。

4.2设计改进

其实改进倒谈不上,应该是一种想法,就是目前的指令效率是最高的吗?

指令的设计难道就是有一种方案吗?

这个指令方案倒是可以有多个,但是效率上的改变无法得知。

但有一点是可以肯定的,你的指令状态周期越少,那么效率是要高的,同时意味着你对功能的调度全面,新的表达称为性能压榨。

参考文献

[1]张昆藏.计算机系统结构.北京:

科学出版社,1994

[2]平玲娣,潘雪增.计算机组成与设计.浙江大学出版社,出版日期:

2004

[3]白中英.计算机组成原理(第二版).北京:

科学出版社,1998

[4]DJ-CPTH超强型计算机组成原理与系统结构实验指导书

[5]李敬兆.8086/8088和基于RAM核汇编语言程序设计.第二版.合肥:

中国科学技术大学出版社.2012

[6]张晨曦,王志英,张春元,戴蔡,肖晓强.计算机体系结构.高等教育出版社,2004

[7]李文兵.计算机组成原理(第二版).清华大学出版社,2002

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

当前位置:首页 > PPT模板 > 商务科技

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

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