解析MIPI C-PHY(一)
DPHY是源同步系統(tǒng)(有同步時鐘通道clock lane),為了提高帶寬,CPHY沒有同步時鐘clock lane,時鐘是嵌入到數(shù)據(jù)中的,當(dāng)然也涉及到數(shù)據(jù)編解碼。DPHY是1個時鐘lane,1/2/4對數(shù)據(jù)lane,接收端根據(jù)時鐘邊沿采樣數(shù)據(jù),比如尋找0xb8的同步頭。而MIPI CPHY不帶時鐘lane,必先恢復(fù)時鐘,然后用恢復(fù)時鐘采樣數(shù)據(jù)(尋找0xb8的同步頭),然后進行數(shù)據(jù)解碼。
CPHY的symbol
相比DPHY,CPHY沒有時鐘線;CPHY三線為一lane,三線彼此差分,CPHY最多3lane(即9線)比D-PHY要少一根線。每一根線有三種電平:3/4V,2/4V 和 1/4V,這三個線的電平彼此不同,因此可以有6種排列組合,記為:+x, -x, +y, -y, +z, -z。
請思考一下,為什么沒有000、111這兩種狀態(tài)?后面解答。
我們對這三個線的電壓,兩兩做差,就可得到下面的眼圖。三根線的電壓差所形成的形狀如同“眼睛”,稱之為眼圖。每一個Wire status狀態(tài)切換是一個symbol,每一個symbol代表了3bit 數(shù)據(jù),注意,是Wire status的切換才是數(shù)據(jù),而非Wire status本身代表數(shù)據(jù),讀者可以思考下為什么。
C-PHY如何表示傳輸數(shù)據(jù)
C-PHY是如何表達并傳輸數(shù)據(jù)的?就是靠6個狀態(tài)的切換表示數(shù)據(jù)的,注意,是Wire status的切換才是數(shù)據(jù),而非Wire status本身代表數(shù)據(jù),如下圖:每一次的狀態(tài)切換,代表了3bit的數(shù)據(jù)。
Wire status切換歸總為表格:
假設(shè)當(dāng)前狀態(tài)是+x. 即:
假設(shè)要傳輸?shù)臄?shù)據(jù)000 010 011那么狀態(tài)的變化是:+x => +z => +x => -y
檢測symbol狀態(tài)變化的電路如下圖:
CPHY的數(shù)據(jù)編碼
對于D-PHY而言,以Byte為單位進行數(shù)據(jù)傳輸。一個UI是1 bit。
對于C-PHY而言,以16bit為單位進行數(shù)據(jù)傳輸,一個UI 是16/7 bit。
也就是說,CPHY是16 bit 的有效數(shù)據(jù)要分配成7 個symbols,每個symbols 3bit共計21bit,那么16bit怎么編碼成21bit呢?如下圖:
詳細圖如下:
Flip[6:0]的編碼邏輯如下:
CPHY的帶寬
對于D-PHY而言,以Byte為單位進行數(shù)據(jù)傳輸。一個UI是1 bit。
對于C-PHY而言,以16bit為單位進行數(shù)據(jù)傳輸,一個UI 是16/7 bit。
16/7 是怎么計算的?見下圖:16bit數(shù)據(jù)映射成21bit,也就是7個symbol,每個symbol有3個bit。
為什么16bit有效數(shù)據(jù)要分配成7個symbols?
16bit數(shù)據(jù),有2^16=65536個值,7個symbol(1個symbol代表5種狀態(tài))有5^7=78125個值。所以并不是所有symbol狀態(tài)都被用完。
若分配為6個symbol,5^6=15625,小于2^16,無法完備表達16bit數(shù)據(jù)的值。
CPHY的1個lane最大帶寬是2.5G symbols/s,即每一lane 最大傳輸速率是 2.5G UI/s,每一個UI是16/7=2.28bit,CPHY最多有3個lane。因此CPHY最大帶寬為2.5G*16/7bit * 3 = 17.14G bit/s。在同樣是2.5G的速率下,C-PHY可以達到17.1G,而D-PHY只有10G。
CPHY通信時序
上圖與下圖區(qū)別就是:Programmable Sequence
Escape Mode
非常經(jīng)典的設(shè)計思路,A、C異或得到時鐘,時鐘上升沿采集A得到命令,Escape Mode可以發(fā)送命令、發(fā)送數(shù)據(jù)(低功耗)。
我們來看,Escape Mode包含了哪些命令:
Trigger-Reset Command in Escape Mode
Low-Power Data Transmission