第15章 串行通信及接口电路

1A003 计算机组织与系统结构 课程第15章 来源:田浩然上传的资料 / 1A003 计算机组织与系统结构 / 第二部分 PowerPoint 97-2003 二进制格式,LibreOffice 转 PDF 后 pdftotext 全文提取约 2.6 万字符


一、串行通信基本概念

1.1 串行通信的特点

  • 优点:数据在单条 1 位宽的传输线上按时间先后一位一位地传送,节省传输线(长距离优势明显)
  • 缺点:数据传输率较低
  • 适用场景:长距离、低速率的通信

1.2 常用术语

(1)数据传送方向 — 单工 / 半双工 / 全双工

类型特点结构
单工 (Simplex)仅能进行一个方向的数据传送设备A=发送器,设备B=接收器
半双工 (Half Duplex)数据可以双向传送,但不能同时进行(双向不同时)每端兼具发送/接收,分时切换
全双工 (Full Duplex)能够在两个方向同时进行数据传送两条独立传输通道,同时收发

(2)数据传输率

  • 比特率:每秒传输的二进制位数,单位 bps (bit per second)
  • 波特率:每秒传输的”符号”(信号码元 Signal Element)的个数,单位 波特 (Baud)
  • 比特率 vs 波特率的关系:
    • 二进制中(高低两种电平 = 1 bit/符号),波特率 = 比特率
    • 多进制调制中(如 QAM 相位+振幅复合调制),波特率 < 比特率
    • 例:4 种相位 × 2 种振幅 = 8 种码元 = 3 bit/符号
  • 标准波特率系列:50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, …

(3)调制解调器 (Modem)

  • 电话网是模拟通信系统,传输数字信号必须经过调制解调
  • 调制:用数字信号改变载波的幅值/频率/相位
  • 解调:从载波中恢复出数字信号
  • 三种基本调制方式:
    • 调幅 (ASK):载波幅度随数字信号变化(抗干扰差)
    • 调频 (FSK):载波频率随数字信号变化(抗干扰较好)
    • 调相 (PSK):载波相位随数字信号变化(抗干扰最好,频带利用率高)

(4)信道带宽与数据传输率的关系

  • 奈奎斯特公式(无噪声理想信道):C = 2H·log₂L (bps)
    • H 为信道带宽 (Hz),L 为码元离散值个数
  • 香农公式(有噪声信道):C = H·log₂(1 + S/N) (bps)
    • S/N 为信噪比(常用分贝 dB = 10·lg(S/N) 表示)
    • 信噪比越大,信道容量越大

1.3 串行通信的两种基本方式

(1)异步通信 (Asynchronous Communication)

  • 特点:以字符为单位传送,字符之间的时间间隔不固定
  • 帧格式:
    • 起始位:1 位,低电平(标志一个字符开始)
    • 数据位:5~8 位(通常 7 或 8 位),低位在前
    • 校验位:1 位(奇校验/偶校验/无)
    • 停止位:1、1.5 或 2 位,高电平(标志一个字符结束)
  • 空闲位:线路空闲时保持高电平
  • 优缺点:
    • 优点:不需要同步时钟,设备简单,收发双方时钟独立
    • 缺点:每个字符都有起始/停止位开销,传输效率低(约 80%)

(2)同步通信 (Synchronous Communication)

  • 特点:以数据块(帧)为单位传送,字符之间无间隔
  • 同步方式:
    • 外同步:由外部提供同步时钟信号
    • 内同步:在数据帧头部插入同步字符(SYN)
  • 帧格式:
    • 1~2 个同步字符 SYN → 数据块(连续字符)→ 校验字符(CRC 等)
  • 优缺点:
    • 优点:传输效率高(无字符间空隙和起始停止位)
    • 缺点:需要同步时钟,硬件复杂,收发双方时钟必须严格同步

二、串行通信的差错控制

2.1 差错类型

  • 随机错:由热噪声引起,单个比特出错
  • 突发错:由脉冲噪声引起,连续多个比特出错

2.2 常用检错方法

(1)奇偶校验 (Parity Check)

  • 奇校验:整个字符(数据位+校验位)中”1”的个数为奇数
  • 偶校验:整个字符中”1”的个数为偶数
  • 特点:简单,但只能检测奇数个比特错误,漏检率约 50%

(2)循环冗余校验 (CRC — Cyclic Redundancy Check)

  • 基本原理:将数据块看成一个多项式,用生成多项式 G(x) 做模 2 除法,余数作为校验码
  • 特点:检错能力强,能检测全部奇数个错和大部分突发错
  • 常用生成多项式:
    • CRC-12:x¹² + x¹¹ + x³ + x² + x + 1
    • CRC-16:x¹⁶ + x¹⁵ + x² + 1(IBM/CCITT)
    • CRC-CCITT:x¹⁶ + x¹² + x⁵ + 1
    • CRC-32:x³² + x²⁶ + x²³ + x²² + x¹⁶ + x¹² + x¹¹ + x¹⁰ + x⁸ + x⁷ + x⁵ + x⁴ + x² + x + 1(以太网用)

2.3 纠错方法

  • 自动重发请求 (ARQ):检出错误后请求发送方重发
  • 前向纠错 (FEC):接收端不仅能检错还能纠正错误(如海明码)
  • 混合纠错:少量错自行纠正,超出能力则请求重发

三、串行接口的基本功能

一个典型的串行接口应具备以下功能:

  1. 串-并转换:发送时并行→串行;接收时串行→并行
  2. 格式化:异步/同步帧格式装配与拆解
  3. 差错控制:奇偶校验/CRC 校验的产生与检测
  4. 速率控制:波特率发生器,可选多种波特率
  5. 联络信号:提供 Modem 控制信号(DTR/DSR/RTS/CTS 等)
  6. 缓冲:发送/接收数据缓冲寄存器,解决速度匹配
  7. 中断/DMA 支持:提高 CPU 效率
  8. 状态寄存器:反映接口工作状态(发送空、接收满、各种错误等)

四、可编程串行通信接口 8251A

4.1 8251A 概述

  • Intel 8251A:通用同步/异步接收发送器 (USART — Universal Synchronous/Asynchronous Receiver/Transmitter)
  • 支持同步和异步两种工作方式
  • 同步:58 位数据,内同步/外同步,波特率 064K
  • 异步:58 位数据,1/1.5/2 位停止位,波特率 019.2K
  • 全双工,双缓冲(发送/接收各有缓冲)
  • 三种错误检测:奇偶错、溢出错、帧格式错
  • 提供 Modem 控制信号,可直接连接 Modem

4.2 8251A 内部结构

五大组成部分:

  1. 发送器

    • 发送缓冲寄存器(并行输入)
    • 发送移位寄存器(串行输出 → TxD)
    • 发送控制电路
    • 输出信号:TXRDY(发送准备好)、TXE(发送缓冲器空)、TxC(发送时钟)
  2. 接收器

    • 接收移位寄存器(串行输入 ← RxD)
    • 接收缓冲寄存器(并行输出)
    • 接收控制电路
    • 输出信号:RXRDY(接收准备好)、RxC(接收时钟)、SYNDET(同步检测)
  3. 数据总线缓冲器

    • 8 位双向三态缓冲器
    • 连接系统数据总线 D₀~D₇
    • 含:数据输入缓冲、数据输出缓冲、控制字/状态字缓冲
  4. 读/写控制逻辑

    • 接收 CPU 的控制信号,决定操作类型
    • 控制信号:
      • CS:片选
      • C/D:控制/数据选择(C/D=1 读写控制字/状态字;C/D=0 读写数据)
      • RD、WR:读/写控制
      • RESET:复位(回到方式字等待状态)
      • CLK:主时钟(8251A 工作时钟)
  5. Modem 控制逻辑

    • 提供与 Modem 的联络信号
    • DTR:数据终端准备好(输出,低有效)
    • DSR:数据装置准备好(输入,低有效)
    • RTS:请求发送(输出,低有效)
    • CTS:清除发送(输入,低有效)

4.3 8251A 外部引脚

28 脚 DIP 封装,分五大类:

类别信号方向说明
数据总线D₀~D₇双向8 位数据总线,连系统数据总线
读/写控制CS输入片选,低有效
C/D输入控制/数据选择(=1 控制;=0 数据)
RD输入读信号,低有效
WR输入写信号,低有效
CLK输入主时钟(同步时>30×波特率,异步时>4.5×)
RESET输入复位,高有效
发送器TxD输出串行数据发送端
TXRDY输出发送器准备好(缓冲器空)
TXE输出发送器空(移位寄存器也空)
TxC输入发送时钟(下降沿发送数据)
接收器RxD输入串行数据接收端
RXRDY输出接收器准备好(已有数据可读)
RxC输入接收时钟(上升沿采样数据)
SYNDET/BRKDET双向同步检测/断点检测
Modem 控制DTR输出数据终端准备好,低有效
DSR输入数据装置准备好,低有效
RTS输出请求发送,低有效
CTS输入清除发送,低有效

4.4 8251A 的控制字

8251A 有两个控制字寄存器,共用一个端口地址:

(1)方式指令字(模式字)

决定 8251A 的工作方式,复位后写入的第一个字就是方式字。

D₇D₆D₅D₄D₃D₂D₁D₀
异步:停止位 / 同步:同步字符数奇偶校验字符长度波特率因子
  • D₁D₀(波特率因子 / 同步选择):

    • 00 = 同步方式
    • 01 = 异步,×1(时钟=波特率)
    • 10 = 异步,×16(时钟=16×波特率)
    • 11 = 异步,×64(时钟=64×波特率)
  • D₃D₂(字符长度):00=5位, 01=6位, 10=7位, 11=8位

  • D₄(奇偶校验允许):1=允许,0=禁止

  • D₅(奇偶类型):D₄=1 时有效,1=偶校验,0=奇校验

  • D₇D₆(异步:停止位数):

    • 00 = 无效
    • 01 = 1 位停止位
    • 10 = 1.5 位停止位
    • 11 = 2 位停止位
  • D₇D₆(同步:同步字符数):

    • D₀=00(同步)时:D₆=1 单同步, D₆=0 双同步;D₇=1 外同步, D₇=0 内同步

例:0111 1011B = 7BH → 异步,×16,8位数据,偶校验,2位停止位 例:0100 1110B = 4EH → 异步,×16,8位数据,偶校验,1位停止位

(2)命令指令字(控制字)

方式字写入后,后续写入的就是命令字。

D₇D₆D₅D₄D₃D₂D₁D₀
EHIRRTSERSBRKRxEDTRTxEN
  • D₀ (TxEN):发送允许,1=允许发送
  • D₁ (DTR):数据终端准备好,1=使 DTR 输出有效(低电平)
  • D₂ (RxE):接收允许,1=允许接收
  • D₃ (SBRK):发终止字符,1=发送连续低电平(BREAK)
  • D₄ (ER):错误标志复位,1=清除 PE/OE/FE 三个错误标志
  • D₅ (RTS):请求发送,1=使 RTS 输出有效(低电平)
  • D₆ (IR):内部复位,1=使 8251A 复位,回到等待方式字状态
  • D₇ (EH):进入搜索模式(同步方式用),1=启动搜索同步字符

例:0011 0111B = 37H → 发送允许,接收允许,错误复位,RTS 请求,DTR 有效

(3)状态字

从控制口(C/D=1)读出的是状态字。

D₇D₆D₅D₄D₃D₂D₁D₀
DSRSYNDETFEOEPETXERXRDYTXRDY
  • D₀ (TXRDY):发送器准备好(=1 可发送数据)
  • D₁ (RXRDY):接收器准备好(=1 有数据可读取)
  • D₂ (TXE):发送器空(移位寄存器也空)
  • D₃ (PE):奇偶校验错(Parity Error)
  • D₄ (OE):溢出错(Overrun Error,前一字节未取走又收到新字节)
  • D₅ (FE):帧格式错(Framing Error,异步方式无有效停止位)
  • D₆ (SYNDET):同步检测
  • D₇ (DSR):数据装置准备好(=1 表示 Modem 已就绪)

4.5 8251A 的初始化流程

关键:方式字和命令字共用一个写入端口,通过写入顺序区分。

复位(硬件复位或命令字 D6=1 内部复位)
        ↓
   写入方式指令字(决定工作方式)
        ↓
┌→ 写入命令指令字(控制操作)
│       ↓
│   数据收发操作
│       ↓
└── 需要改变方式吗?
    是 → 发内部复位命令(D6=1)→ 回到方式字状态
    否 → 继续操作

关于”先写 3 次 0”的初始化技巧:

  • 8251A 上电后可能处于不确定状态(方式字/同步字符/命令字都有可能)
  • 为保证正确初始化,先连续写 3 次 00H(C/D=1),再发内部复位命令 40H
  • 原理:3 次 00H 会配置成同步方式 + 写入 2 个假同步字符,确保设备处于命令字状态
  • 然后发 40H 内部复位,再正常初始化方式字和命令字
; 8251A 安全初始化示例
MOV  DX, 控制端口
MOV  AL, 0
OUT  DX, AL      ; 第1次 0
OUT  DX, AL      ; 第2次 0
OUT  DX, AL      ; 第3次 0
MOV  AL, 40H     ; 内部复位命令
OUT  DX, AL
MOV  AL, 4EH     ; 方式字:异步×16,8数据,偶校验,1停止位
OUT  DX, AL
MOV  AL, 27H     ; 命令字:发送/接收允许,错误复位,RTS,DTR
OUT  DX, AL

4.6 8251A 应用编程

(1)查询式发送程序

; 假设已初始化
MOV  SI, 发送数据块首地址
MOV  CX, 发送字节数
NEXT:
    MOV  DX, 8251A_控制口
    IN   AL, DX          ; 读状态字
    TEST AL, 01H         ; 查 TXRDY (D0)
    JZ   NEXT            ; 未准备好,等待
    MOV  DX, 8251A_数据口
    MOV  AL, [SI]        ; 取数据
    OUT  DX, AL          ; 发送
    INC  SI
    LOOP NEXT
    HLT

(2)查询式接收程序

MOV  DI, 接收数据块首地址
MOV  CX, 接收字节数
L1:
    MOV  DX, 8251A_控制口
    IN   AL, DX          ; 读状态字
    TEST AL, 02H         ; 查 RXRDY (D1)
    JZ   L1              ; 未收到,等待
    TEST AL, 08H         ; 查奇偶错 PE (D3)
    JNZ  ERR             ; 有错转错误处理
    MOV  DX, 8251A_数据口
    IN   AL, DX          ; 读数据
    MOV  [DI], AL        ; 存数据
    INC  DI
    LOOP L1
    HLT

五、RS-232C 串行接口标准

5.1 概述

  • RS-232C:美国电子工业协会 (EIA) 制定的串行接口标准
  • 全称:Recommended Standard 232, Revision C
  • 用于数据终端设备 (DTE) 与 数据通信设备 (DCE) 之间的接口
  • 物理接口:DB-25(25 针)或 DB-9(9 针)连接器

5.2 电气特性

  • 采用负逻辑电平:
    • 逻辑 “0”(SPACE):+3V ~ +15V(典型 +12V)
    • 逻辑 “1”(MARK):-3V ~ -15V(典型 -12V)
    • -3V ~ +3V 为过渡区,无定义
  • 阻抗:负载 3kΩ ~ 7kΩ
  • 速率:≤ 20kbps
  • 距离:≤ 15m(速率越高距离越短)

5.3 常用引脚信号(9 针简化版)

引脚缩写名称方向 (DTE→DCE)说明
1CD载波检测输入DCE 检测到载波
2RxD接收数据输入串行数据输入
3TxD发送数据输出串行数据输出
4DTR数据终端准备好输出DTE 已就绪
5GND信号地—公共地
6DSR数据装置准备好输入DCE 已就绪
7RTS请求发送输出DTE 请求发送数据
8CTS清除发送输入DCE 允许发送
9RI振铃指示输入DCE 检测到振铃

5.4 电平转换

  • 8251A 等芯片输出的是 TTL 电平(0V/5V)
  • RS-232C 是 ±12V 电平
  • 需要电平转换芯片:
    • MC1488 / SN75150:TTL → RS-232C(发送器,需 ±12V 电源)
    • MC1489 / SN75154:RS-232C → TTL(接收器,+5V 电源)
    • MAX232:单 +5V 供电,内部有电荷泵产生 ±10V,收发各 2 路(最常用)

六、章节关联与知识网络

与前后章的关系

  • 前置知识:

    • 第5章 计算机组成 → 系统总线与I/O基本概念
    • 第10章 微处理器外部特性 → 总线接口、中断、DMA
    • 第11章 I/O接口 → I/O控制方式、程序查询/中断/DMA
    • 第14章 并行通信 → 8255A 并行接口基础、可编程接口的一般结构
  • 后续章节:

    • 第18章 总线技术 → 更高层次的通信与互连
    • 8237 DMA 控制器 → 串行接口的 DMA 工作方式

关键概念对比

对比项并行通信串行通信
传输方式多位同时传送一位一位分时传送
传输线数N 根数据线 + 控制线1 根数据线 + 控制线
速率高(短距离内)低
成本高(线缆多)低(线缆少)
适用距离短(通常 < 几米)长(可达几公里)
典型芯片8255A8251A
典型标准打印机并口(Centronics)RS-232C / USB / 以太网

七、重点考点速查

  1. 异步通信帧格式:起始位(1) + 数据位(5-8) + 校验位(0/1) + 停止位(1/1.5/2)
  2. 波特率因子:异步方式下时钟频率与波特率的比值(×1/×16/×64)
  3. 8251A 两大控制字:方式字(复位后第一个)+ 命令字(后续写入),地址相同靠顺序区分
  4. 8251A 三种错误:PE 奇偶错、OE 溢出错、FE 帧格式错(命令字 D4=ER 复位)
  5. 8251A 初始化安全步骤:先写 3 次 00H → 40H 内部复位 → 方式字 → 命令字
  6. 状态字 vs 命令字:状态字从 C/D=1 读出;命令字向 C/D=1 写入
  7. RS-232C 电平:负逻辑,+3~+15V = 0,-3~-15V = 1;MAX232 单 5V 电平转换
  8. 全双工 vs 半双工:全双工同时双向(两条物理通道);半双工双向不同时(分时切换)
  9. 同步 vs 异步:同步以数据块为单位、效率高、需同步;异步以字符为单位、效率低、不需同步
  10. TXRDY vs TXE:TXRDY = 发送缓冲器空(可写新数据);TXE = 移位寄存器也空(全部发完)

关联笔记