吳志忠,鄧 敏,李毅航,張志剛,張 寬,唐俊龍,唐立軍
(1.長沙理工大學(xué)物理與電子科學(xué)學(xué)院,長沙,410114;2.近地空間電磁環(huán)境監(jiān)測與建模湖南省普通高校重點(diǎn)實(shí)驗(yàn)室,長沙,410114)
近年來,高分辨率圖像獲取技術(shù)的進(jìn)步為生物醫(yī)學(xué)、天體物理學(xué)及地球系統(tǒng)科學(xué)等諸多領(lǐng)域的可視化數(shù)據(jù)分析提供了有力條件。這些可視化數(shù)據(jù)通常需要采用較大尺寸的顯示器來配合高分辨率數(shù)據(jù)的展示,以達(dá)到在整幅畫面下觀察圖像局部細(xì)節(jié)的目的[1]。然而可視化數(shù)據(jù)在顯示分辨率方面的需求超過了單屏顯示系統(tǒng)的能力,即在單顯示器上無法以全分辨率顯示整幅畫面[2]。為解決此問題,一般通過多臺(tái)投影機(jī)或液晶顯示器組成顯示矩陣,采用多屏幕拼接顯示的方式擴(kuò)大顯示系統(tǒng)的整體分辨率和尺寸以滿足可視化數(shù)據(jù)顯示的需要。因此,隨著可視化數(shù)據(jù)分辨率和尺寸需求的不斷增長,所需的同屏顯示設(shè)備數(shù)量也在不斷增加,為顯示控制系統(tǒng)帶來了巨大挑戰(zhàn)。
為了實(shí)現(xiàn)對多臺(tái)顯示器的控制和管理,國內(nèi)外諸多學(xué)者和研究機(jī)構(gòu)針對多屏顯示技術(shù)開展了相關(guān)理論研究和應(yīng)用技術(shù)開發(fā),并取得了優(yōu)秀的研究成果。例如,普林斯頓大學(xué)設(shè)計(jì)的Display Wall[3]系統(tǒng)以及伊利諾大學(xué)芝加哥分校提出的SAGE[4]和SAGE2[5]系統(tǒng),在該領(lǐng)域均有良好的表現(xiàn)。Nirnimesh 等提出的Garuda[5]多屏顯示系統(tǒng),可以在無需修改下呈現(xiàn)任何基于開放場景的程序應(yīng)用。Ueda 等針對常見多屏顯示系統(tǒng)配置要求高、多運(yùn)行在Linux 系統(tǒng)下且操作難度大的問題,開發(fā)了基于Windows 系統(tǒng)的多屏顯示軟件Tenmads[6],通過簡單操作實(shí)現(xiàn)多屏顯示管理。美國夏普實(shí)驗(yàn)室的Deshpande 等針對多用戶拼接屏幕共享使用場景提出了SharpWall[7]拼接顯示系統(tǒng),實(shí)現(xiàn)了4K 視頻流的傳輸和桌面的遠(yuǎn)程連接。日本三菱公司的Kanda 等提出了一種超高分辨率顯示系統(tǒng)的多終端同步顯示方法,使圖形在顯示器之間的顯示延時(shí)小于0.5 幀[8]。石溪大學(xué)的Papadopoulos 等設(shè)計(jì)并建造了世界上第1 個(gè)10 億像素分辨率的全封閉式顯示器Reality Deck[9],為超大拼接顯示在沉浸式系統(tǒng)中的應(yīng)用做出了典范。
國內(nèi)在多屏顯示技術(shù)上也做了許多研究工作。例如,盧如西[10]提出了一種多輸出通道顯示單一完整桌面的計(jì)算機(jī)結(jié)構(gòu),可實(shí)現(xiàn)4×4 個(gè)顯示單元的控制整體分辨率可達(dá)4 096 像素×3 072 像素@30 Hz。然后盧如西[11]針對超高分辨率圖像處理的需求,設(shè)計(jì)了一種分布式并行處理架構(gòu),實(shí)現(xiàn)了分辨率為76 800 像素×8 000 像素超大規(guī)模的顯示系統(tǒng)。陳紹林等[12]基于SAGE 和VizRoll 大屏顯示技術(shù),構(gòu)建了4×5 的高分辨率并行顯示陣列。劉偉儉[13]利用高速PCI-E 接口和FPGA 陣列,實(shí)現(xiàn)了支持64 路外部輸入的總分辨率為15 360 像素×4 320 像素@60 Hz 的4×8 矩陣顯示,單屏分辨率1 920 像素×1 080 像素@60 Hz 達(dá)到了較為領(lǐng)先的水平。此外,國內(nèi)相關(guān)研究人員還提出了低成本、輕量級(jí)的分屏顯示系統(tǒng)。例如,霍偉[14]設(shè)計(jì)了基于FPGA 的視頻分割系統(tǒng),實(shí)現(xiàn)了1 280 像素×960 像素分辨率圖像的4 路720 像素×480 像素分辨率分割顯示。李宗德[15]設(shè)計(jì)了輸入分辨率為1 920 像素×1 080 像素@60 Hz 的4 通道DVI 接口分屏顯示系統(tǒng)。蘇健淵[16]基于ARM+FPGA 的嵌入式構(gòu)架搭建了多屏圖像聯(lián)合顯示系統(tǒng),可將存儲(chǔ)在U 盤中分辨率為10 240 像素×8 192 像素的超大圖像內(nèi)容讀出并在4 個(gè)顯示器上分屏顯示,但無法實(shí)現(xiàn)視頻顯示功能。
綜上所述,現(xiàn)有多屏顯示系統(tǒng)主要有3 種硬件實(shí)現(xiàn)模式:單PC 機(jī)模式、PC 機(jī)集群模式和嵌入式構(gòu)架模式,如表1 所示。其中,單主機(jī)模式可控屏幕的數(shù)量取決于PC 機(jī)顯卡的數(shù)量及性能;PC 機(jī)集群模式除了需要高速網(wǎng)絡(luò)互聯(lián)外,每臺(tái)顯示設(shè)備均需要配備獨(dú)立終端PC 機(jī),大大增加了多屏顯示系統(tǒng)的使用成本;嵌入式構(gòu)架模式最大分辨率受制于分屏裝置的性能,允許輸入的最大分辨率普遍低于單PC 機(jī)和PC 機(jī)集群模式,且分屏形式較為單一,通常僅支持1×2 或2×2 的顯示陣列,不能實(shí)時(shí)改變分屏的路數(shù)和分辨率等參數(shù)的配置。
表1 不同硬件模式對比Table 1 Comparison of different hardware modes
為了實(shí)現(xiàn)高分辨率、靈活組合的多屏顯示系統(tǒng),本文以4K 視頻多路分屏顯示為目標(biāo),研究視頻流傳輸、轉(zhuǎn)換、處理及分屏顯示過程,探索基于異構(gòu)多核的4K 視頻流多路分屏方法。此方法可提升嵌入式構(gòu)架模式多屏顯示系統(tǒng)的最高分辨率,達(dá)到3 840 像素×2 160 像素@60 Hz 的最高輸入分辨率,并根據(jù)輸入分辨率的行列數(shù)量自適應(yīng)匹配包括1×2,1×3,1×4 和2×2 在內(nèi)的多種顯示矩陣組合,有效提升分屏顯示系統(tǒng)性能。
多屏顯示系統(tǒng)是視頻信號(hào)從信號(hào)源到每臺(tái)顯示設(shè)備的必經(jīng)傳輸鏈路,多屏顯示系統(tǒng)的數(shù)據(jù)帶寬是制約系統(tǒng)最高分辨率的主要因素之一。因此,為系統(tǒng)選擇恰當(dāng)?shù)囊曨l輸入、輸出接口和數(shù)據(jù)緩沖區(qū)以滿足傳輸?shù)乃俾室笾陵P(guān)重要。本文以系統(tǒng)的最高輸入分辨率為參考,確定系統(tǒng)數(shù)據(jù)帶寬,保證系統(tǒng)的可行性。
每秒60 幀的4K 分辨率(3 840 像素×2 160 像素)視頻以常規(guī)8 位色深的完全取樣YUV444 像素格式進(jìn)行傳輸時(shí),其像素時(shí)鐘為594 MHz,數(shù)據(jù)帶寬可達(dá)17.82 Gb/s[17]。因此,文獻(xiàn)[14-16]所使用的DVI或VGA 接口均無法滿足系統(tǒng)帶寬要求。為了滿足系統(tǒng)輸入、輸出帶寬,本文采用1.2 版本的DisplayPort(DP)接口作為系統(tǒng)輸入接口,最高帶寬可達(dá)21.6 Gb/s[18]滿足系統(tǒng)輸入要求;采用1.4 版本的HDMI 接口作為系統(tǒng)輸出接口,最高帶寬可達(dá)10.2 Gb/s[19]滿足系統(tǒng)分屏輸出要求。選用帶寬可達(dá)25.6 Gb/s 的DDR3L-1600 型第三代隨機(jī)存取器作為數(shù)據(jù)緩沖區(qū),保證緩沖區(qū)帶寬滿足鏈路要求。
嵌入式構(gòu)架的多屏顯示系統(tǒng),多采用FPGA 或ARM+FPGA 相結(jié)合的方式實(shí)現(xiàn)視頻分割、處理和傳輸?shù)墓δ?。采用單FPGA 方式時(shí),受FPGA 工作原理的影響通常僅能實(shí)現(xiàn)單一的分屏顯示組合;ARM+FPGA 方式中,由于兩者缺少有效的高速數(shù)據(jù)鏈路,系統(tǒng)整體性能受到嚴(yán)重制約,無法處理高分辨率視頻輸入。為了克服以上系統(tǒng)結(jié)構(gòu)的缺點(diǎn),本文利用全可編程的ARM+FPGA 異構(gòu)多核片上系統(tǒng)設(shè)計(jì)多屏顯示系統(tǒng),實(shí)現(xiàn)多路分屏控制方法。
全可編程的異構(gòu)多核片上系統(tǒng)構(gòu)架有利于發(fā)揮ARM 處理器與FPGA 各自的優(yōu)勢,實(shí)現(xiàn)優(yōu)勢互補(bǔ)。該構(gòu)架通過片上高速AXI 總線實(shí)現(xiàn)ARM 與FPGA 間的快速數(shù)據(jù)交換[8]。ARM 通過FPGA 中IP 核的基地址,利用AXI 總線讀寫IP 核的寄存器數(shù)據(jù),對參與運(yùn)算的數(shù)據(jù)和參數(shù)進(jìn)行靈活配置;FPGA 負(fù)責(zé)高速、大規(guī)模數(shù)據(jù)處理保證運(yùn)算速度。嵌入式構(gòu)架的分屏顯示系統(tǒng)結(jié)構(gòu)如圖1 所示。在ARM 處理器上利用PetaLinux 工具定制適用于多屏顯示的專用Linux 操作系統(tǒng),進(jìn)行多屏顯示系統(tǒng)的頂層設(shè)計(jì),使片上FPGA 與多核ARM 處理器實(shí)現(xiàn)協(xié)同工作。通過一級(jí)引導(dǎo)程序?qū)ο到y(tǒng)進(jìn)行初始化配置、加載邏輯電路固件;生成的U-boot 固件引導(dǎo)Linux 內(nèi)核啟動(dòng),讀取設(shè)備樹文件,掛載多屏顯示相關(guān)IP 核驅(qū)動(dòng),使應(yīng)用程序可以控制底層硬件[20]。內(nèi)核模塊分配內(nèi)存地址空間運(yùn)行多屏顯示組件,實(shí)現(xiàn)FPGA 與ARM 的內(nèi)存共享,從而實(shí)現(xiàn)兩者間的高速數(shù)據(jù)交換。
圖1 分屏顯示系統(tǒng)結(jié)構(gòu)Fig.1 Structure of a split-screen display system
一般情況下,F(xiàn)PGA 采用直接存儲(chǔ)器訪問(Direct memory access,DMA)方式訪問內(nèi)存進(jìn)行交換,然而DMA 方式的傳輸帶寬大約在750 Mb/s[21],無法滿足4K 視頻流的傳輸需求。因此,需要設(shè)計(jì)適用于視頻訪問的專用高速視頻直接存儲(chǔ)器訪問(Video direct memory access,VDMA)模塊進(jìn)行數(shù)據(jù)交換。VDMA 支持多字節(jié)數(shù)據(jù)訪問,接口寬度最高可達(dá)1 024 b,存取頻率可達(dá)200 MHz,數(shù)據(jù)帶寬上限可達(dá)200 Gb/s,可較好地滿足4K 視頻數(shù)據(jù)的訪問。VDMA 結(jié)構(gòu)框圖如圖2 所示。視頻流在存入內(nèi)存之前,先傳入最多可以緩沖32 行視頻數(shù)據(jù)的異步行緩沖區(qū),完成視頻幀速率與內(nèi)存工作頻率之間的動(dòng)態(tài)匹配。設(shè)計(jì)基于AXI 總線的控制和狀態(tài)寄存器連接,實(shí)現(xiàn)ARM 處理器對異步行緩沖器的控制,進(jìn)行像素?cái)?shù)據(jù)臨時(shí)保存操作;實(shí)現(xiàn)VDMA 模塊的數(shù)據(jù)接口寬度與訪問頻率等參數(shù)的在線調(diào)整,實(shí)時(shí)改變VDMA的數(shù)據(jù)操作數(shù)量,滿足行列數(shù)自適應(yīng)匹配的多種顯示矩陣組合。建立獨(dú)立的全雙工數(shù)據(jù)讀寫通道,對內(nèi)存地址進(jìn)行映射,通過地址偏移訪問未對齊內(nèi)存區(qū)域,實(shí)現(xiàn)緩存區(qū)以內(nèi)存任意地址為起始位置的讀寫,防止因地址對齊造成的內(nèi)存溢出或數(shù)據(jù)丟失。VDMA 采用全雙工異步通信模式,視頻流的輸入、輸出均與外部輸入的獨(dú)立時(shí)鐘源同步,保證了模塊的獨(dú)立工作狀態(tài),使其不受處理器端的制約,以發(fā)揮其最大能效。
圖2 VDMA 結(jié)構(gòu)框圖Fig.2 VDMA structure
通常攝像頭或者其他設(shè)備采集的原始視頻信號(hào)多為RGB色彩模型格式的像素,而人眼對色彩細(xì)節(jié)的分辨率比對亮度細(xì)節(jié)的分辨率要差。因此,為了進(jìn)一步提高顯示系統(tǒng)的最高分辨率與刷新頻率,需要將RGB格式的像素?cái)?shù)據(jù)轉(zhuǎn)換成亮度色度格式(YUV),并對色度分辨率進(jìn)行適當(dāng)壓縮,減少數(shù)據(jù)量以達(dá)到增加有效顯示像素?cái)?shù)量、提高顯示刷新頻率的目的。
YUV格式中Y代表圖像的亮度,U和V代表圖像的色相和色飽和度。本文所設(shè)計(jì)的分屏顯示系統(tǒng)所支持的像素格式為YUV422 和YUV420,其中422 和420 分別代表像素點(diǎn)按照2∶1 的水平方向重采樣、1∶1 的垂直方向重采樣和水平、垂直方向全部采用2∶1 的重采樣。通過RGB到Y(jié)UV422(420)格式的重采樣轉(zhuǎn)換,實(shí)現(xiàn)視頻流數(shù)據(jù)的壓縮。
像素?cái)?shù)據(jù)從RGB到Y(jié)UV422(420)格式的轉(zhuǎn)換時(shí),需要先把RGB轉(zhuǎn)換為YUV444 格式,再進(jìn)行重采樣壓縮,RGB與YUV間的轉(zhuǎn)換方程為[22]
轉(zhuǎn)換后的YUV444 像素格式,進(jìn)行重采樣降低U和V的分辨率,實(shí)現(xiàn)YUV422 或YUV420 格式。
設(shè)Y(i,j),U(i,j),V(i,j)分別為第i行j列像素點(diǎn)的Y,U,V的值,P(i,j)為1 個(gè)像素所包含的YUV信息,S為1 幀圖像包含的YUV值。
當(dāng)YUV采樣比為4∶2∶2 時(shí),每行像素中間隔1 個(gè)像素剔除U和V的信息。
當(dāng)YUV采樣比為4∶2∶0 時(shí),1 行像素中剔除所有V信息保留U信息,間隔1 列剔除所有U信息保留V信息,同時(shí)每行像素中間隔1 個(gè)像素剔除U或V的信息。
由S構(gòu)成的視頻流便可在內(nèi)存中進(jìn)行下一步分割重組。YUV壓縮變換示意如圖3 所示。
圖3 YUV 壓縮變換示意圖Fig.3 YUV compression transformation diagram
多屏顯示系統(tǒng)以4K 視頻圖像每幀的完整畫面作為一個(gè)數(shù)據(jù)單元進(jìn)行處理,通過將存儲(chǔ)的有效幀圖像數(shù)據(jù)的內(nèi)存地址進(jìn)行重新映射,轉(zhuǎn)換為多組不同分辨率的圖像,以4 組1080P 的視頻圖像為例,命名為P1,P2,P3,P4。傳輸?shù)?K 視頻流是采用逐行掃描方式,圖像的首行起始地址映射為P1的起始地址之后依次儲(chǔ)存;當(dāng)?shù)刂菲? 920 個(gè)存儲(chǔ)單元后,將地址映射到P2的起始地址,再依次儲(chǔ)存1 920 個(gè)存儲(chǔ)單元。按照上述方式,把第1~1 080 行的視頻數(shù)據(jù)存儲(chǔ)到P1,P2,把第1 081~2 160 行的視頻數(shù)據(jù)存儲(chǔ)到P3,P4。若P(i,j)為1 幀4K 視頻圖像i行j列的像素點(diǎn),P1,P2,P3,P4為重組的4 組1080P 視頻圖像,其原始數(shù)據(jù)重組關(guān)系為
重組完成的4 組1080P 視頻圖像進(jìn)行下一步單路視頻信號(hào)再現(xiàn)。
在視頻顯示技術(shù)中,視頻信號(hào)不僅包含有效的像素信息,還包括時(shí)鐘信號(hào)DCLK、行同步信號(hào)HS、場同步信號(hào)VS,數(shù)據(jù)選通信號(hào)DE,這些信號(hào)構(gòu)成的視頻流包含了空白區(qū)域、有效視頻數(shù)據(jù)以及可尋址數(shù)據(jù)。視頻信號(hào)的不同決定著輸出顯示視頻的格式,如分辨率和幀率等。圖4 為1 幀視頻圖像框架。
ARM 通過IIC 接口讀取顯示器的擴(kuò)展顯示器識(shí)別數(shù)據(jù)(Extended display identification data,EDID),包含了顯示設(shè)備的特性,其中第35~37 字節(jié)數(shù)據(jù),確定顯示器能輸出顯示的視頻格式。ARM 通過改變視頻時(shí)鐘頻率,行、場同步信號(hào)參數(shù),控制FPGA 輸出多路與之對應(yīng)的視頻流,經(jīng)過高清多媒體接口發(fā)生器轉(zhuǎn)換成HDMI 接口的視頻流進(jìn)行分屏顯示。圖5 為1080P 視頻信號(hào)再現(xiàn)示意圖。每個(gè)時(shí)鐘上升沿傳輸1 個(gè)像素點(diǎn)數(shù)據(jù),當(dāng)HS 為低電平時(shí)傳輸數(shù)據(jù)無效,HS 上升沿時(shí)意味著1 行像素開始傳輸,DE為高電平時(shí)傳輸內(nèi)存中可尋址像素,每行像素傳輸同理,由VS 信號(hào)決定一幀圖像的傳輸。
圖4 1 幀視頻圖像框架Fig.4 A frame diagram of a video image
圖5 視頻信號(hào)再現(xiàn)示意圖Fig.5 Video signal reconstruction shows timing
本文采用Zynq UltraScale+MPSOC XCZU7EV 多核異構(gòu)處理器開發(fā)平臺(tái)對技術(shù)進(jìn)行驗(yàn)證。分別對系統(tǒng)所支持的二分屏、三分屏和四分屏(2×2 組合和1×4 組合)下不同分辨率顯示輸出進(jìn)行了驗(yàn)證測試。不同輸出組合方式下的輸入、輸出分辨率如表2 所示。
表2 屏幕組合方式及分辨率Table 2 Screen combination mode and resolution
圖6 分別為1×4 組合5 120×800@60 Hz 分辨率、2×2 組合3 840×2 160@60 Hz 分辨率的顯示效果。輸出端連接4 臺(tái)分辨率為2 560×1 440 的顯示器(型號(hào):272B8QJNB),圖像清晰,四端口顯示順序正確,無錯(cuò)位現(xiàn)象。
圖6 不同組合方式顯示效果Fig.6 Display results in different combinations
采用支持多視窗技術(shù)的顯示器( 型號(hào):PHILIPS-BDM4350UC),進(jìn)行信號(hào)延時(shí)、丟幀檢測。顯示圖像如圖7 所示,第1 路(左上角)由信號(hào)源直接輸入原始“斑馬紋”測試視頻信號(hào)(分辨率為3 840×2 160@60 Hz);其余3 路為分屏后輸出的第2~4路信號(hào)。信號(hào)無卡頓、丟幀現(xiàn)象,顯示順序正確。原始信號(hào)與分屏后輸出信號(hào)相差6 幀,分屏傳輸時(shí)延為100 ms,傳輸時(shí)延較低,可較好滿足應(yīng)用要求。
圖7 傳輸延時(shí)測試結(jié)果Fig.7 Transmit delay test results
本文提出了一種基于異構(gòu)多核構(gòu)架的視頻流多路分屏傳輸方法,搭建了VDMA 模塊對視頻流進(jìn)行高速搬運(yùn),保證了超高清視頻流的傳輸可靠性與穩(wěn)定性;通過嵌入式Linux 系統(tǒng)使分屏顯示更具靈活性,實(shí)現(xiàn)了多種不同輸出組合方式下的多種分辨率的自適應(yīng)分屏顯示。與傳統(tǒng)嵌入式構(gòu)架的多屏顯示系統(tǒng)相比,異構(gòu)多核構(gòu)架多屏顯示系統(tǒng)在高清視頻流分屏顯示上具有一定優(yōu)勢,可實(shí)現(xiàn)最高3 840 像素×2 160 像素@60 Hz 分辨率的視頻流分屏傳輸。在同等分辨大小的情況下,屏幕刷新率與現(xiàn)有同級(jí)別多屏顯示系統(tǒng)相比提升了一倍,且傳輸時(shí)延仍然保持在較低水平。該方法的傳輸速率與播放效果能較好地滿足4K 超高清視頻流分屏顯示的應(yīng)用要求。但是本文僅研究了視頻流的分屏傳輸技術(shù),下一步將繼續(xù)研究分屏傳輸過程中屏幕邊框?qū)︼@示效果的影響,探索多種屏幕組合下視頻流的邊框過度方法,以改進(jìn)當(dāng)前分屏顯示系統(tǒng)的性能。