3. CSI-2 协议分层架构:协议层、链路层、物理层

MIPI CSI-2 协议采用经典的三层分层架构,将复杂的摄像头数据传输任务解耦为物理信号传输、数据包组帧与协议解析、以及高层应用控制三个独立层次。这种分层设计使得各层可以独立演进,同时保持接口的向后兼容性。

核心设计思想: 物理层负责“怎么传”,链路层负责“传什么”,协议层负责“传的内容是什么”。每一层只通过明确定义的接口与相邻层交互,降低系统耦合度。

3.1 三层模型总体架构

下图展示了 CSI-2 协议的三层模型及其数据流方向。数据从摄像头传感器(应用层)向下逐层封装,通过物理链路传输到接收端,再向上逐层解封装,最终恢复为图像数据。

CSI-2 三层协议架构总览 CSI-2 协议三层模型与数据流 发送端(Camera) 协议层 像素/字节到包格式 长包/短包封装 链路层 ECC 校验/CRC Lane 分发/合并 物理层 D-PHY/C-PHY 串行/解串 物理传输链路(差分信号对 × N Lane) 高速数据 Lane + 低功耗控制 Lane 接收端(Host) 物理层 D-PHY/C-PHY 串行/解串 链路层 ECC 校验/CRC Lane 分发/合并 协议层 包解析/解封装 像素数据恢复 关键说明: • 发送端数据流:应用层 → 协议层(封装) → 链路层(校验/分发) → 物理层(串行化) → 物理链路 • 接收端数据流:物理链路 → 物理层(解串) → 链路层(校验/合并) → 协议层(解封装) → 应用层 • 每一层只与相邻层通信,层间通过标准接口(如 PPI、LIP)交换数据和控制信息 • 物理层可配置为 1/2/4 Lane 模式,链路层自动完成 Lane 分发与合并

3.2 协议层(Protocol Layer)

协议层是 CSI-2 架构中最上层的逻辑层,负责将摄像头传感器输出的像素数据封装为符合 CSI-2 规范的数据包格式。该层定义了两种基本包类型:长包(Long Packet)和短包(Short Packet)。

3.2.1 长包(Long Packet)结构

长包用于传输大量数据负载,如图像像素数据。其结构包含包头、数据负载和包尾三部分:

+----------------+----------------+----------------+----------------+
|  数据标识符(DI) |  字计数(WC)    |   ECC 校验码    |   数据负载      |
|    (1 字节)     |   (2 字节)     |   (1 字节)      |   (可变长度)    |
+----------------+----------------+----------------+----------------+
|                                                                    |
|  数据负载(像素数据,字节对齐,长度由 WC 指定)                      |
|                                                                    |
+----------------+----------------+----------------+----------------+
|   CRC-16 高字节  |   CRC-16 低字节  |                              |
|   (1 字节)       |   (1 字节)       |                              |
+----------------+----------------+----------------+----------------+
字段 长度 描述
数据标识符(DI) 1 字节 高 6 位为虚拟通道 ID(VC),低 2 位为数据类型(DT)
字计数(WC) 2 字节 指定数据负载的字节数(0~65535)
ECC 1 字节 对 DI + WC 共 3 字节进行汉明码校验,可纠正 1 位错误、检测 2 位错误
数据负载 可变 像素数据,长度由 WC 指定,必须为字节对齐
CRC-16 2 字节 对数据负载进行循环冗余校验,多项式 x¹⁶ + x¹² + x⁵ + 1

3.2.2 短包(Short Packet)结构

短包用于传输控制信息,如帧开始(FS)、帧结束(FE)、行开始(LS)、行结束(LE)等事件。短包没有数据负载和 CRC:

+----------------+----------------+----------------+
|  数据标识符(DI) |  数据字段(DF)  |   ECC 校验码    |
|    (1 字节)     |   (2 字节)     |   (1 字节)      |
+----------------+----------------+----------------+
短包类型 数据字段含义 典型用途
帧开始(FS) 帧序号或保留 标记一帧图像数据的开始
帧结束(FE) 帧序号或保留 标记一帧图像数据的结束
行开始(LS) 行号 标记一行数据的开始(可选)
行结束(LE) 行号 标记一行数据的结束(可选)
设计提示: 在 FPGA 实现中,协议层通常使用状态机解析短包来生成帧同步信号(如 vsync/hsync),这些信号直接用于驱动 DMA 传输的帧同步逻辑。

3.3 链路层(Link Layer)

链路层位于协议层之下,负责数据包的可靠传输和 Lane 管理。主要功能包括:ECC 生成与校验、CRC 生成与校验、以及多 Lane 模式下的数据分发与合并。

3.3.1 ECC 与 CRC 校验机制

校验类型 保护范围 算法 纠错能力
ECC(汉明码) 包头(DI + WC) (6,3) 汉明码扩展 纠正 1 位错误,检测 2 位错误
CRC-16 数据负载 CRC-16-CCITT 检测所有 1/2 位错误、奇数位错误、突发错误 ≤ 16 位

3.3.2 Lane 分发与合并

当物理层配置为多 Lane 模式(2 Lane 或 4 Lane)时,链路层负责将协议层输出的字节流按规则分发到各个 Lane 上传输,接收端则执行逆过程合并回原始字节流。

4 Lane 分发与合并示意图 4 Lane 模式下的数据分发与合并 协议层输出 字节流 B0 B1 B2 B3 ... Lane 分发器 Lane 0: B0 B4 B8 ... Lane 1: B1 B5 B9 ... Lane 2: B2 B6 B10 ... Lane 3: B3 B7 B11 ... Lane 合并器 协议层接收 恢复字节流 B0 B1 B2 ... 分发规则:字节 i 分配到 Lane (i mod N),其中 N 为 Lane 数量
工程注意: 在 FPGA 实现中,Lane 分发器通常使用简单的字节轮询(Round-Robin)逻辑。但需注意,当数据负载长度不是 Lane 数的整数倍时,最后一个传输周期需要特殊处理,避免数据错位。

3.4 物理层(Physical Layer)

物理层是 CSI-2 架构的最底层,负责实际的电气信号传输。MIPI 联盟定义了两种物理层标准:D-PHY(广泛使用)和 C-PHY(更高带宽)。

3.4.1 D-PHY 物理层

D-PHY 使用差分信号对(D+ / D-)进行数据传输,支持两种工作模式:

模式 信号电平 数据速率 用途
高速模式(HS) 差分信号,摆幅约 200 mV 80 Mbps ~ 2.5 Gbps / Lane 传输图像数据
低功耗模式(LP) 单端信号,摆幅 1.2 V ~10 Mbps 控制命令、总线初始化

3.4.2 物理层接口信号

物理层与链路层之间通过 PPI(PHY-Protocol Interface) 接口连接,主要信号包括:

// PPI 接口关键信号(发送端方向)
wire        clk_hs;          // 高速时钟
wire [7:0]  data_hs_tx;      // 高速数据(每 Lane 8 位)
wire        data_hs_valid;   // 数据有效标志
wire        data_hs_ready;   // 物理层反压信号
wire        lp_tx;           // 低功耗传输使能
wire [1:0]  lp_state;        // LP 状态(00/01/10/11 对应 LP-00/01/10/11)

3.5 层间接口与数据流

三层模型之间的接口定义清晰,确保了模块化设计:

接口名称 连接层 主要功能
PPI 物理层 ↔ 链路层 高速数据收发、LP 控制、时钟管理
LIP 链路层 ↔ 协议层 数据包传输、错误状态上报
CCI 协议层 ↔ 应用层 摄像头控制接口(I²C 兼容)
层间接口关系 层间接口与数据流方向 协议层 链路层 物理层 LIP PPI 应用层 物理链路

3.6 分层架构在 FPGA 设计中的映射

在 FPGA 实现 CSI-2 接收端时,三层模型直接对应硬件模块划分:

层次 FPGA 模块 主要 RTL 组件
物理层 D-PHY IP / SerDes 差分输入缓冲器、时钟恢复 DLL、串并转换器
链路层 CSI-2 Link Layer ECC 校验器、CRC 校验器、Lane 对齐 FIFO、Lane 合并器
协议层 CSI-2 Protocol Decoder 包解析状态机、VC 过滤器、数据类型解码器、帧同步生成器
设计建议: 在 FPGA 中,建议将链路层和协议层合并为一个顶层模块(csi2_rx_top),内部再划分为子模块。物理层通常使用厂商提供的硬核 IP(如 Xilinx MIPI D-PHY IP)或第三方软核。层间接口使用 AXI4-Stream 协议可以简化与 DMA 控制器的连接。

3.7 本章小结

CSI-2 的三层分层架构为摄像头数据传输提供了清晰的抽象层次:

  • 协议层负责数据包的封装与解析,定义了长包和短包两种格式,支持虚拟通道和多种数据类型。
  • 链路层通过 ECC/CRC 校验保证传输可靠性,并实现多 Lane 模式下的数据分发与合并。
  • 物理层使用 D-PHY 或 C-PHY 标准,通过差分信号实现高速串行传输,支持 HS 和 LP 两种工作模式。
  • 层间接口(PPI、LIP)的标准化定义使得各层可以独立设计、验证和复用。