之前的文章有介绍过DPHY和CSI2,这篇文章简单介绍下CPHY
实际上是在DPHY之后CPHY之前,mipi组织提出了M-PHY和CSI3协议。M-PHY,4lane tx全部打开理论每 lane最大值达到11.6gb/s,而DPHY最大只达到2.5gb/s. M-PHY是DPHY的4.64倍。为了应用与类似车载需要长距离传输的场景,mipi联盟又出了个APHY,当然我目前还没去了解。
然而M-PHY并没怎么商用起来,个人认为相机的像素并没有像摩尔定律那样快速的增长,当然不是不能这样增长,是没有必要,感觉像素基本已经过剩,手机相机已经不像早期的像素增长,更多的像效果这块,比如微距,夜景,物理变焦这块。另外可能还是M-PHY的硬件复杂度高。
之后推出CPHY的最大支持的速度反而下降,传输的最大速率不到D-PHY的两倍。下面介绍下CPHY的相关硬件。
CPHY和DPHY最直观的就是接线不一样
这是一张两种协议6线连接图,dphy是一组clk lane带2组data lane的情况,cphy是3根线为1lane,6线使用的是2lane。没有clk线,时钟同步是在data线中进行。因为3线为1lane,不超过原来PHY使用的最多10线,所以cphy最多为9线,共3 lane。
先看下内部主要结构,下图是CPHY和DPHY对比
内部的主要结构都差不多。主要是2线变成3线的区别,既然用了3线,那输入就和DPHY一致,那么其实只要在3线内部做一个编码解码器,最终将信号编解码成原来DPHY的前后端一致的信号,那么接入csi2控制器,里面完全可以做到一致。解码器后面会说。
当然稍微有点不明白的是,这种状态采样机制如何不用时钟,能在跳变稳定后的中心点采样值,或许是三根线都必须跳变phy就能知道是数据在传输。
另外不仅用了3线,电平也有3中,分别是3/4,1/2,1/4电平,用这三种电平定义了6中状态
A-B,B-C,C-A的电平运算,恢复出+x,-x,+y,-y,+z,-z六种不同的线态。这个只是状态,真正数据是他们状态的跳变。由图可知
位置 | A | B | C |
---|---|---|---|
+x | 3/4v | 1/4v | 1/2v |
-x | 1/4v | 3/4v | 1/2v |
+y | 1/2v | 3/4v | 1/4v |
-y | 1/2v | 1/4v | 3/4v |
+z | 1/4v | 1/2v | 3/4v |
-z | 3/4v | 1/2v | 1/4v |
仔细看图,不管当前所处的任何状态,都可以转到任意其他5种状态,状态转换对应的就是转换的值,以我红色箭头表示状态转换的值就是010,状态跳变的值的表如下图:
CHPY的最大传输是2.5Gsymbols/s,一次状态转换可以有5种值,所以转换成传输bit的值就是2.5G*log2(5),大概为,2.5gx2.32,但实际编码器是将7个状态转换转换成16bit数据,这样实际传输一个symbols(一次状态转换)传输16/7 = 2.286个字节。
这样CPHY的最大传输速度是2.5gx2.28x3(最多3lane)=17.14 gb/s,DHY的传输速度是2.5gx4(最多4lane data)=10gb/s
按照实际7个symbols应该是可以传输5的7次方为78125种数据,16bit数据只能表示65536种数据,剩余的数据可以用来做标识,比如同步信号等。
所以cphy比dphy多了个编解码器。如下如:
下图是cphy的电平跳变:
总体传输波形如下,大体都和dphy类似
同样CPHY跟DPHY一样也有LP和HS模式
从上图可以看出进入HS模式为LP-111→LP-001→LP-000
进入escapemode的时序为LP-111→LP-100→LP-000→LP-001→LP-000
Escapemode下面又有很多子模式,超低功耗模式 reset trig code和一些未定义模式
再后面就是进入各种模式的时序流程以及时间,各种状态之间的转换,读懂DPHY的跟CPHY类似,可以很容易看懂,就不再贴图。