跳转至

第五章:基带处理架构

深入解析蓝牙基带层架构:数据包结构、时序控制、链路管理、ARQ 机制及状态机


5.1 基带层概述

5.1.1 基带层功能

基带层 (Baseband) 位于物理层之上,负责:

  1. 数据包组装/解析:将上层数据封装为蓝牙包格式
  2. 时序控制:管理时隙、跳频同步
  3. ARQ 机制:自动重传请求,保证可靠传输
  4. 加密/解密:链路层安全
  5. 链路管理:连接建立、维护、释放
  6. 功耗管理:休眠模式控制

5.1.2 基带处理器架构

┌─────────────────────────────────────────────────────────────┐
│                    基带处理器                                │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │  包构建器   │  │  FEC 编码器  │  │  白化器     │         │
│  │  (Builder)  │  │  (Encoder)  │  │ (Whitener)  │         │
│  └──────┬──────┘  └──────┬──────┘  └──────┬──────┘         │
│         │                │                │                 │
│         └────────────────┴────────────────┘                 │
│                          │                                  │
│                          ▼                                  │
│  ┌─────────────────────────────────────────────────────┐   │
│  │              发送 FIFO 缓冲区                         │   │
│  └─────────────────────────────────────────────────────┘   │
│                          │                                  │
│                          ▼                                  │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │  时序控制   │  │  跳频控制   │  │  GFSK 调制   │         │
│  │  (Timing)   │  │  (Hopping)  │  │ (Modulator) │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
│                                                             │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │  GFSK 解调  │  │  去交织     │  │  FEC 解码器  │         │
│  │ (Demod)     │  │ (Deinter)   │  │ (Decoder)   │         │
│  └──────┬──────┘  └──────┬──────┘  └──────┬──────┘         │
│         │                │                │                 │
│         └────────────────┴────────────────┘                 │
│                          │                                  │
│                          ▼                                  │
│  ┌─────────────────────────────────────────────────────┐   │
│  │              接收 FIFO 缓冲区                         │   │
│  └─────────────────────────────────────────────────────┘   │
│                          │                                  │
│                          ▼                                  │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │  包解析器   │  │  ARQ 处理   │  │  加密引擎   │         │
│  │  (Parser)   │  │  (ARQ)      │  │ (Crypto)    │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
│                                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │              链路管理器 (LMP)                         │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

5.2 数据包结构

5.2.1 经典蓝牙包结构

基本包格式:

1
2
3
4
5
6
7
8
9
┌─────────────┬─────────────┬─────────────┬─────────────┐
│   访问码    │   包头部    │   有效载荷  │    可选     │
│ (Access)   │  (Header)   │  (Payload)  │   (CRC)     │
│  68/72 bit  │  54 bit     │  0-2745 bit │  0/24 bit   │
└─────────────┴─────────────┴─────────────┴─────────────┘
     │              │             │
     │              │             │
     ▼              ▼             ▼
  同步/识别      控制信息      用户数据

访问码 (Access Code):

┌──────────┬──────────┬──────────┐
│  前导码  │  同步字  │  尾随码  │
│  4 bit   │  64 bit  │  4 bit   │
└──────────┴──────────┴──────────┘

前导码:0101 或 1010 (用于 DC 平衡)
同步字:由蓝牙地址生成 (64 bit)
尾随码:0101 或 1010 (用于符号定时)

功能:
├── 包检测
├── 频率同步
├── 符号定时恢复
└── 设备识别

包头部 (Header):

┌─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│ AM  │ Type│ Flow│ ARQN│ SEQN│ HEC │     │
│ 3b  │ 4b  │ 1b  │ 1b  │ 1b  │ 8b  │     │
└─────┴─────┴─────┴─────┴─────┴─────┴─────┘
              共 18 bit
              1/3 FEC 编码后 54 bit

字段说明:
├── AM_ADDR (3 bit): 活跃从设备地址 (0=广播)
├── Type (4 bit): 包类型 (DM1, DH1, DM3, DH3, etc.)
├── Flow (1 bit): 流量控制 (0=暂停,1=继续)
├── ARQN (1 bit): 确认 (0=NAK, 1=ACK)
├── SEQN (1 bit): 序列号 (0/1 交替)
└── HEC (8 bit): 头部错误校验 (CRC-8)

有效载荷 (Payload):

1
2
3
4
5
6
7
8
┌─────────────┬─────────────┬─────────────┐
│  同步序列   │  有效载荷   │    CRC      │
│  (可选)    │  (Data)     │   (可选)    │
└─────────────┴─────────────┴─────────────┘

同步序列:用于 SCO 链路同步
有效载荷:0-2745 bit (取决于包类型)
CRC: 24 bit (DM 包有,DH 包无)

5.2.2 包类型详解

经典蓝牙包类型:

包类型 用途 时隙数 有效载荷 FEC CRC
ID 识别/寻呼 1 0
NULL 轮询/ACK 1 0
POLL 轮询 1 0
FHS 频率跳频同步 1 18 byte
DM1 数据 1 17 byte
DH1 数据 1 27 byte
DM3 数据 3 121 byte
DH3 数据 3 183 byte
DM5 数据 5 224 byte
DH5 数据 5 339 byte
HV1 语音 1 10 byte
HV2 语音 2 20 byte
HV3 语音 3 30 byte
SCO 同步语音 1 10 byte
eSCO 扩展语音 ⅓/5 可变 可选 可选

BLE 包类型:

广播包:
├── ADV_IND: 可连接广播
├── ADV_DIRECT_IND: 直接广播
├── ADV_NONCONN_IND: 不可连接广播
├── ADV_SCAN_IND: 可扫描广播
└── SCAN_RSP: 扫描响应

数据包:
├── CONNECT_IND: 连接请求
├── LL_DATA: 链路层数据
└── LL_CONTROL: 链路层控制

5.2.3 BLE 包结构

BLE 包格式:

1
2
3
4
5
6
7
8
┌──────────┬──────────┬────────────┬───────────┬──────────┐
│  前导码  │ 访问地址  │   PDU      │    CRC    │  尾随   │
│  1 byte  │ 4 bytes  │  2-257 B   │  3 bytes  │   -      │
└──────────┴──────────┴────────────┴───────────┴──────────┘
     │           │          │            │
     │           │          │            │
     ▼           ▼          ▼            ▼
  80 μs      32 μs      可变         24 μs

LE PDU 结构:

┌─────────┬──────────┬─────────────────┐
│  PDU 头  │ PDU 载荷  │   MIC (可选)   │
│ 2 bytes │ 0-255 B  │   4 bytes      │
└─────────┴──────────┴─────────────────┘

PDU 头 (16 bit):
├── LLID (2 bit): 逻辑链路标识
├── NESN (1 bit): 下一个期望序列号
├── SN (1 bit): 序列号
├── MD (1 bit): 更多数据
├── Length (5 bit): 载荷长度
└── Reserved (6 bit): 保留

5.3 时序控制

5.3.1 时隙结构

经典蓝牙时隙:

时隙长度:625 μs
时隙编号:k = 0, 1, 2, ...

主设备传输:
├── 偶数时隙 (k=0,2,4...):主设备发送
└── 奇数时隙 (k=1,3,5...):主设备接收

从设备传输:
├── 偶数时隙:从设备接收
└── 奇数时隙:从设备发送

时序图:

主设备  TX ──┐    ┌────┐    ┌────┐    ┌────┐
             │    │    │    │    │    │    │
             ▼    ▼    ▼    ▼    ▼    ▼    ▼
        ┌────────┬────────┬────────┬────────┬
        │ 时隙 0  │ 时隙 1  │ 时隙 2  │ 时隙 3  │
        │ (TX)  │ (RX)  │ (TX)  │ (RX)  │
        └────────┴────────┴────────┴────────┴

从设备  RX ──┐    ┌────┐    ┌────┐    ┌────┐
             │    │    │    │    │    │    │
             ▼    ▼    ▼    ▼    ▼    ▼    ▼
        ┌────────┬────────┬────────┬────────┬
        │ 时隙 0  │ 时隙 1  │ 时隙 2  │ 时隙 3  │
        │ (RX)  │ (TX)  │ (RX)  │ (TX)  │
        └────────┴────────┴────────┴────────┴

多时隙包:

3 时隙包 (DM3/DH3):

主设备  TX ────────┐
              ┌───────────┬───────┬───────┐
              │   包      │ 空闲  │ 空闲  │
              │ (3 时隙)   │       │       │
              └───────────┴───────┴───────┘
              占用 3 个时隙 (1875 μs)
              下一个传输在时隙 k+3

5 时隙包 (DM5/DH5):
              ┌───────────────────────────┬───┬───┬───┬───┐
              │         包 (5 时隙)         │   │   │   │   │
              └───────────────────────────┴───┴───┴───┴───┘
              占用 5 个时隙 (3125 μs)

5.3.2 跳频时序

跳频同步:

每个时隙切换到新频率

频率序列:f(k) = 跳频函数 (地址,时钟)

主设备:
├── 使用完整 79 信道跳频序列
└── 决定每个时隙的频率

从设备:
├── 同步到主设备的跳频序列
└── 接收和发送使用相同频率

时序:

时隙 k      时隙 k+1    时隙 k+2
  │           │           │
  ▼           ▼           ▼
f(k)       f(k+1)      f(k+2)
  │           │           │
  │           │           │
  └─625 μs───┴─625 μs───┘

频率切换时间:< 100 μs

自适应跳频 (AFH):

检测干扰信道并排除:

正常跳频序列:[0, 15, 32, 47, 63, 78, ...]
干扰检测:信道 15, 47 有 WiFi 干扰
AFH 映射表:排除信道 15, 47
实际跳频:[0, 32, 63, 78, ...]
         (只在 77 个好信道上跳)

最少保留信道数:20 个

5.4 ARQ 机制

5.4.1 ARQ 原理

自动重传请求 (ARQ):

目的:保证数据可靠传输

机制:
├── 发送方:每个包有序列号 (SEQN)
├── 接收方:检测错误,发送 ACK/NAK
└── 发送方:收到 NAK 或超时则重传

停等协议 (Stop-and-Wait):
├── 发送一个包
├── 等待确认
├── 收到 ACK 后发送下一个
└── 收到 NAK 则重传

ARQ 状态机:

发送方状态机:

┌──────────┐
│  空闲    │
└────┬─────┘
     │ 有数据发送
┌──────────┐
│  发送    │───► 发送包 (SEQN=n)
└────┬─────┘
┌──────────┐
│  等待    │
│  ACK     │
└────┬─────┘
     ├── ACK 收到 ──► ┌──────────┐
     │                │  发送    │ (SEQN=n+1)
     │                └──────────┘
     └── NAK/超时 ──► ┌──────────┐
                      │  重传    │ (SEQN=n)
                      └──────────┘

接收方状态机:

┌──────────┐
│  期待    │ (期待 SEQN=n)
└────┬─────┘
┌──────────┐
│  接收    │
└────┬─────┘
     ├── 正确且 SEQN=n ──► 发送 ACK, 期待 SEQN=n+1
     └── 错误或 SEQN≠n ──► 发送 NAK, 期待 SEQN=n (不变)

5.4.2 蓝牙 ARQ 实现

ARQ 字段:

包头部包含 ARQ 控制字段:

┌─────┬─────┬─────┐
│ ARQN│ SEQN│ Flow│
│ 1b  │ 1b  │ 1b  │
└─────┴─────┴─────┘

ARQN (1 bit):
├── 0 = NAK (未正确接收)
└── 1 = ACK (正确接收)

SEQN (1 bit):
├── 0/1 交替
└── 用于检测重复包

Flow (1 bit):
├── 0 = 暂停 (接收方缓冲区满)
└── 1 = 继续

ARQ 时序示例:

成功传输:

主设备                    从设备
  │                         │
  │── DM1 (SEQN=0) ────────►│
  │                         │ 检查 CRC
  │                         │ 正确
  │◄────── ACK (ARQN=1) ───│
  │                         │
  │── DM1 (SEQN=1) ────────►│
  │                         │ 检查 CRC
  │                         │ 正确
  │◄────── ACK (ARQN=1) ───│
  │                         │

传输错误:

主设备                    从设备
  │                         │
  │── DM1 (SEQN=0) ────────►│
  │                         │ CRC 错误
  │◄────── NAK (ARQN=0) ───│
  │                         │
  │── DM1 (SEQN=0) ────────►│ 重传
  │                         │ 检查 CRC
  │                         │ 正确
  │◄────── ACK (ARQN=1) ───│
  │                         │

5.4.3 BLE ARQ

BLE ARQ 机制:

BLE 使用类似的 ARQ 但字段不同:

PDU 头中的 ARQ 字段:
├── SN (1 bit): 序列号
└── NESN (1 bit): Next Expected Sequence Number

工作原理:
├── 发送方设置 SN = 当前序列号
├── 接收方设置 NESN = 期望的下一个序列号
└── 当 SN ≠ NESN 时,接收方知道是新包

时序:

发送方                    接收方
  │                         │
  │── DATA (SN=0) ─────────►│
  │                         │ 正确接收
  │                         │ NESN=1
  │◄──── DATA (SN=1,NESN=1)─│
  │ 知道对方期望 SN=1        │
  │                         │
  │── DATA (SN=1) ─────────►│
  │                         │ 正确接收
  │                         │ NESN=0
  │◄──── DATA (SN=0,NESN=0)─│
  │ 知道对方期望 SN=0        │
  │                         │

5.5 链路管理

5.5.1 链路类型

SCO 链路 (同步面向连接):

用途:语音传输 (如免提通话)

特点:
├── 固定带宽预留
├── 周期性时隙分配
├── 不重传 (低延迟优先)
└── 对称链路

时序:

主设备  TX ──┐    ┌────┐    ┌────┐    ┌────┐
             │    │    │    │    │    │    │
             ▼    ▼    ▼    ▼    ▼    ▼    ▼
        ┌────────┬────────┬────────┬────────┬
        │ SCO0   │        │ SCO1   │        │
        └────────┴────────┴────────┴────────┴
             │              │
             │              │
             ◄──── T_SCO ──►

T_SCO: SCO 间隔 (典型 3.75 ms)

eSCO 链路 (扩展 SCO):

SCO 的改进版本

改进:
├── 支持重传 (提高可靠性)
├── 可变包类型 (EV3, EV4, EV5)
├── 非对称链路
└── 更好的语音质量

重传窗口:
├── 初始传输
└── 最多 2 次重传

ACL 链路 (异步无连接):

用途:数据传输

特点:
├── 使用剩余带宽
├── 支持 ARQ 重传
├── 可靠传输
└── 可非对称

与 SCO 共存:
├── SCO 优先
└── ACL 使用 SCO 之外的时隙

5.5.2 连接建立流程

经典蓝牙连接建立:

1. 待机 (Standby)
2. 查询 (Inquiry) - 发现附近设备
   │ 发送 ID 包 (广播)
   │ 接收 FHS 响应
3. 寻呼 (Page) - 建立连接
   │ 发送 ID 包 (目标地址)
   │ 接收 FHS 响应
   │ 发送 FHS (主设备信息)
   │ 接收 ID 确认
4. 连接 (Connected)
   │ 交换链路管理信息
   │ 协商加密参数
   │ 开始数据传输

BLE 连接建立:

1. 广播 (Advertising)
   │ 外设发送 ADV_IND 包
   │ 间隔:20ms - 10.24s
2. 扫描 (Scanning)
   │ 中心设备监听广播
   │ 可发送 SCAN_REQ 请求更多信息
3. 发起 (Initiating)
   │ 中心设备发送 CONNECT_IND
   │ 包含连接参数:
   │   - 连接间隔 (7.5ms - 4s)
   │   - 从设备延迟
   │   - 监督超时
4. 连接 (Connected)
   │ 进入连接事件
   │ 开始数据传输

5.5.3 连接参数

BLE 连接参数:

┌─────────────────────────────────────────────────────────┐
│                    连接参数                              │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  连接间隔 (Connection Interval):                        │
│  ├─ 范围:7.5 ms - 4.0 s                               │
│  ├─ 步长:1.25 ms                                      │
│  └─ 典型值:                                            │
│     ├─ 高速率:7.5-15 ms (音频)                        │
│     ├─ 一般:20-50 ms (传感器)                         │
│     └─ 低功耗:100ms-4s (信标)                         │
│                                                         │
│  从设备延迟 (Slave Latency):                            │
│  ├─ 范围:0 - 499                                      │
│  └─ 允许从设备跳过指定数量的连接事件                    │
│                                                         │
│  监督超时 (Supervision Timeout):                        │
│  ├─ 范围:100 ms - 32 s                                │
│  └─ 超过此时间无通信则断开连接                          │
│                                                         │
│  连接事件时长:                                         │
│  └─ 典型 1-5 ms (取决于数据量)                          │
│                                                         │
└─────────────────────────────────────────────────────────┘

5.6 加密与安全

5.6.1 加密架构

┌─────────────────────────────────────────────────────────┐
│                    加密引擎                              │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  经典蓝牙 (E0 流密码):                                   │
│  ┌─────────────────────────────────────────────────┐   │
│  │  4 个 LFSR (25,22,22,17 bit)                     │   │
│  │      │         │        │        │              │   │
│  │      └─────────┴────────┴────────┘              │   │
│  │                    │                             │   │
│  │                    ▼                             │   │
│  │            ┌───────────────┐                    │   │
│  │            │  组合器函数   │                    │   │
│  │            │  (非线性)     │                    │   │
│  │            └───────┬───────┘                    │   │
│  │                    │                             │   │
│  │                    ▼                             │   │
│  │              密钥流输出                          │   │
│  └─────────────────────────────────────────────────┘   │
│                                                         │
│  BLE (AES-CCM):                                         │
│  ┌─────────────────────────────────────────────────┐   │
│  │  AES-128 加密核心                                │   │
│  │      │                                          │   │
│  │      ▼                                          │   │
│  │  CCM 模式 (Counter + CBC-MAC)                    │   │
│  │  ├─ 加密:CTR 模式                              │   │
│  │  └─ 认证:CBC-MAC                               │   │
│  └─────────────────────────────────────────────────┘   │
│                                                         │
└─────────────────────────────────────────────────────────┘

5.6.2 加密流程

经典蓝牙加密:

加密密钥生成:

┌──────────┐    ┌──────────┐    ┌──────────┐
│  配对    │───►│  认证    │───►│  密钥生成 │
│ (Pairing)│    │(Authentication)│(Key Gen)│
└──────────┘    └──────────┘    └──────────┘
     │               │               │
     │               │               ▼
     │               │         ┌──────────┐
     │               │         │  K_enc   │
     │               │         │ (加密密钥)│
     │               │         └────┬─────┘
     │               │              │
     │               │              ▼
     │               │         ┌──────────┐
     │               │         │  E0 加密  │
     │               │         │  引擎    │
     │               │         └──────────┘
     │               │
     ▼               ▼
┌──────────────────────────┐
│      链路密钥 K_link      │
│      (128 bit)           │
└──────────────────────────┘

数据传输加密:
明文数据 ──► ⊕ ──► 密文数据
        E0 密钥流

BLE 加密:

LE 安全连接 (BLE 4.2+):

┌─────────────────────────────────────────────────────────┐
│                    配对流程                              │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  阶段 1: 特性交换                                       │
│  ├─ 交换 IO 能力                                       │
│  ├─ 交换认证要求                                       │
│  └─ 确定配对方法                                       │
│                                                         │
│  阶段 2: 密钥生成                                       │
│  ├─ OOB (带外): NFC 等                                 │
│  ├─ Numeric Compare: 显示并比较 6 位数字                 │
│  ├─ Passkey Entry: 输入 6 位密码                         │
│  └─ Just Works: 无认证 (最低安全)                       │
│                                                         │
│  阶段 3: 密钥分发                                       │
│  ├─ LTK (Long Term Key): 加密密钥                      │
│  ├─ IRK (Identity Resolving Key): 身份解析              │
│  ├─ CSRK (Connection Signature Key): 签名              │
│  └─ 地址信息                                           │
│                                                         │
└─────────────────────────────────────────────────────────┘

5.7 功耗管理

5.7.1 经典蓝牙功耗模式

┌─────────────────────────────────────────────────────────┐
│                    功耗模式                              │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  Active (活跃模式):                                     │
│  ├─ 正常通信状态                                       │
│  ├─ 电流:15-30 mA                                    │
│  └─ 监听每个时隙                                       │
│                                                         │
│  Sniff (监听模式):                                      │
│  ├─ 从设备只在特定时刻监听                             │
│  ├─ 电流:5-10 mA                                     │
│  └─ 监听间隔:典型 100 ms - 1 s                        │
│                                                         │
│  Hold (保持模式):                                       │
│  ├─ 暂时停止 ACL 传输                                   │
│  ├─ 电流:1-5 mA                                      │
│  └─ 保持时间:协商确定                                  │
│                                                         │
│  Park (停放模式):                                       │
│  ├─ 从设备释放活跃地址                                 │
│  ├─ 电流:< 1 mA                                      │
│  └─ 定期监听信标保持同步                                │
│                                                         │
└─────────────────────────────────────────────────────────┘

5.7.2 BLE 功耗模式

BLE 超低功耗设计:

┌─────────────────────────────────────────────────────────┐
│                    连接事件                              │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  连接间隔:100 ms                                       │
│                                                         │
│  │◄────── 100 ms ──────►│                              │
│  │                      │                              │
│  ▼                      ▼                              │
│  ┌────┐            ┌────┐                              │
│  │事件│            │事件│                              │
│  │ #1 │            │ #2 │                              │
│  └─┬──┘            └─┬──┘                              │
│    │                 │                                 │
│    │ 2 ms            │ 2 ms                            │
│    │                 │                                 │
│    ▼                 ▼                                 │
│                                                         │
│  占空比:2 ms / 100 ms = 2%                            │
│                                                         │
│  电流:                                                 │
│  ├─ 事件期间:10 mA                                    │
│  ├─ 睡眠期间:5 μA                                     │
│  └─ 平均电流:10mA×2% + 5μA×98% ≈ 205 μA              │
│                                                         │
│  电池寿命 (CR2032, 220 mAh):                            │
│  └─ 220 mAh / 0.205 mA ≈ 1073 小时 ≈ 45 天              │
│                                                         │
└─────────────────────────────────────────────────────────┘

5.8 本章小结

本章详细介绍了蓝牙基带处理架构:

  1. 包结构:访问码、头部、载荷、CRC,经典蓝牙和 BLE 包格式
  2. 时序控制:625 μs 时隙、跳频同步、多时隙包
  3. ARQ 机制:停等协议、ACK/NAK、序列号管理
  4. 链路管理:SCO/eSCO/ACL 链路、连接建立流程
  5. 加密安全:E0 流密码、AES-CCM、配对流程
  6. 功耗管理:Active/Sniff/Hold/Park 模式、BLE 超低功耗设计

下一章将深入芯片实现细节,包括射频前端、频率合成器、基带处理器的 Verilog 实现。


上一章:04-调制解调技术
下一章:06-芯片实现详解