本係統采用ARM+FPGA的架構,充分利用了ARM的超強處理能力和豐富的接口,實現真正的網絡遠程操作,因此不僅可以作為一般的LED顯示屏控製器,更可以將各顯示節點組成大型的戶外廣告傳媒網絡。而FPGA是一種非常靈活的可編程邏輯器件,可以像軟件一樣編程來配置,從而可以實時地進行靈活而方便的更改和開發,提高了係統效率。
1 獨立視頻LED係統
LED顯示屏的主要性能指標有場掃描頻率、分辨率、灰度級和亮度等。分辨率指的是控製器能控製的LED管的數量,灰度級是對顏色的分辨率,而亮度高則要求每個(ge) 灰度級的顯示時間長。顯然,這3個(ge) 指標都會(hui) 使得場掃描頻率大幅度降低,因此需要在不同的場合對這些指標進行適當的取舍。通常灰度級、亮度和場掃描頻率由單個(ge) 控製器決(jue) 定,而分辨率可以通過控製器陣列的方式得到很大的提高。這樣,每個(ge) 控製器的灰度和亮度很好,場掃描頻率也適當,再通過控製器陣列的形式,實現大的控製麵積,即可實現顏色細膩的全彩色超大屏幕的LED顯示控製器。獨立視頻LED係統完全脫離計算機的控製,本身可以實現通信、視頻播放、數據分發、掃描控製等功能。為(wei) 了實現大屏幕、全彩色、高場頻,本係統采用控製器陣列模式,如圖1所示。
圖1 獨立視頻LED係統結構
係統可以通過網絡接口(以太網接口)由網絡服務器端更新本地的數據,視頻播放部分則通過對該數據進行解碼,獲得RGB格式的視頻流。再通過數據分發單元,將這些數據分別發送到不同的LED顯示控製器上,控製器將播放單元提供的數據顯示到全彩色大屏幕LED上。
2 通信接口和視頻播放單元
本係統的通信接口和視頻播放部分由ARM uClinux實現。ARM (Advanced RISC Machine)是英國ARM公司設計開發的通用32位RISC微處理器體(ti) 係結構,設計目標是實現微型化、低功耗、高性能的微處理器。Linux作為(wei) 一種穩定高效的開放源碼式操作係統,在各個(ge) 領域都得到了廣泛的應用,而uClinux則是專(zhuan) 門針對微控製領域而設計的Linux係統,具有可裁減、內(nei) 核小、完善的網絡接口協議和接口、優(you) 秀的文件係統以及豐(feng) 富的開源資源等優(you) 點,正被越來越多的嵌入式係統采納。係統中使用Intel XScale係列的PXA255芯片,與(yu) ARM v5TE指令集兼容,沿用了ARM的內(nei) 存管理、中斷處理等機製,並在此基礎上做了一些擴展,如DMA控製器、LCD控製器等。由於(yu) ARM9的處理能力有限,目前隻用其播放320×240像素的視頻。
係統視頻播放的數據來自於(yu) 係統中的SD存儲(chu) 卡(Secure Digital Memory Card)。更新SD卡的數據有兩(liang) 種方式:一種是用計算機更新SD卡的數據;另一種是通過網絡接收服務器的數據,直接由ARM更新SD卡。此外,播放器也可以直接播放網絡傳(chuan) 送的MPEG-4格式數據口由於(yu) XScale未提供物理層接口,若想實現網絡功能需外接一片物理層芯片。本係統選用SMSC公司的高性能100M以太網控製器LAN9118。
3 視頻數據分發
由於(yu) 控製器采用陣列模式,因此需要對視頻源提供的數據進行分發,將不同行列的數據正確地送入不同的控製器。
3.1 數據分發單元方案
本係統中的LED控製器灰度級高達3×12位(可顯示多達64G種顏色)、控製區域為(wei) 128×128點。係統播放單元提供的數據為(wei) 320×240像素,因此需要分解成6個(ge) LED控製器來控製(見圖1)。因此,需要將PXA255提供的RGB數據分3組發送到這6塊控製器,以FPGA實現,方案如圖2所示。
圖2 數據分發單元方案
LCD接口子模塊接收PXA255 LCD接口的數據和控製信號,將這些輸入的數據進行逐點校正之後存入SDRAM,然後將該場數據分成3 組,每組128行(最後一組隻有64行,為(wei) 了後麵控製板的一致性,此處由總線調度器補零),同時發送,之後由LED顯示控製器處理。
3.2 存儲(chu) 器分配和總線調度
為(wei) 了方便各模塊間的接口,有利於(yu) 不同時鍾域的數據同步,係統的存儲(chu) 器采用兩(liang) 級存儲(chu) 模式,即SDRAM作為(wei) 主存儲(chu) 器,而各模塊也有相應FIFO作為(wei) Cache, SDRAM具有容量大、帶寬高、價(jia) 格便宜等優(you) 點;但是控製比較複雜,每次讀寫(xie) 有多個(ge) 控製和等待周期。因此為(wei) 了提高效率,通常采用地址遞增的碎發讀寫(xie) 方式,而不能像SRAM那樣隨時讀取任意地址的數據。
本方案采用完全動態的內(nei) 存分配機製,即每個(ge) 模塊請求時,如果不是同一場數據,則可以分配到一塊新的內(nei) 存,而一旦該內(nei) 存的數據不再有效,則釋放這塊內(nei) 存。這樣,每塊內(nei) 存都有自己的屬性,標誌是使用中的內(nei) 存,還是空閑內(nei) 存,以及當前內(nei) 存中的數據是否在等待被使用的隊列中,因此內(nei) 存需要分成3塊。其中一塊存儲(chu) 逐點校正參數,一塊存儲(chu) 當前場數據,另一塊存儲(chu) 上一場數據(即正在發送的數據)。這就要求在一個(ge) 場同步周期內(nei) 需要將數據發送完畢,而這一要求是完全可以達到的。
總線調度是本模塊的核心部分,必須精確計算總線帶寬的占用情況,確定各部分FIFO的深度,以保證各個(ge) FIFO不會(hui) 出現溢出或讀空的現象。
總線調度器需要調度3塊存儲(chu) 器,還需要為(wei) 每一個(ge) 模塊維護一個(ge) 偏移地址的首地址,以及一個(ge) 偏移地址計數寄存器。為(wei) 了便於(yu) 計算偏移地址,用SDRAM物理上的兩(liang) 行存儲(chu) 一行的數據,而將多餘(yu) 部分空餘(yu) 。
總線調度器的仲裁算法為(wei) :逐點校正參數與(yu) 校正後數據寫(xie) 人SDRAM的優(you) 先級一樣,采用先來先得的方式占用總線,分別由各自FIFO的指針來觸發總線占用。一場數據寫(xie) 入SDRAM完畢之後,開始發送。需要依次讀出第n,n+ 128,n+ 256行的數據給數據發送FIFO0,1,2,等待數據發送單元啟動發送。
3.3 LCD接口和逐點校正
PXA255 的LCD接口配置為(wei) smart panel形式,具體(ti) 時序關(guan) 係可參考PXA255的手冊(ce) 。FPGA根據這些時序關(guan) 係,將數據讀入,進行下一步的處理。
由於(yu) 在生產(chan) 過程中LED管的參數不可能完全一致,因此為(wei) 了獲得良好的圖像顯示效果,必須對LED管進行篩選。這也是LED屏價(jia) 格昂貴的一個(ge) 重要原因。
采用逐點校正技術,可逐點調節LED的亮度,將顯示屏亮度的一致性提高一個(ge) 數量等級,從(cong) 而可以使采購廠商放寬LED在亮度和顏色方麵的要求,LED采購的成本也隨之大大降低。此外,係統采用的逐點校正技術,可以在線修改校正參數,使得LED屏在投入運營之後也可以修改校正參數,補償(chang) 由於(yu) LED管老化對顯示效果的影響,提高LED屏的使用壽命。因此,逐點校正技術使LED模塊作為(wei) 室內(nei) 外全彩色顯示屏的基本元件成為(wei) 理想方案。
逐點校正參數存於(yu) SD卡中,在係統上電之後,ARM首先將該數據通過LCD接口(此時配置為(wei) GPIO)傳(chuan) 送到FPGA, FPGA將其存入SDRAM 中。此後,即可對LCD接口輸入的數據進行校正。
3.4 數據發送
在數據發送時,每行數據作為(wei) 1幀,加入特定的幀頭之後開始發送。為(wei) 了減少總線數量,采用串行總線形式,每組信號共有4路,分別是源同步時鍾和RGB三基色的串行數據。信號均以LVDS(Low Voltage Differential Signal,低電壓差分信號)的形式傳(chuan) 輸。LVDS采用差分方式傳(chuan) 送數據,有比單端傳(chuan) 輸更強的共模噪聲抑製能力,可實現長距離、高速率和低功耗的傳(chuan) 輸。Altera公司的Cyclone II係列FPGA可以方便地通過I/O配置獲得LVDS的能力。
發送幀頭由4字節的同步頭+數據當前行號+ID號組成。由於(yu) 圖像的連續像素值的相關(guan) 性比較高,因此使用偽(wei) 隨機碼作為(wei) 同步頭,其同步性能比較可靠。當前行號用於(yu) 控製器判斷是否出現丟(diu) 幀,並根據當前的行號決(jue) 定當前數據的存儲(chu) 地址。由於(yu) 每一組數據實際上由兩(liang) 個(ge) 控製器分別處理(見圖1),所以需要判斷標誌來截取不同的數據部分。ID號即是不同控製器截取某行中不同列數的標準,數據在發送時ID為(wei) 零。
4 全彩色LED顯示控製器
全彩色LED顯示控製器負責接收、轉換和處理串入的RGB三基色信號,以一定的規律和方式將信號傳(chuan) 送到LED顯示屏上顯示。控製器直接決(jue) 定了顯示屏的顯示效果,也決(jue) 定了LED顯示屏性能的優(you) 劣。控製器的結構如圖3所示。
圖3 顯示控製器結構框圖
控製器的架構與(yu) 數據分發類似,也采用二級存儲(chu) 模式,主要有數據接收、Gamma校正和交織、掃描控製輸出以及總線調度和SDRAM控製四部分。
4.1 存儲(chu) 器分配和總線調度
由於(yu) 數據輸入場頻與(yu) LED掃描場頻通常不能成整數倍關(guan) 係,可能出現輸入一場數據結束,該場數據的處理結果(Gamma校正和交織後)需要寫(xie) 入SDRAM,而此時掃描一場沒有結束,即正在讀的那個(ge) 區域不能覆蓋,而上一場的數據還沒有顯示也不能覆蓋,因此交織地寫(xie) 入(即掃描的讀出)需要開辟三塊分區。
總線仲裁算法為(wei) :控製輸出模塊和寫(xie) 人模塊采用先來先得的算法,而校正和交織過程的讀寫(xie) ,則優(you) 先級最低,可以在前麵二者申請時被掛起,隻有當前二者不再需要總線時,才可以分配到總線的使用權。
4.2 數據接收
數據接收單元除了需要同步判決(jue) 、串並轉換之外,還要確定一行中哪些數據需要本控製器處理。控製器截取每行中第128×ID-128×(ID+1)-1列的數據,同時將ID號加1,其他數據原樣輸出,送給下一級控製器。這樣的控製方法比常用的撥碼開關(guan) 法更加靈活可靠。
4.3 Gamma校正和交織
Gamma校正可以使LED顯示效果更接近於(yu) 人眼的生理特性,而且由於(yu) PXA255輸出的是8位數據,係統需要將其校正為(wei) 12位,大大提高了顯示的對比度。由於(yu) LED顯示控製器采用逐位顯示的方法,輸入的數據與(yu) 輸出到LED顯示屏上的數據組織形式不一樣:前者按像素點排列,而後者則按像素數值的不同位數組織。
4.4 控製輸出
12位數據顯示的時間分別為(wei) (64,32,16,8,4,2,1,1/2,1/4,1/8,1/16,1/32) * 128 * Tsclk,其中Tsclk為(wei) 串行移位時鍾。交織之後,不同權重的數據顯示信號顯示有效時間不同,即可達到顯示的效果。
總線調度器將交織後的數據寫(xie) 入本模塊的FIFO。由模塊內(nei) 部生成讀取該FIFO的控製信號,並對其進行計數。模塊內(nei) 需要對移位個(ge) 數及權重進行計數,以決(jue) 定發出鎖存信號及顯示信號的有效時間。
5 結論
實驗測試結果表明,該係統亮度合適,使用分辨率細膩(64G色),場掃描頻率高(約400 Hz),像素高(320×240點),可用於(yu) 戶外廣播級應用。該設計通過逐點調節亮度,從(cong) 而可以使采購廠商放寬LED在亮度和顏色方麵的要求,LED采購的成本也隨之降低,從(cong) 8位增至12位使圖像的顏色等級大大增加,特別在低亮度區可使圖像完美再現,而Gamma校正則使LED顯示屏所進行的亮度變換更符合人眼的生理特點。此外,除接收來自ARM的信號外,還可通過HDMI接口接收來自機頂盒的數據信號,有廣闊的市場應用前景。