Monitor 顯示器 軟體開發設計入門

基礎篇--輸入接口及相關通道必備知識

      寫在前面:首先申明,這篇文章是寫給那些初入顯示器軟體行業的入門者,或是對顯示器產品沒有基本知識的小白人員。如您是行業大咖或是大神,還請繞行。

     我們都知道,顯示器是日常工作和生活中的一個重要設備,在購買和使用顯示器時也或多或少提一些術語,例如:HDMI,DP,解析度,刷新率,亮度,HDR……,這些名詞是顯示器軟體開發人員繞不過的坎。

     在如何設計開發顯示器軟體之前,軟體開發者需要對硬體電路和顯示器行業的一些專有名詞有個基本了解,這樣不至於在搭建好開發環境後不知道軟體功能與硬體的實際關係而無從下手修改軟體配置(作為軟體人員,對硬體原理也應有基本了解,不至於在debug問題時與代碼死磕。原理部分請查找資料了解即可,在此不贅述)。

     本章節先介紹輸入接口及相關知識。

解析度

     這裡說的解析度是指圖像解析度和顯示解析度。分別對應顯卡的輸出和螢幕顯示畫面的像素,例如800x600,表示由水平方向800個像素和豎直方向600個像素組成的顯示區域。

     不是說解析度越高,畫質越清晰。清晰度一方面取決於解析度大小,另一方面還和屏的像素(Pixel)間距及像素尺寸大小有關。

     這裡對解析度有個初步認知即可,詳細的解析度說明及參數可參考VESA (視頻電子標準協會)timing列表,後面的章節會再敘述。

Input Source Type-VGA

 

     上圖是我們見得最多的一種信號輸入接口,稱為VGA。

     實際工作中,你可能還會發現其它有別於上面接口類型的非標接口,如12pin單排插座,4pin單排插座,這些都歸類為VGA。

     VGA是IBM於1987年提出的一個使用模擬信號的電腦顯示標準。VGA支持在640X480的解析度下同時顯示16種色彩或256種灰度,同時在320X240解析度下可以同時顯示256種顏色.。

     通過在VGA基礎上加以擴充,例如將顯存提高,使其支持更高解析度,如800x600或1920x1200,這些擴充的模式就稱為VESA Timing。VGA及其擴充Timing(如SVGA)用於傳輸模擬信號。(注意,這裡說的是傳輸模擬信號,所以經常會遇到解決noise,水波紋等干擾模擬信號傳輸有關的問題,這些問題,一方面可以通過好的硬體設計方式或是修改硬體參數解決,另一方面有時也可以通過修改軟體改善,但硬體影響更大)。

     VGA接口最高可以傳輸WQXGA(2560x1600@60Hz),因模擬信號易受干擾,更高的解析度會影響畫面品質,好在數字信號傳輸接口的誕生解決了高解析度傳輸的問題。

Input Source Type-DVI

 

     DVI(Digital Visual Interface)比VGA 晚出現十多年,它是基於TMDS 技術來傳輸數字信號的。TMDS的編碼算法是把8bit數據通過最小轉換編碼成10bit數據(包含行同步、場同步、時鐘、數據DE、糾錯等),這樣做電磁兼容性能好,成本低,傳輸路徑長,圖像質量好(再也不用擔心解決水波紋,noise干擾這類問題了)。

     在此介紹它是8B/10B編碼方式,是因為後面軟體開發過程中會計算帶寬,這點必須了解。

     DVI接口有好幾種,其中DVI-D只有數字接口,DVI-I有數字和模擬接口,就是說DVI-I既可以傳輸TMDS信號,也可以傳輸VGA信號,有興趣的可以查資料了解。DVI-I 其實就是DVI+VGA。

     DVI數字信號傳輸有單路鏈接(Single Link)和雙路鏈接(Dual Link)兩種模式,規範里定義了單鏈模式的最大時鐘頻率為165MHz,這樣雙鏈模式最大時鐘就為330MHz了。實際上就是限定了解析度(具體需要結合解析度和刷新率來計算)。目前4Kx2K60hz或5Kx3K或更高的解析度,DVI無法傳輸,並且DVI 只能傳輸圖像信號,無法傳輸音頻信號,這就導致後來HDMI接口的出現。

Input Source Type-HDMI

 

     HDMI中文簡稱高清多媒體接口。2022年有幾家國際化公司聯合組成HDMI組織,實現了高品質地傳輸未經過壓縮(注意是未壓縮的)的高清晰視頻和多聲道音頻數據。顯示器方案晶片支持的HDMI版本決定了顯示器的最大輸入解析度。目前HDMI 版本已到2.1,可輕鬆支持8K60H解析度了。

     不同於DVI,VGA,視頻和音頻分開傳輸,HDMI 不僅可以傳輸視頻信號,同時還可以傳輸音頻信號----終於省掉一根音頻線了。Source 如何決定是否要送音頻?這取決於sources讀取到的EDID是否包含Audio信息。

     這裡插一句說明下,EDID有無及正確與否非常重要,沒有或是錯誤的設定,都會造成顯示、音頻問題,很多時候還傻傻的以為是硬體問題。不僅HDMI,DVI和VGA以及後面講到的DP 都需要EDID。後續會單獨開章節講EDID。

     說到HDMI,不得不提HDCP。上面說了HDMI組織是幾家國際化公司聯合組成的。這個由軟體和硬體廠商結合弄出來的HDCP是一項應對高清的版權保護技術,這項技術主要用意並不是防止非法盜版,而是對非法複製進行干擾,降低非法複製出來的影像的質量,從而起到對內容進行保護的作(Content Protection)。要做到保護,就涉及到加密,要加密,就要用到密鑰。HDCP key 就是密鑰。

     Source 與sink 之間的HDCP 溝通過程是有標準的,source 端的key需要放在存儲單元以便溝通時讀取。所以程序會涉及到寫和讀 HDCP key。這部分在後期會講到。這裡知道HDMI 接口會涉及到HDCP key這點即可。

     每台標稱支持HDMI接口輸入(出)的設備,嚴格來說都要有一組唯一的密鑰。HDCP key需要向HDMI組織申請,但申請key必須先成為會員。key 不貴(每組大概幾美分吧),會員費(美刀至少也得1W多)比key貴。國內市場要求通常沒有這麼嚴格,所以一些小的品牌(或是白牌)產品都是重複用一個段內的key或是乾脆使用同一組key。

Input Source Type-DP


 
     相較於HDMI的收費策略,DP接口技術是免費的。DisplayPort接口不像HDMI接口那樣,需要每年支付一定量的會員費,也不必象HDMI接口那樣每個含有HDMI接口的產品都要交錢,是真正意義上的完全免版稅。因此DisplayPort接口獲得了眾多的國際知名廠商的大力支持。其實除了免費外,DP當初並未體現出其它優勢(接口尺寸沒有得更小,對標HDMI版本帶寬也沒有隔代優勢,但隨著技術的發展,後面優勢逐漸凸顯出來了)。

     與HDMI 不同的是,DP有一套協商機制(Link training),使得sink和source之間可以通過1對差分線,2對差分線或4對差分線,傳輸音視頻數據。為了應對如今Type C接口的流行趨勢,各顯示器方案供應商的方案還可以通過修改代碼自定義各對差分線的順序與極性,使得硬體layout走線更順暢。為此,作為軟體開發人員,必須了解各對差分線在代碼里如何設定才能與硬體對應起來,以免錯誤配置導致畫面不能正常顯示(反而認為是硬體問題)。

     DP1.2 或以上版本還有一個很大的優點,就是菊花鏈(MST)功能。該功能由顯示器方案晶片支持,所以有必要了解MST功能和實現原理,以利發生問題時分析問題(如帶寬不足,設定錯誤,)。它允許您從一台信號源主機傳輸獨立的視頻顯示到兩台或更多顯示器上(這種應用場景會越來越多,例如對比內容,獨立工作/娛樂…….)

     上面有提到Type C接口,其實是Type C工作在DP alter mode(如何工作在DP alter mode是另一個知識範疇,這裡不做介紹)。這種模式等同於DP輸入,只不過硬體接法上與傳統DP稍有不同,如pin assignment, AUX channel 等。

     Type C 接口的好處是可以隨意正反插,而不像VGA/DVI/HDMI/DP 都有插入方向要求),且尺寸更小。

IIC 總線接口

     IIC 接口在顯示器產品用途很廣。顯示器方案晶片既可以作為slaver,通過存在於VGA,DVI,HDMI等輸入接口的IIC 通道與source通信,也可以讓顯示器方案晶片作為master與外部EEPROM /senor等slaver 設備通訊。常見的功能有source讀取顯示器的EDID,source 發command控制顯示器以實現某些功能,顯示器通過IIC 讀senor 改變亮度等。

     這部分一般底層代碼都有write和read的函數,只要會利用IIC 函數讀寫就不難。

     IIC 通道數據有專用的軟體抓取工具,藉助抓取的數據,可以分析排查IIC 通訊過程中是主機還是從機的問題,以層別問題和給出應對措施。

AUX Channel—輔助通道

     Aux channel 用於DP 接口,主要用於source和sink之間的握手。sink與source進行通信的唯一途徑是識別熱插拔檢測(HPD)信號再通過aux channel 進行數據交換。

     因為AUX Channel是source / sink通信的關鍵部分,所以理解握手過程的核心在於記錄AUX Channel通信。

     AUX Channel作為DP接口中一條獨立的雙向傳輸輔助通道,採用交流耦合差分傳輸方式,是一條雙向半雙工傳輸通道,單一方向速率僅1Mbit/s左右,用來傳輸設定與控制指令。

     AUX主要用於source讀取EDID,source 與sink進行協商確保source正確傳輸信號,包括通道的數量,傳輸速率,進行各種顯示組態暫存器的設定,讀取顯示器狀態暫存器。

     有專門的工具抓取Aux channel信息來分析雙方的溝通信息以排查問題。因此,熟練掌握Aux channel數據錄取方法和分析是軟體開發人員必備的技能之一。

IO —輸入輸出埠

     顯示器方案晶片或多或少都有一些IO埠,對於這部分,需要確認IO pin 外部的上下拉來設定代碼里pin對應的設定。

     通常如果要設定為Open Drain 類型,output pin 外部需要上拉(上拉電阻和電壓依據硬體設計指導決定),外部沒有上拉的output pin, 一般設定為Push pull類型。

     如能熟練使用示波器量測IO,對後期問題分析會有很大幫助。

     當然,能運用debug 工具讀寫寄存器,也可以得知IO的輸入輸出狀態,只是沒有示波器量測那麼直觀。

總結:本章節簡述了軟體開發人員對顯示器輸入源的類型及相關聯的通道接口需要掌握的基本知識點,屬蜻蜓點水式提及,如有興趣,可查詢更多資料深入了解。下一章節將介紹輸出接口類型,顯示屏及其與代碼設定相關的內容。

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★博文作者未開放評論功能