目前,,顯示屏" title="顯示屏">顯示屏按數(shù)據(jù)的傳輸方式主要有兩類:一類是采用與計(jì)算機(jī)顯示同一內(nèi)容的實(shí)時(shí)視頻屏;另一類為通過 USB,、以太網(wǎng)等通信手段把顯示內(nèi)容發(fā)給顯示屏的獨(dú)立視頻" title="獨(dú)立視頻">獨(dú)立視頻源顯示屏,若采用無(wú)線通信方式,,還可以隨時(shí)更新顯示內(nèi)容,,靈活性高。此外,,用一套嵌入式系統(tǒng)取代計(jì)算機(jī)來提供視頻源,,既可以降低成本,又具有很高的可行性和靈活性,,易于工程施工,。因此,獨(dú)立視頻源LED顯示系統(tǒng)的需求越來越大,。
本系統(tǒng)采用ARM" title="ARM">ARM+FPGA" title="FPGA">FPGA的架構(gòu),,充分利用了ARM的超強(qiáng)處理能力和豐富的接口,實(shí)現(xiàn)真正的網(wǎng)絡(luò)遠(yuǎn)程操作,,因此不僅可以作為一般的LED顯示屏控制器" title="控制器">控制器,,更可以將各顯示節(jié)點(diǎn)組成大型的戶外廣告?zhèn)髅骄W(wǎng)絡(luò)。而FPGA是一種非常靈活的可編程邏輯器件,,可以像軟件一樣編程來配置,,從而可以實(shí)時(shí)地進(jìn)行靈活而方便的更改和開發(fā),提高了系統(tǒng)效率,。
1 獨(dú)立視頻LED系統(tǒng)
LED顯示屏的主要性能指標(biāo)有場(chǎng)掃描頻率,、分辨率、灰度級(jí)和亮度等,。分辨率指的是控制器能控制的LED管的數(shù)量,,灰度級(jí)是對(duì)顏色的分辨率,而亮度高則要求每個(gè)灰度級(jí)的顯示時(shí)間長(zhǎng),。顯然,,這3個(gè)指標(biāo)都會(huì)使得場(chǎng)掃描頻率大幅度降低,因此需要在不同的場(chǎng)合對(duì)這些指標(biāo)進(jìn)行適當(dāng)?shù)娜∩?。通?;叶燃?jí)、亮度和場(chǎng)掃描頻率由單個(gè)控制器決定,,而分辨率可以通過控制器陣列的方式得到很大的提高,。這樣,每個(gè)控制器的灰度和亮度很好,,場(chǎng)掃描頻率也適當(dāng),,再通過控制器陣列的形式,實(shí)現(xiàn)大的控制面積,,即可實(shí)現(xiàn)顏色細(xì)膩的全彩色超大屏幕的LED顯示控制器,。獨(dú)立視頻LED系統(tǒng)完全脫離計(jì)算機(jī)的控制,,本身可以實(shí)現(xiàn)通信、視頻播放,、數(shù)據(jù)分發(fā),、掃描控制等功能。為了實(shí)現(xiàn)大屏幕,、全彩色,、高場(chǎng)頻,本系統(tǒng)采用控制器陣列模式,,如圖1所示,。
系統(tǒng)可以通過網(wǎng)絡(luò)接口(以太網(wǎng)接口)由網(wǎng)絡(luò)服務(wù)器端更新本地的數(shù)據(jù),視頻播放部分則通過對(duì)該數(shù)據(jù)進(jìn)行解碼,,獲得RGB格式的視頻流,。再通過數(shù)據(jù)分發(fā)單元,將這些數(shù)據(jù)分別發(fā)送到不同的LED顯示控制器上,,控制器將播放單元提供的數(shù)據(jù)顯示到全彩色大屏幕LED上,。
2 通信接口和視頻播放單元
本系統(tǒng)的通信接口和視頻播放部分由ARM uClinux實(shí)現(xiàn)。ARM (ADVANCED RISC Machine)是英國(guó)ARM公司設(shè)計(jì)開發(fā)的通用32位RISC微處理器體系結(jié)構(gòu),,設(shè)計(jì)目標(biāo)是實(shí)現(xiàn)微型化,、低功耗、高性能的微處理器,。Linux作為一種穩(wěn)定高效的開放源碼式操作系統(tǒng),,在各個(gè)領(lǐng)域都得到了廣泛的應(yīng)用,,而uClinux則是專門針對(duì)微控制領(lǐng)域而設(shè)計(jì)的Linux系統(tǒng),,具有可裁減、內(nèi)核小,、完善的網(wǎng)絡(luò)接口協(xié)議和接口,、優(yōu)秀的文件系統(tǒng)以及豐富的開源資源等優(yōu)點(diǎn),正被越來越多的嵌入式系統(tǒng)采納,。系統(tǒng)中使用INTEL XScale系列的PXA255芯片,,與ARM v5TE指令集兼容,沿用了ARM的內(nèi)存管理,、中斷處理等機(jī)制,,并在此基礎(chǔ)上做了一些擴(kuò)展,如DMA控制器,、LCD控制器等,。由于ARM9的處理能力有限,目前只用其播放320×240像素的視頻,。
系統(tǒng)視頻播放的數(shù)據(jù)來自于系統(tǒng)中的SD存儲(chǔ)卡(Secure DIGITAL Memory Card),。更新SD卡的數(shù)據(jù)有兩種方式:一種是用計(jì)算機(jī)更新SD卡的數(shù)據(jù);另一種是通過網(wǎng)絡(luò)接收服務(wù)器的數(shù)據(jù),,直接由ARM更新SD卡。此外,,播放器也可以直接播放網(wǎng)絡(luò)傳送的MPEG-4格式數(shù)據(jù)口由于XScale未提供物理層接口,,若想實(shí)現(xiàn)網(wǎng)絡(luò)功能需外接一片物理層芯片。本系統(tǒng)選用SMSC公司的高性能100M以太網(wǎng)控制器LAN9118,。
3 視頻數(shù)據(jù)分發(fā)
由于控制器采用陣列模式,,因此需要對(duì)視頻源提供的數(shù)據(jù)進(jìn)行分發(fā),將不同行列的數(shù)據(jù)正確地送入不同的控制器,。
3.1 數(shù)據(jù)分發(fā)單元方案
本系統(tǒng)中的LED控制器灰度級(jí)高達(dá)3×12位(可顯示多達(dá)64G種顏色),、控制區(qū)域?yàn)?28×128點(diǎn)。系統(tǒng)播放單元提供的數(shù)據(jù)為 320×240像素,,因此需要分解成6個(gè)LED控制器來控制(見圖1),。因此,需要將PXA255提供的RGB數(shù)據(jù)分3組發(fā)送到這6塊控制器,,以FPGA 實(shí)現(xiàn),,方案如圖2所示。
LCD接口子模塊接收PXA255 LCD接口的數(shù)據(jù)和控制信號(hào),,將這些輸入的數(shù)據(jù)進(jìn)行逐點(diǎn)校正之后存入SDRAM,然后將該場(chǎng)數(shù)據(jù)分成3 組,,每組128行(最后一組只有64行,為了后面控制板的一致性,,此處由總線調(diào)度器補(bǔ)零),,同時(shí)發(fā)送,之后由LED顯示控制器處理,。
3.2 存儲(chǔ)器分配和總線調(diào)度
為了方便各模塊間的接口,,有利于不同時(shí)鐘域的數(shù)據(jù)同步,系統(tǒng)的存儲(chǔ)器采用兩級(jí)存儲(chǔ)模式,,即SDRAM作為主存儲(chǔ)器,,而各模塊也有相應(yīng)FIFO作為Cache,SDRAM具有容量大、帶寬高,、價(jià)格便宜等優(yōu)點(diǎn);但是控制比較復(fù)雜,,每次讀寫有多個(gè)控制和等待周期。因此為了提高效率,,通常采用地址遞增的碎發(fā)讀寫方式,,而不能像SRAM那樣隨時(shí)讀取任意地址的數(shù)據(jù)。
本方案采用完全動(dòng)態(tài)的內(nèi)存分配機(jī)制,,即每個(gè)模塊請(qǐng)求時(shí),,如果不是同一場(chǎng)數(shù)據(jù),則可以分配到一塊新的內(nèi)存,而一旦該內(nèi)存的數(shù)據(jù)不再有效,,則釋放這塊內(nèi)存,。這樣,每塊內(nèi)存都有自己的屬性,,標(biāo)志是使用中的內(nèi)存,,還是空閑內(nèi)存,以及當(dāng)前內(nèi)存中的數(shù)據(jù)是否在等待被使用的隊(duì)列中,,因此內(nèi)存需要分成3塊,。其中一塊存儲(chǔ)逐點(diǎn)校正參數(shù),一塊存儲(chǔ)當(dāng)前場(chǎng)數(shù)據(jù),,另一塊存儲(chǔ)上一場(chǎng)數(shù)據(jù)(即正在發(fā)送的數(shù)據(jù)),。這就要求在一個(gè)場(chǎng)同步周期內(nèi)需要將數(shù)據(jù)發(fā)送完畢,而這一要求是完全可以達(dá)到的,。
總線調(diào)度器需要調(diào)度3塊存儲(chǔ)器,還需要為每一個(gè)模塊維護(hù)一個(gè)偏移地址的首地址,,以及一個(gè)偏移地址計(jì)數(shù)寄存器,。為了便于計(jì)算偏移地址,用SDRAM物理上的兩行存儲(chǔ)一行的數(shù)據(jù),,而將多余部分空余,。
總線調(diào)度器的仲裁算法為:逐點(diǎn)校正參數(shù)與校正后數(shù)據(jù)寫人SDRAM的優(yōu)先級(jí)一樣,采用先來先得的方式占用總線,,分別由各自FIFO的指針來觸發(fā)總線占用,。一場(chǎng)數(shù)據(jù)寫入SDRAM完畢之后,開始發(fā)送,。需要依次讀出第n,n+ 128,n+ 256行的數(shù)據(jù)給數(shù)據(jù)發(fā)送FIFO0,1,2,,等待數(shù)據(jù)發(fā)送單元啟動(dòng)發(fā)送,。
3.3 LCD接口和逐點(diǎn)校正
PXA255 的LCD接口配置為smart panel形式,,具體時(shí)序關(guān)系可參考PXA255的手冊(cè)。FPGA根據(jù)這些時(shí)序關(guān)系,,將數(shù)據(jù)讀入,,進(jìn)行下一步的處理。
由于在生產(chǎn)過程中LED管的參數(shù)不可能完全一致,,因此為了獲得良好的圖像顯示效果,,必須對(duì)LED管進(jìn)行篩選。這也是LED屏價(jià)格昂貴的一個(gè)重要原因。
采用逐點(diǎn)校正技術(shù),,可逐點(diǎn)調(diào)節(jié)LED的亮度,,將顯示屏亮度的一致性提高一個(gè)數(shù)量等級(jí),從而可以使采購(gòu)廠商放寬LED在亮度和顏色方面的要求,,LED采購(gòu)的成本也隨之大大降低,。此外,系統(tǒng)采用的逐點(diǎn)校正技術(shù),,可以在線修改校正參數(shù),,使得LED屏在投入運(yùn)營(yíng)之后也可以修改校正參數(shù),補(bǔ)償由于
LED管老化對(duì)顯示效果的影響,,提高LED屏的使用壽命,。因此,逐點(diǎn)校正技術(shù)使LED模塊作為室內(nèi)外全彩色顯示屏的基本元件成為理想方案,。
逐點(diǎn)校正參數(shù)存于SD卡中,,在系統(tǒng)上電之后,ARM首先將該數(shù)據(jù)通過LCD接口(此時(shí)配置為GPIO)傳送到FPGA, FPGA將其存入SDRAM 中,。此后,,即可對(duì)LCD接口輸入的數(shù)據(jù)進(jìn)行校正。
3.4 數(shù)據(jù)發(fā)送
在數(shù)據(jù)發(fā)送時(shí),,每行數(shù)據(jù)作為1幀,,加入特定的幀頭之后開始發(fā)送。為了減少總線數(shù)量,,采用串行總線形式,,每組信號(hào)共有4路,分別是源同步時(shí)鐘和RGB三基色的串行數(shù)據(jù),。信號(hào)均以LVDS(Low Voltage Differential Signal,,低電壓差分信號(hào))的形式傳輸。LVDS采用差分方式傳送數(shù)據(jù),,有比單端傳輸更強(qiáng)的共模噪聲抑制能力,,可實(shí)現(xiàn)長(zhǎng)距離、高速率和低功耗的傳輸,。Altera公司的Cyclone II系列FPGA可以方便地通過I/O配置獲得LVDS的能力,。
發(fā)送幀頭由4字節(jié)的同步頭+數(shù)據(jù)當(dāng)前行號(hào)+ID號(hào)組成。由于圖像的連續(xù)像素值的相關(guān)性比較高,,因此使用偽隨機(jī)碼作為同步頭,,其同步性能比較可靠。當(dāng)前行號(hào)用于控制器判斷是否出現(xiàn)丟幀,,并根據(jù)當(dāng)前的行號(hào)決定當(dāng)前數(shù)據(jù)的存儲(chǔ)地址,。由于每一組數(shù)據(jù)實(shí)際上由兩個(gè)控制器分別處理(見圖1),,所以需要判斷標(biāo)志來截取不同的數(shù)據(jù)部分。ID號(hào)即是不同控制器截取某行中不同列數(shù)的標(biāo)準(zhǔn),,數(shù)據(jù)在發(fā)送時(shí)ID為零,。
4 全彩色LED顯示控制器
4.1 存儲(chǔ)器分配和總線調(diào)度
由于數(shù)據(jù)輸入場(chǎng)頻與LED掃描場(chǎng)頻通常不能成整數(shù)倍關(guān)系,,可能出現(xiàn)輸入一場(chǎng)數(shù)據(jù)結(jié)束,,該場(chǎng)數(shù)據(jù)的處理結(jié)果(Gamma校正和交織后)需要寫入
SDRAM,而此時(shí)掃描一場(chǎng)沒有結(jié)束,,即正在讀的那個(gè)區(qū)域不能覆蓋,,而上一場(chǎng)的數(shù)據(jù)還沒有顯示也不能覆蓋,因此交織地寫入(即掃描的讀出)需要開辟三塊分區(qū),。
總線仲裁算法為:控制輸出模塊和寫人模塊采用先來先得的算法,,而校正和交織過程的讀寫,則優(yōu)先級(jí)最低,,可以在前面二者申請(qǐng)時(shí)被掛起,,只有當(dāng)前二者不再需要總線時(shí),才可以分配到總線的使用權(quán),。
4.2 數(shù)據(jù)接收
數(shù)據(jù)接收單元除了需要同步判決,、串并轉(zhuǎn)換之外,還要確定一行中哪些數(shù)據(jù)需要本控制器處理,??刂破鹘厝∶啃兄械?28×ID- 128×(ID+1)-1列的數(shù)據(jù),同時(shí)將ID號(hào)加1,,其他數(shù)據(jù)原樣輸出,,送給下一級(jí)控制器。這樣的控制方法比常用的撥碼開關(guān)法更加靈活可靠,。
4.3 Gamma校正和交織
Gamma校正可以使LED顯示效果更接近于人眼的生理特性,而且由于PXA255輸出的是8位數(shù)據(jù),系統(tǒng)需要將其校正為12位,,大大提高了顯示的對(duì)比度,。由于LED顯示控制器采用逐位顯示的方法,輸入的數(shù)據(jù)與輸出到LED顯示屏上的數(shù)據(jù)組織形式不一樣:前者按像素點(diǎn)排列,,而后者則按像素?cái)?shù)值的不同位數(shù)組織,。
4.4 控制輸出
12位數(shù)據(jù)顯示的時(shí)間分別為(64,32,16,8,4,2,1,1/2,1/4,1/8,1/16,1/32) * 128 * Tsclk,其中Tsclk為串行移位時(shí)鐘,。交織之后,,不同權(quán)重的數(shù)據(jù)顯示信號(hào)顯示有效時(shí)間不同,即可達(dá)到顯示的效果,。
總線調(diào)度器將交織后的數(shù)據(jù)寫入本模塊的FIFO,。由模塊內(nèi)部生成讀取該FIFO的控制信號(hào),并對(duì)其進(jìn)行計(jì)數(shù),。模塊內(nèi)需要對(duì)移位個(gè)數(shù)及權(quán)重進(jìn)行計(jì)數(shù),,以決定發(fā)出鎖存信號(hào)及顯示信號(hào)的有效時(shí)間。
5 結(jié)論
實(shí)驗(yàn)測(cè)試結(jié)果表明,,該系統(tǒng)亮度合適,,使用分辨率細(xì)膩(64G色),場(chǎng)掃描頻率高(約400 Hz),,像素高(320×240點(diǎn)),,可用于戶外廣播級(jí)應(yīng)用。該設(shè)計(jì)通過逐點(diǎn)調(diào)節(jié)亮度,,從而可以使采購(gòu)廠商放寬LED在亮度和顏色方面的要求,,LED采購(gòu)的成本也隨之降低,從8位增至12位使圖像的顏色等級(jí)大大增加,,特別在低亮度區(qū)可使圖像完美再現(xiàn),,而Gamma校正則使LED顯示屏所進(jìn)行的亮度變換更符合人眼的生理特點(diǎn)。此外,,除接收來自ARM的信號(hào)外,,還可通過HDMI接口接收來自機(jī)頂盒的數(shù)據(jù)信號(hào),有廣闊的市場(chǎng)應(yīng)用前景,。