康志強(qiáng),汪 佳,湯勇明
(東南大學(xué)電子科學(xué)與工程學(xué)院,南京 210096)
在顯示技術(shù)迅速發(fā)展的今天,光立方[1]作為一種新型信息發(fā)布媒體,給人們帶來(lái)了一種全新的視覺(jué)體驗(yàn)。本文研究了采用三維藍(lán)光LED 陣列作為顯示載體,F(xiàn)PGA 作為控制平臺(tái)的方案,對(duì)系統(tǒng)內(nèi)部算法進(jìn)行合理劃分及處理,充分利用FPGA 的高速并行處理能力和NIOS 雙核[2-6]技術(shù),進(jìn)行了一系列應(yīng)用開(kāi)發(fā),為實(shí)現(xiàn)該3D 視覺(jué)信息平臺(tái)提供了一種新的參考解決方案。
本系統(tǒng)的工作原理基于對(duì)簡(jiǎn)單二維LED點(diǎn)陣[7]顯示屏的擴(kuò)展,利用層疊加技術(shù)構(gòu)建出立體LED 矩陣,用FPGA 開(kāi)發(fā)平臺(tái)DE0 進(jìn)行控制系統(tǒng),實(shí)現(xiàn)三維顯示功能。利用人眼的視覺(jué)暫留效應(yīng)實(shí)現(xiàn)簡(jiǎn)單的靜態(tài)圖像顯示和立體動(dòng)畫(huà)顯示,并基于動(dòng)態(tài)顯示實(shí)現(xiàn)真正意義上的三維游戲。
圖1 系統(tǒng)結(jié)構(gòu)框圖
系統(tǒng)總體功能框圖如圖1所示。系統(tǒng)采用NOIS 雙核模式,利用CPU1 控制光立方掃描及人機(jī)交互部分,并進(jìn)行內(nèi)部數(shù)據(jù)運(yùn)算和處理;利用CPU2控制音頻解碼與輸出;雙核間采用MUTEX 互斥量進(jìn)行通信,實(shí)現(xiàn)兩CPU 的同步。整個(gè)光立方系統(tǒng)主要分為3種模式:靜態(tài)模式,動(dòng)態(tài)模式和游戲模式。系統(tǒng)實(shí)現(xiàn)了良好的人機(jī)交互,可通過(guò)觸摸屏等進(jìn)行模式切換。為實(shí)現(xiàn)光立方不同顯示模式的切換與音頻輸出的實(shí)時(shí)同步,在CPU1 嵌入了UCOS-Ⅱ[8]微型操作系統(tǒng)。
針對(duì)系統(tǒng)實(shí)現(xiàn)中數(shù)據(jù)的快速運(yùn)算處理以及外部接口的靈活配置需求,控制平臺(tái)采用Terasic 公司生產(chǎn)的DE0 開(kāi)發(fā)系統(tǒng)。DE0 搭載了Altera Cyclone Ⅲ系列中的EP3C16 FPGA,可提供15,408 LEs(邏輯單元)以及346 I/O,此外,DE0 開(kāi)發(fā)平臺(tái)還搭配了SD 卡、PS2 等豐富的周邊裝置,足以開(kāi)發(fā)復(fù)雜的邏輯控制系統(tǒng),適合作為本光立方系統(tǒng)的控制平臺(tái)。
光立方由512個(gè)藍(lán)色散光LED 組成,分為8層,每層64個(gè)(8x8)LED,每個(gè)LED 跟其他LED 之間都留有一定的間距,保持良好的通透性,利用LED 矩陣自身的空間立體性,達(dá)到三維顯示的效果。具體的連接為:每層64個(gè)LED 的陰極連接在一起,連接到三極管上,三極管由74HC138 控制是否對(duì)地導(dǎo)通,豎直方向同列的8個(gè)LED 的陽(yáng)極連在一起,連接到鎖存器組成的列控制模塊的輸出端。光立方共有64個(gè)列單元,可用8個(gè)8 bit 鎖存器進(jìn)行控制。
圖2 光立方驅(qū)動(dòng)電路
光立方掃描驅(qū)動(dòng)[9]電路分為層驅(qū)動(dòng)電路和列驅(qū)動(dòng)電路。層驅(qū)動(dòng)電路產(chǎn)生層掃描信號(hào),工作時(shí),F(xiàn)PGA 輸出層控制信號(hào),然后由74HC138 譯碼器譯碼,選通或關(guān)閉與每一層LED 陰極相連的三極管,由此來(lái)控制每一層是否對(duì)地導(dǎo)通。當(dāng)三極管輸出為高時(shí),選通對(duì)應(yīng)的LED 層,當(dāng)三極管輸出為低時(shí),關(guān)閉對(duì)應(yīng)的LED 層。豎直方向同列的LED 的陽(yáng)極連接在一起,然后分別連接到8個(gè)鎖存器(74HC574)的輸出端,當(dāng)鎖存器輸出為高,且LED 層被選通時(shí),對(duì)應(yīng)的LED 被點(diǎn)亮。光立方的空間圖像信息被分為8 層,列驅(qū)動(dòng)電路將每層的數(shù)據(jù)信號(hào)依次送到選通的LED 列上,每層的64個(gè)LED 由8個(gè)8 bit 的鎖存器來(lái)分時(shí)控制,利用74HC138 進(jìn)行8個(gè)鎖存器的分時(shí)選通,當(dāng)每層的控制數(shù)據(jù)都寫(xiě)入到鎖存器后,再通過(guò)層選信號(hào)選通相應(yīng)層,在一個(gè)周期內(nèi)依次掃完8 層,由于一個(gè)周期的時(shí)間小于人眼的視覺(jué)暫留時(shí)間,所以從人眼看來(lái)是一幅完整的立體圖案。這樣便使用15個(gè)IO 擴(kuò)展口來(lái)實(shí)現(xiàn)512個(gè)LED 的分時(shí)控制。通過(guò)這樣的工作原理就可以在光立方平臺(tái)上達(dá)到靜態(tài)畫(huà)面、動(dòng)畫(huà)和立體小游戲等功能的實(shí)現(xiàn)。
光立方的掃描過(guò)程有兩種方案:一是待8 層全部掃描完成后再進(jìn)行信號(hào)輸出;二是每層掃描完成后即進(jìn)行信號(hào)輸出??紤]到掃描連貫性、均勻性以及人眼的視覺(jué)特性,這里采用第2種方案。
為避免光立方掃描過(guò)程中每列間因信號(hào)串?dāng)_而影響發(fā)光效果,在掃描每層前,先通過(guò)鎖存器的輸出使能端屏蔽輸出,等到每層全部掃描完后再打開(kāi)使能端進(jìn)行信號(hào)輸出。
音頻輸出模塊采用了硬解碼方式,通過(guò)擴(kuò)展IO口輸出音頻數(shù)據(jù)并控制VS1003IC 對(duì)音頻進(jìn)行解碼。音頻控制部分有兩種實(shí)現(xiàn)方案。一是音頻模塊使用與其他模塊共用一個(gè)NOIS 軟核,即系統(tǒng)單CPU模式;二是音頻模塊另外使用一個(gè)單獨(dú)的NOIS核控制,即系統(tǒng)雙CPU模式。因?yàn)橥獠拷涌谳^多,且每部分實(shí)時(shí)性要求都很高,為保證音質(zhì),系統(tǒng)使用了NIOS 雙核技術(shù),用CPU2 控制音頻模塊,并利用MUTEX 互斥量成功實(shí)現(xiàn)了雙CPU 間的通信,解決了外部接口多,算法復(fù)雜,工作壓力大和實(shí)時(shí)性要求高之間的矛盾。
因?yàn)橐纛l數(shù)據(jù)量較大,系統(tǒng)采用SD 卡來(lái)存儲(chǔ)音頻信息。通過(guò)對(duì)已有NIOS IP 核的改寫(xiě),使用SPI通信協(xié)議讀取SD 卡數(shù)據(jù),并對(duì)成功移植了文件系統(tǒng)FAT16,實(shí)現(xiàn)了大量數(shù)據(jù)的存儲(chǔ)和讀取。在播放音樂(lè)時(shí),首先將音頻數(shù)據(jù)從SD 卡中讀到RAM 中,再依次送給VS1003 音頻模塊進(jìn)行解碼播放。
人機(jī)交互媒介采用觸摸屏,顯示部分采用SSD1289IC 控制器驅(qū)動(dòng)的TFT 屏,分辨率為320×240,顯示畫(huà)面清晰,觸摸感應(yīng)部分采用ADS7843IC。
SSD1289IC 提供了多種通信方式,例如SPI模式傳輸,8080-16 bit 并行傳輸?shù)?。為提高刷屏速率,?yōu)化系統(tǒng),我們采用了8080-16 bit 并行傳遞模式,并通過(guò)時(shí)序優(yōu)化,很好地實(shí)現(xiàn)了TFT 屏顯示??偟墓ぷ髟頌?將圖片按照RGB565模式取模保存,顯示時(shí)利用SDRAM 作為緩存。每次刷屏?xí)r依次將每個(gè)像素點(diǎn)的RGB值通過(guò)16 bit 并行模式傳遞給SSD1289IC 內(nèi)部RAM,從而實(shí)現(xiàn)圖片顯示。
ADS7843 是一個(gè)內(nèi)置12 bit模數(shù)轉(zhuǎn)換、低導(dǎo)通電阻模擬開(kāi)關(guān)的串行接口芯片。供電電壓2.7 V~5 V,參考電壓VREF為1 V~+VCC,轉(zhuǎn)換電壓的輸入范圍為0~VREF,最高轉(zhuǎn)換速率為125 kHz。因其內(nèi)部結(jié)構(gòu)很容易實(shí)現(xiàn)電極電壓的切換,并能進(jìn)行快速A/D 轉(zhuǎn)換。
ADS7843 支持兩種參考電壓輸入模式:一種是參考電壓固定為VREF,另一種采取差動(dòng)模式,參考電壓來(lái)自驅(qū)動(dòng)電極。采用差動(dòng)模式可以消除開(kāi)關(guān)導(dǎo)通壓降帶來(lái)的影響。為提高采樣精度,IC 選用了差動(dòng)模式進(jìn)行采樣。
系統(tǒng)采用NIOS 的雙CPU 工作模式,CPU1 主要負(fù)責(zé)模式切換、內(nèi)部算法處理和光立方掃描,CPU2 主要進(jìn)行音頻解碼控制與播放,CPU 間通過(guò)MUTEX 互斥量進(jìn)行通信。上電復(fù)位后,兩CPU 分別加載程序數(shù)據(jù),并進(jìn)行各功能模塊的初始化。可以通過(guò)觸摸屏與系統(tǒng)進(jìn)行交互,實(shí)現(xiàn)模式控制、音頻播放等。通過(guò)CPU1 內(nèi)部算法處理后,在定時(shí)中斷中進(jìn)行光立方掃描。因光立方掃描需每1 ms 中斷一次,對(duì)其他部分的處理影響較大。為解決這一問(wèn)題,這里采用嵌入微型操作系統(tǒng)UCOS-Ⅱ進(jìn)行實(shí)時(shí)任務(wù)調(diào)度,以實(shí)現(xiàn)各部分功能單元的有序進(jìn)行。軟件工作流程如圖3所示。
在定時(shí)中斷中實(shí)現(xiàn)光立方掃描的主要時(shí)序控制,過(guò)程如下:
(1)關(guān)閉寄存器輸出;
(2)通過(guò)8 次循環(huán),對(duì)光立方一層的8 列進(jìn)行分時(shí)賦值、選通、掃描;
(3)打開(kāi)寄存器輸出;
(4)通過(guò)譯碼器進(jìn)行層選。
1 ms 定時(shí)中斷函數(shù)如下:
系統(tǒng)除了可對(duì)光立方進(jìn)行可控掃描外,還進(jìn)行了動(dòng)態(tài)文字及圖像顯示以及3D 貪吃蛇等應(yīng)用開(kāi)發(fā)。應(yīng)用開(kāi)發(fā)的關(guān)鍵在于對(duì)各個(gè)LED 的顯示位置與時(shí)間進(jìn)行可控設(shè)計(jì),在充分考慮人眼視覺(jué)特征的情況下,通過(guò)良好的邏輯設(shè)計(jì),以實(shí)現(xiàn)相關(guān)的應(yīng)用開(kāi)發(fā)。
3D 貪吃蛇游戲的軟件開(kāi)發(fā),結(jié)構(gòu)簡(jiǎn)單清晰,體現(xiàn)了良好的邏輯設(shè)計(jì)。軟件設(shè)計(jì)將光立方掃描和貪吃蛇內(nèi)部數(shù)據(jù)處理分開(kāi),以達(dá)到各模塊的獨(dú)立性和簡(jiǎn)潔性。
貪吃蛇主要數(shù)據(jù)結(jié)構(gòu):
貪吃蛇相關(guān)函數(shù):
ps2_init和snakegame_init 函數(shù)分別完成PS/2 鍵盤(pán)初始化和貪吃蛇游戲的初始化,ps2_check和snake_move 函數(shù)分別進(jìn)行鍵盤(pán)檢測(cè)和貪吃蛇數(shù)據(jù)處理。
從二維顯示出發(fā),利用真正3D 空間排列的LED點(diǎn)陣和人眼的視覺(jué)暫留效應(yīng)實(shí)現(xiàn)了光立方3D顯示效果。該系統(tǒng)可以進(jìn)行圖像立體靜態(tài)顯示和音樂(lè)立方動(dòng)態(tài)顯示,并基于動(dòng)態(tài)顯示實(shí)現(xiàn)了真正意義上的三維小游戲。其觀賞性和娛樂(lè)性強(qiáng),易于移植,具有很高的實(shí)用價(jià)值。由于控制部分設(shè)計(jì)需求較為復(fù)雜,本文采用NIOS 軟核實(shí)現(xiàn)。通過(guò)NIOS 雙核技術(shù),使用兩個(gè)CPU 同時(shí)工作,解決了設(shè)計(jì)具體實(shí)施中遇到的接口較多,算法復(fù)雜等難題。為提高系統(tǒng)實(shí)時(shí)性,采用嵌入了UCOS Ⅱ微型操作系統(tǒng)進(jìn)行任務(wù)調(diào)度,效果也很理想。
圖4 實(shí)現(xiàn)效果圖
當(dāng)然,該作品仍有較多改進(jìn)空間,如由于限于硬件資源的限制,光立方的分辨率還不是很高,只能顯示一些簡(jiǎn)單的圖像和動(dòng)畫(huà),同時(shí),現(xiàn)在只能進(jìn)行單色顯示,有可能進(jìn)行全彩LED[10]顯示改進(jìn)。如果應(yīng)用于一些較大型的場(chǎng)所,只要按照給出的設(shè)計(jì)方案對(duì)外圍電路進(jìn)行相應(yīng)擴(kuò)展就可以成功實(shí)現(xiàn)。
[1]LED Cube3-dimensional display[EB/OL].http://www.instructables.com/id/Led-Cube-8x8x8/.
[2]楊軍.基于FPGA 的SOPC 實(shí)踐教程[M].科學(xué)出版社,2010.
[3]赫建國(guó),倪德克,鄭燕.基于Nios Ⅱ內(nèi)核的FPGA 電路系統(tǒng)設(shè)計(jì)[M].北京:電子工業(yè)出版社,2010.
[4]Altera Corp.Creating Multiprocessor NiosⅡSystem Tutorial[EB/OL].Altera.2011.
[5]高世明,孟令軍,李寶剛.基于NIOS 多核處理器的JPEG 解碼的設(shè)計(jì)與實(shí)現(xiàn)[J].器件與應(yīng)用,2011,35(5).
[6]張榮,黃?,摚畲褐?基于NIOSⅡ軟核處理器的嵌入式測(cè)試系統(tǒng)軟硬件設(shè)計(jì)研究[J].計(jì)算機(jī)測(cè)量與控制,2012(2).
[7]王浩然,秦會(huì)斌.LED點(diǎn)陣屏顯示單元的設(shè)計(jì)與驅(qū)動(dòng)控制[J].電子器件,2010,33(5):550-552.
[8]周航慈.基于嵌入式實(shí)時(shí)操作系統(tǒng)的程序設(shè)計(jì)技術(shù)[M].北京:北京航空航天大學(xué)出版社,2011.
[9]閔劍,余菲,梁蓓.一種應(yīng)用于AMOLED 的陣列掃描控制電路[J].電子器件,2011,34(3):303-306.
[10]談衛(wèi)星,胡建人.基于STM32 的全彩LED 顯示屏系統(tǒng)的設(shè)計(jì)[J].電子器件,2011,34(3):258-260.