LED點陣動畫顯示控制的VHDL程序?qū)崿F(xiàn)_第1頁
LED點陣動畫顯示控制的VHDL程序?qū)崿F(xiàn)_第2頁
LED點陣動畫顯示控制的VHDL程序?qū)崿F(xiàn)_第3頁
LED點陣動畫顯示控制的VHDL程序?qū)崿F(xiàn)_第4頁
LED點陣動畫顯示控制的VHDL程序?qū)崿F(xiàn)_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 . . . 畢業(yè)設(shè)計說明書學(xué)生: 理 學(xué) 號: 20077435 系 部: 理工系專業(yè)年級: 07級電子信息工程 題 目:LED點陣動畫顯示控制的VHDL程序?qū)崿F(xiàn)指導(dǎo)教師:賀澤凡評閱教師:2011年5月02日中 文 摘 要主要研究基于VHDL的LED點陣動畫顯示。首先描述了基于現(xiàn)場可編程門陣列(FPGA)的硬件電路,以與點陣顯示漢字的原理;然后在單個16×16LED發(fā)光二極管點陣上滾動漢字的原理;最后給出了描敘其功能的VHDL語言程序設(shè)計方法。通過編程、調(diào)試、仿真、下載正確地實現(xiàn)了漢字滾動動畫顯示掃描結(jié)果,其硬件系統(tǒng)的實驗驗證也獲得了軟件模擬仿真結(jié)論相吻合的結(jié)果。關(guān)鍵詞:LED點陣

2、;FPGA;VHDL語言;動畫顯示外 文 摘 要Title:LED dot matrix display and control of the VHDL animation program realizationAbstractThe design of this subject mainly researches Chinese characters scrolling display on LED dot matrix screen based on FPGA and VHDL . This article firstly describes the hardware circuit ba

3、sed on logic cell array,as well as the principle of Chinese characters display on LED dot matrix .Finally,the article gives the method of VHDL design which describes the function.This design realizes the results of Chinese characters scrolling and scanning correctly by programming ,debugging ,sinula

4、tion and download ,Also the experimintal verificattion of hardware systerns has received the conclusions in accordance with the results of software simulation .Key words:LED dot matrix;FPGA;VHDL;Chinese characters scrolling display24 / 29目 次1 引言·········&

5、#183;·················································&

6、#183;12 設(shè)計方案················································

7、········22.1 方案一········································

8、3;···············22.2 方案二·································&#

9、183;······················22.3 方案比較··························

10、;····························33掃描控制模塊····················

11、83;································43.1 LED點陣原理···············

12、83;···································43.2 漢字的存儲·············

13、;·······································43.3 漢字的顯示·········&

14、#183;··········································63.4 滾動速度的控制·····&

15、#183;··········································64 VHDL語言程序設(shè)計·····

16、··········································74.1 掃描頻率控制的部分關(guān)鍵程序·····

17、·······························74.2 單個漢字掃描的部分關(guān)鍵程序················

18、····················74.3 漢字滾動速度控制的部分關(guān)鍵程序··························

19、3;·····95 系統(tǒng)調(diào)試···········································

20、83;···········115.1 開發(fā)環(huán)境介紹····································

21、83;············115.2 調(diào)試、仿真與體會···································&

22、#183;·········126 系統(tǒng)功能、指標(biāo)參數(shù)······································

23、·······19結(jié)論··········································&#

24、183;··················20致·······························

25、;······························22參考文獻···················

26、;······································231 引言隨著我國經(jīng)濟的高速發(fā)展,對公共場合發(fā)布信息的需求日益增長,利用LED點陣動畫顯示漢字的出現(xiàn)正好適應(yīng)了這一市場需求,已經(jīng)成為信息傳播

27、的一種重要手段。采用傳統(tǒng)方法設(shè)計的漢字滾動顯示器,通常需要使用單片機、存儲器和控制邏輯電路來進行PCB板級的系統(tǒng)集成。盡管這種方案有單片機軟件的支持較為靈活,但是由于受硬件資源的限制,未來對設(shè)計的變更和升級,總是難以避免要付出較多研發(fā)經(jīng)費和較長投放市場周期的代價,甚至有可能需要重新設(shè)計。況且,在以顯示為主的系統(tǒng)中,單片機的運算和控制等主要功能的利用率很低,單片機的優(yōu)勢得不到發(fā)揮,相當(dāng)于很大的資源浪費。采用電子設(shè)計自動化(EDA)技術(shù)的自頂向下的模塊化設(shè)計方法,借助相關(guān)開發(fā)軟件,例如Qualtus軟件,將硬件描述語言VHDL程序固化于具有豐富I/O口、部邏輯和連線資源的FPGA(現(xiàn)場可編程門陣列

28、)中。該技術(shù)具有系統(tǒng)設(shè)計效率高、集成度好、性強、易于修改、易于實現(xiàn)等優(yōu)點,成為當(dāng)今數(shù)字系統(tǒng)設(shè)計主流技術(shù)。此方式所制作的LED點陣控制器,由于是純硬件行為,具有速度快、可靠性高、抗干擾能力強、開發(fā)周期短等顯著優(yōu)點。因此,本文主要闡述基于FPGA和VHDL語言實現(xiàn)在16×16點陣上的漢字動畫顯示問題。2 設(shè)計方案2.1 方案一本文系統(tǒng)的LED點陣模塊,共由16×16=256個LED發(fā)光二極管組成。如何在該點陣模塊上顯示漢字是本文設(shè)計的關(guān)鍵技術(shù)。本文系統(tǒng)設(shè)計是采用一種16路動態(tài)分時掃描技術(shù)來實現(xiàn)的。具體方法是,將16×16數(shù)組的顯示模塊的行輸入端與FPGA的只讀存儲器R

29、OM的16位數(shù)據(jù)輸出端口相連;16個列控制端與一個4-16譯碼器A的輸出相連;而譯碼器A的輸入端和片選信號又與FPGA的列掃描控制模塊的輸出端口scan4-scan0相連。圖1.1為方案的結(jié)構(gòu)框圖。FPGA ADDR掃描控制模塊ROMCS 4-16譯碼器A16×16點陣scan0-scan4Scan4行輸入端列控制端圖2.1系統(tǒng)得結(jié)構(gòu)框圖2.2方案二VHDL程序設(shè)計的是硬件,他和編程語言的最大區(qū)別是它可以“并發(fā)執(zhí)行”。本設(shè)計可以將LED顯示屏要的顯示容抽象成一個二維數(shù)組(數(shù)組中的1對映點陣顯示屏上面的亮點),用VHDL語言設(shè)計一個進程將這個數(shù)組動態(tài)顯示在LED顯示屏上,再利用另一個進

30、程對這個數(shù)組按一定頻率進行數(shù)據(jù)更新,更新的方式可以有多種。因為兩個進程是同時進行的(并發(fā)執(zhí)行),如果對數(shù)組中的漢字數(shù)據(jù)按滾動的方式更新,則可實現(xiàn)漢字的滾動顯示。圖1.2為該方案的原理圖。動態(tài)顯示圖2.2 方案二的原理框圖更新數(shù)組數(shù)據(jù)二維數(shù)組2.3 方案比較方案一很容易實現(xiàn),而且占用FPGA的資源較少。但是由于其實現(xiàn)方式的局限性,該方案只能實現(xiàn)漢字的滾動顯示。方案二中將LED點陣抽象成了一個二維數(shù)組??梢栽O(shè)計一些比較復(fù)雜的算法來控制這個數(shù)組,使設(shè)計的系統(tǒng)不但可以滾動顯示漢字,還可以擴展一些其它的顯示效果。但是方案二中對數(shù)組的處理部分對FPGA芯片的資源消耗太大。根據(jù)自身條件以與硬件條件我最終選擇

31、方案一。3 掃描控制模塊3.1 LED點陣原理以下為16×16點陣LED外觀與引腳圖與其等效電路,只要其對應(yīng)的X、Y軸順向偏壓,即可使LED發(fā)亮。例如如果想使左上角LED點亮,則Y0=1,X0=0即可。應(yīng)用時限流電阻可以放在X軸或Y軸。圖3.1 16×16點陣LED外觀圖圖3.2 16×16點陣LED等效圖點陣LED掃描法介紹:點陣LED一般采用掃描式顯示,實際運用分為三種方式: (1)點掃描(2)行掃描(3)列掃描若使用第一種方式,其掃描頻率必須大于16×64=1024Hz,周期小于1ms即可。若使用第二和第三種方式,則頻率必須大于16×8=

32、128Hz,周期小于7.8ms即可符合視覺暫留要求。此外一次驅(qū)動一列或一行(8顆LED)時需外加驅(qū)動電路提高電流,否則LED亮度會不足。3.2漢字的存儲用動態(tài)分時掃描技術(shù)使LED點陣模塊顯示圖像,需要進行兩步工作。第一步是獲得數(shù)據(jù)并保存,即在存貯器中建立漢字數(shù)據(jù)庫。第二步是在掃描模塊的控制下,配合行掃描的次序正確地輸出這些數(shù)據(jù)。獲得圖像數(shù)據(jù)的步驟是,先將要顯示的每一幅圖像畫在一個如圖3.3所示的被分成16×16共256個小方格的矩形框中,再在有筆劃下落處的小方格里填上“1”,無筆劃處填上“0”,這樣就形成了與這個漢字所對應(yīng)的二進制數(shù)據(jù)在該矩形框上的分布,再將此分布關(guān)系以32×

33、;16的數(shù)據(jù)結(jié)構(gòu)組成64個字節(jié)的數(shù)據(jù),并保存在只讀存貯器ROM中。以這種方式將若干個漢字的數(shù)據(jù)貯存在存貯器,就完成了圖像數(shù)據(jù)庫的建立工作。H0.H15L0L15L0L15圖3.3然后,依次對多漢字抽取像素信息,并按序排隊存放起來,便可得到一個待顯示數(shù)據(jù)序列。將這個序列存到ROM中進一步通過尋址的方法來控制該數(shù)據(jù)序列的釋放過程,就可實現(xiàn)在LED 發(fā)光二極管點陣上滾動顯示多漢字信息的目的。由圖3.4可知,某一時刻能在顯示數(shù)據(jù)序列中定位待顯示數(shù)據(jù)的地址指針可用下式計算:addr=n+m  圖3.4 滾動顯示多漢字信息的原理示意圖3.3漢字的顯示先在掃描模塊的控制下,由地址線確定每

34、次由ROM送出某一列的16個LED所要顯示的漢字的控制字節(jié)數(shù)據(jù),同時由掃描模塊輸出的5位掃描碼經(jīng)兩個4-16譯碼器解碼后決定相應(yīng)的某一列可以被點亮,而另外31列都不能被點亮。該狀態(tài)持續(xù)約0.4毫秒后,就接著進行下一行的掃描。當(dāng)完成了一次32行的掃描后,也就完成了一幀畫面的顯示。重復(fù)上述過程不斷修改ROM的地址區(qū)間的起始地址,轉(zhuǎn)向下一幅畫面的數(shù)據(jù)傳送和顯示。如此進行,就可以在LED點陣模塊上滾動顯示ROM中存儲的漢字。3.4滾動速度的控制將LED點陣看成一個滑窗。通過這個“滑窗”每次能“看到”32個存儲單元(2個漢字長度)的信息。只讀存儲器ROM中鏈?zhǔn)降拇娣帕巳舾蓚€漢字的點陣信息,“滑窗”在這若

35、干個漢字點陣信息上面滑動,我們通過“滑窗”看到的就是漢字的滾動顯示。在用VHDL編程的時候,可以定義一個變量x作為“滑窗”在ROM上的起始地址,設(shè)計一個進程按一定的頻率對x進行累加,再設(shè)計一個進程將以x為起始地址的長度為32的ROM中的區(qū)域動態(tài)顯示在LED點陣中。顯然x累加的速度決定了漢字的滾動速度。此進程根據(jù)定義的信號n來控制x遞增的速度,n由外部的按鍵控制。n的圍為07代表了漢字的不同的滾動速度。當(dāng)n為0時漢字滾動的速度最快,n為7時LED點陣上顯示的漢字靜止。4 VHDL語言程序設(shè)計4.1掃描頻率控制的部分關(guān)鍵程序process(clk) -顯示時序控制 begin if clk'

36、;event and clk=1' then -上升沿 dount<=dount+1;-計數(shù)累加 if dount=255 then if S=15 then S<="0000"-S控制單個漢字掃描周期 elseS<=S+1; end if;S<=S+1; elseS<=S; end if; if cdount<15 then -控制列掃描頻率 cdount<=cdount+1; else cdount<="0000" end if; end if; end process; 4.2單個漢字掃描的部

37、分關(guān)鍵程序process(cdount,s) begin case cdount is -列掃描頻率 when "0000"=>keyc<="00001" -列選擇 when "0001"=>keyc<="00010"-列掃描 共掃描8列 when "0010"=>keyc<="00100" when "0011"=>keyc<="01000" when "0100"=

38、>keyc<="10000" when "0101"=>keyc<="00000" when "0110"=>keyc<="00000" when "0111"=>keyc<="00000" when "1000"=>keyc<="00000" when "1001"=>keyc<="00000" when

39、 "1010"=>keyc<="00000" when "1011"=>keyc<="00000" when "1100"=>keyc<="00000" when "1101"=>keyc<="00000" when "1110"=>keyc<="00000" when "1111"=>keyc<=&quo

40、t;00000" when others=>keyc<="00000" end case; if s="0000" then -漢字"歡"掃描時間 case cdount is when "0000"=>keyr<="00011" -列顯示歡 when "0001"=>keyr<="00011" when "0010"=>keyr<="11011" when

41、"0011"=>keyr<="11011" when "0100"=>keyr<="11011" when "0101"=>keyr<="00011" when "0110"=>keyr<="00011" when "0111"=>keyr<="00001" when "1000"=>keyr<="

42、;00001" when "1001"=>keyr<="10001" when "1010"=>keyr<="10111" when "1011"=>keyr<="10111" when "1100"=>keyr<="10111" when "1101"=>keyr<="00111" when "1110"=

43、>keyr<="00011" when "1111"=>keyr<="10011" when others=>keyr<="11111" end case; end if;end process;-結(jié)束進程,各個進程之間是并發(fā)執(zhí)行的4.3 漢字滾動速度控制的部分關(guān)鍵程序process(reset_n,clk_scan,flag_scan)-x的控制進程variabletx:integer range 0 to 50;beginif(reset_n='0')then

44、cntx:=0;x<=0;elsif(rising_edge(clk_scan)thenif(flag_scan='1')thenif(cntx=n×8 ortx=cntx'high)then - n由外部的按鍵控制,通過n來控制cntx的計數(shù)圍cntx:=0;elsecntx:=cntx+1;end if;if(cntx=n×8)then -通過n來控制x的增加if(x=x'high)thenx<=0;elsex<=x+1;end if;end if;end if;end if;end process;此進程根據(jù)定義的信號

45、n來控制x遞增的速度,n由外部的按鍵控制。n的圍為07代表了漢字的不同的滾動速度。當(dāng)n為0時漢字滾動的速度最快,n為7時LED點陣上顯示的漢字靜止。5 系統(tǒng)調(diào)試與仿真5.1 開發(fā)環(huán)境介紹 Quartus II 是Altera公司的綜合性PLD開發(fā)軟件,支持原理圖、VHDL、Veril-ogHDL以與AHDL(Altera Hardware Description Language)等多種設(shè)計輸入形式,嵌自有的綜合器以與仿真器,可以完成從設(shè)計輸入到硬件配置的完整PLD設(shè)計流程。Quartus II可以在XP、Linux以與Unix上使用,除了可以使用Tcl腳本完成設(shè)計流程外,提供了完善

46、的用戶圖形界面設(shè)計方式。具有運行速度快,界面統(tǒng)一,功能集中,易學(xué)易用等特點。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模塊庫,使用戶可以充分利用成熟的模塊,簡化了設(shè)計的復(fù)雜性、加快了設(shè)計速度。對第三方EDA工具的良好支持也使用戶可以在設(shè)計流程的各個階段使用熟悉的第三方EDA工具。此外,Quartus II 通過和DSP Builder工具與Matlab/Simulink相結(jié)合,可以方便地實現(xiàn)各種DSP應(yīng)用系統(tǒng);支持Altera的片上可編程系統(tǒng)(SOPC)開發(fā),集系統(tǒng)級設(shè)計、嵌入式軟件開發(fā)、可編程邏輯設(shè)計于一體,是一種綜合性的開發(fā)平臺。Maxplu

47、s II 作為Altera的上一代PLD設(shè)計軟件,由于其出色的易用性而得到了廣泛的應(yīng)用。目前Altera已經(jīng)停止了對Maxplus II 的更新支持,Quartus II 與之相比不僅僅是支持器件類型的豐富和圖形界面的改變。Altera在Quartus II 中包含了許多諸如SignalTap II、Chip Editor和RTL Viewer的設(shè)計輔助工具,集成了SOPC和HardCopy設(shè)計流程,并且繼承了Maxplus II 友好的圖形界面與簡便的使用方法。Altera Quartus II 作為一種可編程邏輯的設(shè)計環(huán)境, 由于其強大的設(shè)計能力和直觀易用的接口,越來越受到數(shù)字系統(tǒng)設(shè)計者的

48、歡迎。 Altera的Quartus II可編程邏輯軟件屬于第四代PLD開發(fā)平臺。該平臺支持一個工作組環(huán)境下的設(shè)計要求,其中包括支持基于Internet的協(xié)作設(shè)計。Quartus平臺與Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供應(yīng)商的開發(fā)工具相兼容。改進了軟件的LogicLock模塊設(shè)計功能,增添 了FastFit編譯選項,推進了網(wǎng)絡(luò)編輯性能,而且提升了調(diào)試能力。支持MAX7000/MAX3000等乘積項器件。5.2 調(diào)試、仿真與體會5.2.1 創(chuàng)建工程在Quartus II 中新建一個VHDL File文件,將v

49、hdl代碼輸入這個文件,并保存到工作目錄,名為ledarray.vhd。利用new preject wizard 工具創(chuàng)建一個工程,工程名為ledarray,頂層文件實體名為 ledarray,并將上面創(chuàng)建的ledarray.vhd文件加入到工程中。5.2.2 編譯前設(shè)置(1)選擇目標(biāo)芯片。用assignmemts-àsettings命令,彈出settings對話框,選擇目標(biāo)芯片為EP2C5T144C8。圖5.1 選擇目標(biāo)器件(2)選擇工作方式,編程方式,與閑置引腳狀態(tài)單擊上圖中的device&pin options按鈕,彈出device&pin optio

50、ns窗口。 在General項中選中auto-restart configuration after error,使對FPGA的配置失敗后能自動重新配置,并加入JTAG用戶編碼。 圖5.2 選擇配置器件工作方式在configuration項中,其下方的Generate compressed bitstreams處打勾,這樣就能產(chǎn)生用于EPCS的POF壓縮配置文件。在Configuration 選項頁,選擇配置器件為EPCS1,其配置模式選擇為active serial。圖5.3選擇編程方式在Unused pins項,將目標(biāo)器件閑置引腳狀態(tài)設(shè)置高阻態(tài),即選擇As input,tri-stated

51、。圖5.4 設(shè)置閑置引腳狀態(tài)5.2.3 全程編譯設(shè)置好前面的容之后,就可以進行編譯了。選擇Processing菜單中start compilation,在窗口的下方processing欄中顯示編譯信息。圖5.5 全程編譯成功完成完成后在工程管理窗口左是角顯示了工程ledarray 的層次結(jié)構(gòu)和其中結(jié)構(gòu)模塊耗用的邏輯宏單元數(shù)。此欄的右邊是編譯處理流程,包括數(shù)據(jù)網(wǎng)表建立、邏輯綜合、適配、配置文件裝配和時序分析等。5.2.4時序仿真(1)新建一個矢量波形文件,同時打開波形編輯器。設(shè)置仿真時間為50us,保存波形文件為ledarray.vwf。(2)將工程ledarray的端口信號名選入波形編輯器中,

52、所選的端口有clk,與總線keyc和keyr。設(shè)置clk的時鐘周期為2us,占空比為50%。圖5.6 選擇仿真控制仿真器參數(shù)設(shè)置。選擇菜單Assignment中的Settings,在Settings窗口下選擇Simulator,在右側(cè)的simulation mode項下選擇timing,即選擇時序仿真,并選擇仿真激勵文件名ledarray.vwf。選擇simulation options欄,確認選定simulation coverage reporting; 毛刺檢測Glitch detection 為1ns 寬度;選中Run simulation until all vector stimu

53、li 全程仿真?,F(xiàn)在所有設(shè)置進行完畢,在菜單processing項下選擇start simulation,直到出現(xiàn)simulation was successful,仿真結(jié)束 。仿真文件simulation report 通常會自動彈出,否則選擇processingàsimulation report 。圖5.7 仿真波形輸出Quartus II可以實現(xiàn)硬件描述語言或網(wǎng)表文件對應(yīng)的RTL電路圖的生成。選中Tools菜單中的Netlist 項,在出現(xiàn)的下拉菜單中有三個選項:RTL viewer,即HDL的RTL級圖形觀察器;Technology Map Viewer,即HDL對應(yīng)的FP

54、GA底層門級布局觀察器;State Machine viewer,即HDL對應(yīng)的狀態(tài)機觀察器。選擇第一項可以打開ledarray工程的RTL電路圖。圖5.8 RTL電路圖程序調(diào)試的時候,要將整個系統(tǒng)程序分成不同的功能塊進行調(diào)試,最后再加以整合。程序調(diào)試一定要細心,一定要有耐心,只有這樣才能取得最后的成功。6系統(tǒng)功能、指標(biāo)參數(shù)本實驗要達到的最終目標(biāo)是:在16×16點陣上滾動顯示出事先設(shè)定好的漢字,并設(shè)定一些功能鍵,在按下相應(yīng)的鍵時,漢字的滾動速度以與方向可以調(diào)整,并可以顯示一些特殊圖案。結(jié) 論經(jīng)過這段時間的努力,我的畢業(yè)論文終于完成并定稿。本設(shè)計是通過對VHDL語言的編程來控制FPGA,然后再通過FPGA控制16×

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論