并行通信及接口电路 - 第14章

北京大学《计算机组织与系统结构》课程第二部分第14章 教材配套PPT,90页

本章核心内容

  1. 简单并行接口电路:74LS373锁存器、74LS244缓冲器、74LS245总线收发器
  2. 可编程并行接口 8255A:结构、工作原理、控制字
  3. 8255A 的三种工作方式:方式0(基本I/O)、方式1(选通I/O)、方式2(双向)
  4. 8255A 应用实例:开关输入+LED显示、打印机接口、交通灯控制

一、并行通信概述

1.1 两种基本数据传送方式

方式定义特点适用场景
串行传送数据在单条1位宽传输线上按时间先后一位一位传送传输线少、成本低、速率低长距离、低速率通信
并行传送数据在多位宽传输线上各位同时传送传输率高、线数多、成本高短距离、高速率通信

同样时钟速率下,并行传送的数据传输率高于串行传送。并行通信适用于信息传输率要求较高而传输距离较短的场合。

1.2 本章结构

  • 先介绍简单(不可编程)并行接口:锁存器、缓冲器、总线收发器
  • 再重点介绍可编程并行接口 8255A:结构、控制字、三种工作方式、典型应用

二、简单并行接口电路

三种常用的简单并行I/O接口芯片:

2.1 锁存器 74LS373

8位D锁存器,三态控制输出。

引脚组成

  • 8个输入端:1D~8D
  • 8个输出端:1Q~8Q
  • 两个控制端:
    • G(选通端):高电平时输出跟随输入(透明模式);低电平时锁存当前数据
    • OE(输出允许):低电平有效,允许输出;高电平时输出为高阻态

真值表

选通 G输出允许 OE输入 D输出 Q
HLLL
HLHH
LLXQ0(原状态,锁存)
XHXZ(高阻态)

工作原理

  • G=高电平:Q跟随D变化(透明锁存器)
  • G下降沿:数据被锁存
  • OE=高电平:输出三态,与总线隔离

典型应用

  • 总线传输电路中锁存地址信息或数据信息
  • 总线信号的缓冲与驱动
  • 类似芯片:Intel 8282/8283

2.2 缓冲器 74LS244

三态输出的8位缓冲器/驱动器。

结构特点

  • 分为两路,每路4位:
    • 1A1~1A4 → 1Y1~1Y4,由 1G 控制
    • 2A1~2A4 → 2Y1~2Y4,由 2G 控制
  • 单向传送(A→Y)
  • 控制信号低电平有效;无效时输出高阻态

典型应用

  • 存储器地址驱动器
  • 单向总线接收器和发送器
  • 可提供特定的8位二进制代码(如中断类型码)

2.3 数据总线收发器 74LS245

三态输出的8位双向总线收发器(transceiver)。

引脚组成

  • 16个双向数据端:A1~A8 和 B1~B8
  • 两个控制端:
    • G(允许端):低电平有效;高电平时两端口均为高阻(隔开状态)
    • DIR(方向控制端):决定数据传送方向

真值表

允许 G方向控制 DIR数据传送方向
LLB → A
LHA → B
HX隔开(高阻)

典型应用

  • 数据的双向传送、缓冲与驱动
  • 类似芯片:Intel 8286/8287

2.4 应用举例

例1:74LS373 用于地址信号锁存(80386DX系统)

  • 5片 74LS373 锁存 30 位地址(A2~A31)+ 4 个字节允许信号(BE0~BE3)
  • 各片选通端 G 均由 ALE(地址锁存允许) 信号驱动
  • OE 固定接逻辑0,输出始终允许

例2:74LS245 用于数据总线收发器(80386DX系统)

  • 4片 74LS245 实现32位双向总线驱动
  • DIR 由 DT/R(数据发送/接收)控制
  • G 由 DEN(数据允许)控制
  • 74LS245 的 IOL(输出低电平负载电流)额定值为 64mA
  • 80386DX 数据总线最多仅能吸收 4mA 电流
  • 增设收发器可极大增强总线驱动能力

三、可编程并行接口 8255A

3.1 性能概要

  • Intel 8255A 是通用可编程并行接口芯片,专为 8080/8085 设计,也可用于其他微机系统
  • 40脚双列直插封装,单一 +5V 电源,全部I/O与TTL电平兼容
  • 三个8位端口:端口A、端口B、端口C
  • 每个端口可通过编程设定为输入或输出
  • 端口C常配合端口A和端口B工作,提供控制联络信号

3.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入写信号,低电平有效。控制写入数据/控制命令
A1、A0入端口选择信号:00=端口A,01=端口B,10=端口C,11=控制端口

端口选择和基本操作表

A1A0RDWRCS操作
00010端口A → 数据总线(读A口)
01010端口B → 数据总线(读B口)
10010端口C → 数据总线(读C口)
00100数据总线 → 端口A(写A口)
01100数据总线 → 端口B(写B口)
10100数据总线 → 端口C(写C口)
11100数据总线 → 控制字寄存器(写控制字)
XXXX1数据总线三态(无操作)
11010非法操作(不能读控制口)

3.3 内部结构

8255A 由四部分组成:

  1. 数据总线缓冲器:双向三态8位缓冲器,CPU与8255A之间的接口
  2. 三个端口:端口A、端口B、端口C(各8位)
  3. 两组控制:
    • A组控制:控制端口A + 端口C高4位(PC7~PC4)
    • B组控制:控制端口B + 端口C低4位(PC3~PC0)
  4. 读写控制逻辑:管理数据传输过程

端口C可以分成两个4位端口,分别为端口A和端口B提供控制和状态信息。

3.4 8255A 的控制字

1. 方式选择控制字(8位,D7=1)

D7  D6  D5  D4  D3  D2  D1  D0
 1  └─┬─┘ └┘ └┘ └─┬─┘ └┘ └┘
    方式   A口  PC高 B组  B口 PC低
    A组   输入  4位 方式 输入 4位
   00=方式0    00=方式0    1=输入
   01=方式1  1=输入  01=方式1  0=输出
   1x=方式2  0=输出          1=输入
                             0=输出
  • D7=1 是方式选择控制字的标识位
  • A组有三种方式(方式0、方式1、方式2)
  • B组有两种方式(方式0、方式1)
  • 每个端口的输入/输出可独立设定

示例:A口方式0输出,B口方式0输入,C高4位输出,C低4位输入 → 控制字 = 10000011B = 83H

MOV DX, 28BH      ; 控制口地址
MOV AL, 83H       ; 方式选择控制字
OUT DX, AL        ; 写入控制口

2. 端口C按位置1/置0控制字(8位,D7=0)

D7  D6 D5 D4  D3 D2 D1  D0
 0  └──┬──┘  └──┬──┘  └┘
   无关(XXX)   位选择   1=置1
                         0=置0

位选择编码:
000=PC0  001=PC1  010=PC2  011=PC3
100=PC4  101=PC5  110=PC6  111=PC7
  • D7=0 是端口C置位/复位控制字的标识位
  • 该控制字必须写入控制口(不是端口C)
  • D0位决定置1还是置0
  • D3~D1选择操作哪一位

示例:对PC6位置0 → 控制字 = 00001100B = 0CH

MOV DX, 28BH
MOV AL, 0CH       ; PC6置0控制字
OUT DX, AL        ; 写入控制口

四、8255A 的三种工作方式

4.1 方式0 —— 基本输入/输出方式

特点

  • 端口A和端口B可独立设为输入或输出
  • 端口C分为高4位和低4位两个4位端口,也可分别设为输入或输出
  • 共 2⁴ = 16种不同组态
  • 没有专门的应答信号,适用于简单外设

典型应用

  • 向LED显示器输出
  • 从二进制开关装置输入

4.2 方式1 —— 选通的输入/输出方式

特点

  • 端口A和端口B工作于方式1时,必须利用端口C的固定数位来接收/提供联络信号
  • 信号与数位之间存在固定对应关系,不能用程序改变
  • 支持中断方式数据传送

(1) 方式1 输入

端口C联络信号分配:

端口A信号方向功能
PC4STBA(选通)入低电平有效,外设送来数据选通信号
PC5IBFA(输入缓冲器满)出高电平有效,通知外设数据已锁存,不要送新数据
PC3INTRA(中断请求)出高电平有效,向CPU发中断请求
PC6、PC7I/O—未用,可作普通I/O
端口B信号方向功能
PC2STBB(选通)入低电平有效
PC1IBFB(输入缓冲器满)出高电平有效
PC0INTRB(中断请求)出高电平有效

关键信号说明:

  • STB(Strobe,选通输入):外设送数据给8255A的选通脉冲。低电平有效,将外设数据锁存到输入缓冲器。
  • IBF(Input Buffer Full,输入缓冲器满):8255A输出给外设的回答。STB使其置位,RD上升沿使其复位。
  • INTR(Interrupt Request,中断请求):当 STB=1、IBF=1、INTE=1 时被置高。RD下降沿将其清除。
  • INTE(Interrupt Enable,中断允许):内部中断允许触发器,无外部引脚:
    • INTEA 由 PC4 的置位/复位控制
    • INTEB 由 PC2 的置位/复位控制

方式1输入时序:

  1. 外设送数据 → STB有效(低)
  2. 数据锁存 → IBF变高(tSIB = 300ns)
  3. STB变高 → INTR变高(tSIT = 300ns,发中断请求)
  4. CPU响应中断,读数据 → RD有效
  5. RD下降沿清INTR(tRIT = 400ns)
  6. RD上升沿清IBF(tRIB = 300ns)

(2) 方式1 输出

端口C联络信号分配:

端口A信号方向功能
PC7OBFA(输出缓冲器满)出低电平有效,通知外设取数据
PC6ACKA(外设响应)入低电平有效,外设确认已取走数据
PC3INTRA(中断请求)出高电平有效
PC4、PC5I/O—未用,可作普通I/O
端口B信号方向功能
PC1OBFB(输出缓冲器满)出低电平有效
PC2ACKB(外设响应)入低电平有效
PC0INTRB(中断请求)出高电平有效

关键信号说明:

  • OBF(Output Buffer Full):CPU已把数据写入端口,通知外设取走。WR上升沿置为有效(低),ACK有效使其恢复高电平。
  • ACK(Acknowledge):外设响应信号,对OBF的回答。低电平有效。
  • INTR:当 ACK=1、OBF=1、INTE=1 时置高(发中断请求)。WR上升沿清除。
  • INTE:
    • INTEA 由 PC6 置位/复位控制
    • INTEB 由 PC2 置位/复位控制

注意:方式1输入时INTEA由PC4控制;方式1输出时INTEA由PC6控制。PC4/PC6分别是对应方向下的”空闲”引脚。

4.3 方式2 —— 双向选通I/O方式(仅端口A支持)

端口A可工作于方式2(双向总线方式),此时:

  • 端口A既输入又输出,共用一套联络信号
  • 使用端口C的 PC3~PC7(5条线)作联络信号
  • 端口B和PC0~PC2可工作于方式0或方式1

方式2联络信号:OBFA、ACKA、IBFA、STBA、INTRA(即方式1输入+输出的A组信号合并)

4.4 状态字

8255A工作于方式1和方式2时,状态字通过读端口C获得。

方式1输入状态字

D7   D6   D5    D4     D3     D2    D1    D0
I/O  I/O  IBFA  INTEA  INTRA  INTEB IBFB  INTRB
└──────A组──────┘    └──────B组──────┘

方式1输出状态字

D7    D6    D5   D4   D3     D2    D1    D0
OBFA  INTEA I/O  I/O  INTRA  INTEB OBFB  INTRB
└───────A组───────┘    └──────B组──────┘

五、8255A 应用举例

5.1 例1:开关输入 + LED显示(方式0)

电路连接

  • 端口A接4个开关(PA0~PA3),方式0输入
  • 端口B接7段LED显示器(PB0~PB7),方式0输出
  • 功能:读入开关状态 → 查表转换为7段码 → 送LED显示

控制字设置

A口方式0输入,B口方式0输出 → 90H

核心程序段

MOV AL, 90H          ; 方式选择控制字
OUT 0D3H, AL         ; 写入控制口(D3H)
 
RDPORTA:
IN  AL, 0D0H         ; 读A口(D0H)
AND AL, 0FH          ; 取低4位
MOV BX, OFFSET SSEGCODE  ; 段码表首址
XLAT                 ; 查表转换
OUT 0D1H, AL         ; B口输出显示

5.2 例2:打印机接口(方式0查询)

电路连接

  • 端口A:打印输出数据,方式0输出
  • PC6(C口高4位):输出选通信号 STB(负脉冲)
  • PC2(C口低4位):输入BUSY信号

工作流程

  1. 测试 BUSY 信号
  2. 若BUSY=0(不忙),输出数据到端口A
  3. 产生一个负脉冲STB,将数据打入打印机

控制字

A口输出、C高4位输出、C低4位输入 → 81H

核心操作

; 置PC6=1(STB初始为高)
MOV AL, 0DH          ; 00001101B,PC6置1
OUT 0D3H, AL
 
; 等待BUSY变低
TESBY:
IN  AL, 0D2H         ; 读C口
TEST AL, 04H         ; 测试PC2(BUSY)
JNZ TESBY            ; 忙则等待
 
; 输出数据
MOV AL, [2000H]      ; 取打印字符
OUT 0D0H, AL         ; A口输出
 
; 产生选通负脉冲
MOV AL, 0CH          ; PC6置0
OUT 0D3H, AL
INC AL               ; AL = 0DH
OUT 0D3H, AL         ; PC6置1

5.3 例3:交通灯控制(习题)

功能

  • 主道和副道各有红/黄/绿三色灯
  • PC0接人行开关(请求过街)
  • 正常:主道绿灯40秒,副道红灯
  • 有行人请求时:主道黄灯5秒→红灯,副道绿灯20秒→黄灯5秒→恢复

端口分配

  • PA0/PA1/PA2:主道G/Y/R
  • PB0/PB1/PB2:副道G/Y/R

六、关键概念速查

概念要点
并行vs串行并行速率高、距离短;串行速率低、距离长
74LS3738位D锁存器,G高透明、G低锁存,OE三态控制
74LS2448位单向缓冲器,两路4位,三态输出
74LS2458位双向总线收发器,DIR控制方向,G控制允许
8255A3个8位端口 + 2组控制 + 3种工作方式
方式0基本I/O,无应答,适合简单外设
方式1选通I/O,C口固定联络线,支持中断
方式2双向I/O,仅A口支持,5条C口联络线
方式字D7=1方式选择控制字
方式字D7=0端口C按位置1/置0控制字(写入控制口)
STB/IBF/INTR方式1输入三联络:选通/输入满/中断请求
OBF/ACK/INTR方式1输出三联络:输出满/应答/中断请求
INTEA输入由PC4置位/复位控制
INTEA输出由PC6置位/复位控制
INTEB由PC2置位/复位控制(输入和输出都一样)
状态字获取读端口C(方式1/方式2时)

章节关联