计算机组成原理指令扩展实验.docx

上传人:b****7 文档编号:10275132 上传时间:2023-02-09 格式:DOCX 页数:14 大小:208.58KB
下载 相关 举报
计算机组成原理指令扩展实验.docx_第1页
第1页 / 共14页
计算机组成原理指令扩展实验.docx_第2页
第2页 / 共14页
计算机组成原理指令扩展实验.docx_第3页
第3页 / 共14页
计算机组成原理指令扩展实验.docx_第4页
第4页 / 共14页
计算机组成原理指令扩展实验.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

计算机组成原理指令扩展实验.docx

《计算机组成原理指令扩展实验.docx》由会员分享,可在线阅读,更多相关《计算机组成原理指令扩展实验.docx(14页珍藏版)》请在冰豆网上搜索。

计算机组成原理指令扩展实验.docx

计算机组成原理指令扩展实验

华北科技学院计算机学院综合性实验

实验报告

 

课程名称计算机组成原理B

实验学期2014至2015学年第一学期

学生所在院部计算机学院

年级2012专业班级计科B12-3

学生姓名董帅帅学号201207014316

任课教师席振元

实验成绩

 

计算机学院制

实验报告须知

1、学生上交实验报告时,必须为打印稿(A4纸)。

页面空间不够,可以顺延。

2、学生应该填写的内容包括:

封面相关栏目、实验地点、时间、目的、设备环境、内容、结果及分析等。

3、教师应该填写的内容包括:

实验成绩、教师评价等。

4、教师根据本课程的《实验指导》中实验内容的要求,评定学生的设计性实验成绩;要求在该课程期末考试前将实验报告交给任课教师。

设计性实验中,所涉及的程序,文档等在交实验报告前,拷贝给任课教师。

任课教师统一刻录成光盘,与该课程的期末考试成绩一同上交到系里存档。

5、未尽事宜,请参考该课程的实验大纲和教学大纲。

《计算机组成原理B》课程设计性实验报告

开课实验室:

计算机组成原理实验室2014年11月26日

实验题目

指令扩展实验

一、实验目的

深入了解教学计算机微程序控制器的组成和设计技术,包括Am2910器件的功能与具体用法,教学计算机的总体组成和部件之间的连接方法,总之应该深入理解控制器部件的组成、设计、控制与使用等诸项知识。

二、设备与环境

TEC-XP+教学机,微机(装有WindowsXP、ISPLEVER、ispVMSystem等软件)。

三、实验内容

在现有的基本指令系统上,扩展2条指令:

ADTW、ADRM。

四、实验步骤

1、两条指令的格式及功能

写明2条指令的格式、功能、寻址方式、操作码编码、微程序步数、微程序入口地址。

(1)指令格式:

ADTWDR

功能:

DR+2->DR(DR内的值自加2)

寻址方式:

寄存器寻址

操作码编码:

10100001(A1)

微程序步数:

2

微程序入口地址:

81

(2)指令格式:

ADRMDR,[SR]

功能:

DR+[SR]->DR

寻址方式:

DR为寄存器寻址、[SR]为寄存器间接寻址

操作码编码:

11100011(E3)

微程序步数:

3

微程序入口地址:

83

2、指令所对应的微程序

每条指令对应的微程序、每步功能及各自段值得意义

(1)指令ADTWDR对应的微程序为:

入口

地址

下址

CI-0

SCC3-0

MAR

I2-0

I8-6

I5-3

B口

A口

SST

SSHSCI

DC2

DC1

81

00

E0

4,3

3,0

8,0

1,1

0,0

82

30

30

4,3

3,0

8,0

1,1

0,0

(2)指令ADTWDR,[SR]对应的微程序为:

入口

地址

下址

CI-0

SCC3-0

MAR

I2-0

I8-6

I5-3

B口

A口

SST

SSHSCI

DC2

DC1

83

00

E0

4,4

1,0

0,8

0,0

3,0

84

00

E0

4,3

0,0

8,0

0,0

0,0

85

30

30

1,6

3,0

8,0

0,0

0,0

微程序各字段的含义如下:

入口地址:

指令的微程序入口地址;

下址:

微程序执行完后下一条微程序的地址;00表示需要进行地址转移逻辑,30表示微程序结束。

CI3-0:

判别测试字段,其主要编码及功能如表1。

SCC3-0:

地址转移逻辑字符,仅当CI3-0为0011时有效。

MRW:

控制对内存和I/O接口的读写,其主要功能如下:

000,写内存;001读内存;010写串口;011读串口;1XX无内存和串口的读写操作。

I2-0:

控制数据来源,其编码及功能见表3。

I8-6:

控制对运算结果的处理,其编码及功能见表3。

I5-3:

运算功能的选择,其编码及功能见表3。

表3Am2901的9位控制码编码及功能

SST:

对CZVS的控制。

SSHSCI:

设置进位输入。

B口:

1000表示IR的DR字段,0000表示不用B口。

A口:

1000表示IR的SR字段,0000表示不用A口。

DC2:

专用寄存器接收控制,其主要编码及功能见表4-1。

DC1:

送内部总线的数据,其主要编码及功能见表4-2。

表4-1

专用寄存器接受控制

表4-2

内部总线数据来源选择控制

DC2编码

译码操作

操作说明

DC2编码

译码操作

操作说明

000

NC

不操作

000

/SWTOIB

送开关内容到内部总线

001

/GIR

指令寄存器接受

001

/RTOIB

送ALU输出到内部总线

010

/

16位机不用

010

/ETOIB

送IR地位字节内容到内部总线

011

/GAR

地址寄存器接受

011

/FTOIB

送程序状态字到内部总线

100

/INTR

恢复原中断优先级

100

/

16位机不用

101

/INTN

接受新中断优先级

101

/

16位机不用

110

/E1

用于开中断指令

110

/INTV

送中断向量到内部总线

111

/D1

用于关中断指令

111

NC

不操作

3、ABEL语言源程序编辑以及JED文件生成

m256c.abl源程序修改过程(10步)以及生成JED文件的整个操作过程。

ADTW=(IR==[1,0,1,0,0,0,0,1]);//

(1)指令OP定义:

A1

ADRM=(IR==[1,1,1,0,0,0,1,1]);//

(1)指令OP定义:

E3

MA81=(Y==[1,0,0,0,0,0,0,1]);//

(2)微指令地址定义:

81,82

MA82=(Y==[1,0,0,0,0,0,1,0]);

MA83=(Y==[1,0,0,0,0,0,1,1]);//

(2)微指令地址定义:

83,84,85

MA84=(Y==[1,0,0,0,0,1,0,0]);

MA85=(Y==[1,0,0,0,0,1,0,1]);

//(3)入口地址定义:

81(10000001)

//(3)入口地址定义:

83(10000011)

D0=!

C_M&(!

_MAP&(ADRM#ADTW#SUB#OR#CMP#MVRR#DEC#SHR#JR#PSHF#PUSH#POP#POPF

#STRR#LDRR#LDPC#MVRD#CALA#RET#IRET#DI#ASR#RCR#STC#LDRA#LDRX#STRA

#STRX#SBB#JRS#JRNS)#NXTADDR0&!

_PL)&!

Bit8;

D1=!

C_M&(!

_MAP&(ADRM#AND#OR#TEST#MVRR#SHL#SHR#IN_#OUT#POP#POPF#LDRR#LDPC

#JMPA#CALA#RET#IRET#NOT#ASR#CLC#STC#JMPR#LDRA#STRA)

#NXTADDR1&!

_PL)&!

Bit8;

D7=!

C_M&(!

_MAP&(ADTW#ADRM)#NXTADDR7&!

_PL)&!

Bit8;

(4)下址定义MA81:

00,MA82:

30(00110000)

NXTADDR5:

=!

C_M&(MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0B#MA0C#MA0D#MA0E

#MA0F#MA10#MA11#MA13#MA14#MA16#MA18#MA1A#MA1C#MA1E#MA22#MA24#MA30

#MA3F#MA50#MA51#MA52#MA53#MA54#MA55#MA56#MA57#MA58#MA59#MA5A#MA63

#MA66#MA68#MA69#MA6A#MA82#MA85)&!

Bit8;

NXTADDR4:

=!

C_M&(MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0B#MA0C#MA0D#MA0E

#MA0F#MA10#MA11#MA12#MA13#MA14#MA15#MA16#MA17#MA18#MA1A#MA1C

#MA1D#MA22#MA24#MA30#MA3F#MA50#MA51#MA52#MA53#MA54#MA55

#MA56#MA57#MA58#MA59#MA5A#MA5C#MA5E#MA60#MA63#MA66

#MA69#MA6A#MA82#MA85)&!

Bit8;

(5)差别测试字段定义MA81:

E0(11100000),MA82:

30(00110000)

CI3:

=!

C_M&(MA00#MA01#MA02#MA19#MA1B#MA89#MA1F#MA20#MA21#MA23#MA3A#MA3B#MA3C

#MA3D#MA3E#MA5B#MA5D#MA5F#MA61#MA62#MA64#MA65#MA67#MA89#MA81#MA83#MA84)

&NRST&!

Bit8;

CI2:

=!

C_M&(MA00#MA01#MA02#MA19#MA1B#MA89#MA1F#MA20#MA21#MA23#MA3A

#MA3B#MA3C#MA3D#MA3E#MA5B#MA5D#MA5F#MA61#MA62#MA64

#MA65#MA67#MA81#MA83#MA84)&NRST&!

Bit8;

CI1:

=!

C_M&1&1&NRST&!

Bit8;

CI0:

=!

C_M&(MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0B#MA0C#MA0D#MA0E

#MA0F#MA10#MA11#MA12#MA13#MA14#MA15#MA16#MA17#MA18#MA1A#MA1C#MA1D

#MA1E#MA22#MA24#MA30#MA31#MA3F#MA50#MA51#MA52#MA53#MA54#MA55#MA56

#MA57#MA58#MA59#MA5A#MA5C#MA5E#MA60#MA63#MA66#MA68#MA69

#MA6A#MA82#MA85)&NRST&!

Bit8;

(6)MVR定义,MA81:

4,MA82:

4(100)

!

_MIO00:

=!

(MA00#MA01#MA03#MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0B

#MA0C#MA0D#MA0E#MA0F#MA10#MA11#MA12#MA15#MA17#MA19#MA1B#MA89#MA1D

#MA1E#MA1F#MA21#MA23#MA30#MA31#MA3A#MA3B#MA3D#MA3F#MA50#MA51#MA52

#MA53#MA54#MA55#MA56#MA57#MA58#MA59#MA5A#MA5B#MA5D#MA5F#MA61#MA64

#MA66#MA67#MA69#MA6A#MA81#MA82#MA83#MA84);

_WE00:

=(MA02#MA14#MA18#MA1C#MA20#MA24#MA5C#MA5E#MA60#MA62#MA68#MA85);

(7)I2-0定义,MA81:

3,MA82:

3(011)

I200:

=(MA0B#MA11#MA12#MA14#MA1A#MA1B#MA89#MA1C#MA20#MA24#MA30#MA3C#MA3F#MA5A

#MA5C#MA5E#MA60#MA62#MA65#MA66#MA6A#MA83#MA85);

I100:

=(MA01#MA0C#MA0D#MA0E#MA0F#MA12#MA13#MA14#MA15#MA17#MA19#MA1C#MA1D

#MA1E#MA1F#MA20#MA21#MA22#MA23#MA24#MA30#MA31#MA3B#MA3D#MA3E

#MA3F#MA52#MA53#MA54#MA55#MA5B#MA5C#MA5D#MA5F#MA60#MA61#MA63

#MA64#MA67#MA81#MA82#MA84#MA85);

!

I000:

=!

(MA00#MA01#MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0C#MA0D#MA0E#MA0F

#MA11#MA12#MA13#MA14#MA15#MA17#MA19#MA1C#MA1D#MA1E#MA1F#MA20

#MA21#MA23#MA24#MA30#MA31#MA3B#MA3D#MA3F#MA50#MA51#MA52#MA53

#MA54#MA55#MA5B#MA5C#MA5D#MA5E#MA5F#MA60#MA61#MA62#MA63#MA64

#MA67#MA6A#MA81#MA82#MA84);

(7)I8-6定义,MA81:

3,MA82:

3

I700:

=(MA00#MA01#MA04#MA05#MA06#MA07#MA08#MA0B#MA0C#MA0D#MA0E#MA11#MA14#MA15

#MA17#MA1C#MA1D#MA1E#MA1F#MA21#MA22#MA23#MA24#MA31#MA3B#MA3D#MA3F

#MA50#MA51#MA52#MA54#MA5A#MA5B#MA5D#MA5F#MA61#MA64

#MA66#MA67#MA6A#MA81#MA82#MA85);

!

I600:

=!

(MA00#MA02#MA03#MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0B#MA0C

#MA0D#MA0E#MA0F#MA10#MA11#MA12#MA13#MA14#MA15#MA16#MA18#MA19#MA1A#MA1B

#MA89#MA1C#MA21#MA24#MA3A#MA3B#MA3C#MA3D#MA3E#MA3F#MA50#MA51

#MA52#MA53#MA54#MA55#MA56#MA57#MA58#MA59#MA5A#MA5C#MA5E#MA60#MA62#MA63

#MA64#MA65#MA66#MA68#MA69#MA6A#MA81#MA82#MA83#MA85);

(7)I5-3定义,MA81:

0,MA82:

0无

(8)B口A口定义,MA81:

8,0;MA82:

8,0

B30=(MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0B#MA0C#MA0D#MA0E

#MA0F#MA19#MA1C#MA50#MA51#MA52#MA53#MA54#MA55#MA63#MA81#MA82#MA84#MA85);

A30=(MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0B#MA1A#MA1B#MA89#MA50#MA51

#MA5A#MA5E#MA62#MA66#MA83);

(9)SSTSSHSCI定义,MA81:

1,1;MA82:

1,1(001,001)

SST000:

=(MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0C#MA0D#MA0F#MA50#MA51#MA52

#MA53#MA55#MA56#MA81#MA82);

SCI000:

=(MA00#MA01#MA05#MA09#MA0C#MA17#MA1D#MA1E#MA1F#MA23#MA31#MA53#MA54

#MA55#MA5B#MA5D#MA5F#MA61#MA67#MA81#MA82);

(10)DC2DC1定义,MA81:

0,0;MA82:

0,0

DC2_100:

=(MA00#MA01#MA12#MA15#MA17#MA19#MA1B#MA89#MA1D#MA1E#MA1F#MA21#MA23

#MA31#MA3A#MA3B#MA3D#MA58#MA59#MA5B#MA5C#MA5D#MA5E#MA5F#MA60#MA61

#MA62#MA64#MA67#MA83);

DC2_000:

=(MA00#MA01#MA02#MA12#MA15#MA17#MA19#MA1B#MA89#MA1D#MA1E#MA1F#MA21

#MA23#MA31#MA3A#MA3B#MA3C#MA3D#MA59#MA5B#MA5C#MA5D#MA5E#MA5F#MA60

#MA61#MA62#MA64#MA67#MA83);

按照如上代码对源代码进行修改后,利用JED编译软件生成.jed文件

具体操作步骤

①双击lc4256.syn,启动ispLEVER

②双击.abl文件

③双击CompileLogic进行编译

④双击JEDECFile,生成.jed文件

4、MACH编程

将JED文件下载到MACH器件的过程.

启动LatticeSemiconductor公司IspVMSystem软件,弹出主界面:

(1)连接好教学计算机上在线MACH编程电缆,打开教学计算机的电源。

(2)通过主界面的SCAN按钮找到在线编程器件。

(3)双击软件找到的设备LC4256v,通过Browse按钮选择已经编译好的JED文件,单击OK.

(4)重新回到主界面,点击GO命令进行编程,编程成功后关闭编程窗口。

五、编程验证及结果分析

编写一个验证程序,运行结果说明

1.第二条指令(ADTW)验证程序截图如下所示

分析:

上图是输入如下代码的结果:

2000:

MVRDR0,0005

2002:

INCR0

2004:

RET

2006:

E2002A110

G2000由分析可知代码最终结果正确

2.第三条指令(ADRM)验证程序截图如下所示

分析:

R1的原始值为1,后将R2值变换为7之后,执行程序,实现了R1和R2相加,将结果8送入R1中。

经过u命令进行验证,结果正确。

六、实验体会

经过一个下午的实验,我们终于完成了指令的扩展实验,得出了实验结果。

在这个过程中我不仅学到了很多知识,而且最重要的是我对计算机有了更加深刻的了解。

通过本次实验,结合对以前课上对指令的理解,我更彻底的了解了指令的执行原理,在本次实验中,最重要的是对代码的修改部分,这就要建立在对每一条微指令的属性值的正确理解上,对应具体情况对每一条指令进行相应修改,从而才能正确编译,最后经过代码的验证已经编译好的文件,最终验证指令的扩展成功。

在这个过程中只要错了一步就不能完成最后的验证,经过了好几次我们才把文件修改正确完成验证。

在试验的过程中,我们充分的理解了计算机微程序控制器的组成和设计技术,包括Am2910期间的功能和具体用法,教学计算机的总体组成和各部件之间的连接方法。

让我们记忆最深刻的是实验的过程中,因为一小步的错误致使我们花了很长的时间才完成实验。

也因为这样,我们才意识到学习计算机的重要性,因为只有真正的认真者,真正能够耐下心来完成这个学习过程的人才是能够有大成就的,就想老师在试验中说的,其实这个实验很简单,只不过需要的是你们的耐心与认真。

关于计算机硬件和软件的学习还在继续,本次实验也是我们学习道路上的垫脚石。

我相信,即使再难的实验,只要态度好,认真做,也会轻松的完成。

而我们要做的就是总结经验,然后深入思考,最后再次验证,才能得到最后的结果。

计算机的学习路漫漫其修远兮,我将用我的亲身体验来证明。

 

教师评价

评定项目

A

B

C

D

评定项目

A

B

C

D

基本部件原理清楚

操作熟练

微指令设计合理

解析完整

微程序功能正确

文字流畅

验证程序运行正确

报告规范

其他:

 

评价教师签名:

年月日

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

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

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

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