1. MIPI
MIPI(Mobile Industry Processor Interface)移动通信行业处理器接口
- MIPI是MIPI联盟发起的为移动应用处理器制定的开放标准。
- 目的是把手机内部的接口,如摄像头、显示屏接口、射频/基带接口等标准化,从而减少手机设计的复杂程度和增加设计灵活性。
已经完成和正在计划中的规范如下:
1.1.
2. CSI
MIPI 协议主要分为三层:应用层,协议层和物理层,应用于摄像头,显示器等设备的接口 DSI(Display Serial Interface)
,这里重点介绍摄像头接口CSI( Camera Serial Interface)显示
- 应用层(Application Layer),主要描述了上层数据流中的数据编码和解析
- 协议层(Protocol Layer),包含了几个不同的子层,每个子层都有各个明确的职责,主要包括:
Pixel/Byte Packing/UnpackingLayer:像素/字节打包/解包层
LowLevelProtocol Layer:LLP组织串行数据
LaneManagement:通道管理层
物理层(PHYLayer),定义了传输介质,输入输出信号的电气特性和时钟机制,即如何从串行位流中获取 “0” 和 “1”信号,同时生成SoT与EoT等信号
3. D-PHY概述
D-PHY定义了一种源同步,高速,低功耗以及低成本的PHY
PHY的配置项
(1)一条clock lane
(2)1/2/4条data lane
D-PHY有三种不同类型的通道:
(1)单向时钟通道Unidirectional Clock Lane
(2)单向数据通道Unidirectional Data Lane
(3)双向数据通道Bi-directional Data Lane (CSI没用,主要是DSI的lane 0)
D-PHY有两种传输模式
(1)HS高速传输模式,用于传输突发数据,同步传输,信号为差分信号,电平范围为100mv-300mv,传输速度范围是80-1500Mbps,(速率和d-phy版本相关,这里是dphy-1.1版本的速度,目前市面上大部分还是v1.1,甚至1.0版本)
(2)LP低功耗模式,用于传输控制指令,异步传输,信号线为单端,电平范围是0-1.2V,没有用时钟线,时钟是通过两个数据线异或而来
的,速度只有10Mbps
3.1. D-PHY PPI接口
下图是主控制器和外围设备通过mipi d-phy连接示意图:
Lane Module:用来发送或接收lane 上的信号
PPl: PHY-ProtocolInterface PHY协议接口
PHYAdapter Layer: APPI接口与PPI接口的转换
APPI: 抽象物理层协议接口(用于再不同通信协议与物理层之间建立通用的、独立硬件和接口协议)
3.2. D-PHY Lane Module
右图是一个通用的 Module内部结构图
功能:
取决于Lane 类型 (时钟,数据单向, 数据双向) Lane 以及lane module是发送端还是接收端
构成:
一个或多个高速收发模块 ((HS-TXHS-RX) 一个或多个单端低功耗收发模块(LP-TXLP-RX)以及lane控制和接口逻辑模块Logicy Control&lnterface Lane 组成
3.3. D-PHY Lane Levels & Lane States
Line Levels (typical)
LP:0~1.2V 高电平典型幅值为1.2V为1
HS:100~300mV (Swing:200mV) 信号线对内P比N低时,定义为0, P比N高时,定义为1, 此时典型的线上电压为差分200mV
Lane States
不同传输功能通过驱动线上的不同电平来进入不同的lane states正常操作时是HS-TX模块或LP-TX模块驱动lane,
一个HS-TX模块:差分地驱动一对data lane,2种HSLane 状态(HS-0, HS-1)
两个LP-TX模块:独立地驱动一对lane 上的两根信号线,4种LPLane状态。 (LP-00, LP-01, LP-10, LP-11)
6种lane 状态如右下表所示:
3.4. D-PHY操作模式
数据Lane的三种操作模式
高速传输HS模式:又称 Burst Mode
低功耗LP模式:Control mode和Escape mode两种
一般操作在HS和LP的control模式之间切换
Lane的各个模式切换:
HS模式用于高速传输,进入和退出HS模式时,都需要在LP的control模式下做若干LP**操作
Escape模式的作用是实现低速模式的通信, 例如DSI的低速命令收发就是Escape的LPDT模式
即使没有Escape模式(CSI 不需要)一般LP单向也是需要的 因为进出HS模式需要LP的control模式进行操
只有从LP control模式才能进入Escape模式
LP模式下, RX端不需要clk, 但TX端需要用到,所以escape clk也是要配置的
3.5. D-PHY 高速模式(Burst Mode)传输详解
SOT(Start of Transmission)
从停止状态到开始发送数据的一个启动数据发送流程(Sot),在发送一个传输数据请求后,Data Lane离开Stop状态,通过启动数据发送流程(Sot)为进入 HS Mode 做准备。
CSI需要重点关注Rx Side的THS-SETTLE值(和lane rate相关)
EOT(End of Transmission)
Data Burst 结束时,Data Lane通过Eot结束发送流程离开High-Speed Transmission模式进入 Stop状态。
3.6. PHY接口扩展
这里关注D-PHYV1.2的技术参数
1、使用了DDRSource-SyncClock,双沿采样(线速度为数据速率1/2)
2、最低配置要求是4pin,2pin用于传输差分时钟, 2pin用于传输数据
3、LP模式下峰值的差分电压为1300mv,HS模式下峰值差分电压为360mv
4、HS模式下每个通道的速率为80Mbps~2.5Gbps,LS模式下每个通道速率小于10Mbps
5、典型的配置是10pin, 包含4个差分传输的数据通道和1个差分传输的时钟通道
3.7. D-PHY和LVDS
LVDS是低压差分信号的统称,是一种信号传输模式的电平标准,低功耗、低误码率、低串扰和低辐射等特点
以下接口的差分信号线使用的都不是严格意义上的LVDS电平标准 (但很多基础概念都是相通的,换言之,不是所有的差分信号线都是LVDS电平标准,使用差分信号线进行数据传输的具体电平有很多种,LVDS只是其中之一比如:HDMI使用TMDS,DDR3使用SSTL,USB与SATA使用的电平标准也与LVDS很相似,但从其规范来看并不是标准的LVDS(它们也是低电压差分信号,但不是我们这里所说的LVDS),不能认为是同一种电平标准
D-PHY的HS模式也是一种的低压差分信号。但不是标准的LVDS,标准LVDS共模电压Vos= 1.2v,摆幅Swing=350mv
实践中:某mipi/lvds兼容型sensor lvds模式的输出信号如下(非标lvds)
4. CSI-2协议层
在物理层之上,即使CSI协议层,由三层构成,每一层有着明确功能。
像素字节转换层(Pixel/Byte Packing/Unpacking Layer):CSI-2能够支持多种多样的像素格式,对于发送方,在数据发送之前,需要根据像素格式,将像素数据转换为对应的字节流;对于接收方,在将数据提供给应用层之前,需要将字节流数据转换为像素数据。
低级协议层(Low Level Protocol):LLP指的是SoT与EoT之间的数据包字节流协议,LLP的最小单元为字节(包头包尾错误检测)。
Lane管理器(Lane Management):为了适应不同场景下对带宽的要求,CSI-2规定了Lane的数量是可拓展的。因此,在面临多Lane同时传输时,发送方需要对字节流进行公平分流(distributor),接收方则需要对多Lane数据进行合并。
4.1. CSI-2协议层-Lane管理器
Lane Management:
为了适应不同场景下对带宽的要求,CSI-2规定了Lane的数量是可拓展的。因此,在面临多Lane同时传输时,发送方需要对字节流进行公平分流(distributor),接收方则需要对多Lane数据进行合并。
当某些应用场景需要的带宽超过了单Lane所能提供的带宽或者为了降低Clock频率的情况下,则可以通过拓展Data Lane来满足要求。
在多Lane(定为N)传输的情况下,对于一帧数据,其数据长度不是Lane数量(N)的整数倍的情况下,则倒数第二组数据发出后会剩下少于N的字节需要发送,此时LDF会将无数据分配的Lane置为“Invalid Data”直接进入EoT。
4.2. CSI-2协议层-低级协议层
Low Level Protocol:
LLP层为CSI协议的主要功能层, 不仅定义了包格式, 还定义了传输中使用的同步机制。
在发送端,该层负责将上层传输过来的数据打包,添加校验字段,增加同步包,发送到下一层
在接收端首先校验包的完整性,并解析各个字段,根据包类型执行对应操作,将图像数据传到上一层。
LLP处理的playload数据为经过转换后的纯字节数据,没有像素概念。通过定义不同的的字段和包类型, 实现一帧一帧图像数据的传输。
- 传输任意数据(负载独立)
- 以字节为数据元
- 对于DPHY,支持16路虚拟通道;对于CPHY,支持32路虚拟通道
- 支持独立的帧起始,帧结束,行起始,行结束等数据包
- 包含对数据类型,像素深度与格式的描述
- 16-bit Checksum错误侦测
- 6-bit 错误发现与纠正
传输一帧图像:
LLP作为主要功能的实现,定义了很多包类型、字段和传输机制。这里不详尽地罗列这些细节,而是讲述一下一图像在总线上的传输格式,给出一个直观、感性的理解。
LLP的packet主要有两种:SP(short packet)和LP(long packet)。一个LP包含一行图像数据,一个SP则用来进行特殊的用途,主要是同步,例如表示帧开始(FS)、结束(FE)、行开始LS和行结束LE。其中LS和LE是可选的。
同时协议规定,每个packet之间,必须有一个LPS状态,即packet spacing。因此在进行传输时,
总线上传输的是SoT+ SP + EoT、SoT + LP + EoT和 LPS。
一帧必须以FS包开始,以FE包结束,中间为帧高度个数的LP包,每个包含一行图像数据。如下图所示
图中底部的 和DVALID VVALID、 HVALID 表明垂直有效和水平有效。
传输一开始,首先传输FS类型的SP包,表示一图像数据开始,进行帧同步,然后传输图像数据 ,一行数据一个LP包。每个LP包由PH(packet header)、Data和PF(packet footer组成
4.2.1. 短包:
一个SP则用来进行特殊的用途,主要是同步,例如表示帧开始(FS)、结束(FE)、行开始LS和行结束LE。其中LS和LE是可选的。
4.2.2. 长包:
包长: 6~655411 bytes (之所以是6~655411,其中的 个6 byte是指:PH(4bytePE (2byte))
对于YUV 、RGB或RAW数据类型,一个长数据包应包含一行图像数据。当数据包在同一虚拟通道内或在同一帧内时,相同数据类型的每个长数据包应具有相同的长度
4.3. CSI-2协议层-像素字节转换层
这一层中,发送端接收来自应用层的像素数据,并打包成字节格式发送到下一层: 在接收端解包来自LLP层的数据并传输到应用层。
该层的主要日的是将不同像素格式(例如YUYV,RGBA 等)都转换成为8bit字节格式, 消除不同图像格式差异 减少传输的复杂度。
例如:
RGB888格式:一个pixel为24bit, 将转换为三个字节;
RGB565格式:一个pixel为16bit,转换为两个字节;
RGB444格式:一个pixel为12bit,需要通过 1 padding变成RGB565格式,为两个字节,如下图所示:
4.4. CSI-应用层
该层主要用于不同场景对数据处理过程,对于发送方,多为camera生成数据,对于接收方,多为soc对数据进行处理,右图为一个CSI典型应用场景
流程:Sensor CSI TX发送图像数据->dphy转换ppe接口->CSI-2 RX通过PPI接口对收到的数据进行解析,完成后通过AXI-S(或者其他Image Data Interface)输出到Soc的其他模块ISP(即图中的Video pipe)->vdma在图像数据写入DDR
ISP工作模式
在线模式online mode:sensor产生的实时数据和时序控制信号以行为单位送入ISP进行处理
离线模式offline mode:待处理的图像以帧为单位存储于系统内存,需要处理时由一个控制逻辑通过DMA从内存中读取数据,并添加模拟sensor行为的时序控制信号,然后送给ISP进行处理
4.4.1. CSI-应用层-VDMA介绍(InnoWrite back)
VDMA介绍(INNO:Write back)
将图像的流数据按照指定存储格式保存到DDR中,通常写ddr最小单位为1行数据,(下一行存储地址stride偏移)。(特殊情况:以固定大小写ddr,256bit*16 bursts = 512bytes, stride参数失效)
存储格式:图像在内存上存储方法,YUV420颜色格式对存储格式可能有:
YUV420_3P:y\u\v分开存储,提供三个首地址。(CXWL)
YUV420_1P:yuv连续存储,提供一个首地址。 (X6)
YUV420_2P:y\uv分开存储,提供两个首地址。 (X6)
中断:异常上报,写完成中断上报,中断处理函数中做下一帧图像存储地址更新。
线性模式:
MIPI 接口的线性模式视频传输格式如右图 所示。Frame Start(FS)表示帧起始,Frame End(FE)表示帧结束。每一行的数据包头是 32-bit,包含当前行的 Virtual Channel 和 Data Type 等信息。
宽动态WDR:
MIPI_RX支持在同一个视频流数据里传输不同的图像数据,可以通过以下两种模式来区分数据:
模式1:使用VC(virtual Channel)区分数据
模式2:使用 DT (Data type)区分数据
模式3:DOL宽动态模式
区分长短曝光以及不同sensor源的数据
4.4.2. CSI-应用层-宽动态模式
虚拟通道VC:
VC 的 WDR 传输方式如下图所示 ,FS/FE 短包和数据长包里都包含有 VC 信息。MIPI Rx 控制器根据短包/长包里的 VC 值检测出长/短曝光数据,并把每一行数据都加上 2-bit 信号标识,伴随 DC 时序输出到 VICAP,在 VICAP 内实现解复用
数据类型DT:
DT传输如下图所示,不同曝光长度的同一帧共用一组 FS/FE 短包,长包的包头有 DT 信息。MIPI Rx 控制器根据 DT 值区分出长/短曝光数据,并把每一行数据都加上 长短曝光的标识,伴随 DC时序输出到 VI precesss,在 VICAP 内实现解复用。
CSI-应用层-宽动态模式
DOL( Data Of Line):
DOL 宽动态传输格式如左下所示。长短曝光数据共用一组 FS/FE 短包,每行起始的 4 个像素点作为识别码(Identification Code)用于区分长/短曝光的数据。
实践:
下图为IMX327手册提供DOL模式,Identity code计算方式,奇数帧和偶数帧提供了不同的Identity code;(debug时发现实际帧率降低了一半)