CIF为ISP的接口模块,主要接收MIPI传进来SDI数据并unpack为flyby格式,包括seamless switch/sensor switch控制、async FIFO控制以及data MTX控制等多个子模块。
MIPI简介
MIPI(Mobile Industry Processor Interface,移动工业处理器接口),是由ARM和一系列手机公司成立的联盟,目的是为了将手机内部的接口如摄像头、显示屏接口、射频/基带接口等标准化,从而减少手机设计的复杂程度和增加设计灵活性,增加兼容性。
MIPI中,比较成熟的接口有DSI(显示器接口)和CSI(摄像头接口)
MIPI-CSI2是手机主控和外部摄像机连接的方式
MIPI-DSI2是手机主控和LCD屏幕连接的方式
SDI简介
SDI(Serial Digital Interface),数据分量串行接口。
CIF arch
由上图可以看出,CIF有9条sdi输入,最多可支持9路sensor输入(一个sdi channel传输一个sensor数据)
sdi包括四根线,sdi_pkg_start、sdi_byte_en、sdi_pkg_end、sdi_clk,sdi_pkg_dat(128bit)
类似MIPI的数据结构(如下图),sdi会传输短包和长包数据,短包用来同步,长包用来传递信息。
LPS:Low Power State,封包之间的spacing间距
ST:Start of Transmission(SOT),封包的起始信号,一般为低速转换为高速的暂态信号
ET:End of Transmission(EOT),封包的结束信号,一般为高速转换为低速的暂态信号
PH:Packet Header,32bit(可根据用户自定义来扩展数据位宽)表示,封包的标头
包含DI、WC、ECC/CRC(C-phy是ECC,D-phy是CRC),各组成含义:
DI(Data Identifier),包括VC(virtual channel)和DT(Data Type)两个标识符。
VC标识符位于DI的高位,C-phy是4bit(最多16种VC),D-PHY是5bit(最多32种VC),只包含了曝光信息。在CIF里一个sensor数据通路最多支持四种VC,分别为dol0 RGB、dol0 W、dol1 RGB、dol1 W,即双曝的RGBW sensor。其次一个sensor数据通路还可以支持3/2种VC,即三曝sensor或两曝sensor。
DT标识符位于DI的低6位,总共可以表示64个数据类型(填充数据的类型)。
Data Type |
Description |
0x00 to 0x07 |
Synchronization Short Packet Data Types |
0x00 |
Frame Start Code |
0x01 |
Frame End Code |
0x02 |
Line Start Code(Optional) |
0x03 |
Line End Code(Optional) |
0x04 to 0x07 |
Reserved |
0x08 to 0x0F |
Generic Short Packet Data Types |
0x10 to 0x17 |
Generic Long Packet Data Types |
0x18 to 0x1F |
YUV Data |
0x20 to 0x27 |
RGB Data |
0x28 to 0x2F |
RAW Data |
0x2a |
8bit数据长包 |
0x2b |
10bit数据长包 |
0x2c |
12bit数据长包 |
0x30 to 0x37 |
User Defined Byte-based Data |
0x38 to 0x3F |
Reserved |
WC(word count,数据计数),16bit。从PH结尾到PF起始位置中间的填充数据的长度,单位为字节。接收端通过WC来判断包的结尾位置。
ECC(Error Correction Code),8bit。采用Hamming Code的方式,用来纠正PH中一位的错误或者发现两位的错误。
Data,填充数据,0~65535字节,长度为WC * 8bits。对数据内容没有任何限制。
PF:Packet Folder,16bit表示,封包的结尾
短包相当于只有长包里的PH,包含DI、WC、ECC三部分,DI中包含VC和DT,只是DT的取值范围与长包的DT不同(参考上表)。
短包的WC表示数据域(Data Filed),具体含义为:如果该短包的Data Type为帧同步(Frame Synchronization),则数据域表示帧数;如果该短包的Data Type为行同步(Line Synchronization),则数据域表示行数。
sdi在没帧的最前面四行还会传输embedline信息,主要包括sensor的配置信息,frame count,timestamp等信息。会通过async fifo后的axi传输到DDR,以供软件处理。
seamless switch是在单曝切双曝、分辨率与帧率切换的时候需做到seamless switch,通过VC和DT来判断当前帧与上一帧相比是否有变化,有变化就输出硬件register updata信号给ISP pipeline,但是具体什么时候更新寄存器需要user自己决定。
sensor switch是在放大或缩小、前后镜头切换的时候,会基于frame count以及v blank期间来选择切到另一个sensor的数据,可选择性丢掉几帧数据,CIF需保证输出无残帧。
CIF支持RAW 6/8/10/14/16/18/20,RGB,YUV420,YUV422。其中YUV信息只会传输给isp-lite用于软件处理。
ISP pipeline上会把数据从RAW格式数据转成RGB,继而转成YUV进行BE处理。
最后output MTX会根据VC将sensor不同曝光信息拆开,再根据DT把不同数据格式的数据传输到不同的输出通道。