EDA基于FPGA的16×16點陣漢字顯示(1)_第1頁
EDA基于FPGA的16×16點陣漢字顯示(1)_第2頁
EDA基于FPGA的16×16點陣漢字顯示(1)_第3頁
EDA基于FPGA的16×16點陣漢字顯示(1)_第4頁
EDA基于FPGA的16×16點陣漢字顯示(1)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、江西理工大學應用科學學院EDA課程設計江西理工大學應用科學學院SOPC/EDA綜合課程設計報告設計題目: 基于FPGA的16*16點陣漢字顯示設計設 計 者: 學 號: 班 級: 指導老師: 王忠鋒完成時間: 2012年1月6日設計報告綜合測試總評格式(10)內(nèi)容(40)圖表(10)答辯(20)平時(20) 目 錄前 言3第一章 基本概要41.1 EDA的基本特征和設計流程41.2 LED點陣顯示特點41.3 FPGA基本特點和設計的特點5第二章 系統(tǒng)設計72.1設計任務與要求72.1.1設計要求72.1.2 要求分析72.2.設計方案72.3.LED的顯示原理82.4系統(tǒng)設計原理8第三章 系

2、統(tǒng)子程序設計103.1 32進制計數(shù)器設計103.2 16進制計數(shù)器設計113.3 列驅動設計133.4 行驅動設計15第四章 原理圖仿真波形36第五章 課程設計體會37參考文獻38 前 言現(xiàn)代文明的一個明顯特征是城市中隨處可見的五顏六色的廣告宣傳,其中大多都是由LED點陣制作的漢字或圖形廣告,廣泛應用在銀行、醫(yī)院、酒店、火車站、運動場館等各種公共場所。漢字轉動顯示器的傳統(tǒng)設計方法是用單片機來控制的,固然單片機方案具有價格低廉,程序編程靈活等特點,但由于單片機硬件資源術具有系統(tǒng)設計效率高、集成度好、保密性強、易的限制,未來對設計的變更和升級,總是要付出較多研發(fā)經(jīng)費和較長投放市場周期的代價,甚至

3、有可能需要重新設計。況且,在以顯示為主的系統(tǒng)中,單片機的運算和控制等主要功能的利用率很低,單片機的上風得不到發(fā)揮,相當于很大的資源浪費。采用EDA技術的自頂向下的模塊化設計方法,借助相關開發(fā)軟件,例如Qualtus軟件,將硬件描述語言VHDL程序固化于具有豐富IO口、內(nèi)部邏輯和連線資源的FPGA(現(xiàn)場可編程門陣列)中。該技于修改、易于實現(xiàn)等優(yōu)點,成為當今數(shù)字 第 一 章 基本概要1.1 EDA的基本特征和設計流程 EDA技術是采用高級語言描述,具有系統(tǒng)級仿真和綜合能力,它主要采用并行工程(Concurrent Engineering)設計和自頂向下(Top-down)設計方法,其基本思想是從系

4、統(tǒng)總體要求出發(fā),分為行為描述、寄存器傳輸級描述、邏輯綜合三個層次,將設計內(nèi)容逐步細化,最后完成整體設計,這是一種全新的設計思想與設計理念。EDA技術是將傳統(tǒng)的“電路設計硬件搭試調(diào)試焊接”模式變?yōu)椤肮δ茉O計軟件模擬編程下載”方式,設計人員只需一臺微機和相應的開發(fā)工具即可研制出各種功能電路。EDA技術將電子產(chǎn)品設計從軟件編譯、 邏輯化簡、 邏輯綜合、 仿真優(yōu)化、 布局布線、 邏輯適配、 邏輯影射、 編程下載 、生成目標系統(tǒng)的全過程在計算機及其開發(fā)平臺上自動處理完成。1.2 LED點陣顯示特點1. 可以顯示各種數(shù)字、文字、圖表、曲線、圖形;2. 采用純紅、高綠作雙基色發(fā)光器件,發(fā)光亮度高,色彩鮮艷、

5、 豐富;3. 顯示效果清晰、穩(wěn)定、功耗低、壽命長;4. 優(yōu)質鋁合金結構,磨沙、銀鏡或鈦金不銹鋼包邊。尺寸和規(guī)格可根據(jù)需要靈活組合;5. 支持各種計算機網(wǎng)絡,編輯軟件豐富、易用;6. 適用于室內(nèi)、外所有信息發(fā)布及廣告宣傳場所。如:銀行、證券交易所、商場、市場、賓館、灑樓、電信、郵政、醫(yī)院、車站、機場等。1.3 FPGA基本特點和設計的特點基本特點:1)采用FPGA設計ASIC電路(專用集成電路),用戶不需要投片生產(chǎn),就能得到合用的芯片。2)FPGA可做其它全定制或半定制ASIC電路的中試樣片。3)FPGA內(nèi)部有豐富的觸發(fā)器和I/O引腳。4)FPGA是ASIC電路中設計周期最短、開發(fā)費用最低、風險

6、最小的器件之一。5) FPGA采用高速CMOS工藝,功耗低,可以與CMOS、TTL電平兼容。 圖1-1FPGA芯片的內(nèi)部結構FPGA 的主要特點是: 寄存器數(shù)目多, 采用查找表計數(shù),適合時序邏輯設計。 但是互連復雜, 由于互連采用開關矩陣,因而使得延時估計往往不十分準確。FPGA 也有其自身的局限性, 其一就是器件規(guī)模的限制,其二就是單元延遲比較大。 所以, 在設計者選定某一FPGA器件后, 要求設計者對器件的結構、性能作深入的了解, 在體系結構設計時, 就必須考慮到器件本身的結構及性能, 盡可能使設計的結構滿足器件本身的要求. 這樣就增加了設計的難度。離開對FPGA 結構的詳細了解, 設計人

7、員就不可能優(yōu)化設計。因而設計人員必須了解FPGA 器件的特性和限制, 熟悉FPGA 的結構。在了解FPGA 結構特點的基礎上, 就可以利用VHDL 語言描寫出高效的電路描述實現(xiàn)性能優(yōu)化的電路。 第二章 系統(tǒng)設計2.1設計任務與要求 使用FPGA設計一個1616的點陣顯示的控制器,使點陣顯示器以兩種花樣顯示“江西理工大學應用科學學院歡迎您!”2.1.1設計要求1輸出預定義“江、西、理、工、大、學、應、用、科、學、學、院、歡、迎、您、”十五個漢字;2輸出漢字循環(huán)顯示;3操作方便、可維護性高;4程序簡捷、便于修改。2.1.2 要求分析 根據(jù)設計要求可以分析出:點陣顯示的花樣有靜態(tài)顯示一個漢字,一屏一

8、屏的顯示漢字還有滾動顯示漢字,還可以用亮著的燈顯示漢字或者用暗著的燈顯示漢字。2.2.設計方案 方案一:用亮著的燈組合所要顯示的字。 方案二: 用暗著的燈組成所需要的字。兩種花樣顯示都是用一屏一屏的顯示方法。 圖2-1 方案一示例 圖2-2 方案二示例2.3.LED的顯示原理1616掃描LED點陣的工作原理同8位掃描數(shù)碼管類似。它有16個共陰極輸出端口,每個共陰極對應有16個LED顯示燈,所以其掃描譯碼地址需4位信號線(SEL0-SEL3),其漢字掃描碼由16位段地址(0-15)輸入。 通過時鐘的每列掃描顯示完整漢字。圖2-3 LED燈紅綠信號 圖2-4 1616點陣LED等效電路2.4系統(tǒng)設

9、計原理616掃描LED點陣只要其對應的X、Y軸順向偏壓,即可使LED發(fā)亮。例如如果想使左上角LED點亮,則Y0=1,X0=0即可。應用時限流電阻可以放在X軸或Y軸。它有16個共陰極輸出端口,每個共陰極對應有16個LED顯示燈。本實驗就是要通過CPLD芯片產(chǎn)生讀時序,將字形 從寄存器中讀出,然后產(chǎn)生寫時序,寫入1616的點陣,使其掃描顯示輸出。為了顯示整個漢字,首先分布好漢字的排列,以行給漢字信息;然后以128HZ的時序逐個點亮每一行,即每行逐一加高電平,根據(jù)人眼的視覺殘留特性,使之形成整個漢字的顯示。LED點陣每個點都有一個紅色的發(fā)光二極管。點陣內(nèi)的二極管間的連接都是行共陽,列共陰。本實驗采用

10、共陰,當二極管的共陽極為高電平,共陰極為低電平時,所接點發(fā)光;反之處于截止狀態(tài),不放光。本實驗采取行掃描方式,用列給文字信息,利用周期為1s的脈沖來控制所顯示的字。本設計由32進制計數(shù)器(COUNT32),16進制計數(shù)器(COUNT16),行驅動(LYH)和列驅動(BBLK)組成。圖2-5 1616點陣原理圖 第三章 系統(tǒng)子程序設計 3.1 32進制計數(shù)器設計 COUNT32.vhd是32進制的計數(shù)器,其每計一次數(shù),輸出一個字。例如當計數(shù)為“00000B”時顯示“江”,當計數(shù)為“00001B”時顯示“西”。給其脈沖周期為1S。其描述如下:LIBRARY IEEE;USE IEEE.STD_LO

11、GIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNT32 ISPORT( CLK1: IN STD_LOGIC;QOUT : OUT STD_LOGIC_VECTOR(4 DOWNTO 0);END ENTITY COUNT32;ARCHITECTURE BEHV OF COUNT32 ISSIGNAL CQI : STD_LOGIC_VECTOR(4 DOWNTO 0);BEGINPROCESS(CLK1)BEGINIF (CLK1EVENT AND CLK1=1) THENCQI=CQI+1;END IF;QOUT=CQI;EN

12、D PROCESS;END ARCHITECTURE BEHV;圖3-1 CUONT32.VHD仿真波形圖圖3-2 COUNT32原理圖從上圖中可以看出,本模塊是32進制的計數(shù)器,當CLK1給予脈沖時輸出為前一個數(shù)值加1,例如:在31.46ms前輸出為00110B,在這個時刻CLK1給予觸發(fā)脈沖,31.46ms后的輸出為00111B??梢钥闯鲈撃K滿足設計要求。3.2 16進制計數(shù)器設計COUNT16.vhd是16進制的計數(shù)器,其輸出端控制行和列驅動控制器的輸出數(shù)據(jù);其描述如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGI

13、C_UNSIGNED.ALL;ENTITY COUNT16 ISPORT( CLK : IN STD_LOGIC;QOUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END ENTITY COUNT16;ARCHITECTURE BEHV OF COUNT16 ISSIGNAL CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK)BEGINIF (CLKEVENT AND CLK=1) THENCQI=CQI+1;END IF;QOUT ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW

14、 ROW ROW ROW ROW ROW ROW ROWcase CCK is when 0000 =b:=0100000000000000; when 0001 =b:=0011000000001000; when 0010 =b:=0001011111111100; when 0011 =b:=0000000001000000; when 0100 =b:=1000000001000000; when 0101 =b:=0110000001000000; when 0110 =b:=0010000001000000; when 0111 =b:=0000100001000000; when

15、 1000 =b:=0001000001000000; when 1001 =b:=0010000001000000; when 1010 =b:=1110000001000000; when 1011 =b:=0010000001000000; when 1100 =b:=0010000001001000; when 1101 =b:=0010111111111100; when 1110 =b:=0010000000000000; when 1111 =b:=0010000000000000; when others=null; end case;When 00001=case CCK i

16、s when 0000 =b:=0000000000000000; when 0001 =b:=0000000000000100; when 0010 =b:=1111111111111110; when 0011 =b:=0000010010000000; when 0100 =b:=0000010010000000; when 0101 =b:=0000010010000100; when 0110 =b:=0111111111111110; when 0111 =b:=0100010001000100; when 1000 =b:=0100010001000100; when 1001

17、=b:=0100010001000100; when 1010 =b:=0100010001000100; when 1011 =b:=0100100000110100; when 1100 =b:=0101000000000100; when 1101 =b:=0100000000000100; when 1110 =b:=0111111111111100; when 1111 =b:=0100000000000100; when others=null; end case;When 00010=case CCK is when 0000 =b:=0000000000001000; when

18、 0001 =b:=0000011111111000; when 0010 =b:=1111101001001000; when 0011 =b:=0010001001001000; when 0100 =b:=0010011111111100; when 0101 =b:=0010001001001000; when 0110 =b:=1111101001001000; when 0111 =b:=0010001111111000; when 1000 =b:=0010000001000000; when 1001 =b:=0010000001010000; when 1010 =b:=00

19、10001111111000; when 1011 =b:=0011110001000000; when 1100 =b:=1110000001000000; when 1101 =b:=0100000001000100; when 1110 =b:=0000111111111110; when 1111 =b:=0000000000000000; when others=null; end case;When 00011=case CCK is when 0000 =b:=0000000000000000; when 0001 =b:=0000000000001000; when 0010

20、=b:=0111111111111100; when 0011 =b:=0000000100000000; when 0100 =b:=0000000100000000; when 0101 =b:=0000000100000000; when 0110 =b:=0000000100000000; when 0111 =b:=0000000100000000; when 1000 =b:=0000000100000000; when 1001 =b:=0000000100000000; when 1010 =b:=0000000100000000; when 1011 =b:=00000001

21、00000000; when 1100 =b:=0000000100000100; when 1101 =b:=1111111111111110; when 1110 =b:=0000000000000000; when 1111 =b:=0000000000000000; when others=null; end case;When 00100=case CCK is when 0000 =b:=0000000100000000; when 0001 =b:=0000000100000000; when 0010 =b:=0000000100000000; when 0011 =b:=00

22、00000100000000; when 0100 =b:=0000000100000100; when 0101 =b:=1111111111111110; when 0110 =b:=0000000100000000; when 0111 =b:=0000001010000000; when 1000 =b:=0000001010000000; when 1001 =b:=0000001010000000; when 1010 =b:=0000001001000000; when 1011 =b:=0000001000010000; when 1100 =b:=00001000000100

23、00; when 1101 =b:=0001000000001110; when 1110 =b:=0110000000000100; when 1111 =b:=0000000000000000; when others=null; end case;When 00101=case CCK is when 0000 =b:=0010001000001000; when 0001 =b:=0001000100001000; when 0010 =b:=0000000000000000; when 0011 =b:=0000000000100000; when 0100 =b:=01111111

24、11111110; when 0101 =b:=0100000000000010; when 0110 =b:=1000000000000100; when 0111 =b:=0001111111100000; when 1000 =b:=0000000001000000; when 1001 =b:=0000000110000100; when 1010 =b:=1111111111111110; when 1011 =b:=0000000100000000; when 1100 =b:=0000000100000000; when 1101 =b:=0000000100000000; wh

25、en 1110 =b:=0000010100000000; when 1111 =b:=0000001000000000; when others=null; end case;When 00110=case CCK is when 0000 =b:=0000001000000000; when 0001 =b:=0000000100000100; when 0010 =b:=0011111111111110; when 0011 =b:=0010000000000000; when 0100 =b:=0010000100000100; when 0101 =b:=00101000100001

26、00; when 0110 =b:=0010010010000100; when 0111 =b:=0010010001001000; when 1000 =b:=0010001001001000; when 1001 =b:=0010001001001000; when 1010 =b:=0010001000010000; when 1011 =b:=0010001000010000; when 1100 =b:=0010000000100000; when 1101 =b:=0100000001000100; when 1110 =b:=1001111111111110; when 111

27、1 =b:=1001111111111110; when others=null; end case;When 00111=case CCK is when 0000 =b:=0000000000001000; when 0001 =b:=0011111111111100; when 0010 =b:=0010000100001000; when 0011 =b:=0010000100001000; when 0100 =b:=0010000100001000; when 0101 =b:=0011111111111000; when 0110 =b:=0010000100001000; wh

28、en 0111 =b:=0010000100001000; when 1000 =b:=0010000100001000; when 1001 =b:=0011111111111000; when 1010 =b:=0010000100001000; when 1011 =b:=0010000100001000; when 1100 =b:=0010000100001000; when 1101 =b:=0100000100001000; when 1110 =b:=0100000100101111; when 1111 =b:=1000000000010000; when others=nu

29、ll; end case; When 01000=case CCK is when 0000 =b:=0000010000010000; when 0001 =b:=0000111000010000; when 0010 =b:=1111100010010000; when 0011 =b:=0000100001010000; when 0100 =b:=0000100000010000; when 0101 =b:=1111111010010000; when 0110 =b:=0000100001010000; when 0111 =b:=0001110000010100; when 10

30、00 =b:=0001101000011110; when 1001 =b:=0010100111110000; when 1010 =b:=0010100000010000; when 1011 =b:=0100100000010000; when 1100 =b:=1000100000010000; when 1101 =b:=0000100000010000; when 1110 =b:=0000100000010000; when 1111 =b:=0000100000010000; when others=null; end case; When01001=case CCK is w

31、hen 0000 =b:=0010001000001000; when 0001 =b:=0001000100001000; when 0010 =b:=0001000100010000; when 0011 =b:=0000000000100000; when 0100 =b:=0111111111111110; when 0101 =b:=0100000000000010; when 0110 =b:=1000000000000100; when 0111 =b:=0001111111100000; when 1000 =b:=0000000001000000; when 1001 =b:

32、=0000000110000100; when 1010 =b:=1111111111111110; when 1011 =b:=0000000100000000; when 1100 =b:=0000000100000000; when 1101 =b:=0000000100000000; when 1110 =b:=0000010100000000; when 1111 =b:=0000001000000000; when others=null; end case; When 01010=case CCK is when 0000 =b:=0010001000001000; when 0

33、001 =b:=0001000100001000; when 0010 =b:=0001000100010000; when 0011 =b:=0000000000100000; when 0100 =b:=0111111111111110; when 0101 =b:=0100000000000010; when 0110 =b:=1000000000000100; when 0111 =b:=0001111111100000; when 1000 =b:=0000000001000000; when 1001 =b:=0000000110000100; when 1010 =b:=1111

34、111111111110; when 1011 =b:=0000000100000000; when 1100 =b:=0000000100000000; when 1101 =b:=0000000100000000; when 1110 =b:=0000010100000000; when 1111 =b:=0000001000000000; when others=null; end case;When 01011=case CCK is when 0000 =b:=0000000010000000; when 0001 =b:=0111100001000000; when 0010 =b

35、:=0100111111111110; when 0011 =b:=0101010000000010; when 0100 =b:=0101100000010100; when 0101 =b:=0110001111111000; when 0110 =b:=0101000000000000; when 0111 =b:=0100100000001000; when 1000 =b:=0100111111111100; when 1001 =b:=0100100010100000; when 1010 =b:=0110100010100000; when 1011 =b:=0101000010100000; when 1100 =b:=0100000100100010; when 1101 =b:=0

溫馨提示

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

評論

0/150

提交評論