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