1 引言
LED 的發(fā)展已過了幾十年了,它現(xiàn)在的技術(shù)也相當(dāng)成熟了。它有很寬的可視角,并且能夠 顯示圖像、數(shù)字、視頻,還能夠通過紅綠籃三種LED 組合成任一顏色系統(tǒng),但是不推薦在 小顯示屏上顯示視頻。典型應(yīng)用是在商場、高速公路、大型體育場和白天日照下的舞臺。
我們都知道,由PN 結(jié)構(gòu)成的LED 需要用直流電源驅(qū)動發(fā)出其顏色,改變通過PN 結(jié)上 的電流達(dá)到顯示顏色亮度的變化。每個顯示板上的LED 都是被恒流源產(chǎn)生的可控電流單獨(dú) 直接控制,雖然一個LED 顏色灰度容易產(chǎn)生,但是大量LED 組成的LED 顯示屏就需要一個 非常復(fù)雜的控制系統(tǒng)來控制。本文的目的是實現(xiàn)這個基于FPGA 的具有高刷新率的全彩LED 顯示控制系統(tǒng)。本文介紹了LED 顯示系統(tǒng)中三基色發(fā)光管同時產(chǎn)生灰度的工作原理,也描述 了基于FPGA 的 LED 顯示系統(tǒng)模型在細(xì)節(jié)上的實現(xiàn)。
2 LED 顯示面板的工作原理
根據(jù)驅(qū)動 LED 的工作原理LED 顯示屏有靜態(tài)、虛擬、掃描之分,那么對應(yīng)的LED 顯示控制系統(tǒng)也不同。本文介紹的是適合掃描屏的LED 控制系統(tǒng)。
目前,許多LED 顯示面陣板是利用8*8 的LED 矩陣塊拼接起來,這有益于PCB 的設(shè) 計和節(jié)省空間,在本文的研究中就是使用這樣的LED 面陣板[3]。如圖1 所示,由8 塊8*8 的矩陣塊組成,三色LED 點(diǎn)陣?yán)妹啃械年帢O作為公共端,行的選通是通過3-8 譯碼器驅(qū) 動NPN 三極管來控制的,并且任一時刻只有一行被Ri 選通;每列有3 路輸入信號Rc、Gc、 Bc 分別單獨(dú)控制每列的紅、綠、藍(lán)LED,每種顏色有8 個8 位移位寄存器(74HC595)提 供恒流去控制列。為了便于讀圖,在圖中沒畫出LED 和驅(qū)動芯片間的限流電阻。
很明顯,能得到的顏色值僅僅是紅、綠、藍(lán)三種顏色組成的,顏色灰度實際上是依靠改 變顏色亮度值產(chǎn)生的,顏色亮度的控制是通過驅(qū)動LED 像素點(diǎn)在一周期內(nèi)總的導(dǎo)通時間來 決定的。為了產(chǎn)生顏色灰度需要對LED 像素值進(jìn)行重新分配,這需要在控制系統(tǒng)里實現(xiàn)對 同一位面的數(shù)據(jù)進(jìn)行組合,然后發(fā)送到LED 面陣板。
LED 顯示屏為了獲得更高的亮度等級,顯示控制器必須能夠在一個可接受的周期內(nèi)刷 新整個LED 屏,如果這個不能達(dá)到,閃變效應(yīng)就會影響觀眾。微處理器和微控制器在普通 的控制方面是很強(qiáng)的芯片,但是它不太適合控制帶合適亮度等級和高刷新率的LED 顯示屏。 所以使用基于可編程邏輯器件的控制器來實現(xiàn)是一個很好的選擇 [4]。
如圖 2 所示的結(jié)構(gòu),LED 顯示控制由器由LEDINTERFACE、BUFFERUPDATA 和 VIDEORAM 模塊組成[5]。LEDINTERFACE 和BUFFERUPDATA 兩個模塊共用一個SRAM 存儲器,它類似于一雙通道存儲器。以下幾個部分詳細(xì)說明這幾個模塊。
3.1 LEDINTERFACE 模塊
LEDINTERFACE 模塊是負(fù)責(zé)控制圖1 所示的LED 點(diǎn)陣的顏色顯示,如圖3 所示為 LEDINTERFACE 模塊的狀態(tài)機(jī)的狀態(tài)圖。它能夠很方便的表現(xiàn)狀態(tài)轉(zhuǎn)換和數(shù)據(jù)流動,最重 要的是一個狀態(tài)圖能夠簡單的修改成VHDL 程序。
從這圖中看出,LEDINTERFACE 模塊的初始化狀態(tài)是INIT_SIGNALS,它初始化所有 涉及到LED 顯示屏上的信號,然后準(zhǔn)備轉(zhuǎn)換到SET_PIXEL_ADDRESS 狀態(tài),這個狀態(tài)計 算輸出數(shù)據(jù)緩沖器中的地址(VIDEORAM 的地址),在READ_PIXEL 狀態(tài)讀出數(shù)據(jù)。注意, READ_PIXEL 不僅是取數(shù)據(jù)而且決定當(dāng)前的LED 狀態(tài)是否需要去置位或清除有關(guān)像素數(shù)據(jù) 的亮度值和當(dāng)前位面。READ_PIXEL 狀態(tài)利用一個PIXCOLOR 表,如表1 所示,這個表存 儲的是像素顏色值和亮度的關(guān)聯(lián)數(shù)據(jù)。用作重新得到LED 狀態(tài)的參量是像素數(shù)據(jù)DataR、 DataG、DataB、Plane,在不增加顯示緩沖區(qū)的情況下,把一個像素的顏色值直接轉(zhuǎn)換成LED 的亮度等級,不僅是一個簡單的方法,而且相比較以前的方法能減少硬件復(fù)雜度和存儲器的 使用。
下面舉一像素顏色轉(zhuǎn)換的例子,說明這個方法的工作過程。例如首先位面值是‘0’,1 個點(diǎn)的像素值是是(4,0,2),分別是RED,GREEN,BLUE,在READ_PIXEL 期間,這 些像素值同時從VIDEORAM 中取出存到DataInR,DataInG,DataInB,再通過查表1 可以 得到,位面值為‘0’時的LED 狀態(tài)(RI,GI,BI)即第PIXCOLORE 第一位(1,0,1); 位面值是‘1’時即第二位(1,0,1);位面值‘3’時即第三位(1,0,0)。很顯然,32 個位面值都取完后,這個像素點(diǎn)的RGB 發(fā)光管在這個周期的導(dǎo)通時間分別是4/32,0/32, 2/32,實際上由于LED 面板是1/8 掃描的,RGB 發(fā)光管的導(dǎo)通時間分別是4/256,0/256, 2/256,這個過程產(chǎn)生了LED 的不同灰度[6]。
一旦 R、G、B 狀態(tài)定下來,狀態(tài)機(jī)的下兩個狀態(tài)ACTIVE_CLK 和INACTIVE_CLK 把 RDi、GDi、BDi 里的數(shù)據(jù)移位到LED 面板上,這些操作被重復(fù)直到當(dāng)前所有LED 數(shù)據(jù)分 配完,重復(fù)次數(shù)由一個計數(shù)器控制,計數(shù)器的最大值是LED 面板每行的LED 數(shù)。
當(dāng)一行所有的 LED 數(shù)據(jù)分配完成后,狀態(tài)機(jī)進(jìn)入OUT_ROW_BUS 狀態(tài),激活LED 顯 示面板的當(dāng)前行,并更新cROW 指向下一行,DELAY 狀態(tài)是為了能夠在退出更新狀態(tài)以前, 在掃描延時的控制下使能行一段周期。多路掃描速率由SCAN_DELAY 控制,在更新行期間 (cROW=cROW+1),如果cROW 小于8,則繼續(xù)回到SET_PIXEL_ADDRESS 狀態(tài)開始掃描 下一行。另外,,如果8 行全部掃描完成,它將進(jìn)到ADVANCE_PLANE 狀態(tài)。從這個狀態(tài) 圖可以看出,顏色位面是32 個,總共能夠顯示的顏色是32*32*32=32768 色。
3.2 BUFFERUPDATA 模塊
BUFFERUPDATA 模塊是作視頻源信號和VIDEOSRAM 的接口部分。BUFFERUPDATA 設(shè)計了只接收24 位RGB 數(shù)據(jù)格式的信號,這種格式的信號可以很容易的從標(biāo)準(zhǔn)的視頻源 信號轉(zhuǎn)換過來,且這種轉(zhuǎn)換模塊需要帶數(shù)據(jù)緩沖區(qū)。
除了24 位顏色數(shù)據(jù)總線,BUFFERUPDATA 模塊還增加了2 個信號:RDB_FULL 和 RGB_RD。RGB_FULL 是指示RGB 視頻源緩沖區(qū)中至少有一個像素值可以讀取, BUFFERUPDATA 模塊去使能RGB_RD 信號,然后通過24 位數(shù)據(jù)總線去讀取視頻源緩沖區(qū) 中的值。如圖3 所示,用有限狀態(tài)機(jī)來描述這個模塊。
從圖 3 可以看出,這個BUFFERUPDATA 模塊的初始狀態(tài)是IDLE,所有有關(guān)信號都在 這個狀態(tài)被初始化,并且檢測RGB_FULL 信號狀態(tài);從IDLE 狀態(tài)到ACF_RD 是通過 RGB-FULL 信號來激勵的;在ACT_RD 和INACT_RD 狀態(tài)為了得到RGB 數(shù)據(jù)強(qiáng)制 BUFFERUPDATA 模塊產(chǎn)生RGB-RD 信號。RGB-RD 有效的時間是DELAY 的值來控制的, DELAY 的值是在ACD-RD 狀態(tài)重復(fù)的時鐘周期數(shù)。
接收完數(shù)據(jù)后,BUFFERUPDATA 模塊沒有立即把數(shù)據(jù)存到VIDEORAM 中,而是檢查 MemBusy 信號的狀態(tài),為了保證VIDEORAM 模塊可操作,即沒有被LEDINTERFACE 模 塊占用;當(dāng)MemBusy 信號無效時,BUFFERUPDATA 模塊就把得到的RGB 數(shù)據(jù)存到相應(yīng) 的VIDEORAM 地址中,每個像素值的讀取/存儲過程的最終狀態(tài)是回到IDLE 狀態(tài)。
3.3 VIDEORAM 模塊的結(jié)構(gòu)
前面提到,VIEDORAM 模塊是LEDINTERFACE 模塊和BUFFERUPDATA 模塊和共用 模塊。實際上一個雙端口RAM 是很容易得到的,這個模塊可能使用一個靜態(tài)RAM 來實現(xiàn)。
在FPGA 里只需綜合相對簡單的SRAM 的接口模塊和另外兩個模塊,這個接口模塊即 VIDEORAM 模塊,事實上這不是一個真正的雙端口模塊。如圖4 所示為VIDEORAM 內(nèi)部 結(jié)構(gòu)圖。很容易看出,這個模塊由以下幾個部分組成:一個2 選1 的8 位地址選擇器、一個 24 位雙向三態(tài)數(shù)據(jù)總線,一個2 選1 的Wr 信號選擇器。
4 FPGA 的功能實現(xiàn)
FPGA內(nèi)部寄存器資源比較豐富,適合做同步時序電路較多的設(shè)計。FPGA是選用Xilinx 公司的有5萬門的XC2S50,它有1728個邏輯單元(LC),384 個可配置邏輯快( CLB) , 32Kbit 的塊RAM, 176 個可用的I/O 口。以上的幾個功能模塊都是在Xilinx 的ISE 平臺上實現(xiàn)的, 三個模塊共消耗62%的資源[7]。
5 結(jié)束語
提出了一種基于FPGA 的LED 掃描屏控制系統(tǒng)的實現(xiàn)方案,通過 硬件和軟件的輔助設(shè)計,完全實現(xiàn)了對LED 顯示屏的掃描控制?;贔PGA 的硬件設(shè)計大 大降低了電路系統(tǒng)的復(fù)雜性,提高了整個系統(tǒng)的開發(fā)效率。
-
FPGA
+關(guān)注
關(guān)注
1629文章
21729瀏覽量
602998 -
led
+關(guān)注
關(guān)注
242文章
23252瀏覽量
660574 -
芯片
+關(guān)注
關(guān)注
455文章
50714瀏覽量
423145
發(fā)布評論請先 登錄
相關(guān)推薦
評論