模型机实验报告.docx

上传人:b****7 文档编号:9407926 上传时间:2023-02-04 格式:DOCX 页数:22 大小:510.03KB
下载 相关 举报
模型机实验报告.docx_第1页
第1页 / 共22页
模型机实验报告.docx_第2页
第2页 / 共22页
模型机实验报告.docx_第3页
第3页 / 共22页
模型机实验报告.docx_第4页
第4页 / 共22页
模型机实验报告.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

模型机实验报告.docx

《模型机实验报告.docx》由会员分享,可在线阅读,更多相关《模型机实验报告.docx(22页珍藏版)》请在冰豆网上搜索。

模型机实验报告.docx

模型机实验报告

 

哈尔滨工程大学

 

实验报告

 

实验名称:

复杂模型机设计与实现

班级:

学号:

姓名:

实验时间:

成绩:

指导教师:

程旭辉附小晶

 

实验室名称:

计算机专业实验中心

 

一、实验名称:

复杂模型机的设计与实现

二、实验目的:

1.综合运用所学计算机原理知识,设计并实现较为完整的计算机。

2.设计指令系统。

3.编写简单程序,在所设计的复杂模型计算机上调试运行。

三、实验设备:

GW-48CPP系列计算机组成原理实验系统。

四、实验原理:

1.数据格式

模型机采用定点补码表示法表示数据,字长为8位,其格式如下:

7

6543210

符号

尾数

其中第7位为符号位,数值表示范围是:

-1≤1。

2.指令格式

所设计的指令分为四大类共十六条,其中包括算术逻辑指令、I/O指令、访问、转移指令和停机指令。

(1)算术逻辑指令

设计9条算术逻辑指令并用单字节表示,采用寄存器直接寻址方式,其格式如下:

7654

32

10

OP-CODE

rs

rd

其中,OP-CODE为操作码,rs为源寄存器,rd为目的寄存器,并规定:

Rs或rd

选定的寄存器

00

01

10

R0

R1

R2

(2)访问指令及转移指令

访问指令有2条,即存数(STA)、取数(LDA);2条转移指令,即无条件转移(JMP)、结果为零或有进位转移指令(BZC),指令格式为:

76

54

32

10

00

M

OP-CODE

rd

D

其中,OP-CODE为操作码,rd为目的寄存器地址(用于LDA、STA指令)。

D为位移量(正负均可),M为寻址模式,其定义如下:

寻址模式M

有效地址E

说明

00

01

10

11

E=D

E=(D)

E=(RI)+D

E=(PC)+D

直接寻址

间接寻址

RI变址寻址

相对寻址

在本模型机中规定变址寄存器RI为寄存器R2。

(3)I/O指令

输入(IN)和输出(OUT)指令采用单字节指令,其格式如下:

7654

32

10

OP-CODE

addr

rd

其中,addr=01时选中“INPUTDEVICE”中的键盘输入设备,addr=10时,选中“OUTPUTDEVICE”中的LCD点阵液晶屏作为输出设备。

(4)停机指令

指令格式如下:

7654

32

10

OP-CODE

00

00

3.指令系统

共有16条基本指令,其中算术逻辑指令7条,访问内存指令和程序控制指令4条,输入/输出指令2条,其他指令1条。

各条指令的格式、汇编符号、功能如表7-1所示。

助记符号

指令格式

功能

CLRrd

MOVrs,rd

ADCrs,rd

SBCrs,rd

INCrd

ANDrs,rd

COMrd

RRCrs,rd

RLCrs,rd

0111

00

rd

0→rd

1000

rs

rd

rs→rd

1001

rs

rd

rs+rd+cy→rd

1010

rs

rd

rs–rd–cy→rd

1011

rd

rd+1→rd

1100

rd

rs∧rd→rd

1101

rd

→rd

1110

rd

1111

rd

LDAM,D,rd

STAM,D,rd

JMPM,D

BZCM,D

00

M

00

rd

D

E→rs

00

M

01

rd

D

rd→E

00

M

10

rd

D

E→PC

00

M

11

rd

D

当CY=1或Z=1时,

E→PC

INaddr,rd

OUTaddr,rd

0100

01

rd

addr→rd

0101

10

rd

rd→addr

HALT

0110

00

00

停机

本模型机的数据通路框图如图7-1。

根据机器指令系统要求,设计微程序流程图及确定微地址,如图7-2。

图7-2微程序流程图

五、实验内容:

按照系统建议的微指令格式,参照微指令流程图,将每条微指令代码化,译成二进制代码表,并将二进制代码表转换为联机操作时的十六进制格式文件。

微代码定义如表7-1所示。

24

23

22

21

20

19

18

17

16

151413

121110

987

6

5

4

3

2

1

S3

S2

S1

S0

M

Cn

WE

A9

A8

A

B

C

uA5

uA4

uA3

uA2

uA1

uA0

微程序

 

六、实验框图设计:

模型机设计主要是包括:

控制器、存储器、运算器、输入、输出。

主要的设计是SE-5是根据FC,FZ,T4,P[4..1],SWA,SWB,I[7..2]来控制输出的SE[1..6],控制地址的跳转。

当SE输出0时Q输出1,当SE输出1时,Q输出D;

 

SE-5:

(SE6-1):

在波形图中实现跳转的时候,会出现如图:

刚开始对此变化不理解,自习观察SE6-1时,SE[6..1]作为控制端,SE为1时Q输出D,SE为0时Q输出1,达到跳转的功能,但是还隐含一个细节是:

在SE有0的时候,SE不用T2的时钟触发,地址会直接会发生跳转,所以会出现如图微地址由20直接跳到31。

 

1和3:

移位寄存器:

SHEFT和控制移位器的进位:

说明:

移位寄存器的M位有M[20]来控制,S[1..0]由M[22..21]来控制,控制进位由SHE_C0来控制,假设上次的移位器有进位,那么上次的SHEFT_CN输出1,在控制移位器进位的器件上,当需要进位时,即:

AR=1,(通过观察微指令开看AR进位时才选中)那么会有进位,此时在下一次带进位的移位时,SHE_C0=1;

2.控制ALU进位的器件:

说明:

在此器件中,AR为控制端,上次的进位溢出位FC连到D0上M[19]与Q非的或,连接到ALU_CN,当M[19]=1时表示不带进位的运算,那么ALU_CN的结果肯定是1,在下次运算时肯定是不带进位的运算。

当M[19]=0,时,表示运算器运算是带进位的运算,若上次的运算FC=1,若选中AR则,表示本次的运算时带进位的运算,则在T2周期时,Q=1,那么ALU_CN的输出是0,将结果输入到ALU的进位控制端,控制本次的进位运算。

4.通过编程控制可编码寄存器的选择:

.

内部结构:

说明:

这是通过两个2-4译码器组合而成的选择器,根据decoder_b产生的控制信号,并且在编程时编写的

I0——I3指令来控制,RS,RD,RI.寄存器的选择。

为了方便起见,在实验过程中用一一对应的实现:

R0RS;

R1RD;R2RI;

七、程序表设计:

实验程序如下:

根据框图的设计以及书中的指令系统功能表,在编码的时候考虑到的情况主要是用指令指定哪个寄存器,以及在实现LDA,STA,JMP,BZC,是选用的哪种寻址方式,为了全面的测试框图实现功能的正确性,在设计程序流程的时候所有的功能,以及所有的寻址方式都用到了,下面就是我设计的实验程序:

地址

数据

16进制表示

助记符

00

01000001

41

IN:

SW->RD(27)

01

01000000

40

IN:

SW->RS(26)

02

A1

SBC:

(RD-RS)=>RD

03

01011001

59

OUT:

RD=>LED

04

91

ADC:

(RD+RS)=>RD

05

01011001

59

OUT:

RD=>LED

06

B1

INC:

RD+1=>RD

07

01011001

59

OUT:

RD=>LED

08

C1

AND:

(RD)AND(RS)=>RD

09

01011001

59

OUT:

RD=>LED

0A

D1

COM:

RD取反=>RD

0B

01011001

59

OUT:

RD=>LED

0C

E1

RRC:

将RS中的数循环左移

0D

01011001

59

OUT:

RD=>LED

0E

F1

RLC:

将RS中的数循环右移

0F

01011001

59

OUT:

RD=>LED

10

81

MOV:

RS->RD

11

01011001

59

OUT:

RD=>LED

12

01000010

42

IN:

SW=>RI(存入的数:

10H)

13

00000001

01

LDA:

RAM=>RD

14

00011110

1E

把1E里的数送到RD中

15

00010101

15

STA:

RD=>RAM

16

00011111

1F

将RD中的数存到1F的地址中去

17

00101010

2A

JMP:

18

00010001

11

在变址寻址中用到(10H+11H)

19

00111101

3D

BZC:

1A

00000011

03

没有用到

1B

01100000

60

HALT:

停机指令

1C

00000000

00

没有用到

1D

00000000

00

没有用到

1E

00001111

0F

在执行LDA是会用到0F

1F

00001111

0F

在执行STA时会存到此地址

20

00000000

00

在执行LDA存到此位置

21

01011001

OUT

读出RD中的数

22

00101010

2A

JMP:

跳回到断点位置

23

00001001

09

执行JMP时用到此数

将设计好的程序表写入到内存中,然后读内存,然后执行程序。

七、实验过程分析:

模型机过程分析:

1.首先在ROM中已经存入了微代码,这里,在实验中发现35是错误的,正确的应该是:

01A426,这是通过

实验验证的。

在SE-5的控制下,产生SE信号,控制微代码的后六位是否发生改变,从而判定是否发生跳

转,产生的微地址送到uaddr中,指示到下一条的指令。

2.每一条微代码,通过decodera,decoderb,decoderc,decoder2-4产生相应的控制信号,在观察了四个器

件的的内部结构后,得出decodera选中的信号是输出1,得出decoderb选中的信号是输出0,得出

decoderc选中的信号是输出1,decoder2-4输出0,这样在结合74148优先权编码器后才能完整的控制总

线以及相应的输出。

3.reg_3是可编程寄存器,利用指令可以选用不同的寄存器,在此模型机自己设计了一个DECODERREG部件

通过,RD_B,RD_B,RD_B,以及I3-I0来控制选用相应的寄存器。

为了方便起见,在实验过程中用一一对应的实现:

R0RS;R1RD;R2RI;

4.在微程序流程图中在进行相对寻址时框图47是错误的应该是:

PCBUS,BUSDR2;

波形图分析:

1.开始执行程序,执行指令是40,执行的是IN指令,将27存入了指定的寄存器RD。

说明:

为编程方便用I0,I1,I2,I3,来控制选取:

2.此时指令是:

40,将26存入RS:

3.指令:

A1:

(RD-RS)=27-26=01,将结果存入RD中。

4.将RD中的结果输出到led中显示:

此时的指令是(OUT:

59)。

5.执行ADC(91)指令:

(RS+RD)=(26+01)=27存入RD中:

6.执行OUT指令,将RD中的结果输出:

7.执行INC指令,并将加1的结果输出到led中:

8.执行AND(C1)指令,(RD)AND(RS)=(28AND26)=20,然后执行OUT(59)指令,并将结果输出到led中显示:

9.执行COM取反指令,RD中的值是20取反后为DF,并执行OUT指令后在led中显示:

10.执行RRC指令,RS中值是26循环右移后的结果是13,并执行OUT指令,在led中显示:

11.执行RLC指令,将RS中的26循环左移后的结果是4C并将结果在led中显示:

12.执行MOV指令(RS->RD)=26,并执行OUT指令,在led中显示:

13.先执行IN指令(01000010),将10存入到指定的RI寄存器中,然后执行LDA指令,将指令中的0F存入到RD中。

14.通过间接寻址方式执行STA(15)存数指令,将RD中的0F存入到RAM中:

15.通过变址寻址方式执行JMP指令,跳到21执行OUT指令,读出LDA中RD中的数:

16.执行OUT指令,将RD中的数读出来,然后执行JMP指令跳回到断点地址继续执行。

17.通过相对寻址方式,执行BZC指令:

在PC值为1A时将PC送到AR,此时RAM里的值是03H,并送入DR1,在执行完微地址为23后,PC的值变为1B,将1BH送入DR2中,03H与1BH相加,相加后FC与FZ的值都不为1,所以在进行P(3)测试后跳到了44.

八、实验结果中遇到的问题:

实验结果中遇到的问题:

在刚开始的时候,在看流程图时,在刚开始的时候,明白微地址的跳转是如何实现的,但是每个框图的具体实现却搞得不是很明白,在看明白了decodea,decodeb,decodec,和74148以及reg_3的内部结构,才明白了具体的电路,以及最终的信号输出的正负,如何控制总线的选择,在不同的时钟周期,实现不同的功能。

在复杂的模型机设计的时候,对于可编码寄存器的选择,以及ALU以及SHEFT的进位控制端的控制信号的实现。

在设计程序表的时候花的时间比较多,对于实现JMP跳转的时候,对于它的跳转煞费苦心,要实现原来书本中提到的断点跳转功能。

九、实验体会:

通过模型机的实验,对于计算机五大部件的协同工作,以及微命令的产生和控制信号的控制的具体实现,在实验中遇到困难和问题时与队友惊醒商量,互相提出方案,设计部件,实现要得到的功能。

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

当前位置:首页 > 小学教育 > 数学

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

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