VHDL脈沖按鍵電話顯示器_第1頁
VHDL脈沖按鍵電話顯示器_第2頁
VHDL脈沖按鍵電話顯示器_第3頁
VHDL脈沖按鍵電話顯示器_第4頁
VHDL脈沖按鍵電話顯示器_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、常熟理工學(xué)院課程設(shè)計報告用VHDL實現(xiàn)脈沖按鍵電路顯示器第一章 緒論1.1前言EDA(Electronic Design Automation,電子設(shè)計自動化 )技術(shù)正是為了適應(yīng)現(xiàn)代電子產(chǎn)品設(shè)計的要求,吸引多學(xué)科最新成果而形成的一門新技術(shù)。利用EDA進(jìn)行電子系統(tǒng)設(shè)計,具有以下幾個特點:(1)用軟件的方式設(shè)計硬件;(2)用軟件方式設(shè)計的系統(tǒng)到硬件系統(tǒng)的轉(zhuǎn)換是由有關(guān)的開發(fā)軟件自動完成的;(3)設(shè)計過程中可用有關(guān)軟件進(jìn)行各種仿真;(4)系統(tǒng)可現(xiàn)場編程,在線升級;(5)整個系統(tǒng)可集成在一個芯片上,體積小,功耗低,可靠性高。因此,EDA技術(shù)是現(xiàn)代電子設(shè)計的發(fā)展趨勢。我們本學(xué)期開設(shè)了EDA 課程,并開設(shè)了

2、為期兩周的EDA技術(shù)實訓(xùn),主要利用VHDL語言編程,我們組的題目具體如下。1.2題目要求1、 設(shè)計一個具有最高8位顯示的電話按鍵顯示器,能準(zhǔn)確地反映按鍵數(shù)字;2、 顯示器顯示從低位向高位前移,逐位顯示按鍵數(shù)字,最低位顯示當(dāng)前輸入數(shù)字;設(shè)置“刪除鍵”,按下此鍵,從最低位開始刪除數(shù)字,同時顯示器數(shù)字從高位向低位移動。3、 設(shè)置“撥號鍵”、“掛機(jī)鍵”、和“重?fù)苕I”,撥號鍵模擬撥號,按下此鍵撥號指示燈亮,并存儲當(dāng)前號碼;掛機(jī)鍵按下后,待機(jī)指示燈亮,2秒后熄滅顯示器顯示;重?fù)苕I按下能顯示最后一次輸入的電話號碼。2.1系統(tǒng)設(shè)計思路與框圖我們設(shè)計的用VHDL語言實現(xiàn)的脈沖按鍵電話顯示器由4個模塊組成:按鍵電

3、路,譯碼器,移位寄存、鎖存器和數(shù)碼管顯示電路,其中移位寄存、鎖存器和數(shù)碼管譯碼顯示電路為系統(tǒng)的主要組成部分。脈沖按鍵電話的總體設(shè)計框圖如圖2.1所示:圖2.1 脈沖按鍵電話總體設(shè)計方案2.2 各模塊功能分析2.2.1按鍵電路模塊按鍵電路功能:提供09數(shù)字按鍵的輸入,同時設(shè)置有撥號鍵,清除鍵,掛機(jī)鍵和重?fù)苕I。2.2.2 譯碼電路模塊譯碼電路功能:譯碼器的功能分為兩個部分,第一部分把輸入的一位鍵值轉(zhuǎn)換成四位BCD碼;第二部分把4位二進(jìn)制碼譯成相應(yīng)的數(shù)碼管輸出顯示碼。BCD碼對應(yīng)的七段數(shù)碼管顯示如表2.1所示:表2.1 BCD碼對應(yīng)的數(shù)碼管顯示4位BCD碼gfedcba顯示數(shù)字00000111111

4、0000101100001001010110112001110011113010011001104010111011015011011111016011111100007100011111118100111011119其他情況0000000無2.2.3 移位寄存器、鎖存模塊移位寄存器:移位寄存器分為三個部分,當(dāng)按下?lián)芴栨I時,數(shù)字按鍵值依次由數(shù)碼管的低位向高位移動,同時送入鎖存器中;當(dāng)按下刪除鍵時,鍵值由高位向低位移除,高位數(shù)碼管熄滅;當(dāng)按下重?fù)苕I時,鎖存器中存儲的鍵值輸入到移位寄存器中,并通過數(shù)碼管顯示出來。其大致的流程圖如圖2.2所示:圖2.2 按鍵輸入過程流程圖2.2.4 數(shù)碼管顯示模塊數(shù)

5、碼管顯示用于將設(shè)置好的每個按鍵的鍵值(對應(yīng)09的數(shù)字)在數(shù)碼管上顯示出來。由于實驗過程中需要使用8個數(shù)碼管,因為在數(shù)碼管顯示模塊必須加上數(shù)碼管片選及移位的程序,從而實現(xiàn)數(shù)據(jù)在輸入以后從低位向高位移動、顯示。在進(jìn)行編寫脈沖按鍵電話顯示器程序時,我們主要是利用元件例化語句來實現(xiàn)的,在頂層文件基礎(chǔ)上,調(diào)用了數(shù)碼管BCD碼譯碼、鍵值顯示兩個底層文件,分別命名為DISPLAY.VHD、SET_NUM.VHD。3.1 頂層文件程序(PLUSE_KEY.VHD)頂層文件的框圖如圖3.1所示:圖3.1 頂層文件框圖各端口說明分別為:輸入: 輸出:DIN190:09十個數(shù)字鍵; KEYOUT:可輸入數(shù)字指示燈;

6、CLK1:時鐘脈沖; SEG7160:8位數(shù)碼管; CLEAR:刪除鍵; SEG320:數(shù)碼管的七段;DIAL:撥號鍵;RE_DAIL:重?fù)苕I3.2 BCD譯碼子程序BCD譯碼程序的框圖如圖3.2所示圖3.2 BCD譯碼程序各端口說明分別為:輸入: 輸出:BCD130:4位BCD碼; 數(shù)碼管的七段顯示3.3鍵值顯示子程序(SET_NUM.VHD)鍵值顯示控制的框圖如圖3.3所示:圖3.3按鍵顯示控制框圖各端口說明分別為:輸入: 輸出:DIN 90:09十個數(shù)字鍵; KEYOUT:可輸入數(shù)字指示燈;CLK:時鐘脈沖; SET30:鍵值的BCD碼 CLEAR:刪除鍵; SEG320:數(shù)碼管的七段;

7、DIAL:撥號鍵;RE_DAIL:重?fù)苕I總結(jié)與體會在大學(xué)課程即將接近尾聲的時候,學(xué)院最后為我們安排了EDA技術(shù)實訓(xùn),主要是通過VHDL語言編程,利用CPLA/FPGA芯片完成脈沖按鍵電話顯示器的模擬??梢哉f通過一學(xué)期EDA的理論和實驗的學(xué)習(xí),對VHDL語言以及CPLD/FPGA 的下載與仿真有了一定的了解。但是在剛拿到題目要求時,我們小組有點茫然,特別在找資料的時候,我們利用網(wǎng)絡(luò)搜索基本沒有找到有用的資料,后來去學(xué)校圖書館去找參考書籍,也沒什么用。后來實在沒有辦法,只能在之前我們實驗做過的數(shù)字秒表的基礎(chǔ)上展開設(shè)計,自己畫程序流圖以及原理圖,編寫程序。在設(shè)計之初,由于用的實驗箱資源不夠,只能實現(xiàn)

8、四位數(shù)字的移動顯示,并且沒有設(shè)置刪除鍵,只有一個清除鍵。后來經(jīng)過我們的修改,終于實現(xiàn)的八位數(shù)字的移動顯示,也就基本將課題要求完成了。通過此次EDA技術(shù)實訓(xùn),我們在之前的基礎(chǔ)上能進(jìn)一步熟練使用VHDL語言進(jìn)行編程,也對CPLD/FPGA有了更進(jìn)一步的理解。相信在我們電子信息工程專業(yè)的學(xué)生以后的學(xué)習(xí)、工作有不少的好處。 附錄1 頂層文件程序LIBRARY IEEE; -庫定義USE IEEE.STD_LOGIC_1164.ALL; -包定義USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY PLUSE_KEY IS -定義實體名、端口PORT(DIN1:IN STD_L

9、OGIC_VECTOR(9 DOWNTO 0); -定義09數(shù)字輸入CLK1,CLEAR,DIAL,RE_DIAL:IN STD_LOGIC;KEYOUT:OUT STD_LOGIC; -定義可輸入脈沖指示燈SEG71:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -定義七位段碼SEG8:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); - 8個數(shù)碼管END ENTITY;ARCHITECTURE ONE OF PLUSE_KEY IS -定義結(jié)構(gòu)體COMPONENT SET_NUM IS -調(diào)用SET_NUM底層文件PORT(DIN:IN STD_LO

10、GIC_VECTOR(9 DOWNTO 0);CLK,CLEAR,DIAL,RE_DIAL:IN STD_LOGIC;KEYOUT:OUT STD_LOGIC;SET:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);SEG8:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END COMPONENT;COMPONENT DISPLAY IS -調(diào)用DISPLAY底層文件 PORT(BCD1:IN STD_LOGIC_VECTOR(3 DOWNTO 0);SEG7:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END COMPONENT;S

11、IGNAL SET_1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN -各端口的連接U1: SET_NUM PORT MAP( DIN1,CLK1,CLEAR,DIAL,RE_DIAL,KEYOUT,SET_1,SEG8); U2:DISPLAY PORT MAP(SET_1,SEG71);END ART;2 BCD譯碼子程序(DISPLAY.VHD)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DISPLAY IS PORT( BCD1:IN STD_LO

12、GIC_VECTOR(3 DOWNTO 0); SEG7:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END ENTITY;ARCHITECTURE ONE OF DISPLAY ISBEGIN PROCESS(BCD1)IS BEGIN CASE BCD1 IS WHEN "0000"=>SEG7<="0111111" -顯示0 WHEN "0001"=>SEG7<="0000110" -顯示1 WHEN "0010"=>SEG7<=

13、"1011011" -顯示2 WHEN "0011"=>SEG7<="1001111" -顯示3 WHEN "0100"=>SEG7<="1100110" -顯示4 WHEN "0101"=>SEG7<="1101101" -顯示5 WHEN "0110"=>SEG7<="1111101" -顯示6 WHEN "0111"=>SEG7<=

14、"0000111" -顯示7 WHEN "1000"=>SEG7<="1111111" -顯示8 WHEN "1001"=>SEG7<="1101111" -顯示9 WHEN OTHERS=>SEG7<="0000000" -其他情況下數(shù)碼管熄滅 END CASE; END PROCESS;END ARCHITECTURE;3 鍵值顯示子程序(SET_NUM.VHD)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.

15、ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SET_NUM IS PORT(DIN:IN STD_LOGIC_VECTOR(9 DOWNTO 0); CLK,CLEAR,DIAL,RE_DIAL:IN STD_LOGIC; KEYOUT:OUT STD_LOGIC; SET:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SEG8:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY;ARCHITECTURE ONE OF SET_NUM ISSUBTYPE TEN IS STD_LOGIC_VE

16、CTOR(3 DOWNTO 0);SIGNAL BCD :TEN;TYPE NUMBER1 IS ARRAY(7 DOWNTO 0) OF STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL NUMBER : NUMBER1;SIGNAL KEY,KEY1,CLK1,DIAL1,RE_DIAL1:STD_LOGIC;SIGNAL COUNT:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL COUNT1:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL COUNT2:STD_LOGIC_VECTOR(2 DOWNTO 0);SIG

17、NAL DIN1: STD_LOGIC_VECTOR(9 DOWNTO 0);SIGNAL LOCK: STD_LOGIC_VECTOR(31 DOWNTO 0);BEGIN- PROCESS(CLK)IS BEGIN IF RISING_EDGE(CLK) THEN COUNT1<=COUNT1+1; END IF; END PROCESS; CLK1<='0' WHEN COUNT1<"1100" ELSE '1' PROCESS(CLK1)IS BEGIN IF RISING_EDGE(CLK1) THEN DIN1(

18、9 DOWNTO 0)<=DIN(9 DOWNTO 0); DIAL1<=DIAL; RE_DIAL1<=RE_DIAL; END IF; END PROCESS; KEY<=(DIN1(0) OR DIN1(1) OR DIN1(2) OR DIN1(3) OR DIN1(4) OR DIN1(5) OR DIN(6) OR DIN1(7) OR DIN1(8) OR DIN1(9); PROCESS(CLK1)IS BEGIN IF FALLING_EDGE(CLK1) THEN IF COUNT2="100" THEN IF CLEAR=

19、9;0'AND RE_DIAL='0' THEN KEY1<=KEY; ELSIF CLEAR ='1' AND RE_DIAL='0' THEN KEY1<=CLK; ELSE KEY1<=RE_DIAL1; END IF; COUNT2<="000" ELSE COUNT2<=COUNT2+1; END IF; END IF; END PROCESS;- PROCESS(DIN1)IS BEGIN IF DIN1(6)='1' THEN BCD<="01

20、10" ELSIF DIN1(1)='1' THEN BCD<="0001" ELSIF DIN1(2)='1' THEN BCD<="0010" ELSIF DIN1(3)='1' THEN BCD<="0011" ELSIF DIN1(4)='1' THEN BCD<="0100" ELSIF DIN1(5)='1' THEN BCD<="0101" ELSIF DIN1(

21、0)='1' THEN BCD<="0000" ELSIF DIN1(7)='1' THEN BCD<="0111" ELSIF DIN1(8)='1' THEN BCD<="1000" ELSIF DIN1(9)='1' THEN BCD<="1001" ELSE BCD<="0000" END IF; END PROCESS;- KEYOUT<=KEY1; PROCESS(KEY1)IS BE

22、GIN IF RISING_EDGE(KEY1) THEN IF CLEAR='0' AND RE_DIAL1='0' THEN -輸入數(shù)字,實現(xiàn)數(shù)字從低位向高位移動 NUMBER(7)<=NUMBER(6); NUMBER(6)<=NUMBER(5); NUMBER(5)<=NUMBER(4); NUMBER(4)<=NUMBER(3); NUMBER(3)<=NUMBER(2); NUMBER(2)<=NUMBER(1); NUMBER(1)<=NUMBER(0); NUMBER(0)<=BCD; ELSIF

23、CLEAR='1' AND RE_DIAL1='0' THEN -按下刪除鍵,數(shù)字從高位向低位移動 NUMBER(0)<=NUMBER(1); NUMBER(1)<=NUMBER(2); NUMBER(2)<=NUMBER(3); NUMBER(3)<=NUMBER(4); NUMBER(4)<=NUMBER(5); NUMBER(5)<=NUMBER(6); NUMBER(6)<= NUMBER(7); NUMBER(7)<="1111" ELSE -將已輸入數(shù)字鎖存 NUMBER(7)<

24、;= LOCK(31 DOWNTO 28); NUMBER(6)<= LOCK(27 DOWNTO 24); NUMBER(5)<= LOCK(23 DOWNTO 20); NUMBER(4)<= LOCK(19 DOWNTO 16); NUMBER(3)<= LOCK(15 DOWNTO 12); NUMBER(2)<= LOCK(11 DOWNTO 8); NUMBER(1)<= LOCK(7 DOWNTO 4); NUMBER(0)<= LOCK(3 DOWNTO 0); END IF; END IF; END PROCESS;- PROCESS

25、(CLK)IS BEGIN IF RISING_EDGE(CLK) THEN COUNT<=COUNT+1; END IF; END PROCESS;- PROCESS(COUNT)IS BEGIN CASE COUNT IS -片選,選擇數(shù)碼管 WHEN "0001"=>SET<=NUMBER(7);SEG8<="00000001" WHEN "0011"=>SET<=NUMBER(6);SEG8<="00000010" WHEN "0101"=>S

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論