16×16點(diǎn)陣顯示設(shè)計(jì)_第1頁(yè)
16×16點(diǎn)陣顯示設(shè)計(jì)_第2頁(yè)
16×16點(diǎn)陣顯示設(shè)計(jì)_第3頁(yè)
16×16點(diǎn)陣顯示設(shè)計(jì)_第4頁(yè)
16×16點(diǎn)陣顯示設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、湖田7科君設(shè)HUNAN INSTITUTE OF EMGINEERING課程設(shè)計(jì)課程名稱嵌入式系統(tǒng)課程設(shè)計(jì)課題名稱 16X16的點(diǎn)陣顯示設(shè)計(jì)專業(yè)班級(jí)學(xué)號(hào)姓名指導(dǎo)老師2016年12月20日電氣信息學(xué)院課程設(shè)計(jì)任務(wù)書課題名稱16X16的點(diǎn)陣顯示設(shè)計(jì)姓 名 專業(yè) 班級(jí) 學(xué)號(hào)指導(dǎo)老師課程設(shè)計(jì)時(shí)間 2016年12月18日-2016年12月30日3 17、18周)教研室意見1t見:同意審核人:望軍一、任務(wù)及要求CPLD為復(fù)雜可編程邏輯器件,通過 EDA技術(shù)對(duì)其進(jìn)行編程,可將一個(gè)較復(fù)雜的數(shù)字 系統(tǒng)集成于一個(gè)芯片中,制成專用集成電路芯片,并可隨時(shí)在系統(tǒng)修改其邏輯功能。并最 終完成電路的編程調(diào)試。具體要求如下:

2、用一個(gè)16X16的點(diǎn)陣使用逐列循環(huán)掃描的方式不間斷的顯示你的全部大寫拼音字母。二、進(jìn)度安排第一周:周一:集中布置課程設(shè)計(jì)相關(guān)事宜。周二周三:子模塊程序設(shè)計(jì),頂層電路程序設(shè)計(jì)。周四周日:子模塊,頂層電路仿真。第二周:周一周三:編程下載,系統(tǒng)調(diào)試。周四周五:設(shè)計(jì)報(bào)告撰寫。周五進(jìn)行答辯和設(shè)計(jì)結(jié)果檢查。三、參考資料1 . 原編著,可編程邏輯器件設(shè)計(jì)及應(yīng)用,機(jī)械工業(yè)。2 .荀殿棟,徐志軍編著,數(shù)字電路設(shè)計(jì)實(shí)用手冊(cè),電子工業(yè)。3 .洪喜,陸穎編著.VHDL電路設(shè)計(jì)實(shí)用教程清華大學(xué)。1 .總體設(shè)計(jì)思路與功能設(shè)計(jì) 1.1.1. 基本原理11.2. 總體設(shè)計(jì)框圖21.3. 頂層文件設(shè)計(jì)22 .單元電路設(shè)計(jì) 32

3、.1. 列循環(huán)掃描模塊32.2. 字符樣式設(shè)計(jì)模塊3.2.3. 循環(huán)掃描及延時(shí)模塊4.2.4. 整個(gè)程序53 .系統(tǒng)調(diào)試與仿真93.1. 開發(fā)環(huán)境介紹.9.3.2.1 創(chuàng)建工程93.2.2 編譯前設(shè)計(jì)93.2.3 全程編譯113.2.4 時(shí)序仿真124 .下載調(diào)試135 .心得體會(huì)146 .參考文獻(xiàn)14一、總體設(shè)計(jì)思路1.1 基本原理LED 就是Light Emitting Diode (發(fā)光二極管)的縮寫。在某些半導(dǎo)體材料的 PN結(jié)中,注入的少數(shù)載流子與多數(shù)載流子復(fù)合時(shí)會(huì)把多余的能量以光的形式釋放出來, 從而把電能直接轉(zhuǎn)換為光能。PN結(jié)加反向電壓,少數(shù)載流子難以注入,故不發(fā)光。這 種利用注入

4、式電致發(fā)光原理制作的二極管叫發(fā)光二極管,通稱LED。LED顯示屏是一種通過控制半導(dǎo)體發(fā)光二極管的顯示方式,用來顯示文字、圖形、圖像、動(dòng)畫、行情、視 頻、錄像信號(hào)等各種信息的顯示屏幕。16X16掃描LED點(diǎn)陣的工作原理同8位掃描數(shù)碼管類似。它有16個(gè)共陰極輸出端 口,每個(gè)共陰極對(duì)應(yīng)有16個(gè)LED顯示燈,所以其掃描譯碼地址需4位信號(hào)線(SEL0-SEL3, 其漢字掃描碼由16位段地址(0-15)輸入。 通過時(shí)鐘的每列掃描顯示完整漢字。點(diǎn)陣LED 一般采用掃描式顯示,實(shí)際運(yùn)用分為三種方式:(1)點(diǎn)掃描(2)行掃描(3)列掃描若使用第一種方式,其掃描頻率必須大于16X64=1024Hz ,周期小于1m

5、s即可。若使用第二和第三種方式,則頻率必須大于 16X8=128Hz,周期小于7.8ms即可符合視覺 暫留要求。此外一次驅(qū)動(dòng)一列或一行(8顆LED)時(shí)需外加驅(qū)動(dòng)電路提高電流,否則LED 亮度會(huì)不足。實(shí)驗(yàn)箱上為我們提供了 16*16的點(diǎn)陣顯示模塊。通過觀察,我們可以看到,此點(diǎn)陣 顯示屏即為16行、16列的LED顯示燈。那么控制這些燈的亮暗分布,就能達(dá)到字符顯 示的目的。首先輸出預(yù)定義“呂、田、口”四個(gè)漢字,顯示屏上的燈的亮暗情況具體應(yīng)如 何。如第一個(gè)漢字呂:0000000000000000000000000000000000000000011111000011111101000100001000

6、010100010000100001010001000010000101000100001000010100010000100001010001000010000101000100001111110100010000000000010001000000000001111100000000000000000000000000000000000000000000000000如果高電平1'時(shí)表示燈是亮的,低電平'0'時(shí)燈是暗的,這樣上面的燈呈現(xiàn)在我們 眼前的就是呂宇了。依次類推,我們就可以設(shè)計(jì)出所有要顯示的漢字了。這樣這些漢字 就好象是被我們當(dāng)作了固定模型了。但如何點(diǎn)亮這些燈

7、呢,這就要求有一個(gè)脈沖循環(huán)掃 描的電路,我們采用列掃描,當(dāng)掃描的和我們先設(shè)計(jì)好的漢字模型的高電平相匹配時(shí), 燈就相應(yīng)的點(diǎn)亮。由于掃描的速度很快,我們?nèi)说难劬Σ⒉粫?huì)感到燈的閃爍,所以每掃 描完16列就會(huì)顯示在我們眼中一個(gè)漢字了。但要所有的漢字就可以依次的顯示出來并 不停的循環(huán)顯示,就還要再有一個(gè)時(shí)序控制電路來控制。 此時(shí)序控制電路象一個(gè)計(jì)數(shù)器, 有自動(dòng)清零的功能,這樣就可以實(shí)現(xiàn)循環(huán)的效果了。1.2 設(shè)計(jì)框圖圖1.2總體設(shè)計(jì)框圖1.3 頂層文件設(shè)計(jì).5; i rtst圖1.3頂層文件設(shè)計(jì)二、單元電路設(shè)計(jì)2.1 列循環(huán)掃描通過對(duì)每一列的掃描來完成對(duì)字母的現(xiàn)實(shí),只要掃描的頻率足夠快,就能給人以連續(xù)的感

8、覺。因此要控制掃描的頻率,不能太低,否則,就會(huì)造成視覺上的不連續(xù),輸入一個(gè)時(shí)鐘信號(hào),輸出為4位二進(jìn)制(用sel表示)列選信號(hào),用來選中列,進(jìn)行掃描, 掃描程序如下:Library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;-端口定乂輸入信號(hào)Entity dz_xs isPort(enable,clk:in std_logic;Sel:out std_logic_vector(3 downto 0);- 端口定義 輸出信號(hào) End dz_xs;Architecture count of dz_xs isSig

9、nal lie:std_logic_vector(3 downto 0);BeginProcess(clk,enable)-脈沖、使能信號(hào)beginIf clk'event and clk='1'thenIf enable='1' thenIf lie>"0000" thenLie<=lie-"0001"ElseLie<="1111"End if; End if;End if;Sel<=lie;End process;2.2 字符樣式設(shè)計(jì)本環(huán)節(jié)是建立一個(gè)數(shù)據(jù)庫(kù),使之能在掃

10、描的同時(shí)讀取所需要的信息,從而完成漢字的顯示。本次設(shè)計(jì)“呂、田、口”漢字樣式設(shè)計(jì)程序如下:Library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;Entity dz_xs isPort(enable,clk:in std_logic;一端口定義輸入信號(hào)h0,h8:out std_logic_vector(7 downto 0);- 端口定義 輸出信號(hào)(h0-列數(shù)據(jù)輸出,h8-代表行數(shù)據(jù)輸出)End dz_xs;Architecture count of dz_xs isSignal lie:std_log

11、ic_vector(3 downto 0);一信號(hào)標(biāo)志Signal past1:std_logic_vector(1 downto 0);BeginProcess(enable,clk)-脈沖、使能信號(hào)BeginIf clk'event and clk='1'thenIf enable='1' thenCase lie isWhen "00"=>Case lie is -“呂"字設(shè)計(jì)When "0011"=>h0<="00000000"h8<="011

12、11110”;When "0100"=>h0<="01111110"h8<="01000010”;When "0101"=>h0<="01000010"h8<="01000010”;When "0110"=>h0<="01000010"h8<="01000010”;When "0111"=>h0<="01000010"h8<="

13、;01000010”;When "1000"=>h0<="01000010"h8<="01000010”;When "1001"=>h0<="01000010"h8<="01000010”;When "1010"=>h0<="01000010"h8<="01000010”;When "1011"=>h0<="01000010"h8<=&

14、quot;01000010”;When "1100"=>h0<="01111110"h8<="01000010”;When "1101"=>h0<="00000000"h8<="01111110”;When others=>h0<="00000000"h8<="00000000”;End case;When "01"=>Case lie is -字設(shè)計(jì)When "0011&qu

15、ot;=>h0<="00100000"h8<="00000000”;When "0100"=>h0<="00100000"h8<="00000000”;When "0101"=>h0<="00100000"h8<="10001100”;When "0110"=>h0<="01110000"h8<="10000000”;When "011

16、1"=>h0<="00101000"h8<="10000000”;When "1000"=>h0<="00100011"h8<="11111100”;When "1001"=>h0<="00100000"h8<="10000000”;When "1010"=>h0<="00101000"h8<="10001100”;When "

17、;1011"=>h0<="01110000"h8<="10000110”;When "1100"=>h0<="00100000"h8<="11111110”;When "1101"=>h0<="00100000"h8<="00001100”;When others=>h0<="00000000"h8<="00000000”;End case;When &q

18、uot;10"=>Case lie is -“田"字設(shè)計(jì)When"0100"=>h0<="00011111"h8<="11110000”;When"0101"=>h0<="00010001"h8<="00010000”;When"0110"=>h0<="00010001"h8<="00010000”;When"0111"=>h0<=&q

19、uot;00010001"h8<="00010000”;When"1000"=>h0<="00011111"h8<="11110000”;When"1001"=>h0<="00010001"h8<="00010000”;When"1010"=>h0<="00010001"h8<="00010000”;When"1011"=>h0<=&q

20、uot;00010001"h8<="00010000”;When"1100"=>h0<="00011111"h8<="11110000”;When others=>h0<="00000000"h8<="00000000”;End case;When "11"=>Case lie is - "口”字設(shè)計(jì)When"0101"=>h0<="00011111"h8<=&

21、quot;11100000"When"0110"=>h0<="00010000"h8<="00100000”;When"0111"=>h0<="00010000"h8<="00100000”;When"1000"=>h0<="00010000"h8<="00100000”;When"1001"=>h0<="00010000"h8&l

22、t;="00100000”;When"1010"=>h0<="00010000"h8<="00100000”;When"1011"=>h0<="00011111"h8<="11100000"When others=>h0<="00000000"h8<="00000000”;End case;End if;End if;End process;2.3 循環(huán)掃描及期間的延時(shí)環(huán)節(jié)為使?jié)h字不斷地循環(huán)顯

23、示,并且使每個(gè)漢字之間有停頓,就需要在中間加一定的延時(shí)和循環(huán)環(huán)節(jié)。在這一環(huán)節(jié)中,可以通過修改其數(shù)值來控制每個(gè)字母的顯示時(shí)間,其程序如下:process(clk)variable int: integer range 0 to 10000;beginif clk 'event and clk= 1 'thenif int<10000 thenint:=int+1;elseint:=0;if next1= "11 "thennext1<= "00"elsenext1<= next1+ '1 ;end if;end i

24、f;end if;end process;2.4 總程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity yz_ok isport(enable,clk:in std_logic;sel:out std_logic_vector(3 downto 0);h0,h8:out std_logic_vector(7 downto 0);end yz_ok;architecture count of yz_ok issignal lie:std_logic_vector(3 downto 0)

25、;signal next1: std_logic_vector(1 downto 0);begina1:process(clk,enable)beginIf clk'event and clk='1'thenIf enable='1' thenIf lie>"0000" thenLie<=lie-"0001"ElseLie<="1111"End if;End if;End if;Sel<=lie;End process;a2:process(enable,clk)begi

26、nIf clk'event and clk='1'thenIf enable='1' thenCase next1 isWhen "00"=>Case lie isWhen "0011"=>h0<="00000000"h8<="01111110”;When "0100"=>h0<="01111110"h8<="01000010”;When "0101"=>h0<=

27、"01000010"h8<="01000010”;When "0110"=>h0<="01000010"h8<="01000010”;When "0111"=>h0<="01000010"h8<="01000010”;When "1000"=>h0<="01000010"h8<="01000010"When "1001"=>

28、;h0<="01000010"h8<="01000010"When "1010"=>h0<="01000010"h8<="01000010"When "1011"=>h0<="01000010"h8<="01000010"When "1100"=>h0<="01111110"h8<="01000010"When

29、"1101"=>h0<="00000000"h8<="01111110"When others=>h0<="00000000"h8<="00000000"End case;When "01"=>Case lie isWhen "0011"=>h0<="00100000"h8<="00000000"When "0100"=>h0<

30、;="00100000"h8<="00000000"When "0101"=>h0<="00100000"h8<="10001100"When "0110"=>h0<="01110000"h8<="10000000"When "0111"=>h0<="00101000"h8<="10000000"When "

31、1000"=>h0<="00100011"h8<="11111100"When "1001"=>h0<="00100000"h8<="10000000"When "1010"=>h0<="00101000"h8<="10001100"When "1011"=>h0<="01110000"h8<="10000

32、110"When "1100"=>h0<="00100000"h8<="11111110"When "1101"=>h0<="00100000"h8<="00001100"When others=>h0<="00000000"h8<="00000000"End case;When "10"=>Case lie isWhen"0100&qu

33、ot;=>h0<="00011111"h8<="11110000"When"0101"=>h0<="00010001"h8<="00010000"When"0110"=>h0<="00010001"h8<="00010000"When"0111"=>h0<="00010001"h8<="00010000"W

34、hen"1000"=>h0<="00011111"h8<="11110000"When"1001"=>h0<="00010001"h8<="00010000"When"1010"=>h0<="00010001"h8<="00010000"When"1011"=>h0<="00010001"h8<="

35、;00010000"When"1100"=>h0<="00011111"h8<="11110000"When others=>h0<="00000000"h8<="00000000"End case;When "11"=>Case lie isWhen"0101"=>h0<="00011111"h8<="11100000"When"011

36、0"=>h0<="00010000"h8<="00100000"When"0111"=>h0<="00010000"h8<="00100000"When"1000"=>h0<="00010000"h8<="00100000"When"1001"=>h0<="00010000"h8<="00100000&qu

37、ot;When"1010"=>h0<="00010000"h8<="00100000”;When"1011"=>h0<="00011111"h8<="11100000”;When others=>h0<="00000000"h8<="00000000”; End case;When others=>h0<="00000000"h8<="00000000”;End c

38、ase;End if;End if;End process;a3:process(clk)variable int: integer range 0 to 10000;beginif clk'event and clk='1'thenif int<10000 thenint:=int+1;elseint:=0;if next1="11"then next1<="00"elsenext1<= next1+'1'end if;end if;end if;end process;end count;第三

39、章系統(tǒng)調(diào)試與仿真3.1 開發(fā)環(huán)境介紹Quartus II是Altera公司的綜合性 PLD開發(fā)軟件,支持原理圖、VHDL、Veril-ogHDL 以及AHDL (Altera Hardware Description Language)等多種設(shè)計(jì)輸入形式,嵌自有的 綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整PLD設(shè)計(jì)流程。Quartus II支持 Altera的IP核,包含了 LPM/MegaFunction 宏功能模塊庫(kù),使 用戶可以充分利用成熟的模塊,簡(jiǎn)化了設(shè)計(jì)的復(fù)雜性、加快了設(shè)計(jì)速度。對(duì)第三 方EDA工具的良好支持也使用戶可以在設(shè)計(jì)流程的各個(gè)階段使用熟悉的第三方 EDA工具。此

40、外,Quartus II通過和 DSP Builder工具與 Matlab/Simulink 相結(jié)合,可以方 便地實(shí)現(xiàn)各種 DSP應(yīng)用系統(tǒng);支持 Altera的片上可編程系統(tǒng)(SOPC)開發(fā),集系 統(tǒng)級(jí)設(shè)計(jì)、嵌入式軟件開發(fā)、可編程邏輯設(shè)計(jì)于一體,是一種綜合性的開發(fā)平臺(tái)。3.2 調(diào)試與仿真3.2.1 創(chuàng)建工程在Quartus II中新建一個(gè) VHDL File文件,將 VHDL代碼輸入這個(gè)文件,并保 存到工作目錄,名為 yz_ok.vhd。利用new preject wizard工具創(chuàng)建一個(gè)工程,工程名為yz_ok,頂層文件實(shí)體名為 yz_ok,并將上面創(chuàng)建的yz_ok.vhd文件加入到工程中。

41、3.2.2 編譯前設(shè)置(1)選擇目標(biāo)芯片。用assignmemts- settings命令,彈出settings對(duì)話框,選擇目標(biāo)芯片為 EPIC3T144C8Fis4尸1Otrihva* EPHi IccJ LdlMgE CiEriahn'PtanuT 明加出專T Rfti 喇V L- ggt 諱嶗1i1片幽手前標(biāo)率* adlviFEhiH JPe】 Miaxp>0| L*Kii圖3-1選擇目標(biāo)器件(2)選擇工作方式,編程方式,及閑置引腳狀態(tài)單擊上圖中的 device&pin options 按鈕,彈出 device&pin options 窗口。 在Genera

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

43、4 設(shè)置閑置引腳狀態(tài)3.2.3 全程編譯設(shè)置好前面的容之后,就可以進(jìn)行編譯了。選擇Processing菜單中startcompilation ,在窗口的下方 processing 欄中顯示編譯信息。圖3-5全程編譯成功完成完成后在工程管理窗口左是角顯示了工程yz_ok的層次結(jié)構(gòu)和其中結(jié)構(gòu)模塊耗用的邏輯宏單元數(shù)。此欄的右邊是編譯處理流程,包括數(shù)據(jù)網(wǎng)表建立、邏輯綜合、適配、配置文件裝配和時(shí)序分析等。3.2.4 時(shí)序仿真(1)新建一個(gè)矢量波形文件,同時(shí)打開波形編輯器。設(shè)置仿真時(shí)間為50us,保存波形文件為 yz_ok.vwf(2)將工程yz_ok的端口信號(hào)名選入波形編輯器中,所選的端口有 clk,enable及總線h0和h8。設(shè)置clk的時(shí)鐘周期為 2us,占空比為 50%圖3-6選擇仿真控制仿真器參數(shù)設(shè)置。選擇菜單Assignment中的Settings ,在Settings窗口下選擇Simulator ,在右側(cè)的 simulation mode項(xiàng)下選擇timing ,即選擇時(shí)序仿真,并 選擇仿真激勵(lì)文件名yz_ok.vwf。選擇 simulation options 欄

溫馨提示

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

評(píng)論

0/150

提交評(píng)論