3. CSI-2 协议分层架构:协议层、链路层、物理层
MIPI CSI-2 协议采用经典的三层分层架构,将复杂的摄像头数据传输任务解耦为物理信号传输、数据包组帧与协议解析、以及高层应用控制三个独立层次。这种分层设计使得各层可以独立演进,同时保持接口的向后兼容性。
3.1 三层模型总体架构
下图展示了 CSI-2 协议的三层模型及其数据流方向。数据从摄像头传感器(应用层)向下逐层封装,通过物理链路传输到接收端,再向上逐层解封装,最终恢复为图像数据。
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) | 行号 | 标记一行数据的结束(可选) |
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 上传输,接收端则执行逆过程合并回原始字节流。
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 兼容) |
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 过滤器、数据类型解码器、帧同步生成器 |
3.7 本章小结
CSI-2 的三层分层架构为摄像头数据传输提供了清晰的抽象层次:
- 协议层负责数据包的封装与解析,定义了长包和短包两种格式,支持虚拟通道和多种数据类型。
- 链路层通过 ECC/CRC 校验保证传输可靠性,并实现多 Lane 模式下的数据分发与合并。
- 物理层使用 D-PHY 或 C-PHY 标准,通过差分信号实现高速串行传输,支持 HS 和 LP 两种工作模式。
- 层间接口(PPI、LIP)的标准化定义使得各层可以独立设计、验证和复用。