DSI是一種高速串行接口,旨在通過將數據實時傳輸到顯示模塊而不將數據存儲在設備中來降低移動設備中顯示子系統的成本。但是,這意味著必須使用正確的時序信息發送數據。驗證MIPI-DSI最重要的方面是與視頻幀傳輸相關的時序參數。我與幾個VIP用戶一起完成了整個練習,并認為分享這將很有用,因為它將使其他人了解視頻幀傳輸所涉及的復雜性。
讓我們以888×640分辨率的RGB480視頻幀為例,了解傳輸視頻幀的相關時序細節。
圖 1:888×640 顯示屏中的 RGB480 視頻格式
在RGB888數據格式中,每個像素有3個字節(24位)的信息,每個分量(R和G和B)有1個字節(8位)。在 640×480 分辨率幀中,每行有 640 像素,幀有 480 行。讓我們看看需要與此RGB數據一起發送的時序信息。
每個視頻幀應具有以下信息(按順序):
VSYNC (同步信息)
VBP(垂直后門廊計時信息)
VACT(活動視頻數據以及水平后門廊和前門廊定時)
VFP(垂直前門廊定時信息)
VSYNC (同步信息)
VSYNC具有同步脈沖的信息。每個脈沖信息通過發送垂直同步開始或水平同步開始數據包(第一個脈沖單獨具有VSS,其余脈沖具有HSS)進行傳輸,然后是水平同步活動(只不過是一個消隱數據包),水平同步結束和BLLP(如果時間允許,可以引入低功耗狀態,這又是一個屏蔽數據包), 參見圖 2。此信息針對每個 VSA(垂直同步活動)線路發送。在簡化模式下(非突發/突發同步事件),主機只能發送同步脈沖的啟動事件(僅限VSS或HSS),外設可以在需要時從收到的同步事件中重新生成同步脈沖。每條VSA線路應在tL(線路時間)范圍內,時序參數由外設定義。
在此狀態下涉及的定時參數是tL(線路時間),tHSA(水平同步活動時間)和BLLP,這些時序參數的約束顯示在VACT部分中,因為這些參數還取決于VACT中的其他參數(HBP,HACT,HFP)。
VBP(垂直后門廊計時信息)
VBP具有垂直后廊定時的信息。VBP 線路信息通過發送垂直同步端或水平同步開始(第一行單獨具有 VSE,其余具有 HSS)數據包,然后發送水平同步活動(只不過是消隱數據包)、水平同步端和 BLLP(如果時間允許,可以引入低功耗狀態,這又是屏蔽數據包)來傳達), 參見圖 2。此信息將針對每個 VBP 行發送。每個 VBP 行都應在 tL(行時間)范圍內。
圖2:具有同步脈沖定時信息的非突發(來源:DSI 1.1規范)
此狀態期間涉及的定時參數與 VSA 中的定時參數相同,并將在 VACT 中涵蓋,因為這些參數還取決于 VACT 中的其他參數(HBP、HACT、HFP)。
VACT(活動視頻數據以及水平后門廊和前門廊定時)
VACT具有活動視頻數據以及水平后廊和水平前廊的信息。每個VACT行都有以下信息
HSYNC(水平同步信息):
這與我們在VSA或VBP中看到的Hsync信息相同。這是由HSS傳達的,其次是HAS和HSE。同步信息應在外設定義的tHSA定時參數范圍內。
HBP(水平后門廊計時信息):
這只不過是一個帶有水平后門定時信息的空白包。該信息應在外設定義的tHBP時序參數范圍內。
活動線數據(在我們的示例中為 RGB888 數據)
這是具有24位像素信息的活動視頻像素數據。每條線路作為一個長數據包發送,也可以分成多個長數據包。但是多條線路不能合并為一個長數據包,在這種情況下,我們可能無法傳達第二條線路的 HBP 和 HFP。此信息應在外設定義的 tHACT 定時參數范圍內。
HFP(水平前門廊定時信息)
這只不過是一個帶有水平前廊計時信息的空白包。該信息應在外設定義的tHFP定時參數范圍內。
每行應在tL(線路時間)定時參數范圍內。在此狀態下涉及的定時參數為tL,tHSA,tHBP,tHACT,tHFP。HSA 應在 tHSA 最小和最大范圍內。同樣,Line、HBP、HACT、HFP 應在相應的最小和最大時序參數范圍內。很難對實時進行約束,因此我們建議將時間轉換為字數和字數限制。例如,如果最小 tL 為 tL_MIN,最大 tL 為 tL_MAX則通過將其除以比特率然后除以 8(獲得字節數 = 字數)來計算字數。同樣,從其他參數的最小和最大范圍計算其字數。
bit[15:0] min_line_wc = ((tL_MIN ) / bitrate) / 8;
bit[15:0] max_line_wc = ((tL_MAX ) / bitrate) / 8;
// Note: tL_MIN and tL_MAX are in micro seconds and so make sure the units of bitrate is also in micro seconds
constraint constraint_hsa {
hsa_wc inside {[min_hsa_wc:max_hsa_wc]};
}
constraint constraint_hbp {
hbp_wc inside {[min_hbp_wc:max_hbp_wc]};
}
constraint constraint_hfp {
hfp_wc inside {[min_hfp_wc:max_hfp_wc]};
}
constraint constraint_hact {
hact_wc inside {[min_hact_wc:max_hact_wc]};
// Below constraint is required to make sure HACT has one byte of data for RGB in each pixel
(hact_wc % 3) == 0;
}
constraint constraint_line {
line_wc inside {[min_line_wc:max_line_wc]};
// LINE = HSS (4bytes short packet) + HSA + HSE (4bytes short packet) + HBP + HACT + HFP
line_wc == 4 + hsa_wc + 4 + hbp_wc + hact_wc + hfp_wc;
}
constraint constraint_bllp {
//BLLP = LINE – HSS (4bytes short packet) – HSA – HSE (4bytes short packet)
bllp_wc == line_wc – 4 – has_wc – 4;
}
線路時序約束為hsa_wc、hbp_wc、hact_wc、hfp_wc、HSS 和 HSE 的總和。HSS 和 HSE 是 2 個短數據包,因此每個數據包 4 個字節。BLLP(用于 VSA、VBP 和 VFP)的字數應減去字數統計和 2 個短數據包,HSS 和 HSE 各有字數。
VFP(垂直前門廊定時信息)
VFP具有垂直前廊計時的信息。VFP 線路信息通過發送水平同步開始數據包,然后發送水平同步活動(只不過是一個消隱數據包)、水平同步結束和 BLLP(如果時間允許,可以引入低功耗狀態,這又是一個消隱數據包)來傳達。此信息針對 VFP 時間發送。每條 VFP 線路都應在外設定義的 tL(線路時間)計時參數范圍內。
DSI1.1規范(表22,第8.11.5節)中提到的時序參數范圍(最小值和最大值)留給外設供應商的分立器件。除了本博客中解釋的非突發同步脈沖之外,還有不同的視頻幀信息發送模式,但有微小的變化,例如,在非突發同步事件中,不需要發送HSA和HSE,而只需使用HSS即可。同樣,DSI也具有突發模式,其中像素數據使用時間壓縮突發格式在更短的時間內傳輸,從而為LP狀態提供更多時間。讓我們在后續博客中看一下這些其他模式。希望此博客對那些在DSI中驗證視頻幀傳輸的人有所幫助。
審核編輯:郭婷
-
接口
+關注
關注
33文章
8596瀏覽量
151146 -
顯示屏
+關注
關注
28文章
4488瀏覽量
74294 -
DSI
+關注
關注
0文章
51瀏覽量
42352
發布評論請先 登錄
相關推薦
評論