MIPI CSI 接口定义与协议层介绍


在大数据早已普及的今日,尤其随着 5G 技术和移动设备的逐渐普及,各种有线或无线的传输技术也迎来了迅猛发展,内容日新月异、错综复杂,你又能窥探其中多少呢?本文将简单介绍高速影音传输技术 MIPI, 主要基于 CSI-2 。

MIPI(Mobile Industry Processor Interface, 移动产业处理器接口) Alliance, 即 MIPI 联盟发起并为移动应用处理器制定了开放标准和一种规范。主要是手机内部的接口(摄像头、显示屏接口、射频/基带接口)等标准化,从而减少手机内部接口的复杂程度及增加设计的灵活性。

MIPI 联盟下面有不同的工作组,分别定义的一系列接口标准,比如 CSI(Camera Serial Interface, 摄像头串行接口)DSI(Display Serial Interface,显示串行接口)DigRF(射频接口)、**SLIMBUS(麦克风、喇叭接口)**等,其优点是更低功耗,更高数据传输数量和更小的空间。

![](https://i-blog.csdnimg.cn/direct/59fe9ccb9531496596e047e81ec7e27f.png)

Definitions and Acronyms

NameDescription
LaneA unidirectional, point-to-point, 2- or 3-wire interface used for high-speed serial clock or data transmission
PacketA group of bytes organized in a specified way to transfer data across the interface
PayloadApplication data only – with all sync, header, ECC and checksum and other protocol-related information removed
SLM(Sleep Mode)a leakage level only power consumption mode
VC(Virtual Channel)Multiple independent data streams for up to four peripherals
BERBit Error Rate
CCICamera Control Interface
CILControl and Interface Logic
CRCCyclic Redundancy Check
CSICamera Serial Interface
CSPSChroma Shifted Pixel Sampling
DDRDual Data Rate
DIData Identifier
DTData Type
ECCError Correction Code
EoTEnd of Transmission
EXIFExchangeable Image File Format
FEFrame End
FSFrame Start
HSHigh Speed; identifier for operation mode
HS-RXHigh-Speed Receiver
HS-TXHigh-Speed Transmitter
I2CInter-Integrated Circuit
JFIFJPEG File Interchange Format
JPEGJoint Photographic Expert Group
LELine End
LLPLow Level Protocol
LSLine Start
LSBLeast Significant Bit
LSSLeast Significant Symbol
LPLow-Power; identifier for operation mode
LP-RXLow-Power Receiver (Large-Swing Single Ended)
LP-TXLow-Power Transmitter (Large-Swing Single Ended)
MSBMost Significant Bit
MSSMost Significant Symbol
PFPacket Footer
PHPacket Header
PIPacket Identifier
PTPacket Type
PHYPhysical Layer
PPIPHY Protocol Interface
RGBColor representation (Red, Green, Blue)
RXReceiver
SCLSerial Clock (for CCI)
SDASerial Data (for CCI)
SLMSleep Mode
SoTStart of Transmission
TXTransmitter
ULPSUltra low Power State
VGAVideo Graphics Array
YUVColor representation (Y for luminance, U & V for chrominance)

CSI-2 Brief

CSI-2 替 MIPI 定义了两种高速数据传输接口(物理层选项)和一组控制接口的标准。

  • D-PHY 物理层选项
  • C-PHY 物理层选项
  • CCI (Camera Control Interface)

D-PHY

MIPI 联盟定义的常见的 D-PHY 接口支持高速(HS)和低速(LP)模式,为 1 路单向差分接口,分为:

  • 2 组差分时钟(clk)
  • 1 或者多组差分数据通道(data lanes)

C-PHY

另一种常见的 C-PHY 接口,为 1 或多路单向 3-wire 串行数据通道, 每路有自己的时钟。

M-PHY

聊到了 C-PHY 和 D-PHY,也顺便提一下 M-PHY, M-PHY 目前接触比较少, 其在功耗和性能方面有更多的考量,三种 PHY 的特性如下:

CCI
参见如上两幅图片的 CCI 部分。D-PHY 和 C-PHY 的 CCI 接口是一组与 I2C 标准协议兼容的双向控制接口, 兼容 I2C 的高速模式(400 KHZ)和 7 位从设备地址,不支持多主设备模式。CCI 是 I2C 协议的一个子集,然后其在 I2C 上面定义了一个附加的数据协议层。详见 CSI-2 Spec。

CSI-2 Layer Definitions

CSI-2 就协议的层级来看,大致可以分为 3 层:

  • 物理层(PHY Layer): 定义传输媒介、电器特性、IO 电路、同步机制、指定 SoT(Start of Transmission) 和 EoT(End of Transmission)信号等。如 M-PHY, D-PHY, C-PHY 等。
  • 协议层(Protocol Layer): 定义传输数据时,如何标记和交错多个数据流(Data Stream),以便接收端重建每个数据流。
  • 应用层(Application Layer): 对数据流进行处理,如分析,编解码。

Multi-Lane Distribution and Merging

MIPI 会通过 CSI 的 LDF (Lane Distribution Function) 将数据平均且有序地分配到每一条 Lane。

D-PHY:


C-PHY


Multi-Lane Interoperability

一般会采用最通用硬件配置,譬如 D-PHY 的 4 组 Data Lan 和 1 组 Clock。但是有时也会存在发送端和接收端 Data Lan 不匹配的问题,如果使用不适当的配置,就会影响 MIPI 传输的性能。

譬如: M Lanes 的传输端, N Lanes 的接收端。

  • M <= N, 传输端小于等于接收端时,不会有性能问题。

  • M > N, 传输断大于接收端时,就会有性能问题。

Protocol Layer

MIPI 协议层可以分为 3 级:

  • 通道管理(Lane Management): 将传输的数据流分配到一个或多个通道,并在接收端恢复原始数据流。
  • LLP (Low Level Protocol): 将数据里封装成不同形式的长包和短包。
  • 封拆像素包(Pixel Packing/Unpacking): 传输端将像素包拆为 bytes,接收端将 bytes 还原。

Low Level Protocol

LLP (Low Level Protocol) 是一种面向字节、基于数据包的协议,支持使用短包和长包格式传输任意数据。主要特性如下:

  • 8-bit
  • 每 link 支持最多 4 个 VC (Virtual Channels)通道
  • 数据的类型、像素深度和格式的描述符 (type,pixel depth and format)

Packet Format

如下图所示,有长包和短包两种数据包结构,其格式和大小依赖于物理层的选择(D-PHY or C-PHY)。 每种物理层接口都是以退出低功耗状态(LPS, Low Power State), 发送一个 SOT 短包作为开始,然后通过长包发送数据,最后以发送一个 EoT 短包,切换回低功耗状态为结束。

Long Packet Format

长包由 DT 值 0x10~0x37 进行标识, 详情见 Data Type(DT) 章节。

What does D-PHY Long Packet look like?

What does C-PHY Long Packet look like?

Short Packet Format

D-PHY 和 C-PHY 的短包有一定的差异,短包与相应协议长包的包头(PH)相匹配,没有包脚(PF)和长包数据(Paket Filler), 另需把包头的 WC 字段用短包数据替换,短包的数据由 DT 值 0x00~0x0F 标示。详情见 Data Type(DT) 章节。

对于帧同步短包,短包数据为帧号; 对于行同步短包,短包数据为行号;对于通用短包,短包数据为用户自定义。

What does D-PHY Short Packet look like?

What does C-PHY Short Packet look like?

Data Identifier (DI)

DI 字节由 VC(Virtual Chanel) 和 DT (Data Type) 两部分组成。如下图:

Virtual Chanel Identifier

虚拟通道标识符是为数据流中交错的不同数据流提供单独的通道,接收器会监控并拆分交错的数据流到合适的通道。 MIPI 联盟规定最多可以支持 4 路数据流,也就是 4 路 VC。外设中的虚拟通道标识符应该是可编程的,以允许主机处理器控制数据流的解复用方式。逻辑信道的原理如下图:


交错的数据流格式示例如下:

总共三组

Data Type(DT)

DT 指定数据的格式和内容,支持最大 64 个 DT,总共有 8 种不同的类型,每种支持 8 个 DT,前两个类型代表短包,其余的代表长包。如下:

Data TypeDescription
0x00 to 0x07Synchronization Short Packet Data Types
0x08 to 0x0FGeneric Short Packet Data Types
0x10 to 0x17Generic Long Packet Data Types
0x18 to 0x1FYUV Data
0x20 to 0x27RGB Data
0x28 to 0x2FRAW Data
0x30 to 0x37User Defined Byte-based Data
0x38 to 0x3FReserved

同步短包又分为帧同步和行同步:

Data TypeDescription
0x00Frame Start Code
0x01Frame End Code
0x02Line Start Code (Optional)
0x03Line End Code (Optional)
0x04 to 0x07Reserved

通用短包:

Data TypeDescription
0x08Generic Short Packet Code 1
0x09Generic Short Packet Code 2
0x0AGeneric Short Packet Code 3
0x0BGeneric Short Packet Code 4
0x0CGeneric Short Packet Code 5
0x0DGeneric Short Packet Code 6
0x0EGeneric Short Packet Code 7
0x0FGeneric Short Packet Code 8

通用长包:

Data TypeDescription
0x10Null
0x11Blanking Data
0x12Embedded 8-bit non Image Data
0x13Reserved
0x14Reserved
0x15Reserved
0x16Reserved
0x17Reserved

接收端需要忽略 Null 和 Blanking Data 数据类型的包的内容, 空包(Null)没有任何意义,消隐包(Blanking Data)可以作为视频流帧之间的消隐行。

在帧的开头可能有 0 或多行嵌入数据,这部分被称之为帧头(FS),在帧的末尾可能有 0 或多行嵌入数据,这部分被称之为帧尾。如果行存在 Embedded 数据,则 DI 中需要包含其 DT。如下图:

Error Correction Code (ECC) for D-PHY

包头的 ECC 允许纠正 DI 和 WC 的 1-bit 错误并为 D-PHY 检测 2-bit 错误,因此, ECC 的 D[7:6] 应该为 0。DI[7:0] 应映射到 ECC 输入的 D[7:0],WC[7:0] 映射到 D[15:8], WC[15:8] 映射到 D[23:16]。如下图:

Checksum Generation for C-PHY

ECC 在 C-PHY 无效

Packet Spacing

MIPI 数据包由 EoT, LPS, SoT 分隔开,在协议包之间必须有一个进入和退出 LPS(低功耗)的状态切换,称之为包间隔(Packet Spacing)。其不必是 8 位字的倍数,因为接收器将在下一个数据包的包头之前的 SoT 序列期间重新同步到正确的字节边界。


单包实例如下:

图中的 VVALID、HVALID和DVALID 为虚拟的帧同步(VSYNC)、行同步(HSYNC)和有效数据同步(DE,亦可称为数据使能信号)信号。

在这里插入图片描述
多包实例如下:

在这里插入图片描述

从上图也可以看到,从 LLP 封包 Checksum、EoT、LPS、SOT,一直到 PH,正好处于行同步信号为低,这段区间就是每行的 Blanking 区间。

Line and Frame Blanking

长包 EoF, 下一个长包 SoF,以及之间的 LPS 称之为 Line Blanking; 帧尾(FE)后的 EoT,下一帧帧头(FS)前的 SoT,以及之间的 LPS 称之为 Frame Blanking。


再从行同步和帧同步的角度,来看看帧尾和帧头之间的 LPS (VSYNC 区域),即 Frame Blanking,以及行尾行头之间的 Line Blanking,会更加容易理解。

Frame and Line Synchronization Packets

帧头(FS)帧尾(FE)之间至少包含 1~n 个图像数据长包,0~n 个代表同步讯号的短包,也就是说行头(SoT)行尾(EoT)的短包是可以省略的。

Frame Format Examples

YUV、RGB 和 RAW 数据的每一个长包包含 1 行图像数据。

通用帧格式实例如下,行头(SoT)行尾(EoT)的短包被省略,且帧头(FS)和第一个长包,以及最后一个长包和帧尾(FE)之间的 LPS 要尽可能的短,如下画圈部分。


数字隔行视频格式实例:


精确同步的数字隔行视频格式实例如下,未省略行头行尾的短包。


如下为高速模式下数据和时钟的关系图,可以清楚地了解到高低速序号, LPS 的转变过程。

Data Interleaving

数据交错(Data Interleaving)主要有两种方式:1. 通过 DT 区分; 2. 通过 VC 区分。

Data Type Interleaving

所有的包使用同一 VC,然后独立的 DT,共享帧头(FS)帧尾(FE)和行头(SoT)行尾(EoT), 如下:


按包交错的格式如下:


按帧交错的格式如下:

Virtual Channel Identifier Interleaving

每一个 VC 拥有自己的帧头(FS)和帧尾(FE),而且每一个 VC 还可以继续通过 DT 来扩展数据通路。

Data Formats

Primary 代表广泛采用的数据格式,MIPI 联盟规定发送端需要支持至少一个 primary 格式,接收端需要支持所有的 Primary 数据格式。

Data TypeDescription
Data FormatPrimarySecondary
YUV420 8-bit (legacy)S
YUV420 8-bitS
YUV420 10-bitS
YUV420 8-bit (CSPS)S
YUV420 10-bit (CSPS)S
YUV422 8-bitP
YUV422 10-bitS
RGB888P
RGB666S
RGB565P
RGB555S
RGB444S
RAW6S
RAW7S
RAW8P
RAW10P
RAW12S
RAW14S
Generic 8-bit Long Packet Data TypesP
User Defined Byte-based Data (Note 1)P

Reference

Specification for Camera Serial Interface 2 (CSI-2)。

原文链接

  • https://huaqianlee.github.io/2021/09/22/Camera/MIPI%20interface%20overview/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TrustZone_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值