熊木地, 孫宇航, 郭俞君
(大連海事大學(xué) 信息科學(xué)技術(shù)學(xué)院,遼寧 大連 116026)
隨著科技進(jìn)步和娛樂(lè)方式的多樣化,各類(lèi)顯示屏應(yīng)運(yùn)而生,人們對(duì)視頻質(zhì)量以及顯示屏應(yīng)用領(lǐng)域的需求也就越來(lái)越高。在種類(lèi)繁多的顯示屏產(chǎn)品中,發(fā)光二極管(LED)顯示屏憑借著色域廣、功耗低、壽命長(zhǎng)的優(yōu)勢(shì)占據(jù)了顯示屏市場(chǎng)的一大部分[1]。LED智能玻璃顯示屏在具有傳統(tǒng)LED顯示屏特點(diǎn)的基礎(chǔ)上,又具有良好的透明性以及建材特性,因此被廣泛應(yīng)用于戶(hù)外大型展示項(xiàng)目,尤其適合于以大樓幕墻為載體或者作為地鐵出口的玻璃幕墻等應(yīng)用。但是,傳統(tǒng)的LED智能玻璃顯示屏的控制系統(tǒng)需要以計(jì)算機(jī)作為視頻源進(jìn)行實(shí)時(shí)的視頻輸出[2-5],在小規(guī)模場(chǎng)合中使用不夠方便,因此本文設(shè)計(jì)了一種脫離了獨(dú)立視頻源、便攜的視頻播放控制系統(tǒng)。
本系統(tǒng)由視頻輸出單元和視頻轉(zhuǎn)發(fā)單元兩部分組成。如圖1所示,其中視頻輸出單元主要負(fù)責(zé)提供可視化操作界面以及將按照一定方式重新排序的視頻數(shù)據(jù)通過(guò)光纖發(fā)送至視頻轉(zhuǎn)發(fā)單元,視頻轉(zhuǎn)發(fā)單元負(fù)責(zé)接收并選取其中一部分視頻數(shù)據(jù),再對(duì)這部分視頻數(shù)據(jù)進(jìn)行反Gamma校正后發(fā)送至驅(qū)動(dòng)系統(tǒng)實(shí)現(xiàn)對(duì)LED智能玻璃顯示屏的控制。由于LED驅(qū)動(dòng)芯片的移位時(shí)鐘頻率限制了每個(gè)視頻轉(zhuǎn)發(fā)單元所能控制的LED數(shù)目,因此想實(shí)現(xiàn)大規(guī)模LED智能玻璃顯示屏的控制需要多個(gè)視頻轉(zhuǎn)發(fā)單元,所以視頻轉(zhuǎn)發(fā)單元還需要將接收到的視頻數(shù)據(jù)通過(guò)光纖轉(zhuǎn)發(fā)至下一個(gè)視頻轉(zhuǎn)發(fā)單元,以視頻轉(zhuǎn)發(fā)單元級(jí)聯(lián)的形式實(shí)現(xiàn)大規(guī)模LED智能玻璃顯示屏的控制。
圖1 LED智能玻璃顯示系統(tǒng)Fig.1 LED smart glass display system
視頻輸出單元由中央處理器(CPU)和現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)兩部分組成。其中CPU及其外圍電路作為視頻輸出單元的主要核心,負(fù)責(zé)向用戶(hù)提供可視化操作界面,實(shí)現(xiàn)文件存取,連接互聯(lián)網(wǎng),向FPGA發(fā)送地址碼表,提供視頻數(shù)據(jù)等功能[6]。FPGA及其外圍電路作為輔助核心負(fù)責(zé)視頻數(shù)據(jù)的重排序以及通過(guò)光纖向視頻轉(zhuǎn)發(fā)單元的傳輸。視頻輸出單元的整體工作流程如下:
CPU:預(yù)先燒寫(xiě)Android系統(tǒng)至外掛EMMC芯片中,提供完整操作系統(tǒng),使用戶(hù)可通過(guò)HDMI接口連接顯示屏,USB接口連接鼠標(biāo)鍵盤(pán)以及U盤(pán),實(shí)現(xiàn)視頻文件存取,連接互聯(lián)網(wǎng)等所需操作。用戶(hù)通過(guò)特定內(nèi)置APP繪制地址映射圖,生成地址映射數(shù)據(jù)文件,并將地址映射文件中的數(shù)據(jù)發(fā)送至FPGA部分[7]。同時(shí)CPU通過(guò)特定視頻輸出引腳將RGB數(shù)據(jù)、場(chǎng)同步信號(hào)以及隨路時(shí)鐘發(fā)送至FPGA部分。
FPGA:在CPU的控制下接收地址映射數(shù)據(jù)并將其分為兩部分存入兩片外掛SSRAM的后半部分地址中,地址映射數(shù)據(jù)存儲(chǔ)完成后,將每一幀RGB視頻數(shù)據(jù)以乒乓操作的方式在兩片外掛SSRAM的前半部分地址中進(jìn)行讀寫(xiě)操作,并將讀出的RGB視頻數(shù)據(jù)通過(guò)光纖發(fā)送至視頻轉(zhuǎn)發(fā)單元。
視頻轉(zhuǎn)發(fā)單元以FPGA為核心,通過(guò)光纖接收視頻輸出單元發(fā)送的RGB視頻數(shù)據(jù)并在其中截取自身控制的部分LED智能玻璃顯示屏所對(duì)應(yīng)的RGB視頻數(shù)據(jù),對(duì)其進(jìn)行反Gamma校正后通過(guò)網(wǎng)線(xiàn)發(fā)送至驅(qū)動(dòng)電路實(shí)現(xiàn)對(duì)LED智能玻璃顯示屏的控制,同時(shí)將接收到的全部RGB視頻數(shù)據(jù)通過(guò)光纖發(fā)送至下一個(gè)視頻轉(zhuǎn)發(fā)單元。
如圖2所示,視頻輸出單元由CPU和FPGA兩部分組成。CPU部分由CPU、EMMC、DDR、WIFI以及電源管理模塊組成。在此之中CPU選用瑞芯微電子的RK3288處理器,該處理器采用四核Cortex-A17架構(gòu),最高支持4 K 10 bits H265/264視頻解碼以及多路視頻輸出,可以保證在提供可視化操作界面的同時(shí)向FPGA部分發(fā)送RGB視頻數(shù)據(jù),以實(shí)現(xiàn)本系統(tǒng)所需功能[8]。EMMC以及DDR選用KLMAG1JETD-B041N和K4B4G1646E-BMMA兩款芯片,二者分別作為系統(tǒng)存儲(chǔ)器以及系統(tǒng)緩存單元。WIFI選擇AP6335無(wú)線(xiàn)WIFI模塊,用以實(shí)現(xiàn)系統(tǒng)所需的網(wǎng)絡(luò)功能,電源管理模塊以ACT8846QM490-T芯片為核心,該芯片被設(shè)計(jì)專(zhuān)用于RK3288系列芯片電源管理。
圖2 視頻輸出單元結(jié)構(gòu)框圖Fig.2 Structure diagram of video output unit
FPGA部分由FPGA、SSRAM、光纖接口組成。在此之中,F(xiàn)PGA選用Xilinx公司的Spartan-6系列的XC6SLX45T FPGA芯片,該芯片最大支持可達(dá)3.2 Gbps的高速串行收發(fā)器,可以滿(mǎn)足本系統(tǒng)所需的光纖傳輸速率需求。SSRAM選用IS61LPS204836B-200TQLI,該芯片最多可存72 Mb數(shù)據(jù),讀寫(xiě)速率可達(dá)200 MHz,能夠滿(mǎn)足本系統(tǒng)所需的1 080 P的視頻數(shù)據(jù)讀寫(xiě)要求。
在用戶(hù)開(kāi)機(jī)后,CPU借由搭載的專(zhuān)用Android5.1操作系統(tǒng)共實(shí)現(xiàn)3部分功能。其一為持續(xù)通過(guò)專(zhuān)用引腳向FPGA發(fā)送RGB視頻數(shù)據(jù)、隨路時(shí)鐘信號(hào)以及同步信號(hào)。其二為提供可操作圖形界面以及操作系統(tǒng)。其三為通過(guò)內(nèi)置APP按照實(shí)際LED智能玻璃顯示屏走線(xiàn)繪制地址映射圖生成相應(yīng)地址映射文件,并將其存入EMMC中,之后拉高CPU與FPGA相連的使能引腳,通知FPGA接收地址映射數(shù)據(jù)。并按照CPU生成的寫(xiě)時(shí)鐘信號(hào)向FPGA發(fā)送地址映射數(shù)據(jù)。當(dāng)?shù)刂酚成鋽?shù)據(jù)發(fā)送完成后,CPU拉低使能引腳,通知FPGA地址映射數(shù)據(jù)發(fā)送完畢。該操作需進(jìn)行兩次,分別發(fā)送地址映射數(shù)據(jù)的前后兩部分。
FPGA部分從功能上可以分為地址映射數(shù)據(jù)接收模塊、視頻數(shù)據(jù)接收以及地址映射模塊、光纖發(fā)送模塊4個(gè)模塊。
地址映射數(shù)據(jù)接收模塊在系統(tǒng)上電后等待CPU的使能信號(hào),當(dāng)使能信號(hào)被拉高時(shí),通過(guò)FIFO將地址映射數(shù)據(jù)的前后兩部分按照地址自增的方式分別存入外掛SSRAM_B以及SSRAM_A的后半部分存儲(chǔ)空間中。
視頻數(shù)據(jù)接收以及地址映射模塊在FPGA上電后就開(kāi)始在CPU所發(fā)送的隨路時(shí)鐘信號(hào)以及同步信號(hào)的控制下將視頻數(shù)據(jù)以地址自增的方式存入外掛SSRAM中,由于本系統(tǒng)采用的是1 920×1 080的視頻輸出分辨率,因此通過(guò)對(duì)行同步信號(hào)的計(jì)數(shù)可將視頻數(shù)據(jù)均分為兩部分,分別存入SSRAM_A以及SSRAM_B中。在實(shí)際運(yùn)行過(guò)程中,為了保證視頻幀數(shù)不減半,在視頻數(shù)據(jù)接收以及地址映射操作過(guò)程中采用乒乓操作的方式[9-10]。
光纖發(fā)送模塊通過(guò)將Aurora_8b10b IP核配置為單工發(fā)送模式,將地址映射操作完成并經(jīng)過(guò)了FIFO的RGB視頻數(shù)據(jù)通過(guò)光纖發(fā)送至視頻轉(zhuǎn)發(fā)單元。由于本系統(tǒng)使用的單工Aurora_8b10b IP核的初始化以定時(shí)模式實(shí)現(xiàn),因此整體光纖通訊系統(tǒng)的上電順序必須為接收端在前,發(fā)送端在后,無(wú)法實(shí)現(xiàn)光纖的熱插拔,在實(shí)際應(yīng)用中較為不便。為解決此問(wèn)題,在光纖發(fā)送模塊每完整發(fā)送20幀視頻數(shù)據(jù)后,Aurora_8b10b單工發(fā)送模塊會(huì)進(jìn)行一次復(fù)位重啟,使光纖通道可以重新建立,實(shí)現(xiàn)光纖的熱插拔,并去除上電順序?qū)饫w系統(tǒng)的影響。由于每次Aurora_8b10b單工發(fā)送模塊的重啟均在視頻場(chǎng)消隱過(guò)程中進(jìn)行,故不會(huì)對(duì)視頻顯示效果造成影響。
圖3 視頻轉(zhuǎn)發(fā)單元結(jié)構(gòu)框圖Fig.3 Structure diagram of video forwarding unit
如圖3所示,視頻轉(zhuǎn)發(fā)單元以FPGA為核心,F(xiàn)PGA芯片同樣選用Xilinx公司的Spartan-6系列的XC6SLX45T FPGA芯片。視頻轉(zhuǎn)發(fā)單元在功能上可分為光纖模塊、數(shù)據(jù)選取以及處理模塊、數(shù)據(jù)發(fā)送模塊3部分。其中光纖模塊為修改過(guò)的Aurora_8b10b IP核,通過(guò)修改Aurora_8b10b IP核的程序,使其可以同時(shí)作為接收端和發(fā)送端分別與兩個(gè)不同的對(duì)象建立光纖通道,實(shí)現(xiàn)視頻轉(zhuǎn)發(fā)單元之間的光纖級(jí)聯(lián)[11-12]。系統(tǒng)上電后,光纖模塊先接收由上一級(jí)通過(guò)光纖發(fā)送的RGB視頻數(shù)據(jù),并將數(shù)據(jù)選取以及處理模塊處理后的RGB視頻數(shù)據(jù)通過(guò)光纖發(fā)送至下一級(jí)。數(shù)據(jù)選取以及處理模塊先將光纖接收到的數(shù)據(jù)通過(guò)簡(jiǎn)單雙口RAM去除其中的無(wú)效數(shù)據(jù),之后通過(guò)對(duì)大小固定的另一個(gè)雙口RAM進(jìn)行寫(xiě)操作來(lái)將RGB視頻數(shù)據(jù)分組。具體為設(shè)置一個(gè)初始值為0的寄存器,每次雙口RAM寫(xiě)滿(mǎn)后會(huì)對(duì)該寄存器進(jìn)行加一操作并從地址零開(kāi)始繼續(xù)寫(xiě)入下一部分?jǐn)?shù)據(jù),直至寄存器的值與板載撥碼開(kāi)關(guān)所設(shè)置的數(shù)值一致,便停止寫(xiě)入RGB視頻數(shù)據(jù),并對(duì)此時(shí)雙口RAM中的數(shù)據(jù)進(jìn)行反伽馬校正處理[13-14]。數(shù)據(jù)發(fā)送模塊將反伽馬校正后的數(shù)據(jù)進(jìn)行并轉(zhuǎn)串處理,生成與驅(qū)動(dòng)電路匹配的時(shí)鐘后發(fā)送至驅(qū)動(dòng)電路,實(shí)現(xiàn)LED智能玻璃顯示屏的控制。
為保證最終系統(tǒng)輸出視頻不存在丟幀現(xiàn)象,在地址映射過(guò)程中需要進(jìn)行乒乓操作,具體流程如下。FPGA首先需自己生成雙倍于隨路時(shí)鐘頻率的時(shí)鐘CLK_PP1以及CLK_PP2,在地址映射數(shù)據(jù)存儲(chǔ)完成后,首先以CLK_PP1的奇數(shù)周期作為寫(xiě)時(shí)鐘將第一部分RGB視頻數(shù)據(jù)存入SSRAM_A的前半部分空間中,在這部分RGB視頻數(shù)據(jù)存儲(chǔ)完成后,同樣利用CLK_PP2的奇數(shù)周期將RGB視頻數(shù)據(jù)的后半部分?jǐn)?shù)據(jù)存入SSRAM_B的同時(shí)利用CLK_PP2的偶數(shù)周期作為讀時(shí)鐘以地址自增的方式讀出地址映射數(shù)據(jù),并以該數(shù)據(jù)為讀地址利用CLK_PP1的偶數(shù)周期從SSRAM_A中讀出視頻數(shù)據(jù),完成地址映射。再之后SSRAM_A以CLK_PP1的奇數(shù)周期為寫(xiě)時(shí)鐘寫(xiě)入視頻數(shù)據(jù),以CLK_PP1的偶數(shù)周期為讀時(shí)鐘讀出地址映射數(shù)據(jù)并操作SSRAM_B完成地址映射操作,之后重復(fù)上述過(guò)程。
嵌入式視頻播放控制系統(tǒng)連線(xiàn)圖如圖4所示。
圖4 嵌入式視頻播放控制系統(tǒng)連線(xiàn)圖Fig.4 Wiring diagram of embedded video playback control system
嵌入式播放控制系統(tǒng)視頻映射調(diào)試如圖5所示,映射調(diào)試采用行列掃描方式,通過(guò)觀(guān)察行列像素點(diǎn)位置,判斷映射結(jié)果是否準(zhǔn)確,經(jīng)實(shí)際測(cè)試,無(wú)像素點(diǎn)錯(cuò)位現(xiàn)象。
圖5 嵌入式播放控制系統(tǒng)視頻映射調(diào)試圖Fig.5 Video mapping debugging diagram of embedded playback control system
LED智能玻璃顯示效果6所示。
圖6 LED智能玻璃顯示屏顯示效果圖Fig.6 Display effect diagram of LED intelligent glass display screen
本文介紹了一種基于嵌入式系統(tǒng)的LED智能玻璃顯示控制系統(tǒng),采用搭載操作系統(tǒng)的CPU+FPGA雙核架構(gòu)。CPU通過(guò)USB接口對(duì)U盤(pán)中視頻數(shù)據(jù)進(jìn)行讀取,通過(guò)在CPU特定內(nèi)置APP中進(jìn)行地址映射圖繪制,生成地址映射數(shù)據(jù),并將視頻數(shù)據(jù)和映射數(shù)據(jù)發(fā)送至FPGA。FPGA對(duì)視頻數(shù)據(jù)重新排序,通過(guò)光纖發(fā)送至視頻轉(zhuǎn)發(fā)單元,視頻轉(zhuǎn)發(fā)單元接收視頻數(shù)據(jù)選取其中一部分視頻數(shù)據(jù),反伽馬校正后發(fā)送至驅(qū)動(dòng)系統(tǒng)實(shí)現(xiàn)對(duì)LED智能玻璃顯示屏的控制,采用多個(gè)視頻轉(zhuǎn)發(fā)單元級(jí)聯(lián)方式驅(qū)動(dòng)大規(guī)模LED智能玻璃顯示屏。此系統(tǒng)給產(chǎn)品應(yīng)用帶來(lái)了方便,具有更廣泛的應(yīng)用范圍。