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