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简介(三)——CSI-2_第1张图片
上图中其他名词解释:
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简介(三)——CSI-2_第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简介(三)——CSI-2_第3张图片
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简介(三)——CSI-2_第4张图片

  • 数据标识(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简介(三)——CSI-2_第5张图片
VC标识符位于DI的最高两位,用来表示0 ~ 3这四个虚拟通道。
DT标识符位于DI的低6位,总共可以表示64个数据类型。数据类型指的是填充数据的类型。下图是不同的数据类型ID,前两行是短帧的数据类型,后六行是长帧的数据类型。
MIPI简介(三)——CSI-2_第6张图片
每一行都可以继续扩展,例如Synchronization Short Packet Data Type的具体Code如下。
MIPI简介(三)——CSI-2_第7张图片
其他的不再一一列举,可根据自己的需要去官方文档中查阅。

2. 短帧结构

MIPI简介(三)——CSI-2_第8张图片
短帧结构相当于只有长帧结构中的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),则数据域表示行数。

你可能感兴趣的:(Camera,嵌入式硬件)