本文主要介绍CSI-2的分层结构,包括物理层、通道管理层、底层协议层、像素/字节打包/解包层、应用层。
CSI-2为发送者和接收者数据传输和控制提供了规范,从物理上看包含了控制部分和数据传输部分。发送者作为从设备而接收者作为主设备。根据MIPI联盟的规范,CSI2可分为5层,分别为:应用层、组包/解包层、底层协议层、通道管理层和物理层。实际可归纳为三个层次:物理层、协议层和应用层。其作用为:

PHY层:PHY层指定传输介质(导体),输入/输出电路和时钟机制,即从串行位流中获取“0”“1”信号。规范中的这一部分记录了传输介质的特性,并依据时钟和数据通道之间发信号和产生时钟的关系规定了电气参数。
信号传输开始(SoT)和传输结束(EoT)的机制被规范化。同样被规范化的还有其他在传输和接收物理层之间能够传输的“out of band”信息。位级和字节级同步机制属于PHY的一部分。协议层(Protocol Layer):协议层由其他几个任务明确的层组成。CSI-2协议层允许多数据流共用一个主机处理器端信号接口。协议层指定多数据流怎样被标记和交叉存取,因此每个数据流可以被正确的重建。通道管理(Lane Management)层:为性能不断提升,CSI-2是通道可扩展的。数据通道数目可以是1,2,3,4,这个依赖于应用中的带宽需求。接口发送端分配(“distributor”功能)输出数据流到一个或更多通道。在接收端,接口从通道收集字节并将之合并(“merger”功能)成为重新组合的数据流,恢复原始数据流序列。该层将LLP传输过来的packet当作一段纯字节数据,根据lane数目进行分发,而不考虑包里的数据意义。LLP(Low Level Protocol)层:LLP层包括,为串行数据在传输开始(SoT)到传输结束(EoT)之间传输事件,和传输数据到下一层,建立位级和字节级同步的方法。LLP最小数据粒度是一字节。LLP层为CSI协议的主要功能层,不仅定义了包格式,还定义了传输中使用的同步机制。在发送端,该层负责将上层传输过来的数据打包,添加校验字段,增加同步包,发送到下一层;在接收端首先校验包的完整性,并解析各个字段,根据包类型执行对应操作,将图像数据传到上一层。LLP处理的playload数据为经过转换后的纯字节数据,没有像素概念。通过定义不同的的字段和包类型,实现一帧一帧图像数据的传输。像素/字节打包/解包层(Pixel/Byte Packing/Unpacking Layer):CSI-2支持多种像素格式图像应用,包括从6位到24位每个像素的数据格式。在发射端,数据由本层被发送到LLP层(Low Level Protocol)前,本层将应用层传来的数据由像素打包成字节数据;在接收端,执行相反过程,将LLP层发来的数据解包,由字节转成像素,然后才发送到应用层。8位每像素的数据在本层被传输时不会被改变。
该层的主要目的是将不同像素格式(例如YUYV, RGBA等)都转换成为8bit字节格式,消除不同图像格式差异,减少传输的复杂度。例如,对于RGB888格式,一个pixel为24 bit,将转换为三个字节;RGB565格式,一个pixel为16 bit,转换为两个字节。而对于RGB444,大小为12 bit,需要通过padding变成RGB565格式,为两个字节,如下图所示:

数据在协议层是以数据包的形式存在。在接口发送端,添加包头和可选择的错误校验信息到LLP层传来的数据上。在接收端,LLP层将包头剥离,由接收者按照相应逻辑解析。错误校验信息可以用来检测收到的数据完整性。应用层(ApplicationLayer):该层对数据流中包含的数据进行进一步数据解码和解析。CSI-2规定了像素值到字节的映像。