來自知乎上的文檔:
https://zhuanlan.zhihu.com/p/37373801
Camera接口之MIPI D-Phy,M-Phy,C-Phy信號采樣
就像大家都注意到了P20pro有三個攝像頭一樣,大家一開始看到C-Phy 的時候就注意到這個新的協(xié)議沒有單獨時鐘線。那么沒有時鐘線之后數(shù)據(jù)怎么傳輸呢? 這就是這篇文章的要向大家解釋的:
不同協(xié)議是怎么進行信號采樣的
本文主要是介紹C-Phy,M-Phy 和D-Phy在物理信號的上的區(qū)別。因為作為復(fù)雜的物理層傳輸協(xié)議,每個協(xié)議都有滿滿的100到200多頁文檔。文檔中不僅描述了信號是怎么傳輸,也定了接收發(fā)射等各種單元的設(shè)計原則,狀態(tài)轉(zhuǎn)換方法。在D-Phy才開始用在camera上的時候,我曾經(jīng)在公司內(nèi)部整理了一個60多頁的PPT,卻也只是介紹了下皮毛。因此在這篇中我們主要介紹這幾個協(xié)議中高速信號采樣部分的差別。其余內(nèi)容我們留到后面文章分析。

首先看上面這張圖。其實從時間上來說是:
1 首先出現(xiàn)的2007年 D-Phy 與之配套的上層協(xié)議CSI2
2 然后在08年MIPI組織就提出了M-Phy UniPro和 CSI3協(xié)議。
3 而最后出現(xiàn)的是2013年的C-Phy 。但是其反而是和CSI2 協(xié)議搭配而不是和CSI3協(xié)議搭配。
而一般來說,每一次協(xié)議的更迭主要原因是數(shù)據(jù)量傳輸?shù)脑黾?。但是在這三個協(xié)議中M-Phy 其實是數(shù)據(jù)傳輸量最大的一個,可在成像領(lǐng)域中M-Phy 的應(yīng)用案例幾乎沒有。主要原因是和camera的應(yīng)用發(fā)展有關(guān),camera在達到20M的像素之后并沒有像MIPI組織的預(yù)期一樣繼續(xù)大幅往上更高像素數(shù)方面發(fā)展。而M-Phy 設(shè)備的開發(fā)過于復(fù)雜,并沒有設(shè)備商的支持,因此很長一段時間camera設(shè)備停留在D-Phy 協(xié)議上。
于是MIPI組織只得在13年推出一個相比M-Phy 傳輸速度低,但是和D-Phy更容易兼容,且設(shè)備開發(fā)成本較低的C-Phy 協(xié)議。最近兩年高速錄像的興起將本來就不富裕的D-Phy 帶寬壓榨到了極限,C-Phy 的設(shè)備終于開始進入實際生產(chǎn)。
我們先來看下三個協(xié)議的區(qū)別

從上面的這個表格來看 M-Phy其實是速度最快的,M-Phy是可以作為存儲器接口的物理層傳輸協(xié)議。C-Phy 的實際傳輸速率只有D-Phy的不到2倍。但是C-Phy 其實有兩大優(yōu)點的:
第一 單條lane的傳輸速率要大于D-Phy ,更多情況下減少器件的管腳數(shù)量適合小型化。
第二 每條lane上的信號變化次數(shù)要少于D-Phy ,造成的和受到電磁干擾更低
下面進入正題來介紹這三種協(xié)議是如何進行高速信號傳輸?shù)摹?/p>
信號采樣的發(fā)展方式
1 信號加時鐘
不過在介紹之前我們首先要從傳統(tǒng)的時鐘信號和數(shù)字信號先來看。
最傳統(tǒng)的使用時鐘和信號線傳輸,都是采用時鐘信號在高電平或者是上升沿的時候采樣。因此傳輸?shù)淖畲笏俾适菚r鐘頻率相同的。 X bps = X hz
下圖是基于上升沿的采樣例子,早期camera的并口(CPI)就是基于這樣的一個采樣形式。一般都是在下降沿之后改變信號上升沿時進行點平的判斷。下圖中紅色的線的位置是采樣的時機。

另外的一種就是基于時鐘在高電平時候的采樣形式,常用的I2C信號就是基于這么一種形式。下圖中紅色實線為采樣時機。

2 D-Phy使用的 DDR同步的上升下降沿
但是隨著時鐘頻率的提升,信號也變得容易被干擾。導(dǎo)致采樣的時候出現(xiàn)錯誤。因此后來出現(xiàn)了差分信號。即是用一對信號線代表一個信號。兩個信號(時鐘)線的差用來代表信號的狀態(tài)。當(dāng)P線為1,N線為0的時候為信號1,當(dāng)P線為0,N線為1的時候為信號0. 每組信號線一般在文獻中被稱為Lane,與 line 所區(qū)別。使用差分信號的好處是能夠通過兩條線的差抵抗其它信號的干擾。當(dāng)有一個正向或者負(fù)向干擾的時候兩者的差,并不會變。
除了差分信號還使用了DDR的采樣方法,一個始終周期采樣兩次的方式進行采樣。上升沿一次下降沿一次,這樣的好處是相同的時鐘周期中信號的傳輸速度增加了一倍及Y bps =2 * Xhz。在相同頻率下傳輸速率增大了一倍,減少了對外的干擾。
下圖中藍色虛線部分是采樣時機。

3 M-Phy和 C-Phy使用的兩種嵌入式時鐘
先介紹M-Phy ,M-Phy 的嵌入式使用不同寬度的高低電平作為一組信號的周期,以高低點平的寬度來判斷數(shù)據(jù)為0還是為1. 因為每次都為一個相同的時間周期。因此信號本身也可以理解為時鐘信號就不需要額外的時鐘信號,這也就是M-Phy 的嵌入式使用的做法。在M-Phy
中最復(fù)雜的還是其使用的8b10b信道編碼,其使用的是IBM01《A DC-Balanced, Partitioned-Block, 8B/10B Transmission Code》這本身是用在ADSL 傳輸協(xié)議上的一種編碼,大家有興趣可以自己翻下。使用這個編碼也是M-Phy 能夠傳輸這么高速率數(shù)據(jù)的主要原因。

而C-Phy 采用了另外一種方式嵌入時鐘
C-Phy 有三根信號線,不像M-Phy 和D-Phy , C-Phy 并不是嚴(yán)格意義上的差分信號線。而是更像我們的工業(yè)用電一樣,它使用三根信號之間的差作為信號判斷。其三根信號之間必然有一根在 3/4V 一根在1/2 V 一根在1/4V。三根線在同一時刻的狀態(tài)一定不懂,因此其有六個不同的狀態(tài)。協(xié)議中使用+x,-x, +y,-y, +z,-z 代表。

下圖中紅色虛線為采樣時機

C-Phy 的時鐘就是靠這六種狀態(tài)機之間的轉(zhuǎn)換形成的。這中間有三點很重要
1 C-Phy 每次傳輸周期三根線的狀態(tài)必須發(fā)生變化,即狀態(tài)機的切換代表一次傳輸周期。在協(xié)議中狀態(tài)的切換速度記作 sym/s
2 每次傳輸符號所代表的意義是由上次狀態(tài)到這次狀態(tài)的切換所代表的。也就是說兩次狀態(tài)的變化才代表了到底傳輸了什么符號。
3 6種狀態(tài)每次由一種狀態(tài)變換到另外一種狀態(tài)最多能有五種不同的可能性。因此這個編碼是個5進制編碼。

C-Phy 的最大傳輸速率是2.5Gsymbols/s,如果按照每個符號能代表5個數(shù)的話。按照bp/s計算的最大傳輸速率應(yīng)該為2.5G*log2(5)約為 2.5G*2.32.但是Spec上卻是使用的2.5G*2.28這是為什么呢?是因為在這中間C-Phy 又做了一個16bit to7symbols的編碼過程。16/7 約為2.28左右。16bit to 7symbols編碼解碼過程如下。

總結(jié):
其實從時鐘加信號到DDR到嵌入式時鐘,整個物理層傳輸變化和通信協(xié)議很類似,最終的追求是盡量不增加傳輸信號線,不增加整個系統(tǒng)的頻率的基礎(chǔ)上,增大傳輸速率。這個過程中使用了大量通信編碼的技術(shù),這里感謝我的大學(xué)老師們,雖然上學(xué)的時候是個學(xué)渣,但是工作中還是用到了大量當(dāng)時學(xué)習(xí)的基礎(chǔ)知識。
本文其實只是簡單的介紹了下這三種協(xié)議是如何在高速狀況下進行物理信號的采樣的。沒有深入的進行協(xié)議同步部分的分析。比如如何高速切換低速,如何進行幀同步。這篇文章的目的是讓大家快速的理解。D-Phy 和C-Phy 的高速傳輸?shù)脑砗蛥^(qū)別。后面有機會我們還會從整個協(xié)議的角度來解釋D-Phy 和C-Phy 的不同,解釋下MIPI一些更多的知識。