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