近期接到小老板新项目,需要完善一款mipi_DPHY_LPTX电路。网上搜索资料后感觉很繁杂,在此做一个整理,明确需求。
一、基本概念
这里参考知乎博主IEEE1364的笔记
MIPI(移动行业处理器接口)是Mobile Industry Processor Interface的缩写。MIPI是MIPI联盟发起的为移动应用处理器制定的开放标准。
目的是把手机内部的接口如摄像头、显示屏接口、射频/基带接口等标准化,从而减少手机设计的复杂程度和增加设计灵活性。MIPI并不是一个单一的接口或协议,而是包含了一套协议和标准,以满足各种子系统独特的要求。主要分为三层:应用层、协议层和物理层。应用于摄像头(CSI)、显示器(DSI)等设备的接口。
二、具体技术细节
CSI协议分为三层:
1.应用层(ApplicationLayer),主要描述了上层数据流中的数据编码和解析。CSI-2 规范中规定了像素数据到字节的映射(Mappingof pixel values to bytes)。
2.协议层(Protocol Layer),包含了几个不同的子层,每个子层都有各自的明确职责。主要包括,像素/字节打包/解包层(Pixel/Byte Packing/UnpackingLayer),Low Level Protocol Layer(LLP),通道管理(LaneManagement)层。
3.物理层(PHYLayer),定义了传输介质 (electrical conductors,导体),输入/输出电路信号的电气特性(electricalparameters)和时钟机制(时序)。即如何从串行位流(Bit Stream)中获取“0”和“1”信号。规范中的这一部分记录了传输介质的特性,并依据时钟和数据通道之间发信号和产生时钟的关系规定了电学参数。CSI2的物理又两个标准,C-PHY和D-PHY。而本次项目所要设计的正是D-PHYLPTX,即D-PHY标准下的LPTX模块。
2.1 D-PHY(CSI物理层下的一种标准)
2.1.1Lane
Lane可以理解为在两个不同芯片之间完成信息运输的通道。这是MIPI里面的基本信息传输单元。两块使用MIPI连接的芯片,中间使用差分信号对进行连接,收发端各有一个Lane模块,完成数据收发。Lane模块,加上中间的连线,组成了完整的数据数据传输通道。下图就是一个完整的双向数据传输Lane模块(MIPI里面管这个叫Universal Lane )的示意图:
Universal Lane里面有一对高速收发器(HS-TX、HS-RS)、一对低功耗(Low Power)收发器(LP-RX、LP-TX)、低功耗竞争检测器(LP-CD)和Lane的控制逻辑组成。其他类型的lane都是在这个基础做一定的简化,比如单向数据传输通道就只有接收器或者发送器,再比如时钟lane也是只有接收器或者发送器。也就是说Lane和LPTX模块之间是包含与被包含的关系。
2.1.2D-PHY参数
D-PHY支持三种不同类型的数据通道:单向时钟通道,单向数据通道和双向数据通道。
D-PHY采用1对源同步的差分时钟和1~4对差分数据线来进行数据传输。数据传输采用DDR方式,即在时钟的上下边沿都有数据传输。
由于Lane有高速和低功耗两种收发器,所以D-PHY的物理层支持HS(HighSpeed)和LP(Low Power)两种工作模式。HS模式下采用低压差分信号,功耗较大,但是可以传输很高的数据速率(数据速率为80M~1Gbps),支持100mV到300mV的电压范围;LP模式下采用单端信号,数据速率很低(<10Mbps),但是相应的功耗也很低,支持0V到1.2V信号电平。两种模式的结合保证了MIPI总线在需要传输大量数据(如图像) 时可以高速传输,而在不需要大数据量传输时又能够减少功耗。
2.2.3 D-PHY操作模式
数据Lane的三种操作模式,在高速传输的时候叫 Burst Mode,在低功耗模式下有Control mode和Escape mode。在正常的操作时,数据通道处于高速模式或者控制模式。
接下来就分别说明这三种模式:
1.高速模式(Burst Mode)
高速模式最主要的模式,用来传输图像。在高速模式下,通道状态是差分的0或者1,也就是线对内P比N高时,定义为1,P比N低时,定义为0,此时典型的线上电压为差分200MV。下面展示了Burst模式下的传输时序。在这种模式下,吞吐率可以达到 2500 Mbps,也就是 2.5Gbps/per Lane。
2.控制模式(Control mode)
在控制模式下,高电平典型幅值为1.2V,此时P和N上的信号不是差分信号而是相互独立的,当P为1.2V,N也为1.2V时,MIPI协议定义状态为LP11,同理,当P为1.2V,N为0V时,定义状态为LP10,依此类推,控制模式下可以组成LP11,LP10,LP01,LP00四个不同的状态。
MIPI协议规定控制模式4个不同状态组成的不同时序代表着将要进入或者退出高速模式等;比如LP11-LP01-LP00序列后,进入高速模式。频率最高10Mhz。
3.逃避模式(Escape mode)
Escape mode是数据Lane在LP状态下的一种特殊操作。在这种模式下,可以进入一些额外的功能:LPDT(低功耗数据传输), ULPS(超低功耗状态), Trigger,每个模式都有不同的操作码。一旦进入Escape mode模式,发送端必须发送1个8-bit的命令来响应请求的动作。
因为设计的是低功耗传输,因此这里重点关注控制模式和逃避模式。
那么是怎么进行模式转换的呢?mipi的官方手册给了如下描述
以进入高速模式为例,mipi规定需要发送一段SOT信号,即LP-11、LP-01、LP-00、HS-0、发送 HS Sync 00011101序列,然后发送数据。这里的LP、HS即是Dp、Dn两根线上的信号。那么又该如何停止呢?MIPI说,再发一段EOT信号!啥信号?就是LP11。这个过程都是在LPTX的控制模式下进行的。
而进入逃避模式同理,也要先发出一段信号,LP-11、LP-10、LP-00、LP-01、LP-00、[Entry Command],最后的进入码mipi规定了下面几种序列
unknown是留给用户配置的。
Clock Lane 没有定义 Escape 模式,但是它定义了 Ultra-Low Power State,进入 Clock Lane 的 Ultra-Low Power State 的方式为:LP-11、LP-10、LP-00。对于采样时间点,D-PHY采用DDR同步的上升下降沿以及差分传输,来防止信号干扰。
这里引用网上的操作码总结:
从控制模式的停止状态开始的可能事件有:
• Escape mode request (LP-11→LP-10→LP-00→LP-01→LP-00)
• High-Speed mode request (LP-11→LP-01→LP-00)
• Turnaround request (LP-11→LP-10→LP-00→LP-10→LP-00)
• Escape mode是数据Lane在LP状态下的一种特殊操作
•在这种模式下,可以进入一些额外的功能:LPDT, ULPS, Trigger
•数据Lane进入Escape mode模式通过LP-11→LP-10→LP-00→LP-01→LP-00
•一旦进入Escape mode模式,发送端必须发送1个8-bit的命令来响应请求的动作
• Escape mode 使用Spaced-One-Hot Encoding
•超低功耗状态(Ultra-Low Power State)
•这个状态下,lines处于空状态 (LP-00)
• 时钟Lane的超低功耗状态
•时钟Lane通过LP-11→LP-10→LP-00进入ULPS状态
•通过LP-10 → TWAKEUP →LP-11退出这种状态,最小TWAKEUP时间为1ms
• 高速数据传输
•发送高速串行数据的行为称为高速数据传输或触发(burst)
•全部Lanes门同步开始,结束的时间可能不同。
•时钟应该处于高速模式
• 各模操作式下的传输过程
•进入Escape模式的过程 :LP-11→LP-10→LP-00→LP-01→LP-00→Entry Code → LPD (10MHz)
•退出Escape模式的过程:LP-10→LP-11
•进入高速模式的过程:LP-11→LP-01→LP-00→SoT(00011101) → HSD (80Mbps ~ 1Gbps)
•退出高速模式的过程:EoT→LP-11
•控制模式 - BTA 传输过程:LP-11→LP-10→LP-00→LP-10→LP-00
•控制模式 - BTA 接收过程:LP-00→LP-10→LP-11
2.2.4MIPI电路设计
下面是LP模式下的信号规范:
D-PHY低层协议规定最小数据单位是一个字节,发送数据时必须低位在前,高位在后。
电压视不同需求下做出修改
2.2CSI协议层
因为这里不是设计重点,故直接引用过来做参考学习。
CSI-2协议层允许多数据流 (CSI-2 TX)共用一个主机处理器端 CSI-2 接收信号接口 (CSI-2 RX)。协议层就可以描述有多少数据流被标记并组合在一起,指定了多数据流怎样被标记和交叉存取,因此每个数据流可以在SOC处理器CSI-2接收器中被正确的重建,才能把各个数据流正确地恢复出来。
1.像素/字节打包/解包层(Pixel/Byte Packing/UnpackingLayer)
CSI-2支持多种像素格式图像应用,包括从6位到24位每个像素的数据格式。在发射端,数据由本层被发送到LLP层(Low Level Protocol)前,本层将应用层传来的数据由像素打包成字节数据;在接收端,执行相反过程,将LLP层发来的数据解包,由字节转成像素,然后才发送到应用层。8位每像素的数据在本层被传输时不会被改变。
2.LLP(Low LevelProtocol)层
LLP层包括,为串行数据在传输开始(SoT)到传输结束(EoT)之间传输事件,和传输数据到下一层,建立位级和字节级同步的方法。LLP最小数据粒度是一字节。LLP层也包括,每字节中各位数值分布解释,即“端”(Endian)分布。
3.通道管理(LaneManagement)层
为性能不断提升,CSI-2是通道可扩展的。数据通道数目可以是1,2,3,4,这个依赖于应用中的带宽需求。接口发送端分配(“distributor”功能)输出数据流到一个或更多通道。在接收端,接口从通道收集字节并将之合并(“merger”功能)成为重新组合的数据流,恢复原始数据流序列。
数据在协议层是以数据包的形式存在。在接口发送端,添加包头和可选择的错误校验信息,一起以数据包的形式通过LLP层来传输数据。在接收端,LLP层将包头剥离,由接收者按照相应逻辑解析数据包,得到有效数据。错误校验信息可以用来检测收到的数据完整性。