基于FPGA控制的LED漢字滾動(dòng)顯示器設計

發(fā)布時(shí)間:2010-11-9 20:23    發(fā)布者:techshare
關(guān)鍵詞: FPGA , LED , 滾動(dòng) , 漢字 , 顯示器
現代文明的一個(gè)顯著(zhù)特征是城市中隨處可見(jiàn)的五顏六色的廣告宣傳,其中大多都是由LED點(diǎn)陣制作的漢字或圖形廣告,廣泛應用在銀行、醫院、酒店、火車(chē)站、體育場(chǎng)館等各種公共場(chǎng)所。

漢字滾動(dòng)顯示器的傳統設計方法是用單片機來(lái)控制的,雖然單片機方案具有價(jià)格低廉,程序編程靈活等特點(diǎn),但由于單片機硬件資源的限制,未來(lái)對設計的變更和升級,總是要付出較多研發(fā)經(jīng)費和較長(cháng)投放市場(chǎng)周期的代價(jià),甚至有可能需要重新設計。況且,在以顯示為主的系統中,單片機的運算和控制等主要功能的利用率很低,單片機的優(yōu)勢得不到發(fā)揮,相當于很大的資源浪費。

采用EDA技術(shù)的自頂向下的模塊化設計方法,借助相關(guān)開(kāi)發(fā)軟件,例如QualtusⅡ軟件,將硬件描述語(yǔ)言——VHDL程序固化于具有豐富I/O口、內部邏輯和連線(xiàn)資源的FPGA(現場(chǎng)可編程門(mén)陣列)中。該技術(shù)具有系統設計效率高、集成度好、保密性強、易于修改、易于實(shí)現等優(yōu)點(diǎn),成為當今數字系統設計主流技術(shù)。此方式所制作的LED點(diǎn)陣控制器,由于是純硬件行為,具有速度快、可靠性高、抗干擾能力強、開(kāi)發(fā)周期短等顯著(zhù)優(yōu)點(diǎn)。

1 EDA點(diǎn)陣顯示漢字原理

以8×8的LED點(diǎn)陣為例,8×8的LED點(diǎn)陣是由64個(gè)發(fā)光二極管按矩陣形式排列而成,每一行上的發(fā)光管有一個(gè)公共的陽(yáng)極(或陰極),每一列上的發(fā)光管有一個(gè)公共的陰極(或陽(yáng)極),一般按動(dòng)態(tài)掃描方式顯示漢字或圖形。掃描分為點(diǎn)掃描、行掃描和列掃描三種方式。行掃描需要按行抽取字型碼,列掃描則需要按列抽取字型碼。為滿(mǎn)足視覺(jué)暫留要求,若使用點(diǎn)掃描方式,其掃描頻率必須大于16×64=1 024Hz,周期小于1ms。若使用行或列掃描,則頻率必須大于16×8=128Hz,周期小于7.8ms。由于所用實(shí)驗板上提供有1 kHz的時(shí)鐘,本例設計中利用該時(shí)鐘進(jìn)行掃描,使每行掃描時(shí)間為1 ms,實(shí)驗結果顯示亮度合適,F以行掃描為例簡(jiǎn)單說(shuō)明動(dòng)態(tài)掃描顯示的原理。圖1給出漢字“熱”在點(diǎn)陣為列共陽(yáng)時(shí)的行字模。工作時(shí)先將要掃描行的點(diǎn)陣字模從各列上輸出,再讓譯碼器選中(掃描)該行,使本行得以顯示,接著(zhù)再送下一行數據,再使下一行有效,直到8行全被掃描一遍。至此,一幅完整的文字信息就顯現出來(lái),然后再反復掃描這8行直至顯示新的信息。以下設計采用行掃描方式實(shí)現滾動(dòng)顯示。





2 硬件原理圖

整個(gè)電路由五大部分組成:時(shí)鐘計數模塊GEL_CLK,存儲漢字字模的ROM模塊ROMZI,數據分配器模塊MUX,移位模塊YW及顯示模塊XIANSH-I。時(shí)鐘計數模塊用于產(chǎn)生整個(gè)電路所需要的時(shí)鐘及其對時(shí)鐘的計數值,例如:移位時(shí)鐘CLK YW,移位計數器CNT YW,字計數器CNT WORD,顯示掃描計數器CNT SM。ROMZI模塊是由QualtusⅡ中的LPM 1PORT ROM定制成,用來(lái)存儲8個(gè)待顯示的漢字。MUX模塊用于在掃描時(shí)鐘及掃描計數器的作用下,從ROM中讀出一個(gè)漢字的8個(gè)行字模信息,送給移位模塊YW,YW模塊在移位時(shí)鐘及移位計數器作用下,根據SELECT信號選擇對讀出的字模信息,進(jìn)行相應的移位(左移、右移、上移、下移)后,最后送顯示模塊DISP驅動(dòng)LED點(diǎn)陣顯示漢字。原理圖如圖2所示。




3 模塊設計及時(shí)序仿真

3.1 時(shí)鐘計數產(chǎn)生模塊

時(shí)鐘計數產(chǎn)生模塊由1 kHz的輸人時(shí)鐘為基準,進(jìn)行17位的循環(huán)計數CNT[16..O]。該時(shí)鐘,既是動(dòng)態(tài)掃描顯示的時(shí)鐘,也是從ROM中取一個(gè)字8個(gè)字模的時(shí)鐘,對之進(jìn)行的3位循環(huán)計數作為掃描顯示計數器和取一個(gè)字的字型碼計數器。CNT[16..O]中的CNT是對該時(shí)鐘的1 024分頻,將其作為移位時(shí)鐘CNT_YW,周期約為l s。CNT[13…lO]作為4位的移位計數器,是對移位時(shí)鐘CLK_YW的計數,也是對移位位數的統計。16個(gè)狀態(tài)使一個(gè)漢字逐列移進(jìn)點(diǎn)陣,又逐列移出。每經(jīng)過(guò)16個(gè)移位時(shí)鐘,將會(huì )顯示完一個(gè)漢字。CNT[16..14]作為3位的取字計數器。

CNT[16…14]&CNT[2..O]作為ROM地址發(fā)生器。

3.2 ROMZI模塊

利用LPM參數化模塊庫中單口ROM,利用QualtusⅡ中的MegaWizard Plug-In Manager定制而成,定制前首先要制作LPM ROM初始化文件,其中存儲待顯示漢字的字模數據,然后按照LPM MegaWizardPlug-In Manager的向導提示,結合設計要求進(jìn)行定制。

圖3為所定制ROM中的初始化漢字“元旦生日開(kāi)心快樂(lè )”的字型碼。數據分配模塊MUX要求能在8個(gè)時(shí)鐘作用下,從ROM中讀出一行(一個(gè)漢字的8個(gè)字型碼)分別送到數據分配器中的WLl~WL8輸出端。圖4為數據分配模塊在掃描時(shí)鐘作用下讀取的字模數據,比較圖3和圖4可知,仿真結果正確,能滿(mǎn)足題目要求。









3.3 移位模塊YW

移位模塊YW是整個(gè)設計的核心,行掃描實(shí)現左移,是通過(guò)每來(lái)一個(gè)移位時(shí)鐘,將每一行的字模按位左移一位,掃描時(shí)鐘到來(lái)時(shí)送出移位后的新字模。通過(guò)8次移位,可將一個(gè)漢字移出點(diǎn)陣平面,按類(lèi)似的道理,也可以將一個(gè)漢字經(jīng)8次移位后移進(jìn)點(diǎn)陣平面。本例(圖2)中,CNT YW為移位時(shí)鐘的計數值,以WLl~WL8為欲顯示漢字的原始字模,L10~L80為移位后從列上送出的8行顯示字模信息,LLl~LL8為8個(gè)原始字模信息未送出位的暫存信號。設計中需要16個(gè)移位時(shí)鐘,通過(guò)前8個(gè)時(shí)鐘將WLl~WL8字模移進(jìn)LED點(diǎn)陣平面,再經(jīng)后8個(gè)時(shí)鐘,將漢字又一位一位地移出。 移位設計參考文獻中有關(guān)移位寄存器的設計,分計數值為“0000"和非"0000"兩部分處理,對第一行字模的處理為:




其他行可按相同方法處理,具體參見(jiàn)如下的程序:







右移處理方法與上面左移相反,如對第一行可按如下方法處理:





上移時(shí)的部分程序按以下思路編制:L10~L70在CNT_YW為初態(tài)“0000”時(shí),各信號均賦值X“00”,非初態(tài)時(shí),均進(jìn)行上移一位。即:L10<=L20;L20<=L30;…;L60<=L70;L70<=L80;對于L80,在漢字移進(jìn)LED過(guò)程中即前8個(gè)狀態(tài)各移進(jìn)一個(gè)新行,在移出LED即后8個(gè)狀態(tài)時(shí),都補進(jìn)X“00”。程序如下:





下移程序可按相反思路去編。            

3.4 顯示模塊DISP設計

顯示模塊DISP是以CNT_SM為掃描計數器,是對1kHz進(jìn)行三位循環(huán)計數,由前述的時(shí)鐘計數產(chǎn)生模塊產(chǎn)生,WLl~WL8為待送出顯示的8個(gè)8位字型碼,由前述的移位模塊YW提供;SW[7..O]為行掃描輸出信號,連接至點(diǎn)陣的8個(gè)行;DATA[7..0]為行掃描時(shí)對應的列輸出字型碼,對外連至點(diǎn)陣的8列。該模塊參考文獻中數碼管動(dòng)態(tài)顯示程序進(jìn)行設計如下:









4 硬件實(shí)現

上述各模塊分別在QualtusⅡ中通過(guò)了仿真驗證,最后對整體設計進(jìn)行了硬件驗證。將設計載入KH31001開(kāi)發(fā)板的Cyclone工系列EPlC6Q-240C8FPGA器件中,實(shí)驗證明漢字滾動(dòng)顯示掃描情況均正常,能夠按照預想進(jìn)行移位顯示,這說(shuō)明。FPGA的內核硬件工作良好,可以正確地實(shí)現所要求的設計功能。

5 系統擴展

本文是針對8×8點(diǎn)陣設計,故每次取8個(gè)字形碼,如果是16×16點(diǎn)陣,將RONZI中存儲的字形碼改為16位,數據線(xiàn)改為16位,一個(gè)漢字需要16個(gè)16位的字形碼,數據分配模塊MUX、移位模塊YW、顯示模塊DISP,均要將輸入輸出數據中的原來(lái)的8位改成相應的16位。掃描及取字型碼計數器CNT_SM應改為CNT計數器的低4位。一個(gè)16×16點(diǎn)陣漢字的移進(jìn)移出共需32個(gè)狀態(tài)。由5位的計數器提供。如用CNT[16..0]中的14~10位作為該計數器,這可在時(shí)鐘計數器產(chǎn)生單元CLK_GE中應做相應修改,字計數器CNT WORD按照每取16個(gè)字進(jìn)行加1統計。顯示DISP部分的譯碼器要由3-8譯碼改為4-16譯碼。顯示的漢字信息越多,ROM的地址線(xiàn)位數越多,字計數器CNT_WORD應在時(shí)鐘計數器產(chǎn)生單元GE_CLK中,將相應的計數器位數擴展,由CNT計數器的最高位到位15來(lái)承擔。若還是8個(gè)漢字,計數器應為CNT[17..O],CNT[17..15]為字計數器;若為16個(gè)漢字,計數器應為CNT[18..O],CNT[18..15]為字計數器,…,依次類(lèi)推。

6 結語(yǔ)

本文在KH31001開(kāi)發(fā)板上實(shí)現了基于Altera公司的Cyclone I系列FPGA器件EPlC6Q240C8硬件及VHDL硬件描述語(yǔ)言設計的LED點(diǎn)陣漢字滾動(dòng)顯示,能在8×8點(diǎn)陣上滾動(dòng)顯示“元旦生日開(kāi)心快樂(lè )”8個(gè)漢字。文中從LED點(diǎn)陣顯示漢字的原理闡述出發(fā),給出了點(diǎn)陣漢字滾動(dòng)顯示控制器的原理圖,部分模塊的VHDL源程序及時(shí)序仿真圖,并能由按鍵選擇其滾動(dòng)方式:左移、右移、上移、下移等,給出了系統擴展成16×16點(diǎn)陣漢字滾動(dòng)的改動(dòng)思路。從文中描述的系統擴展方案中看出,當系統顯示字符個(gè)數變化時(shí),只需對控制邏輯和連接關(guān)系做適當的修改,再將修改完成的程序下載到器件即可,顯然,系統的維護和修改是極其方便和容易的,本文對同類(lèi)設計也具有一定的參考價(jià)值。
本文地址:http://selenalain.com/thread-37809-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)在線(xiàn)工具

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页