微机原理-I/O并行接口和并行接口芯片8255A

一、I/O接口

1-1 I/O接口的功能

(1)计算机与外设之间的信息交换问题

  • 速度不匹配
    CPU的速度很高,而外设的速度要低得多,而且不同的外设速度差异甚大
  • 信号电平不匹配
    CPU所使用的信号都是TTL电平,而外设大多是复杂的机电设备,往往不能为TTL电平所驱动,必须有自己的电源系统和信号电平。
  • 信号格式不匹配
    CPU系统总线上传送通常是8位,16位或32位的并行数据,而各种外设所使用的信息格式各不相同。有些设备上用的是模拟量,而有些人数字量或开关量;有些设备上的信息是电流量,而有些却是电压量,有些设备采用串行方式传送数据,而有些则用并行方式。
  • 时序不匹配
    各种外设都有自己的定时和控制逻辑,与计算机的CPU时序不一致,因此输入输出设备不能直接与CPU的系统总线相连,必须在CPU与外设之间设置专门的接口电路来解决这些问题。

(2)接口的功能

I/O接口电路是外设和计算机之间传送信息的交接部件,它使两者之间能很好的协调工作。每一个外设都要通过接口电路才能和主机相连。随着大规模集成电路技术的发展,出现了许多通用的可编程接口芯片,可用它们来方便地构成集合电路。

  • 设置数据缓冲的解决两者速度差异所带来的不协调问题
    事先把要传送的数据准备在那里,在需要的时刻完成传送,经常使用锁存器和缓冲器,并配以适当的联络信号来实现这种功能。
  • 设置信号电平转换电路
    计算机和外设间的串行通信可采用Max232和Max233的芯片来实现电平转换
  • 设置信息转换逻辑应满足对各自格式的要求
    模拟量必须经模数转换(A/D)变换成数字量后才能送到计算机去处理,而计算机算出的数字信号也必须经数模转换(D/A)变成模拟信号后才能驱动某些外设工作。
  • 设置时序控制电路来同步CPU和外设的工作
    接口电路,接收CPU送来的命令和控制信号,定时信号,实施对外设的控制与管理,外设的工作状态和应答信号也通过接口及时返回给CPU,以握手联络信号来保证主机和外部I/O口操作同实现同步。
  • 提供地址译码电路
    CPU要与多个外设打交道,一个外设往往要与CPU交换几种信息,一个外设接口中通常包含若干个端口,而在同一时刻,CPU只能用同一个端口交换信息。
    在接口电路中还有输入输出控制,读写控制及中断控制等逻辑

1-2 I/O端口及其寻址方式

(1)I/O端口

  • 数据端口
    数据端口用来存放外设送往CPU的数据,以及CPU要输出到外设存的数据,这些数据是主机和外设之间交换的最基本的信息,长度为1~2字节。数据端口主要写数据缓冲的作用。
  • 状态端口
    主要用来指示外设的当前状态
    ▶ \blacktriangleright 准备就绪位
    如果是输入端口,该位为1,表明端口的数据寄存器已准备好数据,等待CPU来读取,当数据被取走后,该为清为零。
    ▶ \blacktriangleright 忙碌位
    用来表明输出设备是否能接受数据,若该位为1表示外设正在进行输出数据传送操作,暂时不允许CPU送新的数据过来。
    ▶ \blacktriangleright 错误位
    如奇偶校验错、溢出错等
  • 命令端口
    命令端口也称为控制端口,它用来存放CPU向接口发出的各种命令和控制字,常见的命令信息有启动位,停止位,允许中断位等。

通常,CPU与外设交换的数据是以字节为单位进行的,因此一个外设的数据端口含有8位,而状态口和命令口可以只包含一位或几位信息,所以不同外设的状态口允许只用一个端口,命令口也可共用,D触发器和三态缓冲器常用来构成这两种端口。

(2)I/O端口的寻址方法

  • 存储器映像寻址方式
    ▶ \blacktriangleright 若把系统中的每一个I/О端口都看作一个存储单元,并与存储单元一样统一编址,这样访问存储器的所有指令均可用来访问I/О端口,不用设置专门的I/O指令,这种寻址方式称为存储器映象的I/O寻址方式( Memory Mapped 1/O)。
    ▶ \blacktriangleright 其优点是微处理器的指令集中不必包含I/O操作指令,简化了指令系统的设计;能用类型多、功能强的访问存储器指令,对I/O设备进行方便、灵活的操作。缺点主要是I/O端口占用了存储单元的地址空间。
  • I/O单独编址方式
    ▶ \blacktriangleright 若对系统中的输入输出端口地址单独编址,构成-一个1/O空间,它们不占用存储空间。
    ▶ \blacktriangleright 这种寻址方式的优点是将输入输出指令和访问存储器的指令明显区分开,使程序清晰﹐可读性好;而且I/О指令长度短﹐执行的速度快。I/О端口不占用内存空间;1/О地址译码电路较简单。不足之处是CPU指令系统中必须有专门的IN和OUT指令,这些指令的功能没有访问存储器指令强;CPU还需提供能够区分访问内存和访问I/O的硬件引脚信号。
    ▶ \blacktriangleright 两种寻址方式各有利弊,一般要根据所用的CPU类型来确定I/O寻址方式。例如,对于Motorola公司的CPU,通常没有专门的IN和OUT指令,因此都采用存储器寻址方式编址,而对于8086/8088系统,习惯上都采用I/O寻址方式。

1-3 CPU与外设间的数据传送方式

(1)程序控制方式

  • 无条件传送方式
    ▶ \blacktriangleright 无条件传送方式也称为同步传送方式,主要用于对简单外设进行操作。
    ▶ \blacktriangleright 对于这类外设,在任何时刻均已准备好数据或处于接收数据状态,或者在某些固定时刻,它们处在数据就绪或准备接收状态,因此程序可以不必检查外设的状态,而在需要进行输人或输出操作时,直接执行输入输出指令。
    ▶ \blacktriangleright 所需要的硬件和软件都较少。

  • 条件传送
    ▶ \blacktriangleright 条件传送方式也称为查询式传送方式。一般情况下,当CPU用输人或输出指令与外设交换数据时,很难保证输入设备总是准备好了数据,或者输出设备已经处在可以接收数据的状态。为此,在开始传送前,必须先确认外设已处于准备传送数据的状态,才能进行传送,于是就提出了查询式传送方式。
    ▶ \blacktriangleright 接口电路包括状态口和输入数据口两部分。

(2)中断方式

  • 用查询方式使CPU与外设交换数据时。CPU要不断读取状态位,CPU的利用率变得很低。
  • 采用中断方式后,CPU平时可以执行主程序,只有当输入设备将数据准备好了,或者输出端口的数据缓冲器已空时,才向CPU发中断请求。CPU响应中断后﹐暂停执行当前的程序,转去执行管理外设的中断服务程序。在中断服务程序中,用输入或输出指令在CPU和外设之间进行-次数据交换。等输人或输出操作完成之后,CPU又回去执行原来的程序。
    (3)DMA方式
  • 当CPU与高速I/O设备交换数据,或者与外设进行成组数据交换时,中断方式仍然显得太慢。
  • 为了解决这个问题,可采用一种称为DMA(Direct Memory Ac-cess)的传送方式,也就是直接存储器存取方式。
  • DMA方式也要利用系统的数据总线、地址总线和控制总线来传送数据。
  • CPU让出对于总线的控制权,用一种称为DMA 控制器的专用硬件接口电路来取代CPU,临时接管总线,控制外设和存储器之间直接进行高速的数据传送
  • 这种控制器能给出访问内存所需要的地址信息,并且能够自动修改地址指针,也能够设定和修改传送的字节数,还能够向存储器和外设发出相应的读/写控制信号。
  • 在 DMA传送结束后,它能释放总线,把对总线的控制权又交还给CPU。

1-4 PC机的I/O地址分配

  • 在IBM PC/XT机中,中断控制、 DMA控制、动态RAM刷新、系统配置识别﹑键盘代码读取及扬声器发声等都是由可编程I/О接口芯片控制的。
  • 这些接口芯片包括:8259A中断控制器、8237A-5 DMA控制器、8255A-5并行接口芯片、8253-5计数器/定时器等。
  • 它们都安装在PC/XT机的系统板上,每块接口芯片都要使用I/О端口地址。
  • 在系统板上还有8个1/O扩展槽,也称为I/O通道。

二、8255A的工作原理

8255A是一种通用的可编程并行I/O接口芯片(Programmable Peripherial Interface,PPI),它是为Intel系列微处理器设计的配套电路,也可用于其它微处理器系统中。通过对它进行编程,芯片可工作于不同的工作方式。

2-1 8255A的结构和功能


(1)数据端口A、B和C

  • 8255A内部包含3个8位的输入输出端口A.B和C。
  • 各端口在结构和功能上有不同的特点:
    ▶ \blacktriangleright 端口A包含一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器,因此,A口作输入或输出时数据均能锁存。
    ▶ \blacktriangleright 端口B包含一个8位的数据输入/输出锁存器/缓冲器,一个8位的数据输入缓冲器。
    ▶ \blacktriangleright 端口C包含一个8位的数据输出锁存器/缓冲器,一个8位的数据输人缓冲器,无输入锁存功能,当它被分成两个4位端口时,每个端口有一个4位的输出锁存器。

(2)A组和B组控制逻辑

  • 它们内部有控制寄存器,用来接收CPU送来的命令字,然后分别决定A组和B组的工作方式,或对端口C的每一位执行置位/复位等操作。
  • 8255A的端口A和端口C的上半部分( P C 7 ∼ P C 4 PC_7\sim PC_4 PC7PC4)由A组控制逻辑管理,端口B和端口C的下半部分( P C 3 PC_3 PC3~ P C 0 PC_0 PC0)由B组控制逻辑管理。

(3)数据总线缓冲器

  • 这是一个双向三态的8位缓冲器,用作8255A和系统数据总线之间的接口。

(4)读/写控制逻辑

  • 系统送到读/写控制逻辑的信号包括:
    ▶ \blacktriangleright RESET复位信号,高电平有效。该信号有效时,将8255A 控制寄存器内容都清0,并将所有的端口(A、B和C)都置成输入方式。
    ▶ \blacktriangleright C S ‾ \overline {CS} CS片选信号,低电平有效,由地址总线经I/О端口译码电路产生。只有当该信号有效时,CPU与8255A之间才能进行通信,也就是CPU可对8255A进行读/′写等操作。
    ▶ \blacktriangleright R D ‾ \overline {RD} RD读信号,低电平有效。当RD为低时,CPU可从8255A读取数据或状态信息。
    ▶ \blacktriangleright W R ‾ \overline {WR} WR写信号,低电平有效。当WR有效时,CPU可向8255A写入数据或控制字。
    ▶ \blacktriangleright A 1 A 0 A_1A_0 A1A0端口选择信号。在8255A 内部有3个数据端口(A、B、C)和一个控制字寄存器端口。当 A 1 A 0 A_1A_0 A1A0=00时,选中端口 A 1 A 0 A_1A_0 A1A0=01时,选中端口B; A 1 A 0 A_1A_0 A1A0=10时,选中端口C; A 1 A 0 A_1A_0 A1A0=11时,选中控制宇寄存器端口。
  • 如果8255A与8位数据总线的微机相连,只要将 A 1 A 0 A_1A_0 A1A0分别与地址总线的最低两位 A 1 A 0 A_1A_0 A1A0相连即可。
  • 如果系统采用的是8086 CPU,则数据总线为16位。CPU在传送数据时,总是将低8位数据送往偶地址端口,将高8位数据送到奇地址端口。
  • 芯片的数据线 D 1 ∼ D 0 D_1\sim D_0 D1D0接到系统数据总线的低8位,这样,CPU就要求芯片内部的各个端口都使用偶地址。
  • 地址总线中的 A 2 A 1 A_2A_1 A2A1实现端口选择,即将 A 2 A_2 A2连到8255A 的 A 1 A_1 A1引脚,而将 A 1 A_1 A1与8255A 的 A 0 A_0 A0引脚相连。

2-2 8255A的控制字

2-2-1 方式选择控制字

  • 方式0-基本输入输出方式;
    方式1-选通输入输出方式;
    方式2-双向总线I/O方式。

2-2-2 置位/复位控制字

2-3 8255A的工作方式和C口状态字

2-3-1 方式0(必考)

  • 方式0称为基本输入输出(Basic Input/Output)方式,它适用于不需要用应答信号的简单输人输出场合。
  • 在这种方式下,A口和B口可作为8位的端口,C口的高4位和低4位可作为两个4位的端口。这4个端口中的任何一个既可作输人也可作输出,从而构成16种不同的输入输出组态。在实际应用时,C口的两半部分也可以合在一起,构成一个8位的端口。
  • 对于方式0,还规定输出信号可以被锁存,输入不能锁存。

  • D 6 D 5 D_6D_5 D6D5=00,选择A口工作于方式0; D 2 D_2 D2=0,选择B口工作于方式0; D 7 D_7 D7=1为标志位;余下的 D 4 D 3 D_4D_3 D4D3 D 1 D 0 D_1D_0 D1D0 这四位可以任意取0或取1,由此构成4个端口的16种不同组态。

2-3-2 方式1

(1)选通输入方式

  • S T B ‾ \overline{STB} STB 选通信号,低电平有效,由外部输入。
  • IBF 输入缓冲器满信号,高电平有效。
  • INTE 中断允许信号
  • INTR 中断请求信号
  • 工作过程:
    ①当外设把一个数据送到端口数据线 P A 7 ∼ P A 0 PA_7\sim PA_0 PA7PA0(对于A口)或 P B 7 ∼ P B 0 PB_7\sim PB_0 PB7PB0,(对于B口)后,就向8255A发出负脉冲选通信号STB,外设的输入数据锁存到8255A的输人锁存器中。
    ②选通信号发出后,经 t S B t_{SB} tSB时间, IBF有效,它作为对输入设备的回答信号,用于通知外设输人缓冲器已满,不要再送新的数据过来。
    ③选通信号结束后,经 t S I T t_{SIT} tSIT时间,若 S T B ‾ \overline{STB} STB、IBF和INTE三者同时为高电平,使 INTR有效。这个信号可向CPU发中断请求,CPU响应中断后,通过执行中断服务程序中的IN指令,使读信号 R D ‾ \overline{RD} RD有效(低电平)。
    ④读信号有效后,经 t R I T t_{RIT} tRIT时间后,使 INTR变低,清除中断。
    ⑤读信号结束后,数据已读人累加器,经 t R I B t_{RIB} tRIB时间,IBF变低,表示缓冲器已空,一次数据输入的过程结束,通知外设可以再送一个新的数据来。

(2)选通输出方式

2-3-3 方式2

双向总线方式(Bidirectional Bus)。

2-3-4 C口状态字

当8255A工作于方式0时,C口各位作输入输出用。当它工作于方式1和方式2时,C口产生或接收与外设间的联络信号,这时,读取C口的内容可使编程人员测试或检查外设的状态,用输入指令对C口进行读操作就可读取C口的状态。

  • 3
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验目的: 1.了解8255A芯片的基本功能和工作原理; 2.掌握8255A芯片的编程方法; 3.掌握8255A芯片的应用。 实验设备: 1.微机实验箱; 2.8255A芯片; 3.适配器; 4.万用表。 实验原理: 8255A芯片是具有并行输入输出接口功能的可编程I/O接口芯片。它包含3个8位I/O端口,即PortA、PortB、PortC,每个端口可以作为输入或输出使用。此外,8255A芯片还具有2个工作模式,即I/O模式和手摇模式,可以通过编程来选择。 实验内容: 1.将8255A芯片插入适配器中,并将适配器插入微机实验箱中。 2.编写程序,将8255A芯片的端口A、B、C设置为输出端口,利用端口A、B、C控制8个LED灯的亮灭。 3.编写程序,将8255A芯片的端口A、B、C设置为输入端口,利用端口A、B、C读取8个开关的状态,并将读取的结果通过串口输出。 实验步骤: 1.选择适配器上的8255A芯片,将其插入微机实验箱中。 2.在微机实验箱上连接8个LED灯和8个开关,并将它们分别与8255A芯片的端口A、B、C相连。 3.打开微机实验箱,进入DOS系统。 4.编写程序,将8255A芯片的端口A、B、C设置为输出端口,利用端口A、B、C控制8个LED灯的亮灭。程序如下: MOV AL, 0FFH ;将端口A、B、C设置为输出端口 OUT 61H, AL MOV AL, 0 ;将端口A、B、C清零 OUT 60H, AL MOV AL, 0FFH ;将端口A、B、C设置为高电平 OUT 60H, AL 5.编写程序,将8255A芯片的端口A、B、C设置为输入端口,利用端口A、B、C读取8个开关的状态,并将读取的结果通过串口输出。程序如下: MOV AL, 0 ;将端口A、B、C设置为输入端口 OUT 61H, AL MOV AL, 0 ;将端口A、B、C清零 OUT 60H, AL IN AL, 60H ;读取端口A的状态 MOV BL, AL ;将端口A的状态存入BL中 IN AL, 61H ;读取端口B的状态 MOV CL, AL ;将端口B的状态存入CL中 IN AL, 62H ;读取端口C的状态 MOV DL, AL ;将端口C的状态存入DL中 MOV AH, 02H ;设置串口输出 MOV DL, BL ;输出端口A的状态 INT 21H MOV DL, CL ;输出端口B的状态 INT 21H MOV DL, DL ;输出端口C的状态 INT 21H 6.保存程序并运行,观察LED灯的亮灭和串口输出的结果。 实验注意事项: 1.在进行实验时,需要注意芯片的引脚连接和电路的正确性,以避免出现电路短路或其他异常情况。 2.在编写程序时,需要注意语法和参数的正确性,并对程序进行调试和测试,以确保程序的正确性和稳定性。 3.在实验过程中,需要遵守实验室的安全规定,注意用电安全和器材保护,以保证实验的安全性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值