扩展8255课程设计.docx

上传人:b****6 文档编号:7954781 上传时间:2023-01-27 格式:DOCX 页数:19 大小:481.20KB
下载 相关 举报
扩展8255课程设计.docx_第1页
第1页 / 共19页
扩展8255课程设计.docx_第2页
第2页 / 共19页
扩展8255课程设计.docx_第3页
第3页 / 共19页
扩展8255课程设计.docx_第4页
第4页 / 共19页
扩展8255课程设计.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

扩展8255课程设计.docx

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

扩展8255课程设计.docx

扩展8255课程设计

一、课设目的及内容:

目的:

(1)在构成一台完整的模型机的基础上,控制真实的外围接口芯片,进行基本的8255并行口实验。

(2)熟悉用微过程控制模型机的数据通路,使学生掌握系统各功能模块的基本工作原理。

(3)培养学生单片机应用系统的设计能力;

(4)使学生较熟练地应用电子线路CAD工具完成单片机系统的硬件设计任务;

(5)学习设计与调试计算机的基本步骤及方法。

(6)将预习时编写的五条机器指令的微程序上机调试,通过执行机器指令,掌握各部联机运行情况,进一步建立整机概念。

内容:

(1)分析所设计系统中各功能模块的工作原理;

1.设计两条端口读写指令,以二进制数码开关作为8255的输入口,LED显示灯作为8255的输出口。

2.根据数据通路实现实验连线

3.熟悉系统数据通路,包括原理框图与实验箱布置。

4.编写一段程序,验证指令执行的正确性。

(2)选用合适的器件(芯片);

(3)提出系统的设计方案(要有系统电气原理图);

1.根据系统流程图,编写程序与微程序并调试通过

2.记录运行情况

(4)对所设计电路进行调试。

1.将指令做适当的修改操作并调试通过

2.验收,完成相应的实验报告

二、程序设计基本原理:

(1)实验模型机CPU结构

[1]运算器单元(ALUUINT)

运算器单元由以下部分构成:

两片74LS181构成了并-串型8位ALU;两个8位寄存器DR1和DR2为暂存工作寄存器,保存参数或中间运算结果。

ALU的S0~S3为运算控制端,Cn为最低进位输入,M为状态控制端。

ALU的输出通过三态门74LS245连到数据总线上,由ALU-B控制该三态门。

[2]寄存器堆单元(REGUNIT)

该部分由3片8位寄存器R0、R1、R2组成,它们用来保存操作数用中间运算结构等。

三个寄存器的输入输出均以连入数据总线,由LDRi和RS-B根据机器指令进行选通。

[3]指令寄存器单元(INSUNIT)

指令寄存器单元中指令寄存器(IR)构成模型机时用它作为指令译码电路的输入,实现程序的跳转,由LDIR控制其选通。

[4]时序电路单元(STATEUNIT)

用于输出连续或单个方波信号,来控制机器的运行。

[5]微控器电路单元(MICRO-CONTROLLERUNIT)

微控器主要用来完成接受机器指令译码器送来的代码,使控制转向相应机器指令对应的首条微代码程序,对该条机器指令的功能进行解释或执行的工作。

由输入的W/R信号控制微代码的输出锁存。

由程序计数器(PC)和地址寄存器(AR)实现程序的取指功能。

[6]逻辑译码单元(LOGUNIT)

用来根据机器指令及相应微代码进行译码使微程序转入相应的微地址入口,从而实现微程序的顺序、分支、循环运行,及工作寄存器R0、R1、R2的选通译码。

[7]主存储器单元(MAINMEM)

用于存储实验中的机器指令。

[8]输入输出单元(INPUT/OUTPUTDEVICE)

输入单元使用八个拨动开关作为输入设备,SW-B控制选通信号。

输出单元将输入数据置入锁存器后由两个数码管显示其值。

数据通路框图

(1)

扩展8255并行口实验

这个实验的原理图如上图

(1)所示。

部件实验过程中,各部件单元的控制信号是人为模拟产生的,而本次实验将能在微程序控制下自动产生各部件单元控制信号,实现特定指令的功能。

计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应与一个微程序。

本实验采用4条机器指令:

IN(输入)、COUT(端口写指令)、CIN(端口读指令)、JMP(无条件转移)其指令格式如下(前4位为操作码):

助记符机器指令码说明

IN00000000“外部开关量输入”的开关状态→R0

CINaddr00100000xxxxxxxxBUS→[addr]

COUTaddr00110000xxxxxxxx[addr]→BUS

JMPaddr01000000xxxxxxxxaddr→PC

其中IN为单字长(8位),其余为双字长指令,xxxxxxxx为addr对应的二进制地址码:

为了向RAM中装入程序和数据,检查写入是否正确,并能启动程序执行,还必须设计三个控制台操作微程序。

存储器读操作(KRD):

拨动总清开关CLR后,控制台开关SWB、SWA为“00”时,按START微动开关,可对RAM连续手动读操作。

存储器写操作(KWE):

拨动总清开关CLR后,控制台开关SWB、SWA为“01”时,按START微动开关,可对RAM进行连续手动写入。

启动程序:

拨动总清开关CLR后,控制台开关SWB、SWA置为“11”时,按START微动开关,即可转入到第01号“取址”微指令,启动程序运行。

SWB

SWA

控制台指令

0

0

读内存(KRD)

0

1

写内存(KWE)

1

1

启动程序(RP)

上述三条控制台指令用两个开关SWB、SWA的状态来设置,其定义如下:

微代码定义如下表所示:

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

B1

B2

A

B

C

uA5

uA4

uA3

uA2

uA1

uA0

A字段B字段C字段

其中UA5-UA0为6位的后续微地址,A、B、C三个译码字段,分别由三个控制位译码出多位。

C字段中的P

(1)-P(4)是四个测试字位。

其功能是根据机器指令及相应微代码进行译码,使微程序转入相应的微地址入口,从而实现微程序的顺序、分支、循环运行。

B字段中的RD-B、R0-B、RI-B、分别为源寄存器选通信号、目的寄存器选通信号及变址寄存器选通信号其功能是根据机器指令来进行三个工作寄存R0、R1、R2的选通译码。

A8、A9为控制选通信号,当A8A9为00时,选通SW-B;为01时,选通CE;为10时,选通LED-B;为11时,表示均未选通。

S0~S3为运算控制控制信号,Cn为进位控制信号,M为状态控制控制信号。

原理如下图(图2),图中I0~I3为指令寄存器的第0~3位,LDRi打入工作寄存器信号的译码器使能控制位。

当拟定“取指”微指令时,该微指令的判别测试字段为P

(1)测试。

由于“取指”微指令是所有微程序都使用的公用微指令,因此P

(1)测试结果出现多路分支。

本机用指令寄存器的前4位(IR7-IR4)作为测试条件,出现5路分支,占用5个固定微地址单元。

控制台操作为P(4)测试,它以控制台开关SWB、SWA作为测试条件,出现了3路分支,占用3个固定微地址单元。

当分支微地址单元固定后,剩下的其它地方就可以一条微指令占用控存一个微地址单元随意填

本系统有两种I/O外部设备,一种是二进制代码开关,它作为输入设备(INPUTDEVICE);另一种是数码块,它作为输出设备(OUTPUTDEVICE)。

输入时,二进制开关数据直接经过三态门送到外部数据总线上,只要开关状态不变,输入的信息也不变。

输出时,将输出数据送到外部数据总线上,当写信号(W/R)有效时,将数据打入输出锁存器,驱动数码块显示。

(注意:

微程序流程图上的单元地址为8进制。

三、二进制微代码表设计:

(1)、基本的设计和实现的程序设计如下:

A、IN00000000“外部开关量输入”的开关状态→R0

B、CINaddr00100000BUS→[addr]

C、COUTaddr00110000[addr]→BUS

D、JMPaddr01000000addr→PC

机器指令程序微指令程序

$P0044$M00088105$M1EB7ED05

$P01F0$M0182ED05$M1FB9ED05

$P0203$M0250C004$M20019004

$P03E0$M0304A004$M21018406

$P0400$M04A0E004$M2281DB05

$P05F0$M0506E004$M23E48005

$P0601$M0607A004$M24018005

$P0708$M07A0E004$M25A0AA95

$P0800$M088AED05$M2627A004

$M098CED05$M2728BC05

$M0A3BA004$M29A0AA95

$M0B018005$M2A2BB405

$M0C3C2004$M2B419B95

$M0D0EA004$M2C2DA405

$M0E0FB605$M2D6EAB05$M0F25EA95$M2E2FAA0D

$M1083ED05$M2F30AA05

$M1185ED05$M3071810D

$M128DED05$M31419B95

$M13A6ED05$M32019A05

$M14011004$M3335B405

$M15010407$M3481DB05

$M16168005$M35419BBD

$M17019A3D$M36019A0D

$M18019205$M3738E004

$M192AA205$M38011005

$M1A2CB205$M393AE004

$M1B32A205$M3A010207

$M1C33A205$M3B080A07

$M1D36A205$M3C098A06

(4)、用ABLE语言设计控制逻辑,源程序如下:

ORG00H

PORTAEQU7CFFH;A口

PORTBEQU7DFFH;B口

PORTCEQU7EFFH;C口

CADDREQU7FFFH;控制字地址

SJMPSTART

ORG30H

START:

MOVA,#82H;方式0,PA,PC输出,PB输入

MOVDPTR,#CADDR

MOVX@DPTR,A

MOVDPTR,#PORTB

MOVXA,@DPTR;读入B口

MOVDPTR,#PORTA

MOVX@DPTR,A;输出到A口

CALLDELAY

LJMPSTART

DELAY:

MOVR6,#0

MOVR7,#0

DELAYLOOP:

DJNZR6,DELAYLOOP

DJNZR7,DELAYLOOP

RET

END

按照规定格式,将机器指令及微指令二进制表编辑成十六进制的如下格式文件。

机器指令格式说明:

$P例:

$P0000

机器指令代码

十六进制地址

0微指令格式说明:

$M例:

$M00018110

十六进制地址微指令代码

注意:

因系统文件格式要求,微指令代码的第一个字节(前8位)与第三字节(后8位)对换一下。

 

(3)、当完成上述全部微程序设计后,对每条微指令进行代码化,即将微程序流程图按微指令格式转化而成的,转化成为如下的“二进制微代码表”:

微地址

S3S2S1S0MCNWEA9A8

A

B

C

UA5…UA0

00

000000011

000

000

100

010000

01

000000011

110

110

110

000010

02

000000001

100

000

001

001000

03

000000001

110

000

000

000100

04

000000001

011

000

000

000101

05

000000011

010

001

000

000110

06

100101011

001

101

000

000001

07

000000001

110

000

000

001111

10

000000000

001

000

000

000001

11

000000011

110

110

110

000011

12

000000011

110

110

110

000111

13

000000011

110

110

110

010101

14

000000011

110

110

110

011010

15^

000000011

110

001

000

011011

16^

000000011

110

110

110

011100

17*

000000101

000

001

000

000001

20

000000011

110

110

110

010010

21

000000011

110

110

110

010100

22

000000001

010

000

000

010111

23

000000011

000

000

000

000001

24

000000000

010

000

000

011000

25*

000000001

110

000

000

010110

26*

000000001

010

000

000

011001

27

000001110

000

101

000

010000

30

000001101

000

101

000

010001

31*

000001110

000

101

000

000001

32*

000000001

101

000

110

000001

33^

000000001

001

000

000

000001

34^

000000001

110

000

000

011101

35^

000000001

011

000

000

011110

36^

000000011

010

001

000

011111

37^

011000011

001

101

000

000001

四、机器指令程序:

(1)、为本实验设计两条指令

a、端口读指令

助记符

CIND,R

指令格式

1110

R

D

其中第一字节前四位为操作码,D为端口地址,其功能是将端口地址为D的端口内容写入至寄存器Ri中。

b、端口写指令

助记符

COUTR,D

指令格式

1111

R

D

其功能是将Ri寄存器的内容写至以D为端口地址的端口中。

(2)、两条指令的微程序流程可设计为:

CINCOUT

0101

 

(3)根据以上的微程序流程图编写微程序。

微地址

S3S2S1S0MCNWEB1

B0

A

B

C

uA5~Ua0

十六进制代码

1E

00000101

1

110

110

110

110111

B7ED05

1F

00000101

1

110

110

110

111001

B9ED05

37

00000100

1

110

000

000

111000

38E004

38

00000101

0

001

000

000

000001

011005

39

00000100

1

110

000

000

111010

3AE004

3A

00000111

0

000

001

000

000001

010207

(5)、本实验设计机器指令程序如下指令程序。

地址(二进制)内容(二进制)助记符说明

0000000001000100INR0;“输入开关量”→R0

;输入开关置数10010000

0000000111110000COUTR0,[03];R0→以03H为地址的端口

0000001000000011

0000001111100000CIN[00],R0;将端口A(PA5~PA0)的内容读至R0

0000010000000000

0000010111100000COUTR0,[01];将R0的内容写至端口B(PB5~PB0)

0000011000000001

0000011100001000JMP00H

0000100000000000

其中,第一条指令从输入设备置数10010000,是将8255置成方式0,且A口输入,B口输出的控制字。

将机器指令写入主存,二进制开关uA5~uA0作为8255的输入,LZD13~LZD8显示灯作为8255的输出口显示,给输入开关置任意一数,运行程序,检查输出口显示灯指示是否和输入一致。

五、线路连接:

(1)、实验内部连线:

a、跳线器J1~J12全部拨在右边(自动工作方式);

b、跳线器J16、J18、J23、J24全部拨在左边;

c、跳线器J15、J19、J25全部拨在右边,跳线器J13、J14拨在左边;

d、跳线器J20~J22、J26、J27连上短路片;

e、JSE1连JSE2,SJ1连SJ2;

f、MBUS连BUS2;

g、REGBUS连BUS5;

h、PCBUS连EXJ2;

i、ALUBUS连EXJ3;

j、ALUO1连BUS1;

k、EXJ1连BUS3;

l、ALUO2连BUS4;

m、IJ1连IJ2;

(2)、外部连线说明:

·I/O扩展数据总线KJ1用8芯排线连至数据总线BUS6;

·I/O扩展区KJ2用5芯排线连至外部总线区的KZ;

·I/O扩展区KJ3(右1~6)用6芯排线连UJ2;

·I/O扩展区KJ4(右1~6)用6芯排线连KBUS1(右1~6);

·I/O扩展区GND和VCC用单针线与主控区GND和VCC相连;

·I/O扩展区短路片DL1、DL2连左边。

(3)A0、A1、CS、RD、WR五个引脚的电平与8255操作关系如下图:

A1

A0

RD

WR

CS

操作

0

0

1

0

1

0

0

0

0

1

1

1

0

0

0

输入操作(读)

数据总线通道→A

数据总线通道→B

数据总线通道→C

0

0

1

1

0

1

0

1

1

1

1

1

0

0

0

0

0

0

0

0

输出操作(写)

数据总线通道→A

数据总线通道→B

数据总线通道→C

数据总线→控制字存储器

X

1

X

X

1

X

X

0

1

X

1

1

1

0

0

断开功能

数据总线三态

非法条件

数据总线→三态

六、微程序流程及说明

以下是扩展8255并行口模型的设计和实现的调试的基本步骤:

①连续运行

A、将编程开关置为RUN(运行)状态,“STEP”置为“STEP”,“STOP”置为“RUN”。

B、使CLR1→0→1,微地址寄存器清零,程序计数器清零。

按动START键,系统连续运行程序,稍后将STOP拨至“STOP”时,系统停机。

C、停机后,可检查存数单元(0B)中的结果是否和理论值一致。

D、在联机运行程序时,进入DEBUG调试界面,使CLR1→0→1,序的首地址为00H,按相应功能键即可联机运行、调试程序。

②单步运行程序

1、运用联机软件的传送文件功能(F4)将该格式文件传入实验系统。

2、使编程开关处于“RUN”状态,STEP处于“STEP”状态,STOP处于(STOP)状态。

3、拨动总清开关CLR(0->1),微地址清零,PC计数器清零,程序首地址为00H。

4、按F6进入DEBUG界面,再按相应的功能键可以进入分步调试。

以下是一些运行过程中的截图:

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

当前位置:首页 > 幼儿教育 > 家庭教育

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

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