在大数据早已普及的今日,尤其随着 5G 技术和移动设备的逐渐普及,各种有线或无线的传输技术也迎来了迅猛发展,内容日新月异、错综复杂,你又能窥探其中多少呢?本文将简单介绍高速影音传输技术 MIPI, 主要基于 CSI-2 。
MIPI(Mobile Industry Processor Interface, 移动产业处理器接口) Alliance, 即 MIPI 联盟发起并为移动应用处理器制定了开放标准和一种规范。主要是手机内部的接口(摄像头、显示屏接口、射频/基带接口)等标准化,从而减少手机内部接口的复杂程度及增加设计的灵活性。MIPI 联盟下面有不同的工作组,分别定义的一系列接口标准,比如 CSI(Camera Serial Interface, 摄像头串行接口)、DSI(Display Serial Interface,显示串行接口)、DigRF(射频接口)、SLIMBUS(麦克风、喇叭接口)等,其优点是更低功耗,更高数据传输数量和更小的空间。
CSI-2 替 MIPI 定义了两种高速数据传输接口(物理层选项)和一组控制接口的标准。
- D-PHY 物理层选项
- C-PHY 物理层选项
- CCI (Camera Control Interface)
MIPI 联盟定义的常见的 D-PHY 接口支持高速(HS)和低速(LP)模式,为 1 路单向差分接口,分为:
- 2 组差分时钟(clk)
- 1 或者多组差分数据通道(data lanes)

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

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

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

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


C-PHY:


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

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

MIPI 协议层可以分为 3 级:
- 通道管理(Lane Management): 将传输的数据流分配到一个或多个通道,并在接收端恢复原始数据流。
- LLP (Low Level Protocol): 将数据里封装成不同形式的长包和短包。
- 封拆像素包(Pixel Packing/Unpacking): 传输端将像素包拆为 bytes,接收端将 bytes 还原。
LLP (Low Level Protocol) 是一种面向字节、基于数据包的协议,支持使用短包和长包格式传输任意数据。主要特性如下:
- 8-bit
- 每 link 支持最多 4 个 VC (Virtual Channels)通道
- 数据的类型、像素深度和格式的描述符 (type,pixel depth and format)
如下图所示,有长包和短包两种数据包结构,其格式和大小依赖于物理层的选择(D-PHY or C-PHY)。 每种物理层接口都是以退出低功耗状态(LPS, Low Power State), 发送一个 SOT 短包作为开始,然后通过长包发送数据,最后以发送一个 EoT 短包,切换回低功耗状态为结束。

长包由 DT 值 0x10~0x37 进行标识, 详情见 Data Type(DT) 章节。
What does D-PHY Long Packet look like?

What does C-PHY Long Packet look like?

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?

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

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

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

总共三组
DT 指定数据的格式和内容,支持最大 64 个 DT,总共有 8 种不同的类型,每种支持 8 个 DT,前两个类型代表短包,其余的代表长包。如下:
同步短包又分为帧同步和行同步:
通用短包:
通用长包:
包头的 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]。如下图:


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

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

多包实例如下:

从上图也可以看到,从 LLP 封包 Checksum、EoT、LPS、SOT,一直到 PH,正好处于行同步信号为低,这段区间就是每行的 Blanking 区间。
长包 EoF, 下一个长包 SoF,以及之间的 LPS 称之为 Line Blanking; 帧尾(FE)后的 EoT,下一帧帧头(FS)前的 SoT,以及之间的 LPS 称之为 Frame Blanking。

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

帧头(FS)帧尾(FE)之间至少包含 1~n 个图像数据长包,0~n 个代表同步讯号的短包,也就是说行头(SoT)行尾(EoT)的短包是可以省略的。
YUV、RGB 和 RAW 数据的每一个长包包含 1 行图像数据。
通用帧格式实例如下,行头(SoT)行尾(EoT)的短包被省略,且帧头(FS)和第一个长包,以及最后一个长包和帧尾(FE)之间的 LPS 要尽可能的短,如下画圈部分。

数字隔行视频格式实例:

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

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

数据交错(Data Interleaving)主要有两种方式:1. 通过 DT 区分; 2. 通过 VC 区分。
所有的包使用同一 VC,然后独立的 DT,共享帧头(FS)帧尾(FE)和行头(SoT)行尾(EoT), 如下:

按包交错的格式如下:

按帧交错的格式如下:

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

Primary 代表广泛采用的数据格式,MIPI 联盟规定发送端需要支持至少一个 primary 格式,接收端需要支持所有的 Primary 数据格式。
Specification for Camera Serial Interface 2 (CSI-2)。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/8201.html