MIPI DSI 接口協議介紹

由於最近要用到MIPI DSI接口,所以學習了下MIPI Alliance Specification for DSI 協議文檔,將其歸納總結下
MIPI官網鏈接:https://mipi.org/specifications/dsi-2 裏面有所有的DSI,CSI,D-PHY等協議
MIPI(移動行業處理器接口)是Mobile Industry Processor Interface的縮寫。MIPI(移動行業處理器接口)是MIPI聯盟發起的爲移動應用處理器制定的開放標準,常用到的是DSI(顯示接口)和CSI(攝像接口)。主要是用於手機行業,比如現在常用的手機處理器與攝像頭的連接,與顯示屏的連接都是用的mipi接口。mipi接口是以差分對形式進行時鐘和數據的傳輸。一般有1對時鐘差分對,再加1-4對數據差分對。連接方式如下圖所示:
這裏寫圖片描述

1 DSI Layer Definition
下圖是DSI接口的層級定義圖
這裏寫圖片描述
從圖上可以看出有4個層級
(1) PHY Layer:物理層,用來指定傳輸媒介,輸入輸出電路以及根據時鐘在數據線上捕獲數據。
(2)Lane Management:lane管理層,lane是指一對差分對,由於數據線可以有1-4lane,所以在發送端就需要把上層打包好的數據按順序依次發送到不同的 lane上。而在接收端需要從不同的lane上依次接收數據並把其按順序拼接起來。後面 “4 Multi-Lane Distribution and Merging“部分會詳細講述。

(3)Protocol Layer :在低層協議low level中,發送時,DSI協議指定數據組包方式,定義包頭等相關內容,以及生成ECC,校驗碼等內容,形成一個完整的數據包。接收時,按數據包格式解析出裏面的有效數據,去除包頭等內容。
(4)Application Layer:應用層,描述了在高層協議中對數據流裏的數據進行編碼和解碼的方式。其格式和內容主要是根據後面連接的顯示子系統類型來決定的,它可以由規定格式的像素組成,也或者是顯示控制器發送的控制指令。
2 Command和Video模式
兼容DSI接口的外圍設備至少支持兩種基本操作模式:Command模式 和 video模式中的一種。至於實際使用哪種模式是根據外圍設備的結構和性能來決定的。
通常,外圍設備兼容Command模式或Video模式,一些支持Video模式顯示的模塊,也包含了一個簡單的Command模式,這樣就可以用低分辨率圖像來刷新屏幕或屏幕部分顯示,以及關閉MIPI接口等操作。
2.1 Command模式:
主控制器和外圍顯示設備交換數據主要是通過發送命令和數據到外圍設備的顯示模塊,該模塊包含一個顯示控制器,顯示控制器包含本地寄存器和幀存儲器,系統通過Command模式來讀寫本地寄存器和幀存儲器。這樣主控制器通過發送命令,參數和數據到顯示控制器從而間接的來控制外圍設備的顯示。同時主控制器也可以讀取顯示模塊的狀態信息以及幀存儲器的內容。所以,Command模式下,需要一個雙向的數據接口。
2.2 Video 模式
主控制器到外圍設備的數據傳輸是以實時像素流的方式進行的。在正常操作模式下,主控制器必須以足夠的帶寬發送圖像數據給顯示模塊,否則會出現閃屏,花屏等不良現象。video信息只能以高速模式進行發送。
在支持Video 模式的一些設備結構中,有的有一個簡單的時序控制器和部分幀緩存器。有了這兩個模塊就可以使顯示設備能維持部分屏幕顯示或在待機時顯示低分辨率圖像以及處於Low Power Mode (低功耗模式)。這樣就可以關閉MIPI接口以節約能耗。
爲了降低成本以及接口複雜度,系統只在Video 模式使用時,數據接口或許會被做成單向接口。

2.3 Virtual Channel Capability 虛擬通道特性
用來使一個主控制器可以同時連接多個物理顯示模塊。

3 DSI Physical Layer DSI 物理層
該部分主要介紹DSI物理層發送數據的包格式,主控制器和外圍設備間的數據交換是用一個或多個串行數據信號和一個隨路時鐘進行傳輸。通過總線發送高速串行數據的方式叫 HS transmission 或burst。
當數據lane沒有收發數據時,接口進入Low Power State(LPS)狀態。下圖是 HS transmission 的基本數據結構,N代表發送的數據的總的字節數。每幀起始都有一個SoT 表示開始傳輸,接着是N個字節的數據,數據發完後,接着發送EoT表示結束髮送
這裏寫圖片描述

3.1 數據lane方向
DSI的物理鏈路層由1-4個數據lane和1個時鐘lane組成,在Command模式 的系統中,數據lane0 是雙向的,其它的數據lane是單向的;在Video 模式的系統中,數據lane0 既可以是雙向的也可是是單向的,其它的數據lane是單向的。不管是Command模式 還是Video 模式,時鐘lane都是由主控制器驅動的,不能由外圍設備驅動。
正向(由主控制器到外圍設備)Low Power 數據傳輸只用lane0,反相在數據lane0上的傳輸只能在Low Power 模式。外圍設備必須能在Low Power和high speed下接收數據
3.2 Command Mode Interfaces
主控制器在Command Mode,物理層最低要求是:
Data lane module:CIL-MFAA(HS-TX,LP-TX,LP-RX,and LP-CD)
Clock lane moduel:CIL-MCNN(HS-TX,LP-TX)
外圍主控制器在Command Mode,物理層最低要求是:
Data lane module:CIL-SFAA(HS-RX,LP-RX,LP-TX,and LP-CD)
Clock lane moduel:CIL-SCNN(HS-RX,LP-RX)
3.3 Video Mode Interfaces
主控制器在Video Mode,物理層最低要求是:
Data lane module:CIL-MFAN(HS-TX,LP-TX)
Clock lane moduel:CIL-MCNN(HS-TX,LP-TX)
外圍主控制器在Video Mode,物理層最低要求是:
Data lane module:CIL-SFAN(HS-RX,LP-RX)
Clock lane moduel:CIL-SCNN(HS-RX,LP-RX)
3.4 時鐘管理
DSI的時鐘是由主控制器產生併發送到外圍設備的,在某些系統中,它可以有多個用處:
(1) DSI Bit Clock:在數據接收側,PHY Layer用該時鐘來作爲捕獲串行數據的源同步時鐘。在傳輸數據的時候,該時鐘有效。
(2) Byte Clock:字節時鐘,由DSI Bit Clock分頻得到,用作協議層和應用層間數據交換時的字節時鐘。在HS transmission,每個字節的數據都伴隨有一個字節時鐘。
(2) Application Clock:應用層時鐘,同樣由DSI Bit Clock分頻得到,可以用來作爲外圍設備某些模塊的時鐘。
4 Multi-Lane Distribution and Merging N條數據lane時,數據的分發與合併
爲了傳輸不同帶寬數據,所以數據lane有1-4lane,這樣當有多條數據lane時,就涉及到把上層low level protocol中打包好的數據 怎麼分發到多條lane進行傳輸了,而DSI層級中的Lane Management就是做這個數據分發到不同lane的工作的。在發送端,數據通過該模塊分發到各lane的操作如下圖所示,
這裏寫圖片描述

在接收端,該層從各個lane接收數據,並拼裝成一個完整的數據包併發送上一層級
這裏寫圖片描述
lane distributor從上層發來的任意字節長度的HS transmission中取出N個字節填充到N個lane的發送模塊中,通過N lanes並行地發送這N個字節。在發送數據前,所有的lanes 都需要同時並行地發送一個SoT信號給它們對應的接收單元,表示這時開始發送數據包的第一個字節,在發送了SoT後,lanes開始並行發送N個字節的數據組,例如,在一個2個lane的系統中,數據包的Byte0 在lane0 發送,Byte1在lane1發送,Byte2在lane0發送,Byte在lane1發送。按這種方式依次發送。
4.1 Sot and EoT in Multi-Lanes
由於HS transmission的長度是任意多個字節,這樣就有可能長度不是lane 條數的整數倍,有一些lane就會比其它的lane先發送完數據,因此在Lane Management Layer 它會將數據填充到長度爲lane的整數倍長度,同時把發送它的lane的“valid data”信號拉低,表示此時發送的數據是無效的。(比如HS transmission長度是178字節,而lane條數是3,這樣Lane Management Layer 就會填充2個字節長度的數據,使得長度是lane條數的整數倍)

儘管所有的lane都是在同時發送SoT後並行發送數據的,由於每條lane都是獨立地發送數據,這樣就有可能有些lane會比其它lane先發送完數據,早一個週期發送EoT。下圖是在不同HS transmission長度,3lane時各個lane發送數據的方式
這裏寫圖片描述
5 DSI Protocol Layer
在DSI接口的發送端,並行圖像數據都是在Protocol Layer被轉換成數據包形式的。同時,會添加上包協議信息,包頭。然後通過Lane Management Layer 層把它發送到PHY Layer。然後PHY Layer把數據串行化,通過lane發送到外圍設備。外圍設備採樣跟發送端相反的方式把數據解析出來。
如果用多條lane傳輸數據,Lane Management Layer 會把數據包分發到多個PHY Layers,一個PHY Layer對應一條數據lane。圖像數據打包的協議和格式跟使用幾條lane傳輸是沒有關係的。lane只是一個物理傳輸介質而已。
5.1 Multiple Packets per Transmission
最簡單的傳輸模式是 一個Transmission 只包含一個數據包,但當有多個數據包要發送時,還是一個Transmission 發送一個包,這樣發送時,在LPS和HS 模式頻繁地切換會嚴重地限制發送帶寬。DSI Protocol 允許把多個數據包連接起來放在一個Transmission中發送,這樣就會顯著地提升有限帶寬。
PHY Layer有HS和LP兩種數據傳輸模式,在一個HS Transmission開始前,PHY Layer先發送一個SoT序列到接收端,之後,數據或命令包才能在HS mode下傳輸。在一個Transmission 發送中有可能有多個數據包,這時,在結束傳輸時,PHY Layer發送一個專用的EoT結束信號,表示傳輸結束。

爲了增強整個系統的健壯性,DSI在Protocol Layer中定義了一個專用的EoT包(EoTp),用來表示一個Transmission的結束。爲了兼容早起的DSI系統,產生和解釋EoTp的功能可以使能和不使能。下圖是EoTp不使能的情況,上半部分是3個數據包被分開發送的情況,下半部分是3個數據包在一個Transmission發送的情況。
這裏寫圖片描述

下圖是EoTp使能的情況,上半部分是3個數據包被分開發送的情況,下半部分是3個數據包在一個Transmission發送的情況。紅色圈出來的就是EoTp包。
這裏寫圖片描述

5.2 Packet Composition
數據包分爲短數據包和長數據包兩種類型
短數據包:長度爲4個字節,主要用於傳輸命令、讀寫寄存器,結構如下圖所示。
DI:數據標識符,1個字節,[B7:B6]表示虛擬通道(0-3),由於一個主控制器可以外接多個外圍設備(最多4個),所以用虛擬通道來表示外接的不同的外圍設備。
[B5:B0]表示數據類型。用來表示是長包還是短包,以及包格式,如下圖所示,
這裏寫圖片描述
Data0,Data1:2個字節,表示要傳輸的數據
ECC:1個字節,誤差校正碼
這裏寫圖片描述

長數據包:有效負載長度爲0-65535個字節,主要用用於傳輸大量圖象數據或部分控制命令,結構如下圖所示。
DI:數據標識符,1個字節,[7:6]表示虛擬通道對應數據lane編號(0-3),[5:0]表示數據類型。
WC:word count ,2個字節,包中有效負載長度,由於位寬是16位,所以,最大可以表示65535個字節長度,接收方就是通過該數據長度進行計數,判斷一個包是否接收完成。
ECC:1個字節,誤差校正碼
Data0,1…..: 有效負載
CHECKSUM:2個字節,校驗碼
所以幀長度爲4+(0-65535)+2=6-65541字節
這裏寫圖片描述
下面是給出的6位寬的data type含義,用來表示該包傳輸的數據類型或命令等,比如data type=0x01,發送該類型的包,就表示場同步信號開始標誌。
這裏寫圖片描述
這裏寫圖片描述
下面是一個data type=0x0E的長數據包格式,0x0E表示該包的有效負載是16位的RGB(5-6-5)格式像素流。其它的數據類型具體含義可以查看MIPI DSI 協議。
這裏寫圖片描述
5.3 Transmission Packet Sequence
在video mode 傳輸數據時,DSI支持下面三種類型的包格式或包順序傳輸:
(1)Non-Burst Mode with Sync Pulses:使外圍設備能夠重夠原始的圖像時序,包括同步脈衝寬度。
(2)Non-Burst Mode with Sync Events:跟上面的類似, 這裏只是用 Sync Events來替換了Sync Pulses。
(3)Burst Mode:通過時間壓縮方式,能在較短的時間內傳輸RGB pixel包,這樣可以爲傳輸其它數據留出更多的時間。

總結:
MIPI的傳輸模式,主要是針對其D-PHY物理層來區分,分爲:
低功耗模式(Lower Power),在該模式下,正向傳輸數據只能用lane0 ,反向傳輸同樣也只能用lane0,傳輸速率10Mhz
高速模式(high speed),傳輸速率80M-1Gbps/lane

D-PHY的操作模式:
escape mode ,high speed mode ,control mode.

Command mode:該操作模式下,既可以是High speed,也可以是LP的傳輸模式,數據lane0 是雙向的,其它的數據lane是單向的
Video mode:該操作模式下,必須使用High speed的傳輸模式,數據lane0 既可以是雙向的也可是是單向的,其它的數據lane是單向的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章