版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、江西理工大學應用科學學院EDA課程設計江西理工大學應用科學學院SOPC/EDA綜合課程設計報告設計題目: 基于FPGA的16*16點陣漢字顯示設計設 計 者: 學 號: 班 級: 指導老師: 王忠鋒完成時間: 2012年1月6日設計報告綜合測試總評格式(10)內容(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ā)經費和較長投放市場周期的代價,甚至
3、有可能需要重新設計。況且,在以顯示為主的系統(tǒng)中,單片機的運算和控制等主要功能的利用率很低,單片機的上風得不到發(fā)揮,相當于很大的資源浪費。采用EDA技術的自頂向下的模塊化設計方法,借助相關開發(fā)軟件,例如Qualtus軟件,將硬件描述語言VHDL程序固化于具有豐富IO口、內部邏輯和連線資源的FPGA(現(xiàn)場可編程門陣列)中。該技于修改、易于實現(xiàn)等優(yōu)點,成為當今數(shù)字 第 一 章 基本概要1.1 EDA的基本特征和設計流程 EDA技術是采用高級語言描述,具有系統(tǒng)級仿真和綜合能力,它主要采用并行工程(Concurrent Engineering)設計和自頂向下(Top-down)設計方法,其基本思想是從系
4、統(tǒng)總體要求出發(fā),分為行為描述、寄存器傳輸級描述、邏輯綜合三個層次,將設計內容逐步細化,最后完成整體設計,這是一種全新的設計思想與設計理念。EDA技術是將傳統(tǒng)的“電路設計硬件搭試調試焊接”模式變?yōu)椤肮δ茉O計軟件模擬編程下載”方式,設計人員只需一臺微機和相應的開發(fā)工具即可研制出各種功能電路。EDA技術將電子產品設計從軟件編譯、 邏輯化簡、 邏輯綜合、 仿真優(yōu)化、 布局布線、 邏輯適配、 邏輯影射、 編程下載 、生成目標系統(tǒng)的全過程在計算機及其開發(fā)平臺上自動處理完成。1.2 LED點陣顯示特點1. 可以顯示各種數(shù)字、文字、圖表、曲線、圖形;2. 采用純紅、高綠作雙基色發(fā)光器件,發(fā)光亮度高,色彩鮮艷、
5、 豐富;3. 顯示效果清晰、穩(wěn)定、功耗低、壽命長;4. 優(yōu)質鋁合金結構,磨沙、銀鏡或鈦金不銹鋼包邊。尺寸和規(guī)格可根據(jù)需要靈活組合;5. 支持各種計算機網絡,編輯軟件豐富、易用;6. 適用于室內、外所有信息發(fā)布及廣告宣傳場所。如:銀行、證券交易所、商場、市場、賓館、灑樓、電信、郵政、醫(yī)院、車站、機場等。1.3 FPGA基本特點和設計的特點基本特點:1)采用FPGA設計ASIC電路(專用集成電路),用戶不需要投片生產,就能得到合用的芯片。2)FPGA可做其它全定制或半定制ASIC電路的中試樣片。3)FPGA內部有豐富的觸發(fā)器和I/O引腳。4)FPGA是ASIC電路中設計周期最短、開發(fā)費用最低、風險
6、最小的器件之一。5) FPGA采用高速CMOS工藝,功耗低,可以與CMOS、TTL電平兼容。 圖1-1FPGA芯片的內部結構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芯片產生讀時序,將字形 從寄存器中讀出,然后產生寫時序,寫入1616的點陣,使其掃描顯示輸出。為了顯示整個漢字,首先分布好漢字的排列,以行給漢字信息;然后以128HZ的時序逐個點亮每一行,即每行逐一加高電平,根據(jù)人眼的視覺殘留特性,使之形成整個漢字的顯示。LED點陣每個點都有一個紅色的發(fā)光二極管。點陣內的二極管間的連接都是行共陽,列共陰。本實驗采用
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壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中秋節(jié)聯(lián)歡會致辭范文(10篇)
- 九月大班上學期月計劃范文(5篇)
- 中秋晚會董事長致辭范文(13篇)
- 曹植課件教學課件
- 講師比賽課件教學課件
- 影響高中數(shù)學成績的原因及解決方法
- 消費品和有關服務的比較試驗 實施要求 編制說明
- 愛嬰醫(yī)院課件教學課件
- 南宮市八年級上學期語文10月月考試卷
- 八年級上學期語文期中考試卷
- 出院小結模板-2
- 旅游景區(qū)公共信息導向系統(tǒng)規(guī)范與設計(旅游)
- 過程流程圖,控制計劃,PFMEA培訓
- 六年級語文 六年級班家長會
- 內科學(腎臟-內分泌-血液)知到章節(jié)答案智慧樹2023年溫州醫(yī)科大學
- 地理教育測量與評價
- 2023上海車展展前報告
- 事業(yè)單位獎勵審批表主要事跡
- 六年級勞動與技術上冊教案
- 馬王堆導引術獨立彩圖版
- GB/T 26572-2011電子電氣產品中限用物質的限量要求
評論
0/150
提交評論