基于FPGA的16×16點(diǎn)陣顯示控制器_第1頁
基于FPGA的16×16點(diǎn)陣顯示控制器_第2頁
基于FPGA的16×16點(diǎn)陣顯示控制器_第3頁
基于FPGA的16×16點(diǎn)陣顯示控制器_第4頁
基于FPGA的16×16點(diǎn)陣顯示控制器_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、目錄第一章 系統(tǒng)設(shè)計(jì)總述11.1 設(shè)計(jì)要求11.2 要求分析1第二章 系統(tǒng)設(shè)計(jì)原理2第三章 系統(tǒng)子程序設(shè)計(jì)33.1 32進(jìn)制計(jì)數(shù)器設(shè)計(jì)33.2 16進(jìn)制計(jì)數(shù)器設(shè)計(jì)43.3 列驅(qū)動(dòng)設(shè)計(jì)53.4 行驅(qū)動(dòng)設(shè)計(jì)6第四章 原理圖仿真波形25第五章 設(shè)計(jì)小結(jié)26參考文獻(xiàn)27第一章 系統(tǒng)設(shè)計(jì)總述1.1 設(shè)計(jì)要求使用fpga設(shè)計(jì)一個(gè)1616的點(diǎn)陣顯示的控制器,使點(diǎn)陣顯示器以兩種花樣顯示“江西理工大學(xué)應(yīng)用科學(xué)學(xué)院歡迎您!”1.2 要求分析根據(jù)設(shè)計(jì)要求可以分析出:點(diǎn)陣顯示的花樣有靜態(tài)顯示一個(gè)漢字,一屏一屏的顯示漢字還有滾動(dòng)顯示漢字,還可以用亮著的燈顯示漢字或者用暗著的燈顯示漢字。根據(jù)以上的分析,本實(shí)驗(yàn)采用如下兩種

2、花樣顯示:第一種花樣是用亮著的燈組合所要顯示的字,第二種方案是用暗著的燈組成所需要的字。兩種花樣都是用一屏一屏的顯示方法。 圖1-1 方案一示例 圖1-2 方案二示例第二章 系統(tǒng)設(shè)計(jì)原理1616掃描led點(diǎn)陣只要其對(duì)應(yīng)的x、y軸順向偏壓,即可使led發(fā)亮。例如如果想使左上角led點(diǎn)亮,則y0=1,x0=0即可。應(yīng)用時(shí)限流電阻可以放在x軸或y軸。它有16個(gè)共陰極輸出端口,每個(gè)共陰極對(duì)應(yīng)有16個(gè)led顯示燈。本實(shí)驗(yàn)就是要通過cpld芯片產(chǎn)生讀時(shí)序,將字形 從寄存器中讀出,然后產(chǎn)生寫時(shí)序,寫入1616的點(diǎn)陣,使其掃描顯示輸出。為了顯示整個(gè)漢字,首先分布好漢字的排列,以行給漢字信息;然后以128hz的

3、時(shí)序逐個(gè)點(diǎn)亮每一行,即每行逐一加高電平,根據(jù)人眼的視覺殘留特性,使之形成整個(gè)漢字的顯示。led點(diǎn)陣每個(gè)點(diǎn)都有一個(gè)紅色的發(fā)光二極管。點(diǎn)陣內(nèi)的二極管間的連接都是行共陽,列共陰。本實(shí)驗(yàn)采用共陰,當(dāng)二極管的共陽極為高電平,共陰極為低電平時(shí),所接點(diǎn)發(fā)光;反之處于截止?fàn)顟B(tài),不放光。本實(shí)驗(yàn)采取行掃描方式,用列給文字信息,利用周期為1s的脈沖來控制所顯示的字。本設(shè)計(jì)由32進(jìn)制計(jì)數(shù)器(count32),16進(jìn)制計(jì)數(shù)器(count16),行驅(qū)動(dòng)(xianshi)和列驅(qū)動(dòng)(rowcon)組成。圖2-1 1616點(diǎn)陣原理圖第三章 系統(tǒng)子程序設(shè)計(jì)3.1 32進(jìn)制計(jì)數(shù)器設(shè)計(jì) count32.vhd是32進(jìn)制的計(jì)數(shù)器,其每

4、計(jì)一次數(shù),輸出一個(gè)字。例如當(dāng)計(jì)數(shù)為“00000b”時(shí)顯示“江”,當(dāng)計(jì)數(shù)為“00001b”時(shí)顯示“西”。給其脈沖周期為1s。其描述如下:library ieee;use ieee.std_logic_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_vecto

5、r(4 downto 0);beginprocess(clk1)beginif (clk1event and clk1=1) thencqi=cqi+1;end if;qout=cqi;end process;end architecture behv;圖3-1 cuont32.vhd仿真波形圖從上圖中可以看出,本模塊是32進(jìn)制的計(jì)數(shù)器,當(dāng)clk1給予脈沖時(shí)輸出為前一個(gè)數(shù)值加1,例如:在31.46ms前輸出為00110b,在這個(gè)時(shí)刻clk1給予觸發(fā)脈沖,31.46ms后的輸出為00111b??梢钥闯鲈撃K滿足設(shè)計(jì)要求。3.2 16進(jìn)制計(jì)數(shù)器設(shè)計(jì)count16.vhd是16進(jìn)制的計(jì)數(shù)器,其輸出端

6、控制行和列驅(qū)動(dòng)控制器的輸出數(shù)據(jù);其描述如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_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 (clkev

7、ent and clk=1) thencqi=cqi+1;end if;qout row row row row row row row row row row row row row row row row rowcase wei is when 0000 =b:=0100000000000000; when 0001 =b:=0011000000001000; when 0010 =b:=0001011111111100; when 0011 =b:=0000000001000000; when 0100 =b:=1000000001000000; when 0101 =b:=011000

8、0001000000; when 0110 =b:=0010000001000000; when 0111 =b:=0000100001000000; when 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;

9、when 1111 =b:=0010000000000000; when others=null; end case;when 00001=case wei is 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:=011111111111

10、1110; when 0111 =b:=0100010001000100; when 1000 =b:=0100010001000100; when 1001 =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 o

11、thers=null; end case;when 00010=case wei is when 0000 =b:=0000000000001000; when 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;

12、when 1000 =b:=0010000001000000; when 1001 =b:=0010000001010000; when 1010 =b:=0010001111111000; 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 w

13、ei is when 0000 =b:=0000000000000000; when 0001 =b:=0000000000001000; when 0010 =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 1

14、001 =b:=0000000100000000; when 1010 =b:=0000000100000000; when 1011 =b:=0000000100000000; when 1100 =b:=0000000100000100; when 1101 =b:=1111111111111110; when 1110 =b:=0000000000000000; when 1111 =b:=0000000000000000; when others=null; end case;when 00100=case wei is when 0000 =b:=0000000100000000;

15、when 0001 =b:=0000000100000000; when 0010 =b:=0000000100000000; when 0011 =b:=0000000100000000; 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

16、:=0000001001000000; when 1011 =b:=0000001000010000; when 1100 =b:=0000100000010000; when 1101 =b:=0001000000001110; when 1110 =b:=0110000000000100; when 1111 =b:=0000000000000000; when others=null; end case;when 00101=case wei is when 0000 =b:=0010001000001000; when 0001 =b:=0001000100001000; when 0

17、010 =b:=0000000000000000; 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:=1111111111111110; when 1011 =b:=0000

18、000100000000; when 1100 =b:=0000000100000000; when 1101 =b:=0000000100000000; when 1110 =b:=0000010100000000; when 1111 =b:=0000001000000000; when others=null; end case;when 00110=case wei is when 0000 =b:=0000001000000000; when 0001 =b:=0000000100000100; when 0010 =b:=0011111111111110; when 0011 =b

19、:=0010000000000000; when 0100 =b:=0010000100000100; when 0101 =b:=0010100010000100; 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:=0010000000

20、100000; when 1101 =b:=0100000001000100; when 1110 =b:=1001111111111110; when 1111 =b:=1001111111111110; when others=null; end case;when 00111=case wei is when 0000 =b:=0000000000001000; when 0001 =b:=0011111111111100; when 0010 =b:=0010000100001000; when 0011 =b:=0010000100001000; when 0100 =b:=0010

21、000100001000; when 0101 =b:=0011111111111000; when 0110 =b:=0010000100001000; when 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

22、; when 1110 =b:=0100000100101111; when 1111 =b:=1000000000010000; when others=null; end case; when 01000=case wei is when 0000 =b:=0000010000010000; when 0001 =b:=0000111000010000; when 0010 =b:=1111100010010000; when 0011 =b:=0000100001010000; when 0100 =b:=0000100000010000; when 0101 =b:=111111101

23、0010000; when 0110 =b:=0000100001010000; when 0111 =b:=0001110000010100; when 1000 =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; whe

24、n 1111 =b:=0000100000010000; when others=null; end case; when01001=case wei is when 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:=100000000000010

25、0; 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; when 1110 =b:=0000010100000000; when 1111 =b:=0000001000000000; when othe

26、rs=null; end case; when 01010=case wei is when 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; wh

27、en 1000 =b:=0000000001000000; when 1001 =b:=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 01011=case wei

28、 is when 0000 =b:=0000000010000000; when 0001 =b:=0111100001000000; when 0010 =b:=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 100

29、1 =b:=0100100010100000; when 1010 =b:=0110100010100000; when 1011 =b:=0101000010100000; when 1100 =b:=0100000100100010; when 1101 =b:=0100000100100010; when 1110 =b:=0100001000011110; when 1111 =b:=0100110000000000; when others=null; end case; when01100=case wei is when 0000 =b:=0000000010000000; wh

30、en 0001 =b:=0000000010000000; when 0010 =b:=1111110010000000; when 0011 =b:=0000010011111100; when 0100 =b:=0100010100000100; when 0101 =b:=0100011001001000; when 0110 =b:=0010100001000000; when 0111 =b:=0010100001000000; when 1000 =b:=0001000001000000; when 1001 =b:=0010100001000000; when 1010 =b:=

31、0010010010100000; when 1011 =b:=0100010010100000; when 1100 =b:=1000000100010000; when 1101 =b:=0000000100001000; when 1110 =b:=0000001000001110; when 1111 =b:=0000110000000100; when others=null; end case; when01101=case wei is when 0000 =b:=0000000000000000; when 0001 =b:=0100000110000100; when 001

32、0 =b:=0010011001111110; when 0011 =b:=0001010001000100; when 0100 =b:=0000010001000100; when 0101 =b:=0000010001000100; when 0110 =b:=1111010001000100; when 0111 =b:=0001010011000100; when 1000 =b:=0001010101000100; when 1001 =b:=0001011001010100; when 1010 =b:=0001010001001000; when 1011 =b:=000100

33、0001000000; when 1100 =b:=0001000001000000; when 1101 =b:=0010100001000110; when 1110 =b:=0100011111111100; when 1111 =b:=0000000000000000; when others=null; end case; when 01110=case wei is when 0000 =b:=0000100100000000; when 0001 =b:=0000100100000000; when 0010 =b:=0001001111111100; when 0011 =b:=0001001000001000; when 0100 =b:=0011010001001000; when 0101 =b:=0101100101000000; when 0110 =b:=1001000101010000; when 0111 =b:=0001001001001100;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論