接口MIPI简介(三):深入了解CSI-2接口

一、CSI-2的分层方式

CSI(Camera Serial Interface)是由MIPI联盟下Camera工作组指定的接口标准。CSI-2是MIPI CSI第二版,是一个单或双向差分串行界面,包含时钟和数据信号。主要由应用层、协议层、物理层组成,最大支持4通道(Lane)数据传输、单线传输速度高达1Gb/s。

MIPI CSI2的分层方法有好几种,根据MIPI联盟的规范,CSI-2大致分为三层,分别为:应用层、协议层、物理层。协议层再分为三层:像素/字节组包/解包层、底层协议层、通道管理层。

层级 英文 解释
应用层 Application Layer 处理原始图像数据的各种算法模块
组包/解包层 Pixel to Byte Packing Formats 将数据按照一定次序,切割成8bit数据
底层协议层 Low Level Protocol 为每个为新生成的数据加上包头包尾,形成符合协议要求的数据流
通道管理层 Lane Management Layer 将生成的数据流按照一定次序和要求,进行读写管理,输出数据流
物理层 Phy Layer 生成 MIPI 最后的信号波形

图源MIPI官方文档《MIPI Alliance Specification for Camera Serial Interface 2》
上图中其他名词解释:
Pixel:像素数据。经过图像模块处理过的数据流,或者原始图像的数据路。
Data:传输数据。经过MIPI模块切割或者加上包头包尾的数据。
Control:控制信号模块间的控制数据流

链路的工作顺序如下:

  1. 原始的图像数据在应用层做相应的图像处理,包括白平衡、噪声去除、色彩还原等。
  2. 将处理后的数据进入组包层做数据分割和重组,传给协议层。
  3. 协议层根据数据类型产生包头,根据数据内容产生构成包尾的校验序列,再将包头、数据本身、包尾组合起来发送给通道管理模块。
  4. 通道管理模块按照通道的选通情况,合理分配数据到每个通道,之后数据经过数模转换进入物理层传输
  5. 接收端在收到物理层的数据后,再按照之前的逆序解包出原始的图像数据。

1. 物理层

前文中我们介绍过的D-PHY,是CSI经常使用的一种物理层协议。此外,C-PHY也是一种常用的CSI物理层协议。

2. 组包/解包层

CSI-2支持多种像素格式图像应用,包括从6位到24位每个像素的数据格式。
在发送端,将应用层发来的像素数据打包成字节数据,并发送到LLP层;
在接收端,将LLP层发来的字节数据解包成像素数据,并发送到应用层。
8位每像素的数据在本层被传输时不会被改变。

2. 底层协议层

MIPI CSI-2的Low Level Protocol主要有下列特征:

  • 可以传输任意数据(填充数据独立)
  • 以字节(8-bit)为数据元
  • 一个链路上最高支持四个虚拟通道
  • 支持独立的帧开始、帧结束、行开始、行结束等数据包
  • 包含对数据类型、像素深度、传输数据格式的描述
  • 16bit的校验和用来检查错误
  • 虚拟通道(Virtual Channel)使得CSI-2可以在同一个Lane发送不同类型的数据,然后在接收端在进行恢复。接收端在同一个Lane上接收到交织传输的不同数据流,需要通过每个数据帧中包含VC ID来区分出各个数据流所属的逻辑上的通道。目前CSI-2最高支持4个虚拟通道。

    以max9286为例,来自4路同轴线的相机数据可以设置为不同的虚拟通道,这样,在SOC侧CSI模块处理时,可以根据不同的虚拟通道ID将每个摄像头的数据转发至各自的内存区域,这样就能从4个地址获得单独的4个图像。若不使用虚拟通道,则4路数据就无法区分了(当然max9286内部能够将4个图像拼接为一个大图输出)。

    下图中,三个数据Lane上交叉传输了Virtual Channel 0和Virtual Channel 1的数据。其中,VC0上传输的是RGB666格式的数据,VC1上传输的是YUV422格式的数据。三路Data Lane在接收到数据后,会根据VC的ID将数据进行重新组合,得到两张图像。
    图源MIPI官方文档《MIPI Alliance Specification for Camera Serial Interface 2》

    3. 通道管理层

    在通道管理层,接口发送端的作用是将输出数据流分配到一个或多个通道(Distributor),接收端的作用是将从通道收集的字节重新组合,恢复成原始数据流序列(Merger)。

    二、CSI-2数据帧格式

    CSI-2针对摄像头,规定了主机与外设的通信数据包格式。MIPI Rx支持RAW10/RAW12/RAW14格式的像素数据解析。

    CSI-2的数据包有两种:长帧和短帧。无论是长帧还是短帧,帧的开头都是ST,帧的结尾都是ET。此外,长帧的ST之后还有包头(PH),ET之前还有包尾(PF)。在两次HS传输过程之间,插入的是LP状态,一般是LP11等Control状态,当然也可以进入Escape状态进行LPDT或者进入UPLS。
    图源MIPI官方文档《MIPI Alliance Specification for Camera Serial Interface 2》
    LPS:Low Power State,封包之间的spacing间距。
    ST:Start of Transmission(SoT),封包的起始信号,一般为低速转换为高速的暂态信号。
    ET:End of Transmission(EoT),封包的结束信号,一般为高速转换为低速的暂态信号。
    PH:Packet Header,32bit表示,封包的标头。
    PF:Packet Footer,16bit表示,封包的结尾。

    暂态:发生跳变的状态。
    稳态:稳定无变化的状态。

    1. 长帧结构

    图源MIPI官方文档《MIPI Alliance Specification for Camera Serial Interface 2》

  • 数据标识(DI) :1个字节。包括VC和DT两部分数据,具体结构会在下文中介绍。
  • 数据计数(WC) :2个字节。从PH结尾到PF起始位置中间的填充数据的长度,单位为字节。接收端通过WC来判断包的结尾位置。
  • 错误检测(ECC) :1个字节。采用Hamming Code的方式,用来纠正PH中一位的错误或者发现两位的错误。
  • 数据填充(0~65535 字节) :长度=WC*8bits。对数据内容没有任何限制。
  • 检验和(CS):2个字节。CHECKSUM采用CCITT的16-bit的CRC校检,即x16+x12+x5+x0。CRC只能检测出一个或者多个错误,并不能纠正错误。
  • DI、WC、ECC共同构成PH,Checksum单独构成PF。

    下图是DI的具体结构。包括VC(Virtual Channel)和DT(Data Type)两个标识符。
    图源MIPI官方文档《MIPI Alliance Specification for Camera Serial Interface 2》
    VC标识符位于DI的最高两位,用来表示0 ~ 3这四个虚拟通道。
    DT标识符位于DI的低6位,总共可以表示64个数据类型。数据类型指的是填充数据的类型。下图是不同的数据类型ID,前两行是短帧的数据类型,后六行是长帧的数据类型。
    图源MIPI官方文档《MIPI Alliance Specification for Camera Serial Interface 2》
    每一行都可以继续扩展,例如Synchronization Short Packet Data Type的具体Code如下。
    图源MIPI官方文档《MIPI Alliance Specification for Camera Serial Interface 2》
    其他的不再一一列举,可根据自己的需要去官方文档中查阅。

    2. 短帧结构

    图源MIPI官方文档《MIPI Alliance Specification for Camera Serial Interface 2》
    短帧结构相当于只有长帧结构中的PH,没有PF和中间的数据域。PH中依旧包括DI、WC、ECC三个部分,其中,DI和ECC含义与长帧结构中的相同,DI中依旧包括VC和DT,只不过DT只使用上面的Data Type表格中的0x00 ~ 0x0F这一范围。

    短帧结构中的WC域用作短帧的数据域(Data Field),具体含义为:如果该短帧的Data Type为帧同步(Frame Synchronization),则数据域表示帧数;如果短帧的Data Type为行同步(Line Synchronization),则数据域表示行数。

    物联沃分享整理
    物联沃-IOTWORD物联网 » 接口MIPI简介(三):深入了解CSI-2接口

    发表评论