复杂模型机实验.docx

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

复杂模型机实验.docx

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

复杂模型机实验.docx

复杂模型机实验

5.3复杂模型机设计实验

5.3.1实验目的

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

5.3.2实验设备

PC机一台,TD-CMA实验系统一套。

5.3.3实验原理

下面讲述一下模型计算机的数据格式及指令系统。

1.数据格式

模型机规定采用定点补码表示法表示数据,字长为8位,8位全用来表示数据(最高位不表示符号),数值表示范围是:

0≤X≤28-1。

2.指令设计

模型机设计三大类指令共十五条,其中包括运算类指令、控制转移类指令,数据传送类指令。

运算类指令包含三种运算,算术运算、逻辑运算和移位运算,设计有6条运算类指令,分别为:

ADD、AND、INC、SUB、OR、RR,所有运算类指令都为单字节,寻址方式采用寄存器直接寻址。

控制转移类指令有三条HLT、JMP、BZC,用以控制程序的分支和转移,其中HLT为单字节指令,JMP和BZC为双字节指令。

数据传送类指令有IN、OUT、MOV、LDI、LAD、STA共6条,用以完成寄存器和寄存器、寄存器和I/O、寄存器和存储器之间的数据交换,除MOV指令为单字节指令外,其余均为双字节指令。

3.指令格式

所有单字节指令(ADD、AND、INC、SUB、OR、RR、HLT和MOV)格式如下:

7654

32

10

OP-CODE

RS

RD

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

RS或RD

选定的寄存器

00

01

10

11

R0

R1

R2

R3

IN和OUT的指令格式为:

7654

(1)

32

(1)

10

(1)

7—0

(2)

OP-CODE

RS

RD

P

其中括号中的1表示指令的第一字节,2表示指令的第二字节,OP-CODE为操作码,RS为源寄存器,RD为目的寄存器,P为I/O端口号,占用一个字节,系统的I/O地址译码原理见图5-3-1(在地址总线单元)。

图5-3-1I/O地址译码原理图

由于用的是地址总线的高两位进行译码,I/O地址空间被分为四个区,如表5-3-1所示:

表5-3-1I/O地址空间分配

A7A6

选定

地址空间

00

IOY0

00-3F

01

IOY1

40-7F

10

IOY2

80-BF

11

IOY3

C0-FF

系统设计五种数据寻址方式,即立即、直接、间接、变址和相对寻址,LDI指令为立即寻址,LAD、STA、JMP和BZC指令均具备直接、间接、变址和相对寻址能力。

LDI的指令格式如下,第一字节同前一样,第二字节为立即数。

7654

(1)

32

(1)

10

(1)

7—0

(2)

OP-CODE

RS

RD

data

LAD、STA、JMP和BZC指令格式如下。

7654

(1)

32

(1)

10

(1)

7—0

(2)

OP-CODE

M

RD

D

其中M为寻址模式,具体见表5-3-2,以R2做为变址寄存器RI。

表5-3-2寻址方式

寻址模式M

有效地址E

说 明

00

01

10

11

E=D

E=(D)

E=(RI)+D

E=(PC)+D

直接寻址

间接寻址

RI变址寻址

相对寻址

4.指令系统

本模型机共有15条基本指令,表5-3-3列出了各条指令的格式、汇编符号、指令功能。

表5-3-3指令描述

5.3.4总体设计

本模型机的数据通路框图如图5-3-2所示。

图5-3-2数据通路框图

和前面的实验相比,复杂模型机实验指令多,寻址方式多,只用一种测试已不能满足设计要求,为此指令译码电路需要重新设计。

如图5-3-3所示在IR单元的INS_DEC中实现。

图5-3-3指令译码原理图

本实验中要用到四个通用寄存器R3…R0,而对寄存器的选择是通过指令的低四位,为此还得设计一个寄存器译码电路,在IR单元的REG_DEC(GAL16V8)中实现,如图5-3-4所示。

图5-3-4寄存器译码原理图

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

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

表5-3-4微指令格式

图5-3-5微程序流程图

表5-3-5二进制代码表

地址

十六进制表示

高五位

S3-S0

A字段

B字段

C字段

UA5-UA0

00

000001

00000

0000

000

000

000

000001

01

006D43

00000

0000

110

110

101

000011

03

107070

00010

0000

111

000

001

110000

04

002405

00000

0000

010

011

000

000101

05

04B201

00000

1001

011

001

000

000001

06

002407

00000

0000

010

011

000

000111

07

013201

00000

0010

011

001

000

000001

08

106009

00010

0000

110

000

000

001001

09

183001

00011

0000

011

000

000

000001

0A

106010

00010

0000

110

000

000

010000

0B

000001

00000

0000

000

000

000

000001

0C

103001

00010

0000

011

000

000

000001

0D

200601

00100

0000

000

001

100

000001

0E

005341

00000

0000

101

001

101

000001

0F

0000CB

00000

0000

000

000

011

001011

10

280401

00101

0000

000

010

000

000001

11

103001

00010

0000

011

000

000

000001

12

06B201

00000

1101

011

001

000

000001

13

002414

00000

0000

010

011

000

010100

14

05B201

00000

1011

011

001

000

000001

15

002416

00000

0000

010

011

000

010110

16

01B201

00000

0011

011

001

000

000001

17

002418

00000

0000

010

011

000

011000

18

02B201

00000

0101

011

001

000

000001

1B

005341

00000

0000

101

001

101

000001

1C

10101D

00010

0000

001

000

000

011101

1D

10608C

00010

0000

110

000

010

001100

1E

10601F

00010

0000

110

000

000

011111

1F

101020

00010

0000

001

000

000

100000

20

10608C

00010

0000

110

000

010

001100

28

101029

00010

0000

001

000

000

101001

29

00282A

00000

0000

010

100

000

101010

2A

04E22B

00000

1001

110

001

000

101011

2B

04928C

00000

1001

001

001

010

001100

2C

10102D

00010

0000

001

000

000

101101

2D

002C2E

00000

0000

010

110

000

101110

2E

04E22F

00000

1001

110

001

000

101111

2F

04928C

00000

1001

001

001

010

001100

30

001604

00000

0000

001

011

000

000100

31

001606

00000

0000

001

011

000

000110

32

006D48

00000

0000

110

110

101

001000

33

006D4A

00000

0000

110

110

101

001010

34

003401

00000

0000

011

010

000

000001

35

000035

00000

0000

000

000

000

110101

36

006D51

00000

0000

110

110

101

010001

37

001612

00000

0000

001

011

000

010010

38

001613

00000

0000

001

011

000

010011

39

001615

00000

0000

001

011

000

010101

3A

001617

00000

0000

001

011

000

010111

3B

000001

00000

0000

000

000

000

000001

3C

006D5C

00000

0000

110

110

101

011100

3D

006D5E

00000

0000

110

110

101

011110

3E

006D68

00000

0000

110

110

101

101000

3F

006D6C

00000

0000

110

110

101

101100

根据现有指令,在模型机上实现以下运算:

从IN单元读入一个数据,根据读入数据的低4位值X,求1+2+…+X的累加和,01H到0FH共15个数据存于60H到6EH单元。

根据要求可以得到如下程序,地址和内容均为二进制数。

地址内容助记符说明

0000000000100000;START:

INR0,00H从IN单元读入计数初值

0000000100000000

0000001001100001;LDIR1,0FH立即数0FH送R1

0000001100001111

0000010000010100;ANDR0,R1得到R0低四位

0000010101100001;LDIR1,00H装入和初值00H

0000011000000000

0000011111110000;BZCRESULT计数值为0则跳转

0000100000010110

0000100101100010;LDIR2,60H读入数据始地址

0000101001100000

0000101111001011;LOOP:

LADR3,[RI],00H从MEM读入数据送R3,

变址寻址,偏移量为00H

0000110000000000

0000110100001101;ADDR1,R3累加求和

0000111001110010;INCRI变址寄存加1,指向下一数据

0000111101100011;LDIR3,01H装入比较值

0001000000000001

0001000110001100;SUBR0,R3

0001001011110000;BZCRESULT相减为0,表示求和完毕

0001001100010110

0001010011100000;JMPLOOP未完则继续

0001010100001011

0001011011010001;RESULT:

STA70H,R1和存于MEM的70H单元

0001011101110000

0001100000110100;OUT40H,R1和在OUT单元显示

0001100101000000

0001101011100000;JMPSTART跳转至START

0001101100000000

0001110001010000;HLT停机

0110000000000001;数据

0110000100000010

0110001000000011

0110001100000100

0110010000000101

0110010100000110

0110011000000111

0110011100001000

0110100000001001

0110100100001010

0110101000001011

0110101100001100

0110110000001101

0110110100001110

0110111000001111

5.3.5实验步骤

1.按图5-3-6连接实验线路,仔细检查接线后打开实验箱电源。

2.写入实验程序,并进行校验,分两种方式,手动写入和联机写入。

1)手动写入和校验

(1)手动写入微程序

将时序与操作台单元的开关KK1置为‘停止’档,KK3置为‘编程’档,KK4置为‘控存’档,KK5置为‘置数’档。

使用CON单元的SD05——SD00给出微地址,IN单元给出低8位应写入的数据,连续两次按动时序与操作台的开关ST,将IN单元的数据写到该单元的低8位。

将时序与操作台单元的开关KK5置为‘加1’档。

IN单元给出中8位应写入的数据,连续两次按动时序与操作台的开关ST,将IN单元的数据写到该单元的中8位。

IN单元给出高8位应写入的数据,连续两次按动时序与操作台的开关ST,将IN单元的数据写到该单元的高8位。

重复

四步,将表5-3-5的微代码写入2816芯片中。

(2)手动校验微程序

将时序与操作台单元的开关KK1置为‘停止’档,KK3置为‘校验’档,KK4置为‘控存’档,KK5置为‘置数’档。

使用CON单元的SD05——SD00给出微地址,连续两次按动时序与操作台的开关ST,MC单元的指数据指示灯M7——M0显示该单元的低8位。

将时序与操作台单元的开关KK5置为‘加1’档。

连续两次按动时序与操作台的开关ST,MC单元的指数据指示灯M15——M8显示该单元的中8位,MC单元的指数据指示灯M23——M16显示该单元的高8位。

重复

四步,完成对微代码的校验。

如果校验出微代码写入错误,重新写入、校验,直至确认微指令的输入无误为止。

(1)手动写入机器程序

将时序与操作台单元的开关KK1置为‘停止’档,KK3置为‘编程’档,KK4置为‘主存’档,KK5置为‘置数’档。

使用CON单元的SD7——SD0给出地址,IN单元给出该单元应写入的数据,连续两次按动时序与操作台的开关ST,将IN单元的数据写到该存储器单元。

将时序与操作台单元的开关KK5置为‘加1’档。

IN单元给出下一地址(地址自动加1)应写入的数据,连续两次按动时序与操作台的开关ST,将IN单元的数据写到该单元中。

然后地址会又自加1,只需在IN单元输入后续地址的数据,连续两次按动时序与操作台的开关ST,即可完成对该单元的写入。

亦可重复

两步,将所有机器指令写入主存芯片中。

(2)手动校验机器程序

将时序与操作台单元的开关KK1置为‘停止’档,KK3置为‘校验’档,KK4置为‘主存’档,KK5置为‘置数’档。

使用CON单元的SD7——SD0给出地址,连续两次按动时序与操作台的开关ST,CPU内总线的指数据指示灯D7——D0显示该单元的数据。

将时序与操作台单元的开关KK5置为‘加1’档。

连续两次按动时序与操作台的开关ST,地址自动加1,CPU内总线的指数据指示灯D7——D0显示该单元的数据。

此后每两次按动时序与操作台的开关ST,地址自动加1,CPU内总线的指数据指示灯D7——D0显示该单元的数据,继续进行该操作,直至完成校验,如发现错误,则返回写入,然后校验,直至确认输入的所有指令准确无误。

亦可重复

两步,完成对指令码的校验。

如果校验出指令码写入错误,重新写入、校验,直至确认指令的输入无误为止。

2)联机写入和校验

联机软件提供了微程序和机器程序下载功能,以代替手动读写微程序和机器程序,但是微程序和机器程序得以指定的格式写入到以TXT为后缀的文件中,本次实验程序如下,程序中分号‘;’为注释符,分号后面的内容在下载时将被忽略掉。

图5-3-6实验接线图

;//***************************************//

;////

;//复杂模型机实验指令文件//

;////

;//ByTangDuCO.,LTD//

;////

;//***************************************//

;//******StartOfMainMemoryData******//

$P0020;START:

INR0,00H从IN单元读入计数初值

$P0100

$P0261;LDIR1,0FH立即数0FH送R1

$P030F

$P0414;ANDR0,R1得到R0低四位

$P0561;LDIR1,00H装入和初值00H

$P0600

$P07F0;BZCRESULT计数值为0则跳转

$P0816

$P0962;LDIR2,60H读入数据始地址

$P0A60

$P0BCB;LOOP:

LADR3,[RI],00H从MEM读入数据送R3,

变址寻址,偏移量为00H

$P0C00

$P0D0D;ADDR1,R3累加求和

$P0E72;INCRI变址寄存加1,指向下一数据

$P0F63;LDIR3,01H装入比较值

$P1001

$P118C;SUBR0,R3

$P12F0;BZCRESULT相减为0,表示求和完毕

$P1316

$P14E0;JMPLOOP未完则继续

$P150B

$P16D1;RESULT:

STA70H,R1和存于MEM的70H单元

$P1770

$P1834;OUT40H,R1和在OUT单元显示

$P1940

$P1AE0;JMPSTART跳转至START

$P1B00

$P1C50;HLT停机

$P6001;数据

$P6102

$P6203

$P6304

$P6405

$P6506

$P6607

$P6708

$P6809

$P690A

$P6A0B

$P6B0C

$P6C0D

$P6D0E

$P6E0F

;//*****EndOfMainMemoryData*****//

;//**StartOfMicroControllerData**//

$M00000001;NOP

$M01006D43;PC->AR,PC加1

$M03107070;MEM->IR,P<1>

$M04002405;RS->B

$M0504B201;A加B->RD

$M06002407;RS->B

$M07013201;A与B->RD

$M08106009;MEM->AR

$M09183001;IO->RD

$M0A106010;MEM->AR

$M0B000001;NOP

$M0C103001;MEM->RD

$M0D200601;RD->MEM

$M0E005341;A->PC

$M0F0000CB;NOP,P<3>

$M10280401;RS->IO

$M11103001;MEM->RD

$M1206B201;A加1->RD

$M13002414;RS->B

$M1405B201;A减B->RD

$M15002416;RS->B

$M1601B201;A或B->RD

$M17002418;RS->B

$M1802B201;A右环移->RD

$M1B005341;A->PC

$M1C10101D;MEM->A

$M1D10608C;MEM->AR,P<2>

$M1E10601F;MEM->AR

$M1F101020;MEM->A

$M2010608C;MEM->AR,P<2>

$M28101029;MEM->A

$M2900282A;RI->B

$M2A04E22B;A加B->AR

$M2B04928C;A加B->A,P<2>

$M2C10102D;MEM->A

$M2D002C2E;PC->B

$M2E04E22F;A加B->AR

$M2F04928C;A加B->A,P<2>

$M30001604;RD->A

$M31001606;RD->A

$M32006D48;PC->AR,PC加1

$M33006D4A;PC->AR,PC加1

$M34003401;RS->RD

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

当前位置:首页 > 工作范文 > 行政公文

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

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