MIPI CSI-2协议解析

CSI-2概述

在这里插入图片描述
CSI-2规范定义了发送器和接收器之间的标准数据传输和控制接口。

图1说明了CSI-2发送器和接收器之间的连接,Master是FPGA,SLAVE是摄像头。

CCI(Camera Control Interface)是一个兼容I2C标准的双向控制接口。属于I2C协议的一个子集。其读写都遵循I2C协议。包括单数据读写以及连续数据读写。最大支持16bit寄存器寻址,能够支持8bit,16bit,32bit,64bit数据宽度。寄存器数据发送顺序是由高到低。

主机通过CCI接口配置摄像头参数,如基本设置寄存器、像行长、帧长和曝光值等参数。因为I2C比较简单,这里不做讲解,直接用赛灵思IP和厂家推荐的寄存器值操作即可。

使用时,FPGA设置接收速率最大,接收端速率(80 to 3200 Mb/s)大于等于前端就行。

配置完成后,摄像头通过CSI接口向主机发送数据,有时钟通道和数据通道(可以有1、2、3、4 lane),CSI数据发送是单向的

CSI-2层级定义

在这里插入图片描述
CSI-2可分为5层,分别为:应用层、组包/解包层、底层协议层(Low Level Protocol)、通道管理层和物理层。

PHY Layer:物理层PHY 定义了传输介质(电导体),输入/输出电路和时钟机制以便于从串行bit流中捕获“1”和“0”,记录传输介质电气参数特性和时钟与数据之间的时序关系,传输起始(SoT)和传输结束(EoT) 标志信号。

Lane Management Layer:CSI-2的lane是可扩展的以提高性能。数据通道可以是1、2、3或4,这取决于带宽的要求,摄像头的发射端分发输出数据流到一个或多Lanes。在接收端从Lanes收集字节数并将它们合并成一个重组的数据流以恢复原始流序列。

Low Level Protocol:LLP指的是SoT与EoT之间的数据包字节流协议,LLP的最小单元为字节。

Pixel/Byte Packing/Unpacking Layer:CSI-2能够支持多种多样的像素格式,对于发送方,在数据发送之前,需要根据像素格式,将像素数据转换为对应的字节流;对于接收方,在将数据提供给应用层之前,需要将字节流数据转换为像素数据。

Application Layer:该层主要用于不同场景对数据的处理过程,对于发送方,多为camera生成数据,对于接收方,多为SOC对数据进行处理。

PHY Layer

CSI-2实现的物理层由1~4个单向数据通道和一个时钟通道组成。所有的CSI-2发射器和接收器都应该支持时钟通道上的连续时钟行为,也可以选择支持非连续时钟行为。对于连续的时钟行为,时钟通道保持高速模式HS,在数据包传输之间产生主动时钟信号。对于非连续的时钟行为,时钟Lane在数据包传输之间进入LP-11状态。

CSI-2发送器的最低物理层要求是:
Data Lane数据通道模块:单向主机,HS-TX, LP-TX和一个CIL-MFEN功能。
Clock Lane时钟通道模块:单向主机,HS-TX, LP-TX和一个CIL-MCNN功能 。

CSI-2接收器的最低物理层要求是
Data Lane 数据通道模块:单向从机、HS-RX、LP-RX和一个CIL-SFEN功能。
Clock Lane 时钟通道模块:单向从机,HS-RX, LP-RX,和一个CIL-SCNN功能。
在这里插入图片描述
如上图所示,对于FPGA来说,需要有HS差分引脚,还需要LP差分引脚,LP的差分引脚可以视为两根单端引脚,用来作为SoT和EoT标志。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
根据上面的图表,可以清楚地看出摄像头在发送完0xB8后,开始传输有效信息。因此D-Phy的状态机,可以从检测到LP两根单端信号变化,再检测HS接收到0xB8,接着进入接收数据状态,直到LP信号拉高,状态机回到IDLE。

在这里插入图片描述
如上图所示,在HS数据发送完后,时钟会延迟一段时间再回到LP模式,在发送HS数据前,时钟会提前一段时间进入HS模式。
在这里插入图片描述
上图是HS模式和LP模式的电气特性。

Lane Management Layer

CSI-2是一个lane可扩展的规范。需要比一个数据通道提供更多带宽的应用程序,或者避免高时钟速率的应用程序,可以将数据路径扩展到2、3或4 个Lane,并获得峰值总线带宽的近似线性增加。上层数据和串行位流之间的映射是明确定义的,以确保主机处理器和使用多个数据通道的外设之间的兼容性。

从概念上讲,在PHY层和更高的功能层之间有一个处理多通道配置层。在发送器中,该层在N个Lanes上分配一系列数据包字节,每个Lanes是物理层逻辑(序列化器等)和传输电路的独立单元。在接收端,它收集来自N lane的传入字节,并将它们合并成完整的数据包,然后传递到数据包分配器。

Lane分发器接受一个任意字节长度的传输,缓冲N个字节(其中N = Lane的数量),然后在N个Lanes上并行发送N个字节的分组。在发送数据之前,所有的lane并行执行SoT序列,以指示相应的接收单元数据包的第一个字节已经开始。在SoT之后,lane以轮循的方式并行地发送第一个数据包的连续字节组。
在这里插入图片描述
在这里插入图片描述
虽然多个lane都以并行的“start packet”同时开始,但它们可能在不同的时间结束,每隔一个周期(字节)发送“End packet”码。链路接收端的N个phy并行收集字节数,并将这些字节数送入合并lane层。这将重构传输字节的原始序列,然后可以将其划分为数据包解码器层的单个数据包。
在这里插入图片描述
同理,如果是3lane,则可能出现lane1比lane2和lane3多发1byte数据,或者lane1,lane2比lane3多发1byte数据。4lane也同理。

Multi-Lane Interoperability

当使用多个数据Lane时,通过CCI接口对Lane的分发与合并进行重构。
一个“N”数据Lane接收器应与一个“M”数据Lane发射器连接,通过Lane分布的CCI配置,当使用多个数据巷时,在CSI-2发射器和接收器内合并层。因此,具有四个数据通道的接收器应与具有1、2、3或4个数据通道的发送器一起工作。同样,具有四个数据通道的发送器也应与具有4个或更少数据通道的接收器一起工作。发射端1至M通道与接收端1至M通道相连。
如果M <= N, 传输性能不受影响,接收器有足够的数据通道来匹配发送端。
如果M > N,那么传输性能会下降,因为接收端的数据通道小于发送端数据通道。
在这里插入图片描述

Low Level Protocol

LLP是基于字节,以包为单元的协议,支持长短两种包格式。
LLP有以下特征:
1.传输任意数据(负载独立)
2.以字节为单位
3.在同一链路上支持最多四个交错的虚拟通道
4.支持独立的帧起始,帧结束,行起始,行结束等数据包
5.包含对数据类型,像素深度与格式的描述
6.16-bit Checksum错误侦测
在这里插入图片描述

低级协议包格式

LLP支持两种包结构,分别为长包与短包,包格式与长短取决于具体的物理层。无论何种类型的包,均由SoT信号开始,EoT信号结束。

低级协议长包格式(Long Packet)

在这里插入图片描述
图30显示了Low - Level Protocol Long Packet的结构。长数据包应该用数据类型0x10到0x37来标识。关于数据类型的描述请参见Table 3。一个长包应该由三个元素组成:32位包头(PH),一个具有可变数量的8位数据字的应用程序特定数据负载和一个16bit包尾(PF)。数据包头进一步由三个元素组成:一个8位的数据标识符,一个16位的单词计数字段和一个8位的ECC。包尾有一个元素,一个16位的校验和。

Data ID(数据标识符)定义数据的虚拟信道和应用特定有效载荷数据的数据类型。

Word Count定义了数据负载中从包头结束到包尾开始的8位数据字节的数量。包头和包尾都不应包括在Word count统计中。

ECC (Error Correction Code) 字节在报文头中,用于纠正单bit错误和2bit错误,这包括数据标识符值和Word count值。

包头PH发送完,接收器读取下一个字计数word count* 8位数据字的数据负载。当读取数据有效载荷时,接收器不应寻找任何嵌入的同步码。因此,对数据字的值没有限制。

一旦接收端读取了数据负载,它就会在包尾读取校验和。在一般情况下,数据有效载荷的长度应为8位数据字的倍数。此外,每种数据格式可能对有效负载数据的长度施加额外的限制,例如4个字节的倍数。

每个字节应先传输最低有效位LSB。有效载荷数据可以仅受数据格式要求限制的任何字节顺序传输。多字节元素,如word count,校验和和短包16位数据字段应首先传输最低有效字节LSB。

在EoT序列之后,接收器开始寻找下一个SoT序列。

低级协议短包格式(Short Packet)

在这里插入图片描述
图31显示了短包数据结构,短包定义数据类型0x00~0x0F, Table 3描述了数据类型,短包只包含一个包头PH,不存在包尾PF, 并且包头里的Word count字段由短包的数据字段替代。

对于帧同步数据类型的短包,数据字段表示帧数,对于行同步数据类型的短包,短包数据字段表示行数,可以参考Table 6 针对帧和行同步数据类型的描述。

针对一般的短包数据类型,短包数据字段可由用户自定义。

ECC(Error Correction Code) 字段允许单比特纠错和2-bit检测。

Data Identifier(DI,数据标识符)

数据标识符包含了虚拟通道标志VC值和数据类型DT值,如图32,虚拟通道标志符占用数据标识符的高两个bit, 低六个bit为数据类型标识。
在这里插入图片描述

Virtual Channel Identifier(虚拟通道标识符)

虚拟通道标识符的目的是为交叉在数据流中的不同数据流提供单独的通道。

虚拟通道标识号位于数据标识符DI字节的高两个bit。接收器将监视虚拟信道标识符,并将交错的视频流解复用到相应的信道。最多支持4个数据流;有效的通道标识符是0到3。外设中的虚拟通道标识符应该是可编程的,以允许主机处理器控制数据流如何解复用。逻辑通道的原理如图33所示。
在这里插入图片描述
下图展示了一个使用虚拟通道支持的数据流示例。
在这里插入图片描述

Data Type(DT,数据类型)

Data Type值指定有效负载数据的格式和内容。最多支持64种数据类型。
有8种不同的数据类型类,如表3所示。在每个类中,最多有8个不同的数据类型定义。前两个类表示短数据包数据类型。其余六个类表示长数据包数据类型。
在这里插入图片描述

帧同步包数据类型

在这里插入图片描述
每个图像帧应该以包含帧起始码的帧起始(FS) 包开始。FS包后面应该有一个或多个包含图像数据的长包和零个或多个包含同步码的短包。每个图像帧应以包含帧结束码的 帧结束(FE) 包结束。
对于FS和FE同步包,短包数据字段应该包含一个16位的帧号。对于给定帧对应的FS和FE同步包,这个帧号应该是相同的。

当使用16位的帧号时,应该是非零的,以区别于用例中帧号是无效的并保持为零。

16位帧数的行为应如下:
1.Frame Number 一直为0–帧号无效。
2.同一个虚拟通道每一个Frame Start(FS)包帧数增加1,并且周期性的重置为1,例如1,2,1,2,1,2,1,2,或者1,2,3,4,1,2,3,4。
3.帧号必须是非零值。
在这里插入图片描述
在这里插入图片描述
图45和图46分别包含了由多个数据包和单个数据包组成的数据帧的例子。

行同步包

对于以Line Start(LS)和Line End(LE) 为标志的行同步包数据字段需要包含一个16-bit的行号(line number),对于与给定行相对应的LS和LE包,此行号应相同。行号是逻辑行号,不一定等于物理行号。

16位行号在使用时应是非零的,以区别于行号无效并保持为零的情况。

16-bit 行号的行为如下:
1.Line Number一直为0----行号无效
2.同一个虚拟通道和数据类型的短包,每一个LS 包的行号加1,一个FS报文后,第一个LS报文的行号周期性重置为1。预期的用途是逐步扫描(非交错)视频流。行号必须是非零值。
3.对于同一虚拟通道和同一数据类型内的每个LS包,行号以大于1的相同任意步长值递增。对于FS报文后的第一个LS报文,行号会周期性地重置为非零的任意起始值。连续帧之间的任意起始值可能不同。预期的用途是用于交错的视频数据流。
在这里插入图片描述

通用短包数据类型

在这里插入图片描述
通用短分组数据类型的意图是提供一种机制,用于在数据流中包括用于打开/关闭快门、触发闪光等的定时信息。通用短分组中的16位用户定义数据字段的意图是将数据类型值和16位数据值从发送器传递到接收器中的应用层。CSI-2接收器应将日期类型值和相关的16位数据值传递给应用层。

普通8-bit长包数据类型

在这里插入图片描述
针对Null和blanking两种数据类型,接收器必须忽略数据包净荷内容。

空白blanking包与空包null在视频数据流中的重要性不同。空包Null没有任何意义,而空白包blanking可以被使用,例如,在ITU-R BT.656风格的视频流中,作为帧间的空行。

Pixel/Byte Packing/Unpacking Layer

在CSI-2应用程序中最广泛使用的格式由表8中的“primary”名称来区分。CSI-2的传输器实现应该至少支持这些primary格式中的一种。CSI-2的接收器实现应该支持所有的primary格式。
在这里插入图片描述

YUV 图像数据

在这里插入图片描述
YUV420数据传输格式:

在这里插入图片描述

RGB 图像数据

在这里插入图片描述
RGB888数据传输格式:
在这里插入图片描述

RAW图像数据

在这里插入图片描述
RAW8数据传输格式:
在这里插入图片描述

用户定义数据

在这里插入图片描述
用户定义数据传输格式:
在这里插入图片描述

Application Layer

常用帧格式

在这里插入图片描述
如上图,摄像头发送数据时,发送LLP数据包顺序:1.发送FS;2.发送PH;3.发送像素数据或嵌入数据;4.发送PF;5.发送blanking数据包;6.发送PH;7发送像素数据;8.发送PF;直到发送完全部像素数据;9发送PF;10.发送FE;再发送blanking。


在这里插入图片描述
有需要这两份文档的,可以往我邮箱(1374911009@qq.com)发”需要mipi-csi文档“,我回复附件。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值