[摘抄]Camera接口之MIPI D-Phy,M-Phy,C-Phy信号采样

不同协议是怎么进行信号采样的

本文主要是介绍C-Phy,M-Phy 和D-Phy在物理信号的上的区别。因为作为复杂的物理层传输协议,每个协议都有满满的100到200多页文档。文档中不仅描述了信号是怎么传输,也定了接收发射等各种单元的设计原则,状态转换方法。

首先看上面这张图。其实从时间上来说是:

1 首先出现的2007年 D-Phy 与之配套的上层协议CSI2。

2 然后在08年MIPI组织就提出了M-Phy UniPro和 CSI3协议。

3 而最后出现的是2013年的C-Phy 。但是其反而是和CSI2 协议搭配而不是和CSI3协议搭配。

而一般来说,每一次协议的更迭主要原因是数据量传输的增加。但是在这三个协议中M-Phy 其实是数据传输量最大的一个,可在成像领域中M-Phy 的应用案例几乎没有。主要原因是和camera的应用发展有关,camera在达到20M的像素之后并没有像MIPI组织的预期一样继续大幅往上更高像素数方面发展。而M-Phy 设备的开发过于复杂,并没有设备商的支持,因此很长一段时间camera设备停留在D-Phy 协议上。

于是MIPI组织只得在13年推出一个相比M-Phy 传输速度低,但是和D-Phy更容易兼容,且设备开发成本较低的C-Phy 协议。最近两年高速录像的兴起将本来就不富裕的D-Phy 带宽压榨到了极限,C-Phy 的设备终于开始进入实际生产。

我们先来看下三个协议的区别

从上面的这个表格来看 M-Phy其实是速度最快的,M-Phy是可以作为存储器接口的物理层传输协议。C-Phy 的实际传输速率只有D-Phy的不到2倍。但是C-Phy 其实有两大优点的:

第一 单条lane的传输速率要大于D-Phy ,更多情况下减少器件的管脚数量适合小型化。

第二 每条lane上的信号变化次数要少于D-Phy ,造成的和受到电磁干扰更低。

下面进入正题来介绍这三种协议是如何进行高速信号传输的。

 

信号采样的发展方式

1 信号加时钟

不过在介绍之前我们首先要从传统的时钟信号和数字信号先来看。

最传统的使用时钟和信号线传输,都是采用时钟信号在高电平或者是上升沿的时候采样。因此传输的最大速率是时钟频率相同的。 X bps = X hz

下图是基于上升沿的采样例子,早期camera的并口(CPI)就是基于这样的一个采样形式。一般都是在下降沿之后改变信号上升沿时进行电平的判断。下图中红色的线的位置是采样的时机。

另外的一种就是基于时钟在高电平时候的采样形式,常用的I2C信号就是基于这么一种形式。下图中红色实线为采样时机。

2 D-Phy使用的 DDR同步的上升下降沿

但是随着时钟频率的提升,信号也变得容易被干扰。导致采样的时候出现错误。因此后来出现了差分信号。即是用一对信号线代表一个信号。两个信号(时钟)线的差用来代表信号的状态。当P线为1,N线为0的时候为信号1,当P线为0,N线为1的时候为信号0. 每组信号线一般在文献中被称为Lane,与 line 所区别。使用差分信号的好处是能够通过两条线的差抵抗其它信号的干扰。当有一个正向或者负向干扰的时候两者的差,并不会变。

除了差分信号还使用了DDR的采样方法,一个始终周期采样两次的方式进行采样。上升沿一次下降沿一次,这样的好处是相同的时钟周期中信号的传输速度增加了一倍及Y bps =2 * Xhz。在相同频率下传输速率增大了一倍,减少了对外的干扰。

下图中蓝色虚线部分是采样时机。

3 M-Phy和 C-Phy使用的两种嵌入式时钟

先介绍M-Phy ,M-Phy 的嵌入式使用不同宽度的高低电平作为一组信号的周期,以高低点平的宽度来判断数据为0还是为1. 因为每次都为一个相同的时间周期。因此信号本身也可以理解为时钟信号就不需要额外的时钟信号,这也就是M-Phy 的嵌入式使用的做法。

在M-Phy中最复杂的还是其使用的8b10b信道编码,其使用的是IBM01《A DC-Balanced, Partitioned-Block, 8B/10B Transmission Code》这本身是用在ADSL 传输协议上的一种编码,大家有兴趣可以自己翻下。使用这个编码也是M-Phy 能够传输这么高速率数据的主要原因。

而C-Phy 采用了另外一种方式嵌入时钟
C-Phy 有三根信号线,不像M-Phy 和D-Phy , C-Phy 并不是严格意义上的差分信号线。而是更像我们的工业用电一样,它使用三根信号之间的差作为信号判断。其三根信号之间必然有一根在 3/4V 一根在1/2 V 一根在1/4V。三根线在同一时刻的状态一定不懂,因此其有六个不同的状态。协议中使用+x,-x, +y,-y, +z,-z 代表。

下图中红色虚线为采样时机

C-Phy 的时钟就是靠这六种状态机之间的转换形成的。这中间有三点很重要

1 C-Phy 每次传输周期三根线的状态必须发生变化,即状态机的切换代表一次传输周期。在协议中状态的切换速度记作 sym/s

2 每次传输符号所代表的意义是由上次状态到这次状态的切换所代表的。也就是说两次状态的变化才代表了到底传输了什么符号。

3 6种状态每次由一种状态变换到另外一种状态最多能有五种不同的可能性。因此这个编码是个5进制编码。

C-Phy 的最大传输速率是2.5Gsymbols/s,如果按照每个符号能代表5个数的话。按照bps计算的最大传输速率应该为2.5G*log2(5)约为 2.5G*2.32.但是Spec上却是使用的2.5G*2.28这是为什么呢?是因为在这中间C-Phy 又做了一个16bit to7symbols的编码过程。16/7 约为2.28左右。16bit to 7symbols编码解码过程如下。

 

总结:

其实从时钟加信号到DDR到嵌入式时钟,整个物理层传输变化和通信协议很类似,最终的追求是尽量不增加传输信号线,不增加整个系统的频率的基础上,增大传输速率。这个过程中使用了大量通信编码的技术。本文其实只是简单的介绍了下这三种协议是如何在高速状况下进行物理信号的采样的。没有深入的进行协议同步部分的分析。比如如何高速切换低速,如何进行帧同步。这篇文章的目的是让大家快速的理解。D-Phy 和C-Phy 的高速传输的原理和区别。

 

转自:https://zhuanlan.zhihu.com/p/37373801

posted @ 2021-09-09 13:56  忘掉名字吧orz  阅读(2150)  评论(0编辑  收藏  举报