MIPI C-PHY簡介

2021-02-13 SI小灶


MIPI C-PHY的工作原理

MIPI C-PHY和D-PHY都有LP(Low Power)模式和HS(High Speed)模式,其中它們的LP模式比較接近,HS模式則有比較大和差別。

D-PHY的HS模式走的是普通的差分信號,差分對分別命名為"Dp"和"Dn",使用NRZ編碼,即高電平代表"1",低電平代表"0"。

而C-PHY使用的是3線的傳輸模式,3根線分別命名為"A"、"B"和"C",它們之間兩兩差分。

3個差分對,每個差分對能有"0"和"1"兩種狀態,理論上總共有2^3共8種狀態。但是,實際上不會存在A電平比B高、B比C高,而C又比A高的情況,所以不會有"A>B; B>C; C>A: 111"這種狀態;同理也不會有"A<B; B<C; C<A: 000"這種狀態。

所以C-PHY每個波特可以表示6種狀態,這6種狀態分別記為"+x"、"-x"、"+y"、"-y"、"+z"和"-z"。

下圖為"+x"和"-x"狀態,其中V為TX端的供電電壓。在"+x"狀態下,TX端A的PMOS打開,NMOS關閉,B的PMOS關閉,NMOS打開,C的PMOS和NMOS同時打開。這時候RX端A點的電壓為3/4V,B點的電壓為1/4V,C點的電壓為1/2V。

A-B為+1/2V,狀態為"1",B-C為-1/4V,狀態為"0",C-A為-1/4V,狀態為"0"。需要注意是是,在這種狀態下,AB間電壓的絕對值比BC、CA之間要大,所以會把AB稱作"Strong 1",BC和CA稱作"Weak 0"。因為這種狀態下,C通路中沒有電流流過,A和B通路中的電流是從A流向RX端,然後從B流回TX端,所以"+x"狀態也稱作"A到B"。

"-x"狀態和"+x"狀態相反,A-B為-1/2V,狀態為"0",B-C為+1/4V,狀態為"1",C-A為+1/4V,狀態為"1"。在這種狀態下,AB間電壓的絕對值比BC、CA之間要大,所以會把AB稱作"Strong 0",BC和CA稱作"Weak 1"。因為這種狀態下,C通路中沒有電流流過,A和B通路中的電流是從B流向RX端,然後從A流回TX端,所以"-x"狀態也稱作"B到A "。

"+y"和"-y"狀態同理,不過"+y"是"B到C"的方式,對應的BC間為"Strong 1",CA和AB之間為"Weak 0"。"-y"是"C到B"的方式,對應的BC間為"Strong 0",CA和AB之間為"Weak 1"。

"+z"和"-z"狀態也是如此,不過"+z"是"C到A"的方式,對應的CA間為"Strong 1",AB和BC之間為"Weak 0"。"-z"是"A到C"的方式,對應的CA間為"Strong 0",AB和BC之間為"Weak 1"。

到這裡,不知道大家有沒有注意到,AB、BC和CA三個差分對,狀態相同的兩對是"Weak",而剩下一對則是"Strong"

和D-PHY相比,C-PHY還有個特點。像D-PHY和普通的NRZ編碼的信號,都是以當前的高低電平來表示"0"和"1",C-PHY則是跳變來表示數字狀態(這一點和USB 2.0會有點類似,USB 2.0採用的是NRZI編碼,"0"代表翻轉,"1"代表維持不變)。

MIPI C-PHY定義了5種跳變,"+x"、"-x"、"+y"、"-y"、"+z"和"-z",從當前狀態只能跳轉到不同的狀態,不能在原狀態滯留,例如,信號當前處於"+x"狀態,那麼只能往"-x"、"+y"、"-y"、"+z"和"-z"這5種狀態去變。這樣的編碼方式可以信號中存在大量的低頻成分,減少碼間幹擾;也能夠確保AB、BC和CA這3個差分對中至少有一個會發生跳變,這樣也有利於RX去找到正確的Clock。

C-PHY把6種狀態分為3個相位:"x"、"y"和"z",每個相位2種極性:「正」和「負」,如下圖所示。

下圖是C-PHY編碼表,6種狀態共有5種跳轉,對應"0"~"4"共5種狀態,信號同相位之間作極性翻轉時,為"1xx",即"4"。然後根據是否順時針、是否翻轉極性來定義"0"~"3"。

當信號傳輸N個碼元(波特)時,會有N-1種跳變,即有N-1個符號(Symbol)。當N足夠大時,Symbol Rate ≈ Baud Rate。

C-PHY每個Symbol共有5種狀態,如果連續7個Symbol的話可以表示5^7共78125種狀態。而對於二進位編碼來說,每個Symbol可以表示2種狀態,連續16個Symbol可以表示2^16共65536種狀態。

因為5^7>2^16,所以,C-PHY可以用7個Symbol去表達D-PHY16個Symbol才能表達的數據。這樣的話,等效於C-PHY每個Baud可以傳輸16/7個bit的數據,即2.28bit per Baud。

當然,C-PHY會對每7個Symbol去映射到16bit的word,如下圖所示,這裡不再詳述。

MIPI C-PHY的一致性測試

說到一致性測試,一般分為兩種,Conformance測試和Compliance測試。雖然這兩個翻譯成中文都叫一致性測試,但實際上有很大的差別。

Compliance測試對應的像USB、網口一類的標準接口,這種一般是產品預留的對外接口,它們的對端是不確定的。例如,你在設計一個電腦的USB接口的時候,不可能把市面上所有的支持USB的產品都買過來和你的設備對接測試。所以,制定這些接口標準的協會會定義一系列的測試規範,理論上需要對傳輸過程中的TX、RX和道通做嚴格的測試,沒通過測試無法上市銷售。

而Conformance測試則不同,雖然協會也會定義一系列的的測試規範,但並不是強制要求測試的。

從產品的角度來講,C-PHY屬於產品的內部走線,無論是發送端、接收端還是中間的鏈路都是已知且固定的。可以僅通過在極限條件或者加壓條件下去直接驗證是否正常工作來保障功能,測試更多的作用是佐證性能、排除風險以及定位問題,所以MIPI協會對C-PHY的要求是Conformance測試。當然,如果對於做C-PHY晶片或者支持C-PHY的模組的公司來說,測試要求會高一些。

對於MIPI C-PHY和D-PHY這種使用探頭測量的內部走線來說,由於探頭會帶來更大的噪聲和更多的反射,而且被測件也不可能很好地預留測試點,測試結果是"Fail"反而是常態。這時候需要工程師有能力去分析Fail的風險點。

這裡面需要說一下的是,MIPI D-PHY和C-PHY都有LP和HS模式,本來MIPI協會的定義是希望用LP去傳輸控制類信號,HS去傳輸圖像數據。但是,在實際的產品設計中,廠商一般不希望競爭對手知道自己的控制信號到底是什麼,而LP信號非常容易被"破譯",所以基本上手機廠商都會把控制信號"隱藏"在HS信號之中。傳輸過程中基本上找不到LP信號,而且LP信號速率比較低,風險也比較小,所以筆者不去講LP的一致性測試。

根據筆者個人對MIPI C-PHY的理解,筆者把C-PHY的HS測試分成7部分(視頻中漏了上升/下降時間,共模電平沒有細講):

LP到HS的時序

HS到LP的時序

單端和差分電平

共模電平

上升/下降時間

時鐘

眼圖

LP到HS的時序如下圖所示,因為LP接收端是高阻、HS接收端是單端50Ω,所以在LP向HS跳變的過程中RX會經歷阻抗切換,如果在切換過程中傳輸有效數據,可能會導致數據丟失。

在這個過程中,LP TX會把ABC同時拉高,變成"111"狀態,然後切換到"001",當RX收到"111"→"001"跳變時,開始將LP切換到HS模式,高阻切換到50Ω,這時候LP TX發送"000",隨後TX切換到HS模式。到HS模式之後,TX會連續發送多個周期的Symbol "3",然後發送"3444443",之後開始傳輸有效數據。

有些設備在發最後7個周期的"3"之前,會發送14個周期長度的Programmable Sequence,有些設備沒有。

RX阻抗切換必須在TX發送Programming Sequence之前完成,否則會導致數據錯誤。

HS到LP的時序如下圖所示,發送完有效數據之後,TX會發送連續的Symbol "4",RX收到連續7個"4"之後,會切換到LP模式,50Ω切換到高阻。

MIPI C-PHY的瞬時時鐘是按照下圖所示的方式是計算的,C-PHY的編碼方式保障了它的信號每個UI至少有一個差分對有翻轉。差分信號的第一個過零點為時鐘的邊沿,每兩個邊沿可以確定C-PHY的瞬時時鐘周期,即UI Instantaneous。

得到C-PHY的瞬時時鐘之後,以右端對齊的方式分別繪製差分和單端眼圖,在右數20% UI處分別計算出差分和單端的電平值。

下圖為差分眼圖,在從右往左20% UI處計算得到"Strong 1"、"Weak 1"、"Weak 0"和"Weak 1"的電平值。

在"±x"、"±y"和"±z"這6種不同的狀態"Strong 1"和"Strong 0"下得到差分電壓絕對值的最大和最小值,兩者之差為ΔVod

下圖為單端眼圖,在從右往左20% UI處計算得到單端信號的高電平,記為VOHHS。

上升時間是對128個以上的從"Strong 0"到"Weak 1"跳變的信號波形作平均,計算平均後波形在±58mV之間的時長,如下圖所示。

下降時間是對128個以上的從"Weak 1"到"Strong 0"跳變的信號波形作平均,計算平均後波形在±58mV之間的時長,如下圖所示。

共模電平在計算過程中,會對所有±x"、"±y"和"±z"這6種狀態下的A、B、C的信號50%處電壓求平均,得到Vcptx,然後計算共模電壓的範圍。

下圖是正極性時的共模電壓範圍。

下圖是負極性時的共模電壓範圍。

然後需要分別計算對Vcptx進行50MHz~450MHz帶通濾波以及450MHz高通濾波之後的變化範圍。

MIPI C-PHY的眼圖測試如下圖所示,得到瞬間時鐘UIinst之後,以右對齊的方式觸發得到眼圖。和我們平時看到的眼圖不一樣,我們平時看到的眼圖模板都是居中對齊的,而C-PHY是右對齊的。

另外,雖然C-PHY有"Strong 1"、"Weak 1"、"Weak 0"和"Strong 0"之分,眼圖也看上去有點像PAM4的眼圖,但是PAM4是真真正正的有4個電平,而C-PHY只有兩個電平,C-PHY只要能夠分清楚"0"和"1"就夠了,並不在意是否能夠在眼圖上區分"Strong"和"Weak"。所以C-PHY只有一個模板。

以上就是MIPI C-PHY的相關介紹,更多精彩內容,敬請掃描下方二維碼關注我的公眾號 SI小灶

MIPI C-PHY Specification V1.0

MIPI D-PHY Specification V1.0

MIPI C-PHY Conformance Test Suite V1.0

———————————————

相關焦點

  • mipi傳輸協議常見故障排查及解決
    那麼問題來了:這麼高像素的IC,要達到30幀/S,這傳輸速率要多給力啊,所以,mipi傳輸協議打敗了串口,並口的傳輸方式,成為現在的新寵。  下面就介紹一下mipi協議及一些常規故障排除。不要問我為什麼懂,畢竟COMS晶片FAE的工作不是白做的,現在呆過的第一家公司已經上市了,祝福啊。對於在上市前夕離開開公司的事情,我真是一點不後悔啊。
  • MIPI系列之「C-PHY」
  • 接口mipi和lvds的區別
    打開APP 接口mipi和lvds的區別 發表於 2017-11-13 10:03:53   MIPI (Mobile Industry
  • SAM4E單片機之旅——22、GMAC和PHY的介紹與初始化
    之後就可以對其進行初始化了:  if (ethernet_phy_init(GMAC, BOARD_GMAC_PHY_ADDR,sysclk_get_cpu_hz())  != GMAC_OK) {  puts("PHY Initialize ERROR!
  • 【乾貨分享】MIPI D-PHY的靜噪措施
  • 力科發布MIPI M-PHY完整測試方案
  • 串行通信層MIPI D『PHY RX詳細解讀
  • 吉布斯現象的簡介
    作者:phy東西APC編輯部科普組
  • 釹鐵硼工藝流程簡介
    1、原料準備及預處理: 工藝簡介:對原材料進行稱重、破碎、斷料和除鏽等預處理。 工藝設備:鋼筋切斷機、滾筒拋光機等 2、熔煉: 工藝簡介:將經過預處理後的原材料鐠釹、純鐵、硼鐵等按照比例配料,加入真空熔煉爐中,在氬氣保護下高溫熔煉後進行甩帶。使得產品成分均勻,結晶取向度高,組織一致性好,並且避免ɑ-Fe的生成。
  • D-PHY MIPI雙相機/雙顯示屏應用中的模擬開關
  • 第一章 向量簡介
    第一章 向量簡介向量是整個線性代數裡面最基本的概念,非常重要
  • 對於MIPI系列之「D-PHY」的性能分析和介紹以及應用
  • RIP技術簡介
    RIP技術簡介RIP 技術(RNA Binding Protein Immunoprecipitation Assay,RNA 結合蛋白免疫沉澱)主要是運用針對目標蛋白的抗體把相應的RNA-蛋白複合物沉澱下來,經過分離純化就可以對結合在複合物上的RNA 進行q-PCR驗證或者測序分析
  • mipi是什麼接口_mipi接口定義詳解
    MIPI接口簡介   MIPI(移動行業處理器接口)是MobileIndustryProcessorInterface的縮寫。MIPI(移動行業處理器接口)是MIPI聯盟發起的為移動應用處理器制定的開放標準。   MIPI是專門在高速(數據傳輸)模式下採用低振幅信號擺幅,針對功率敏感型應用而量身定做的。
  • 光學渦旋簡介
    2.渦旋光束簡介圖1.渦旋光束示意圖如圖1(a)所示,光纖渦旋是一種具有螺旋相位波前,帶有軌道角動量(OAM),能夠攜帶不同拓撲電荷數的光束;它的模場呈環形分布,如圖1(b)所示;圖1(c)表示的是拓撲電荷為1時的相位分布圖,可以看出,在一個周期內,它的相位從0變化到2π,以此類推,當拓撲電荷數為n時,在(a)(b)(c)1一個周期內,它的相位從0變化到2nπ。
  • AHP層次分析法的簡介及實現
    R包easyAHP是根據BPMSG項目編寫的,下面以easyAHP為例簡介AHP在R語言中的實現。為了方便大家理解,案例採用R包自帶的例子。#加載R包library(easyAHP)#創建評分數據框data=data.frame(maker1=c(6,8,1,3),maker2=c(6,8,2,3))row.names(data)=c("item1","item2","item3","item4")#進行AHP估計rst=easyAHP(data