張賽男, 陳梅金
(1. 福建技術師范學院電子與信息工程學院,2. 福建捷聯(lián)電子有限公司, 福建福清 350300)
顯示器畫面幀速是衡量畫面是否流暢的一個重要標準. 當顯卡輸出的刷新率高于顯示器所能支持的刷新率時, 就會出現(xiàn)屏幕撕裂現(xiàn)象. 這是因為顯示器是以固定的頻率進行刷新,屏幕畫面會穩(wěn)定地每分鐘刷新60 次, 而顯卡在渲染不同的畫面時, 其渲染速度是不同的. 顯卡輸出的畫面是動態(tài)的、靜態(tài)的、激烈的場景時, 其畫面幀頻率變化十分明顯. 顯卡無法按照一個固定頻率來輸出顯示畫面. 在這樣的情況下, 顯示器和顯卡的刷新率就會出現(xiàn)不同步的情況[1].
雖然顯卡廠商采用垂直同步技術鎖定顯卡的輸出, 解決撕裂的問題, 但會增加輸入延遲. 自適應垂直同步是垂直同步的一個變種,其效果勝過傳統(tǒng)的垂直同步, 但顯示器刷新率成為畫面流暢度的瓶頸[2]. 當顯卡性能不夠強勁時便會出現(xiàn)卡頓的問題, 于是需要動態(tài)調節(jié)顯示器刷新率的技術.
推出顯示刷新率同步新技術的兩家顯卡廠商, 一個是美國超微半導體(AMD) 公司推出的FreeSync 技術;另一個是英偉達(NVIDIA) 公司推出的G-Sync 技術.NVIDIA 公司既開發(fā)PC端信號源的顯卡, 又同時開發(fā)顯示器端的顯示模組, 并且G-Sync 技術是非開放性的[3],顯示器采用G-Sync 技術成本相對比較高.AMD 公司所推出的FreeSync 技術為開源的, 只開發(fā)和生產顯卡端的信源部分, 顯示器端則由對應顯示器生產商去拓展開發(fā). 這樣對顯示器的設計提供了控制自如的便利, 并且不需要購買相關顯示模組, 很大程度上節(jié)約了開發(fā)成本.G-Sync支持30-144 Hz 刷新率, 相對穩(wěn)定. 而FreeSync包括36-240 Hz、21-144 Hz、17-120 Hz、9-60 Hz等多種頻道的刷新率更靈活. 當前我國對同步刷新率顯示器有著廣闊的應用前景, 雖然兩家顯卡商家都各有優(yōu)缺點, 為了提高市場競爭力,課題組選擇了成本較低的FreeSync 技術進行研究設計.
首先從EDID 控制單元著手完成顯示器與信源端即顯卡端的通信溝通, 完成雙方通信協(xié)議,并從信源送出FreeSync 信號給信宿顯示器顯示;其次從顯示器接收到信號后進行解碼并顯示;最后進行整體調試和測試, 以確保實際設計技術功能的實用性.
設計硬件系統(tǒng)包含電源控制、主板控制和顯示屏控制三大部分, 如圖1 所示. 主板硬件電路部分包括負責圖像處理的主IC 模塊、存放軟件的SPI Flash 模塊和存放系統(tǒng)數(shù)據的EEPROM 模塊, 以及外圍音頻處理模塊和按鍵板處理模塊.
圖1 系統(tǒng)模塊圖
圖像處理芯片選擇了MST9U26Q2, 它嵌入了32 位微控制處理器MCU. 輸入信號最高可以支持到UHD 分辨率, 輸出格式支持eDP 和V-By-One. 它可支持512 種色盤和2 bit/4 bit/8 bit 多種顏色的字體的OSD 處理設計.MST9U26Q2 內部有RGB 模擬信號輸入模塊、兩個HDMI2.0 和一個DP1.2 輸入接口模塊;處理模塊包括音頻輸出、MCU 微控制器、內部圖形圖像和OSD;還有電源控制管理模塊、信號輸出到Panel 模塊.
SPI Flash 設計選用型號為MX25L1606EM2I-12G, 它是一種全雙工串行通信方式總線接口,可支持高速率通信.SPI Flash 主要用于存儲軟件主程序, 再由 Scaler 圖像處理器芯片對其程序進行讀寫. 由于本系統(tǒng)軟件數(shù)據比較大, 所以選擇 16M bit 容量的SPI Flash. 它分成 516 個分區(qū), 分區(qū)通常也叫做 Flash 的扇區(qū),即 Sector, 每個分區(qū)(Sector)4KB. 整個 Flash 同時又分成 32 個區(qū)塊, 區(qū)塊通常也叫做 Block, 每個區(qū)塊 64KB 即由 16 個分區(qū)組成.
EEPROM 設計選用M24256-BRMN6TP 作為主系統(tǒng)的數(shù)據存儲. 它在系統(tǒng)中主要用來存儲用戶調整數(shù)據和PQ 數(shù)據, 所以選擇256K bit 相應足夠存儲空間大小的EEPROM, 它與Scaler 的通信方式是I2C 總線.
音頻處理模塊主要負責音頻信號的控制、放大處理, 含有輸出到功放喇叭的接口. 按鍵板處理模塊主要負責對顯示器的人機交互操作, 以及OSD 菜單界面顯示操作.
FreeSync 功能顯示器系統(tǒng)是基于Linux 底層操作系統(tǒng)開發(fā)設計的. 根據FreeSync 功能系統(tǒng)按照模塊化分塊設計, 并且由軟件互相關聯(lián)控制組成.
設計系統(tǒng)軟件架構體系如圖2 所示. 軟件架構層級是抽象的組件組成的, 各個組件層級之間明確細致地描述組件的溝通與聯(lián)系. 通過配置相關Linux 操作系統(tǒng)并運行系統(tǒng), 硬件驅動程序搭建好應用接口與應用服務層之間的溝通鏈接通信, 再由人機交互友好界面(OSD)進行人機交互應用.
圖2 軟件架構體系圖
系統(tǒng)運行流程分為如下步驟完成.
(1) 當系統(tǒng)上電后先是復位主IC Scaler;
(2) 初始化系統(tǒng)和各驅動設備;
(3) 確認當前FreeSync 功能是否為開;
(4) 進入主循環(huán)程序控制時間處理、命令通信處理、電源模式管理、信號偵測處理、OSD 控制等應用層面處理.
FreeSync 技術通常也叫做DRR (Dynamic Refresh Rate) 技術, 即動態(tài)刷新率的簡稱①. 顯示器FreeSync 技術, 能夠根據視頻或游戲的信號源刷新頻率來動態(tài)適應更新顯示器端的顯示刷新率, 使得視頻看起來更加平滑, 不會給用戶感覺有卡頓或畫面撕裂的情況.
FreeSync 基本原理是通過調整信號的垂直消隱(Vertical Blanking) 來改變垂直刷新率(Vertical Frequency), 從而達到信號刷新率的實時同步變換②. 在顯示信號中, 當信號點頻固定,并且保持實際顯示的Active 信號不變的條件下, 垂直信號頻率的變化可以由垂直Blanking信號來調節(jié). 因為垂直信號的總點數(shù)是由實際顯示的Active 數(shù)據和實際看不到的Blanking數(shù)據組成的. 所以當信號源送出的是FreeSync數(shù)據參數(shù)時, 設計系統(tǒng)端即顯示器端會根據設計好的EDID 告知信號源. 本系統(tǒng)是支持FreeSync 的, 并且通知信源可支持的刷新率范圍. 當這些基本信息被確立后, 系統(tǒng)和信號源就可以有效實時控制當前視頻的刷新率, 達到信號源和顯示器系統(tǒng)同步顯示的目的. 如圖3所示為正常刷新率與變慢刷新率的比對圖, 由Blanking 調節(jié)刷新率.
圖3 正常刷新率( 左) 與變慢刷新率( 右) 對比圖
相比舊的非同步刷新率技術, 比如有VSYNC 技術和 MEMC 技術等無法使得信號源與顯示端信號同步的技術, 所以通常是使用插補幀方式解決畫面卡頓等問題, 但實際上是沒有同步的. 列舉一個支持最大刷新率是144 Hz 的例子,它所用的時間是1/144(s), 即6.94 ms. 現(xiàn)在有一個場景突然變換成需要10 ms 的幀, 顯示后再刷新到下一個場景幀顯示, 很顯然固定補償幀的方式在顯示6.94 ms 之后由于時間不夠10 ms的場景顯示, 則需要進行幀補償, 但是還是不平滑顯示畫面;而動態(tài)同步刷新率就能很好地適應變換場景并同步刷新顯示, 會平滑過度刷新畫面. 如圖4 所示描述了這兩種情況.
圖4 FreeSync 和幀補償刷新率對比圖
本設計是通過EDID 的關鍵Byte 來控制FreeSync 信號的開關動作. 軟件流程上將控制Byte 設計成OSD 的切換方式來實現(xiàn)用戶人機交互控制.
HDMI EDID, 目前比較流行的有兩個版本,分別是HDMI 1.4 版本和HDMI 2.0 版本, 它們對應的EDID 也是由這兩個版本區(qū)分的. 本設計是HDMI 2.0 版本的顯示接口, 它的EDID 為256 B, 如圖5 所示為本設計系統(tǒng)的HDMI EDID文本格式.HDMI EDID 與掃描頻率即刷新率相關的字節(jié)說明如表1 所示.
圖5 HDMI EDID 文本格式
圖6 OSD 打開FreeSync 功能流程
OSD 開關控制流程如圖6, 用戶通過按鍵打開OSD FreeSync, 軟件上會重新更新一次帶有FreeSync Byte 的EDID, 并通過HPD 通知顯卡重新發(fā)送FreeSync 信號. 如果是OSD 設置成FreeSync 關, 則軟件上會重新更新一次非FreeSync 功能的EDID, 同樣通過HPD 控制通知顯卡, 本顯示器不帶有FreeSync 功能, 顯卡則發(fā)送非FreeSync 功能的信號給顯示器顯示.
顯示系統(tǒng)在運行時, 在FreeSync 功能沒有打開的情況下, 系統(tǒng)只會將送來的信號固定成一個頻率送出顯示, 顯示器通常以固定頻率60 Hz 輸出. 當FreeSync 功能打開后, 系統(tǒng)則根據信號源不斷更新的刷新率而實時更新同步信號輸出.
系統(tǒng)在信號偵測FreeSync 過程, 首先是輸入FreeSync 信號到顯示器的HDMI 接口, 顯示器判斷信號穩(wěn)定后并實時偵測FreeSync 信號的變換刷新率, 最后根據信源送來的實時更新的信號輸出到Panel 顯示. 如果顯示器沒有打開FreeSync 功能則會按其它正常偵測方式運行顯示信號. 流程如圖7 所示.
表 1 EDID 關鍵位說明
圖7 FreeSync 信號偵測流程圖
本設計系統(tǒng)OSD 菜單部分著重確認FreeSync 功能開關、顯示刷新率的實時顯示,以及信號是否同步顯示.OSD 顯示確認確保在不同國家語言下顯示無亂碼、顯示正確, 功能性部分確保對功能打開后不出現(xiàn)畫面異常、功能錯亂等不正確的現(xiàn)象[4].
當打開顯示刷新率功能時, 在OSD 的右上角部分可以顯示出場頻, 它的頻率和信號源給出的刷新率必須一致. 如圖8 所示.
圖8 OSD 上顯示刷新率
兼容性測試是為了確保不同的用戶在使用不同設備時可以正常使用顯示器. 本設計重點用帶有FreeSync 功能的AMD 顯卡檢測顯示器系統(tǒng)的FreeSync 功能.
當FreeSync 功能打開時出現(xiàn)AMD 顯卡端顯示 “不支持” 的情況, 這就意味著顯示器系統(tǒng)的EDID 設置不正常. 所以需要確保測試進行時PC 端顯卡反饋不能出錯. 如下是測試FreeSync 功能步驟.
(1)PC 裝好AMD 顯卡;
(2) 開機對PC 與顯示器進行連接;
(3) 將顯示器FreeSync 功能和刷新率顯示功能打開;
(4) 開PC 上的AMD FreeSync 游戲測試軟件;
(5) 確認畫面是否出現(xiàn)撕裂、卡頓等異常情況;
(6) 確認刷新率顯示是否正常;
(7) 測試都正常情況下才表示測試通過, 如圖9 為此測試過程畫面顯示的三張照片的合集, 體現(xiàn)了在同步刷新率的條件下, 畫面顯示同步并正常.
圖9 FreeSync 運行過程照片
如果將顯示器端的FreeSync 功能關閉, 并用相同的信源和軟件測試工具進行測試, 就可以很清楚地看見畫面圖像卡頓和齒狀撕裂的現(xiàn)象, 如圖10 為測試顯示截圖, 此時刷新率也被固定成一個頻率輸出, 如測試時可看到固定輸出頻率為75 Hz. 所以顯示器畫面不同步顯示信源畫面時, 就很容易出現(xiàn)畫面顯示異常的情況.
圖10 FreeSync 功能關閉出現(xiàn)撕裂問題
作為垂直同步技術的替代以及自適應垂直同步技術的延伸,FreeSync 技術使顯示器的刷新率與GPU 的渲染率保持同步, 不僅解決了畫面撕裂問題, 同時解決了畫面視覺卡頓問題. 具有FreeSync 技術的顯示器畫面更流暢, 不但能夠用于收看同步高刷新率的視頻, 而且還可以應用于電子競技運動比賽. 本設計由于FreeSync 技術開源, 顯示器端的設計控制靈活,并且不需要購買相關顯示模組, 可投入大批量生產, 值得推廣應用.
注釋:
①Cabe Atwell.ADM Unveils FreeSync at CES2014. Design News, 2014,69(3).
② AMD FreeSync Technology Whitepaper,Version 2.0c,2015.