EDA技術(shù)課程設(shè)計(jì)-脈沖按鍵電話顯示器_第1頁(yè)
EDA技術(shù)課程設(shè)計(jì)-脈沖按鍵電話顯示器_第2頁(yè)
EDA技術(shù)課程設(shè)計(jì)-脈沖按鍵電話顯示器_第3頁(yè)
EDA技術(shù)課程設(shè)計(jì)-脈沖按鍵電話顯示器_第4頁(yè)
EDA技術(shù)課程設(shè)計(jì)-脈沖按鍵電話顯示器_第5頁(yè)
已閱讀5頁(yè),還剩15頁(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、課 程 設(shè) 計(jì)課 程 eda技術(shù)課程設(shè)計(jì) 題 目 脈沖按鍵電話顯示器 院 系 * 專業(yè)班級(jí) * 學(xué)生姓名 * 學(xué)生學(xué)號(hào) * 指導(dǎo)教師 2011年 3 月11日課程設(shè)計(jì)任務(wù)書課程 eda技術(shù)課程設(shè)計(jì)題目 脈沖按鍵電話顯示器專業(yè) * 姓名 * 學(xué)號(hào) *主要內(nèi)容、基本要求、主要參考資料等主要內(nèi)容:設(shè)計(jì)一個(gè)準(zhǔn)確地反映按鍵數(shù)字具有8位顯示的電話按鍵顯示器,該電話顯示器要求具有重?fù)艿墓δ埽?dāng)按下重?fù)苕I時(shí),能夠顯示最后一次輸入的電話號(hào)碼?;疽螅?、設(shè)計(jì)一個(gè)具有8位顯示的電話按鍵顯示器;2、能準(zhǔn)確地反映按鍵數(shù)字;3、顯示器顯示從低位向高位前移,逐位顯示按鍵數(shù)字,最低位為當(dāng)前輸入位;4、設(shè)置一個(gè)“重?fù)堋辨I,

2、按下此鍵,能顯示最后一次輸入的電話號(hào)碼;5、掛機(jī)2秒后或按熄滅按鍵,熄滅顯示器顯示。主要參考資料:1 潘松著.eda技術(shù)實(shí)用教程(第二版). 北京:科學(xué)出版社,2005.2 康華光主編.電子技術(shù)基礎(chǔ) 模擬部分. 北京:高教出版社,2006.3 閻石主編.數(shù)字電子技術(shù)基礎(chǔ). 北京:高教出版社,2003.完成期限 2011.3.11 指導(dǎo)教師 專業(yè)負(fù)責(zé)人 2011年 3月7日一、總體設(shè)計(jì)思想1.基本原理電話按鍵顯示器包括脈沖發(fā)生器、計(jì)數(shù)器、譯碼顯示器、控制器、移位寄存器等五部分組成。其中計(jì)數(shù)器和移位寄存器是系統(tǒng)的主要組成部分。移位寄存器部分是數(shù)字按鍵和移位寄存器組成的,完成09任意數(shù)字的鍵入且顯示

3、8位數(shù)字通過控制電路1可以任意清除當(dāng)前的電話號(hào)碼,以便重新輸入。當(dāng)8位電話號(hào)碼輸入完畢后再通過控制電路2啟動(dòng)計(jì)數(shù)器部分和脈沖發(fā)生器,來(lái)計(jì)算通話時(shí)間。計(jì)數(shù)器部分主要完成通話時(shí)間的記數(shù)作用。當(dāng)通話完畢后既是斷開高電平后,計(jì)時(shí)器停止工作,完成計(jì)時(shí)的功能與此同時(shí)移位寄存器也停止工作其顯示號(hào)碼部分立即清零。我們所設(shè)計(jì)的整體電路是由計(jì)時(shí)器設(shè)計(jì)電路、電話號(hào)碼顯示控制電路、脈沖產(chǎn)生電路三個(gè)部分組合而成的。2.設(shè)計(jì)框圖我們?cè)O(shè)計(jì)的用vhdl語(yǔ)言實(shí)現(xiàn)的脈沖按鍵電話顯示器由4個(gè)模塊組成:按鍵電路,譯碼器,移位寄存、鎖存器和數(shù)碼管顯示電路,其中移位寄存、鎖存器和數(shù)碼管譯碼顯示電路為系統(tǒng)的主要組成部分。脈沖按鍵電話的總體

4、設(shè)計(jì)框圖如圖2.1所示:圖2.1 脈沖按鍵電話總體設(shè)計(jì)方案二、設(shè)計(jì)步驟和調(diào)試過程1、總體設(shè)計(jì)電路2、模塊設(shè)計(jì)和相應(yīng)模塊程序2.1按鍵電路模塊按鍵電路功能:提供09數(shù)字按鍵的輸入,同時(shí)設(shè)置有撥號(hào)鍵,清除鍵,掛機(jī)鍵和重?fù)苕I。2.2 譯碼電路模塊譯碼電路功能:譯碼器的功能分為兩個(gè)部分,第一部分把輸入的一位鍵值轉(zhuǎn)換成四位bcd碼;第二部分把4位二進(jìn)制碼譯成相應(yīng)的數(shù)碼管輸出顯示碼。對(duì)應(yīng)的電路圖:2.3 移位寄存器、鎖存模塊移位寄存器:移位寄存器分為三個(gè)部分,當(dāng)按下?lián)芴?hào)鍵時(shí),數(shù)字按鍵值依次由數(shù)碼管的低位向高位移動(dòng),同時(shí)送入鎖存器中;當(dāng)按下刪除鍵時(shí),鍵值由高位向低位移除,高位數(shù)碼管熄滅;當(dāng)按下重?fù)苕I時(shí),鎖存

5、器中存儲(chǔ)的鍵值輸入到移位寄存器中,并通過數(shù)碼管顯示出來(lái)。其大致的流程圖如圖2.2所示:2.4 數(shù)碼管顯示模塊數(shù)碼管顯示用于將設(shè)置好的每個(gè)按鍵的鍵值(對(duì)應(yīng)09的數(shù)字)在數(shù)碼管上顯示出來(lái)。由于實(shí)驗(yàn)過程中需要使用8個(gè)數(shù)碼管,因?yàn)樵跀?shù)碼管顯示模塊必須加上數(shù)碼管片選及移位的程序,從而實(shí)現(xiàn)數(shù)據(jù)在輸入以后從低位向高位移動(dòng)、顯示。1 頂層文件程序library ieee; -庫(kù)定義use ieee.std_logic_1164.all; -包定義use ieee.std_logic_unsigned.all; entity pluse_key is -定義實(shí)體名、端口port(din1:in std_logi

6、c_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個(gè)數(shù)碼管end entity;architecture one of pluse_key is -定義結(jié)構(gòu)體component set_num is -調(diào)用set_num底層文件port(din:in std_logic

7、_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;sign

8、al 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_logic

9、_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=seg7seg7seg7seg7seg7seg7seg7seg7seg7seg7seg7=0000000; -其他情況下數(shù)碼管熄滅 end case; end process;end architecture;3 鍵值顯示子程序(set_num.vhd)library ieee;use ieee

10、.std_logic_1164.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

11、 is std_logic_vector(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

12、(2 downto 0);signal 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 count11100 else 1; process(clk1)is begin if rising_edge(clk1) then din1(9 downto 0)=din(9 downto 0)

13、; 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=0and re_dial=0 then key1=key; elsif clear =1 and re_dial=0

14、 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=0110; 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 th

15、en bcd=0101; elsif din1(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 begin if rising_edge(key1) then if clear=0 and re_dial1=0 then -輸入數(shù)字,實(shí)現(xiàn)數(shù)字從低位向高位移動(dòng) number(7)=numbe

16、r(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 clear=1 and re_dial1=0 then -按下刪除鍵,數(shù)字從高位向低位移動(dòng) number(0)=number(1); number(1)=number(2); number(2)=number(3); number(3)=number(4); number(4)=number(

17、5); number(5)=number(6); number(6)= number(7); number(7)=1111;- process(clk)is begin if rising_edge(clk) then count=count+1; end if; end process;- process(dial1)is begin -在重?fù)苕I以后,顯示已撥號(hào)碼 if rising_edge(dial1) then lock(31 downto 28)=number(7); lock(27 downto 24)=number(6); lock(23 downto 20)=number(5)

18、; lock(19 downto 16)=number(4); lock(15 downto 12)=number(3); lock(11 downto 8)=number(2); lock(7 downto 4)=number(1); lock(3 downto 0)=number(0); end if; end process;end architecture;3、仿真及仿真結(jié)果分析本文設(shè)計(jì)的矩陣鍵盤及顯示電路在quartus 1i開發(fā)環(huán)境下進(jìn)行了仿真驗(yàn)證。仿真結(jié)果分析如下:(1) clk為時(shí)鐘信號(hào)輸入信號(hào),作為系統(tǒng)時(shí)鐘;(2) rst為清零控制端,當(dāng)其為高電平時(shí),按鍵有效。4、實(shí)驗(yàn)調(diào)試結(jié)果本文設(shè)計(jì)的脈沖按鍵電話顯示器進(jìn)行仿真驗(yàn)證后,輸入8位數(shù)字以后顯示結(jié)果如圖3.4所示:三、結(jié)論及心得體會(huì)在這次的課程設(shè)計(jì)中,主要是通過vhdl語(yǔ)言編程,利用cpla/fpga芯片完成脈沖按鍵電話顯示器的模擬。這次的設(shè)計(jì)使我對(duì)于書上的知識(shí)有了進(jìn)一步的了解,使我的動(dòng)手能力有了很大的提高。在查找資料的時(shí)候,我覺得好像還是很簡(jiǎn)單的,但在實(shí)際動(dòng)手后,才發(fā)現(xiàn)并沒有想象中的簡(jiǎn)單。我們不光只是掌握課堂上學(xué)過的東西,還得學(xué)會(huì)靈活應(yīng)用才可以。這次課程設(shè)計(jì)主要還是讓我們活學(xué)活用自己的數(shù)電知識(shí),使我更加熟悉了數(shù)字電路,對(duì)寄存器,計(jì)數(shù)器等有了

溫馨提示

  • 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)論