第14章 并行通信及其接口电路
一、概述
并行通信与串行通信的区别
- 串行传送:数据在单条一位宽的传输线上按时间先后一位一位地传送
- 并行传送:数据在多位宽的传输线上各位同时进行传送
- 并行传送优势:相同时钟速率下,并行传送的数据传输率较高
- 适用场景:并行通信适用于信息传输率要求较高、传输距离较短的场合
本章结构
- 简单并行接口电路(不可编程)
- 可编程并行接口电路 8255A 的结构及工作原理
- 8255A 的应用
二、简单并行接口电路
在输入输出接口电路中,经常需要对信号进行缓冲、驱动和锁存。三种常用芯片:
2.1 锁存器 74LS373
基本特性:
- 8位D锁存器电路(D-Latch),具有三态控制输出
- 8个输入端:1D~8D
- 8个输出端:1Q~8Q
- 2个控制端:选通端 G、输出允许端 OE
工作原理:
- G=高电平时,输出Q跟随输入D变化(透明模式)
- G变低电平时,锁存器中的内容被锁存(保持)
- OE=低电平时,锁存信息出现在输出端
- OE=高电平时,输出处于高阻态
真值表:
| 选通 G | 输出允许 OE | 输入 D | 输出 Q |
|---|---|---|---|
| H | L | L | L |
| H | L | H | H |
| L | L | X | Q0(原状态) |
| X | H | X | Z(高阻态) |
主要用途:总线传输电路中锁存地址信息或数据信息,实现总线信号的缓冲与驱动
类似芯片:Intel 8282/8283
2.2 缓冲器 74LS244
基本特性:
- 三态输出的8位缓冲器/驱动器
- 8个输入端分为两路:1A1~1A4 和 2A1~2A4
- 8个输出端分为两路:1Y1~1Y4 和 2Y1~2Y4
- 2个控制信号:1G、2G(低电平有效)
工作原理:
- 1G有效(低电平)→ 1Y1~1Y4 = 1A1~1A4
- 2G有效(低电平)→ 2Y1~2Y4 = 2A1~2A4
- G无效(高电平)→ 输出为高阻态
主要用途:存储器地址驱动器、单向总线接收器和发送器
- 可将8个输入端某几位接地,其余接+5V,提供特定8位二进制代码(如中断类型码)
2.3 数据总线收发器 74LS245
基本特性:
- 三态输出的8位双向总线收发器(transceiver)
- 16个双向数据端:A1~A8 和 B1~B8
- 2个控制端:允许端 G(低电平有效)、方向控制端 DIR
真值表:
| 允许 G | 方向控制 DIR | 数据传送方向 |
|---|---|---|
| L | L | B → A |
| L | H | A → B |
| H | X | 隔开(高阻) |
主要用途:数据的双向传送、缓冲与驱动
- 74LS245 的 IOL(输出低电平负载电流)额定值为 64mA
- 80386DX 数据总线最多仅能吸收 4mA 电流
- 通过增设数据总线收发器可极大增强总线驱动能力
类似芯片:Intel 8286/8287
2.4 应用举例
例1:74LS373用于地址信号锁存
- 80386DX系统中,需锁存30位地址信号 A2~A31 和 4个字节允许信号 BE0~BE3
- 使用5片 74LS373 芯片
- 各片选通端 G 均由 ALE(地址锁存允许)信号驱动
- OE 固定接逻辑0,输出始终处于允许状态
例2:74LS245用于数据总线收发
- 32位微机系统需4块 74LS245 实现双向总线驱动
- DIR 由 DT/R(数据发送/接收)信号控制
- G 由 DEN(数据允许)信号控制
三、可编程并行接口
3.1 可编程并行接口的组成
一个可编程并行接口电路通常包括:
- 两个或两个以上具有缓冲能力的数据寄存器
- 可供 CPU 访问的控制及状态寄存器
- 片选和内部控制逻辑电路
- 与外设进行数据交换的控制与联络信号线
- 与 CPU 用中断方式传送数据的相关中断控制电路
3.2 接口与 CPU 和外设的连接
- CPU侧:数据总线、读/写控制信号、地址译码器、复位信号、中断响应信号
- 外设侧:并行输入/输出数据、输入/输出准备好信号、输入/输出回答信号
- 内部:输出缓冲寄存器、输入缓冲寄存器、控制寄存器、状态寄存器、中断逻辑
四、可编程并行通信接口 8255A
4.1 性能概要
- Intel 8255A 是通用可编程并行接口芯片
- 40脚双列直插封装,单一+5V电源
- 全部输入输出与 TTL 电平兼容
- 连接外部设备通常不需要附加电路
- 三个输入输出端口:端口A、端口B、端口C
- 每个端口可通过编程设定为输入或输出端口
- 端口C可独立使用,也可配合端口A/B提供控制联络信号
4.2 芯片引脚信号
(1) 电源与地线(2条):Vcc、GND
(2) 与外设相连(24条):
- PA7~PA0:端口A数据信号
- PB7~PB0:端口B数据信号
- PC7~PC0:端口C数据信号
(3) 与 CPU 相连(14条):
- RESET:复位信号,高电平有效。有效时所有内部寄存器被清除,3个数据端口自动设为输入端口
- D7~D0:双向数据线,8位数据总线
- CS:片选信号,低电平有效。来自译码器输出
- RD:读信号,低电平有效。控制从8255A读出数据或状态
- WR:写信号,低电平有效。控制把数据或控制命令字写入8255A
- A1、A0:端口选择信号
端口选择编码:
| A1 | A0 | 选中端口 |
|---|---|---|
| 0 | 0 | 端口A |
| 0 | 1 | 端口B |
| 1 | 0 | 端口C |
| 1 | 1 | 控制端口 |
4.3 内部结构
8255A 由四部分组成:
- 数据总线缓冲器:双向三态8位数据缓冲器,是8255A与CPU数据总线的接口
- 端口A、B、C:三个8位端口,各端口可由程序设定为输入或输出
- 端口A和端口B常作为独立的输入/输出端口
- 端口C可分成两个4位端口,为端口A/B提供控制和状态信息
- A组控制和B组控制:
- A组控制:控制端口A及端口C的高4位(PC7~PC4)
- B组控制:控制端口B及端口C的低4位(PC3~PC0)
- 读写控制逻辑:负责管理8255A的数据传输过程
4.4 8255A 的控制字
4.4.1 方式选择控制字
格式(8位,D7=1为标识位):
| D7 | D6 D5 | D4 | D3 | D2 | D1 | D0 |
|---|---|---|---|---|---|---|
| 1 | A组方式 | 端口A | PC7~PC4 | B组方式 | 端口B | PC3~PC0 |
| 00=方式0 | 1=输入 | 1=输入 | 0=方式0 | 1=输入 | 1=输入 | |
| 01=方式1 | 0=输出 | 0=输出 | 1=方式1 | 0=输出 | 0=输出 | |
| 1x=方式2 | (方式0时) | (方式0时) |
示例:
- 端口A:方式0,输出
- 端口B:方式0,输入
- 端口C高4位:方式0,输出
- 端口C低4位:方式0,输入
- 方式选择控制字 = 10000011B = 83H
初始化编程示例:
MOV DX, 28BH ; 控制口地址
MOV AL, 83H ; 方式选择控制字
OUT DX, AL ; 写入控制口4.4.2 端口C按位置1/置0控制字
格式(8位,D7=0为标识位):
| D7 | D6 D5 D4 | D3 D2 D1 | D0 |
|---|---|---|---|
| 0 | 无关(X) | 位选择 | 1=置1 |
| 000=PC0 | 0=置0 | ||
| 001=PC1 | |||
| … | |||
| 111=PC7 |
注意:端口C按位置1/置0控制字必须写入控制口,而不是端口C
示例:PC6置0
- 控制字 = 00001100B = 0CH
MOV DX, 28BH
MOV AL, 0CH ; PC6置0控制字
OUT DX, AL4.5 8255A 的工作方式
4.5.1 方式0(基本输入/输出方式)
- 端口A和端口B可规定为输入口或输出口
- 端口C分为高4位和低4位两个4位端口,可分别规定为输入或输出
- 共可构成 2⁴ = 16 种不同的使用组态
- 特点:没有规定专门的应答信号,常用于与简单外设的数据传送
- 如:LED显示器输出、二进制开关装置输入等
4.5.2 方式1(选通输入/输出方式)
- 与方式0的主要差别:端口A/B工作于方式1时,利用端口C接收选通信号或提供状态信号
- 信号与数位之间存在固定对应关系,不能用程序改变
方式1输入:
控制信号定义:
- STB(Strobe):选通信号,低电平有效。外设送给8255A,有效时8255A接收外设送来的8位数据
- IBF(Input Buffer Full):输入缓冲器满,高电平有效。8255A送给外设的联络信号
- IBF=高:数据已送进输入缓冲器,通知外设不能送新数据
- IBF=低:CPU已读取数据,输入缓冲器变空,允许外设送新数据
- STB使其置位,RD上升沿使其复位
- INTR(Interrupt Request):中断请求,高电平有效
- 当 STB=1、IBF=1、INTE=1 时置为高电平
- RD下降沿将其置为低电平
- INTEA:端口A中断允许,无外部引出端,由PC4的置位/复位控制
- INTEB:端口B中断允许,无外部引出端,由PC2的置位/复位控制
端口C信号分配(方式1输入):
| 端口C位 | 端口A(方式1输入) | 端口B(方式1输入) |
|---|---|---|
| PC7 | I/O(未用,可设) | - |
| PC6 | I/O(未用,可设) | - |
| PC5 | IBFA | - |
| PC4 | STBA | - |
| PC3 | INTRA | - |
| PC2 | - | STBB / INTEB |
| PC1 | - | IBFB |
| PC0 | - | INTRB |
方式1输出:
控制信号定义:
- OBF(Output Buffer Full):输出缓冲器满,低电平有效。8255A输出给外设
- 有效时表示CPU已把数据输出给指定端口,通知外设取走
- WR上升沿置有效,ACK信号使其恢复高电平
- ACK(Acknowledge):外设响应信号,低电平有效。表明外设已接收数据
- INTR:中断请求,高电平有效
- 当 ACK=1、OBF=1、INTE=1 时置为高电平
- WR上升沿使其变为低电平
- INTEA:端口A中断允许,由PC6的置位/复位控制
- INTEB:端口B中断允许,由PC2的置位/复位控制
端口C信号分配(方式1输出):
| 端口C位 | 端口A(方式1输出) | 端口B(方式1输出) |
|---|---|---|
| PC7 | OBFA | - |
| PC6 | ACKA / INTEA | - |
| PC5 | I/O(未用,可设) | - |
| PC4 | I/O(未用,可设) | - |
| PC3 | INTRA | - |
| PC2 | - | ACKB / INTEB |
| PC1 | - | OBFB |
| PC0 | - | INTRB |
4.5.3 方式2(双向选通输入/输出方式)
- 仅端口A支持方式2
- 端口A工作于方式2时,端口C的PC7~PC3作为联络信号
- 端口B可工作于方式0或方式1
- 方式2是方式1输入和方式1输出的组合
- 状态字从端口C读取
4.6 8255A 的状态字
- 工作于方式1和方式2时,状态字通过读端口C的内容获得
- 方式1状态字分为输入状态字和输出状态字两种格式
- 方式2状态字也是从端口C读取,A组状态包含双向传送的全部状态信息
五、8255A 应用举例
例1:方式0 — 开关输入与LED显示输出
功能:端口A读入开关状态,端口B输出LED段选码(字形码)
配置:
- 端口A:方式0,输入
- 端口B:方式0,输出
- 方式选择控制字:90H
- 端口地址:A口D0H,B口D1H,C口D2H,控制口D3H
核心程序:
MOV AL, 90H ; 方式选择控制字
OUT 0D3H, AL ; A口方式0输入,B口方式0输出
RDPORTA:
IN AL, 0D0H ; 读A口(开关状态)
AND AL, 0FH ; 取低4位
MOV BX, OFFSET SSEGCODE ; 段选码表首址
XLAT ; 查表转换
OUT 0D1H, AL ; B口输出到LED共阴极LED段选码表:
- 0=3FH, 1=06H, 2=5BH, 3=4FH, 4=66H, 5=6DH, 6=7DH, 7=07H
- 8=7FH, 9=67H, A=77H, B=7CH, C=39H, D=5EH, E=79H, F=71H
例2:方式0 — 查询方式打印机接口
功能:用8255A作为打印机接口,查询方式工作
配置:
- 端口A:方式0,输出(打印数据)
- 端口C高4位:输出,PC6作为STB选通信号
- 端口C低4位:输入,PC2作为BUSY忙信号输入
- 方式选择控制字:81H
工作流程:
- 测试 BUSY 信号(PC2)
- 若 BUSY=1(忙),继续查询
- 若 BUSY=0(空闲),输出打印字符到端口A
- 通过PC6输出负脉冲作为STB选通信号
- 返回
核心程序:
MOV AL, 81H ; 方式选择控制字
OUT 0D3H, AL
MOV AL, 0DH ; 置PC6=1(STB初始为高)
OUT 0D3H, AL
TESBY:
IN AL, 0D2H ; 读端口C
TEST AL, 04H ; 测试PC2(BUSY)
JNZ TESBY ; 忙则等待
MOV AL, DS:[2000H] ; 取打印字符
OUT 0D0H, AL ; 输出到A口
MOV AL, 0CH ; 置PC6=0(STB低)
OUT 0D3H, AL
INC AL ; AL=0DH,置PC6=1
OUT 0D3H, AL ; 产生负选通脉冲
RET六、关键概念总结
- 并行通信:多位数据同时传送,传输率高,适用于短距离高速传输
- 简单接口芯片:74LS373(锁存器)、74LS244(缓冲器)、74LS245(双向收发器)
- 8255A三个端口:端口A、端口B、端口C,共24条I/O线
- 两种控制字:方式选择控制字(D7=1)、端口C按位置1/置0控制字(D7=0)
- 三种工作方式:
- 方式0:基本输入输出,无应答信号
- 方式1:选通输入输出,端口C提供固定联络信号
- 方式2:双向选通输入输出(仅端口A支持)
- 方式1的联络信号:STB(选通)、IBF(输入缓冲器满)、OBF(输出缓冲器满)、ACK(应答)、INTR(中断请求)
- 端口C的双重作用:既可作独立I/O口,又可为A/B口提供控制联络信号
- 状态字读取:方式1和方式2时,从端口C读取状态字
关联笔记
- 第13章 中断系统 — 中断方式是并行接口数据传送的重要方式之一
- 计算机组织与系统结构 — 课程总览