軟件課程設(shè)計(jì)報(bào)告矩陣鍵盤控制接口電路設(shè)計(jì)_第1頁
軟件課程設(shè)計(jì)報(bào)告矩陣鍵盤控制接口電路設(shè)計(jì)_第2頁
軟件課程設(shè)計(jì)報(bào)告矩陣鍵盤控制接口電路設(shè)計(jì)_第3頁
軟件課程設(shè)計(jì)報(bào)告矩陣鍵盤控制接口電路設(shè)計(jì)_第4頁
軟件課程設(shè)計(jì)報(bào)告矩陣鍵盤控制接口電路設(shè)計(jì)_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、東 北 石 油 大 學(xué)課 程 設(shè) 計(jì)課 程 硬件課程設(shè)計(jì) 題 目 矩陣鍵盤控制接口電路設(shè)計(jì) 院 系 專業(yè)班級(jí) 學(xué)生姓名 學(xué)生學(xué)號(hào) 指導(dǎo)教師 2011年 07月 10 日 東北石油大學(xué)課程設(shè)計(jì)任務(wù)書課程 硬件課程設(shè)計(jì)題目 矩陣鍵盤控制接口設(shè)計(jì)專業(yè) 姓名 學(xué)號(hào) 主要內(nèi)容、基本要求、主要參考資料等一、主要內(nèi)容:利用el教學(xué)實(shí)驗(yàn)箱、微機(jī)和quartus軟件系統(tǒng),設(shè)計(jì)并實(shí)現(xiàn)一個(gè)48鍵盤接口控制器。設(shè)計(jì)過程中使用層次設(shè)計(jì)方法和vhdl語言,完成硬件設(shè)計(jì)和功能仿真。最后下載到el教學(xué)實(shí)驗(yàn)箱中予以實(shí)現(xiàn)。二、基本要求:1.按照層次設(shè)計(jì)方法實(shí)現(xiàn)鍵盤接口控制器中的時(shí)序產(chǎn)生電路、鍵盤掃描電路、彈跳消除電路、鍵盤譯碼電

2、路、按鍵碼存儲(chǔ)電路和顯示八段數(shù)碼管電路。2. 按下某一鍵時(shí),在數(shù)碼管上顯示該鍵對(duì)應(yīng)的鍵值。 三、參考文獻(xiàn):1 李國洪,胡輝.可編程器件與eda技術(shù)與實(shí)踐m.北京:機(jī)械工業(yè)出版社,2004.2 潘松,黃繼業(yè).eda技術(shù)實(shí)用教程m.北京:科學(xué)出版社,2002.3 王行,李衍.eda技術(shù)入門與提高m.西安:西安電子科技大學(xué)出版社,2005.4 徐惠民,安德寧.數(shù)字邏輯設(shè)計(jì)與vhdl描述m.北京:機(jī)械工業(yè)出版社,2008.完成期限: 18-19周 指導(dǎo)教師: 專業(yè)負(fù)責(zé)人: 2011年 06 月28 日目 錄第1章 eda的概述1第2章 quartus ii系統(tǒng)3第3章 矩陣鍵盤控制接口電路43.1 概

3、述43.2 底層實(shí)體電路63.3 頂層實(shí)體電路93.4 仿真結(jié)果163.5 硬件驗(yàn)證結(jié)果17結(jié) 論20參考文獻(xiàn)21東北石油大學(xué)本科生硬件課程設(shè)計(jì)第1章 eda的概述eda是電子設(shè)計(jì)自動(dòng)化(electronic design automation)的縮寫,在20世紀(jì)90年代初從計(jì)算機(jī)輔助設(shè)計(jì)(cad)、計(jì)算機(jī)輔助制造(cam)、計(jì)算機(jī)輔助測(cè)試(cat)和計(jì)算機(jī)輔助工程(cae)的概念發(fā)展而來的。電子設(shè)計(jì)自動(dòng)化(eda)技術(shù)是電子設(shè)計(jì)技術(shù)和先進(jìn)的電子制造技術(shù)的核心1。20世紀(jì)90年代,國際上電子和計(jì)算機(jī)技術(shù)較先進(jìn)的國家,一直在積極探索新的電子電路設(shè)計(jì)方法,并在設(shè)計(jì)方法、工具等方面進(jìn)行了徹底的變革,

4、取得了巨大成功。在電子技術(shù)設(shè)計(jì)領(lǐng)域,可編程邏輯器件(如cpld、fpga)的應(yīng)用,已得到廣泛的普及,這些器件為數(shù)字系統(tǒng)的設(shè)計(jì)帶來了極大的靈活性。這些器件可以通過軟件編程而對(duì)其硬件結(jié)構(gòu)和工作方式進(jìn)行重構(gòu),從而使得硬件的設(shè)計(jì)可以如同軟件設(shè)計(jì)那樣方便快捷。這一切極大地改變了傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計(jì)方法、設(shè)計(jì)過程和設(shè)計(jì)觀念,促進(jìn)了eda技術(shù)的迅速發(fā)展2。eda技術(shù)就是以計(jì)算機(jī)為工具,設(shè)計(jì)者在eda軟件平臺(tái)上,用硬件描述語言hdl完成設(shè)計(jì)文件,然后由計(jì)算機(jī)自動(dòng)地完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局、布線和仿真,直至對(duì)于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。eda技術(shù)的出現(xiàn),極大地提高了電路設(shè)

5、計(jì)的效率和可操作性,減輕了設(shè)計(jì)者的勞動(dòng)強(qiáng)度3。利用eda工具,電子設(shè)計(jì)師可以從概念、算法、協(xié)議等開始設(shè)計(jì)電子系統(tǒng),大量工作可以通過計(jì)算機(jī)完成,并可以將電子產(chǎn)品從電路設(shè)計(jì)、性能分析到設(shè)計(jì)出ic版圖或pcb版圖的整個(gè)過程的計(jì)算機(jī)上自動(dòng)處理完成。隨著計(jì)算技術(shù)和數(shù)字技術(shù)的發(fā)展,在現(xiàn)代電子設(shè)備中,單純用模擬電路實(shí)現(xiàn)的已經(jīng)很少見,通常只在微弱信號(hào)放大、高頻數(shù)據(jù)采集和大功率輸出等局部電路采用模擬電路,其余部分廣泛采用數(shù)字電路。因此,對(duì)大多數(shù)電子設(shè)備而言,其整體部分是數(shù)字系統(tǒng)4?,F(xiàn)在對(duì)eda的概念或范疇用得很寬。包括在機(jī)械、電子、通信、航空航天、化工、礦產(chǎn)、生物、醫(yī)學(xué)、軍事等各個(gè)領(lǐng)域,都有eda的應(yīng)用。目前e

6、da技術(shù)已在各大公司、企事業(yè)單位和科研教學(xué)部門廣泛使用。例如在飛機(jī)制造過程中,從設(shè)計(jì)、性能測(cè)試及特性分析直到飛行模擬,都可能涉及到eda技術(shù)。1.幾個(gè)有關(guān)eda的專題網(wǎng)站(1) eda中心 (2) eda中國門戶網(wǎng)站 (3) 中國eda工程網(wǎng) (4) eda愛好者 (5) eda教學(xué)與研究 2.設(shè)計(jì)方法(1) 前端設(shè)計(jì)(系統(tǒng)建模rtl 級(jí)描述)后端設(shè)計(jì)(fpgaasic)系統(tǒng)建模(2) ip 復(fù)用(3) 前端設(shè)計(jì)(4) 系統(tǒng)描述:建立系統(tǒng)的數(shù)學(xué)模型。(5) 功能描述:描述系統(tǒng)的行為或各子模塊之間的數(shù)據(jù)流圖。(6) 邏輯設(shè)計(jì):將系統(tǒng)功能結(jié)構(gòu)化,通常以文本、原理圖、邏輯圖、布爾表達(dá)式來表示設(shè)計(jì)結(jié)果

7、。(7) 仿真:包括功能仿真和時(shí)序仿真,主要驗(yàn)證系統(tǒng)功能的正確性及時(shí)序特性。3.eda工具軟件eda工具軟件可大致可分為芯片設(shè)計(jì)輔助軟件、可編程芯片輔助設(shè)計(jì)軟件、系統(tǒng)設(shè)計(jì)輔助軟件等三類。目前進(jìn)入我國并具有廣泛影響的eda軟件是系統(tǒng)設(shè)計(jì)軟件輔助類和可編程芯片輔助設(shè)計(jì)軟件:protel、pspice、multisim7(原ewb的最新版本)、orcad、pcad、lsiiogic、microsim,ise,modelsim等等。這些工具都有較強(qiáng)的功能,一般可用于幾個(gè)方面,例如很多軟件都可以進(jìn)行電路設(shè)計(jì)與仿真,同進(jìn)還可以進(jìn)行pcb自動(dòng)布局布線,可輸出多種網(wǎng)表文件與第三方軟件接口。eda工具軟件廠商三

8、巨頭:synopsys、mentor graphics、cadence。第2章 quartus ii系統(tǒng)quartus ii 是altera公司的綜合性pld開發(fā)軟件,支持原理圖、vhdl、veriloghdl以及ahdl(altera hardware description language)等多種設(shè)計(jì)輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整pld設(shè)計(jì)流程5。 quartus ii可以在xp、linux以及unix上使用,除了可以使用tcl腳本完成設(shè)計(jì)流程外,提供了完善的用戶圖形界面設(shè)計(jì)方式。具有運(yùn)行速度快,界面統(tǒng)一,功能集中,易學(xué)易用等特點(diǎn)。 quartu

9、s ii支持altera的ip核,包含了lpm/megafunction宏功能模塊庫,使用戶可以充分利用成熟的模塊,簡化了設(shè)計(jì)的復(fù)雜性、加快了設(shè)計(jì)速度。對(duì)第三方eda工具的良好支持也使用戶可以在設(shè)計(jì)流程的各個(gè)階段使用熟悉的第三方eda工具。 此外,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)。 maxplus ii 作為altera的上一代pld設(shè)計(jì)軟件,由于其出色的易用性而得到了廣泛的應(yīng)

10、用。目前altera已經(jīng)停止了對(duì)maxplus ii 的更新支持,quartus ii 與之相比不僅僅是支持器件類型的豐富和圖形界面的改變。altera在quartus ii 中包含了許多諸如signaltap ii、chip editor和rtl viewer的設(shè)計(jì)輔助工具,集成了sopc和hardcopy設(shè)計(jì)流程,并且繼承了maxplus ii 友好的圖形界面及簡便的使用方法6。 altera quartus ii 作為一種可編程邏輯的設(shè)計(jì)環(huán)境, 由于其強(qiáng)大的設(shè)計(jì)能力和直觀易用的接口,越來越受到數(shù)字系統(tǒng)設(shè)計(jì)者的歡迎。 altera的quartus ii可編程邏輯軟件屬于第四代pld開發(fā)平臺(tái)

11、。該平臺(tái)支持一個(gè)工作組環(huán)境下的設(shè)計(jì)要求,其中包括支持基于internet的協(xié)作設(shè)計(jì)。quartus平臺(tái)與cadence、exemplarlogic、 mentorgraphics、synopsys和synplicity等eda供應(yīng)商的開發(fā)工具相兼容。改進(jìn)了軟件的logiclock模塊設(shè)計(jì)功能,增添 了fastfit編譯選項(xiàng),推進(jìn)了網(wǎng)絡(luò)編輯性能,而且提升了調(diào)試能力。第3章 矩陣鍵盤控制接口電路3.1 概述在鍵盤中按鍵數(shù)量較多時(shí),為了減少i/o口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個(gè)按鍵加以連接。這樣,一個(gè)端口就可以構(gòu)成4*4=16個(gè)按

12、鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數(shù)比較多時(shí),采用矩陣法來做鍵盤是合理的。矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復(fù)雜一些,識(shí)別也要復(fù)雜一些,列線通過電阻接正電源,并將行線所接的fpga的i/o口作為輸出端,而列線所接的i/o口則作為輸入。這樣,當(dāng)按鍵沒有按下時(shí),所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會(huì)被拉低,這樣,通過讀入輸入線的狀態(tài)就可得知是否有鍵按下了。實(shí)驗(yàn)儀器中48矩陣鍵盤的電路原理圖如圖3-1所示:圖3-1 48矩陣鍵盤的電

13、路原理圖表3-1 鍵盤參數(shù)表sel2sel0kin3kin0對(duì)應(yīng)的按鍵鍵盤譯 碼輸出按鍵功能0001110000000數(shù)字01101600100數(shù)字61011last10100功能鍵0111ctrl11000功能鍵0011110100001數(shù)字11101700111數(shù)字71011step10101功能鍵0111empty111010擴(kuò)展10101110200010數(shù)字21101reg10010功能鍵1011c01100字母c0111empty211011擴(kuò)展20111110300011數(shù)字31101exec10011功能鍵1011d01101字母d0111empty311100擴(kuò)展310011

14、10mem10000功能鍵1101801000數(shù)字81011e01110字母e0111empty411101擴(kuò)展41011110esc10001功能鍵1101901001數(shù)字91011f01111字母f0111shift11001功能鍵1101110400100數(shù)字41101a01010字母a1011next10110功能鍵0111none11110無定義1111110500101數(shù)字51101b01011字母b1011enter10111功能鍵0111none11110無定義掃描信號(hào)為bcom8.1,在bcom8.1前已接有一個(gè)3-8譯碼器,3-8譯碼器的輸入為sel0sel3。當(dāng)3-8譯碼

15、器的輸入為“000”時(shí),即bcom1為0,其他位為1,我們按下第一排第一鍵,此時(shí)kin0輸出0,kin1kin3輸出全為1,按下第二排第二鍵時(shí),kin1輸出0,其他輸出1;當(dāng)3-8譯碼器輸入為001時(shí),即bcom2為0,我們按下第一排第二鍵,此時(shí)kin0輸出0,kin1kin3輸出全為1,同理其他鍵依此類推。鍵盤上的每個(gè)按鍵就是一個(gè)開關(guān),當(dāng)某鍵被按下時(shí),該按鍵的接點(diǎn)會(huì)呈現(xiàn)0狀態(tài),反之為1。掃描信號(hào)為sel2.0進(jìn)入3-8譯碼器,再從譯碼器輸出到鍵盤,所以第一次只能掃描一排,依此周而復(fù)始。按鍵位置與數(shù)碼的關(guān)系如表3-1所示。若從kin3.0輸出的皆為1時(shí),表示沒有按鍵按下,代表該列沒有按鍵被按下

16、,則不進(jìn)行按鍵編碼的操作,反之,如果有被按下時(shí),則應(yīng)將kin3.0讀出的值送到譯碼電路進(jìn)行編碼。設(shè)置掃描信號(hào)為sel2sel0,列線按鍵輸入信號(hào)kin3kin0與按鍵位置的關(guān)系如表3-1所示。3.2 底層實(shí)體電路彈跳消除電路因?yàn)榘存I大多是機(jī)械式開關(guān)結(jié)構(gòu),在開關(guān)切換的瞬間會(huì)在接觸點(diǎn)出現(xiàn)來回彈跳的現(xiàn)象,對(duì)于激活關(guān)閉一般電器并不會(huì)有何影響,但對(duì)于靈敏度較高的電路,卻有可能產(chǎn)生誤動(dòng)作而出錯(cuò)。彈跳現(xiàn)象產(chǎn)生的原因可從圖3-2說明。雖然只是按下按鍵一次然后放掉,然而實(shí)際產(chǎn)生的按鍵信號(hào)卻不只跳動(dòng)一次,經(jīng)過取樣的檢查后將會(huì)造成誤判,以為按鍵兩次。如果調(diào)整抽樣頻率,可以發(fā)現(xiàn)彈跳現(xiàn)象獲得了改善,如圖3-3所示。因此

17、必須加上彈跳消除電路,避免誤操作信號(hào)的發(fā)生。注意,彈跳消除電路所使用脈沖信號(hào)的頻率必須比其它電路使用的脈沖信號(hào)的頻率更高;通常將掃描電路或led顯示電路的工作頻率定在24hz左右,兩者的工作頻率是通常的4倍或更高。按鍵信號(hào)抽樣信號(hào)抽樣結(jié)果圖3-2 彈跳現(xiàn)象產(chǎn)生錯(cuò)誤的抽樣結(jié)果按鍵信號(hào)抽樣信號(hào)抽樣結(jié)果圖3-3 調(diào)整抽樣頻率后得到的抽樣結(jié)果該元件為一個(gè)通用的全功能的消抖動(dòng)元件,內(nèi)含有自由計(jì)數(shù)器模塊、消抖動(dòng)模塊和微分模塊。各引腳說明如下:key為按鍵輸入信號(hào),高電平有效,有抖動(dòng)毛刺;clr是清零信號(hào),低電平有效;clk是同步時(shí)鐘信號(hào),選擇20mhz;dly_out是消抖動(dòng)輸出;diff_out是消抖動(dòng)

18、微分輸出。library ieee; -消除use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity debouncing isport(clk,key:in std_logic; clr:in std_logic; dly_out,dif_out:out std_logic);end debouncing;architecture a of debouncing is signal sample,dly,diff:std_logic; beginfree_counter:block -計(jì)數(shù)器模塊 signal qq:

19、std_logic_vector(4 downto 0); signal d0:std_logic; begin process(clr,clk) begin if clr=0then d0=0; qq0); elsif clkevent and clk=1then d0=qq(4); qq=qq+1; end if; end process; sample=not(qq(4) and (not d0);end block free_counter;debunce:block -消抖動(dòng)模塊 signal d0,d1,s,r:std_logic;begin process(clk,clr) be

20、gin if clr=0 then dly=0; elsif rising_edge(clk) then if sample=1 then d1=d0; d0=key; s=d0 and d1; r=not d0 and not d1; if s=0 and r=0 then dly=dly; elsif s=0 and r=1 then dly=0; elsif s=1 and r=0 then dly=1; else dly=0; end if; end if; end if; end process; dly_out=dly;end block debunce;differential:

21、block -微分模塊 signal d1,d0:std_logic; begin process(clk,clr) begin if clr=0then d0=0;d1=0; elsif rising_edge(clk)then d1=d0;d0=dly; end if; diff=d0 and not d1; end process; dif_out=diff;end block differential;end a;彈跳消除電路生成元件:圖3-4 彈跳消除電路生成元件3.3 頂層實(shí)體電路1、 時(shí)鐘產(chǎn)生電路當(dāng)一個(gè)系統(tǒng)中使用不同操作頻率的脈沖波形時(shí),最方便的方法就是利用一個(gè)自由計(jì)數(shù)器來產(chǎn)生各

22、種頻率。本電路中就使用三種不同頻率的工作脈沖波形。它們分別是:系統(tǒng)時(shí)鐘(它是系統(tǒng)內(nèi)部所有時(shí)鐘的提供者,頻率最高)、彈跳消除取樣信號(hào)、鍵盤掃描信號(hào)和七段顯示器掃描信號(hào)。在很多的電路設(shè)計(jì)中,鍵盤掃描信號(hào)和七段顯示器掃描信號(hào)可以使用相同的時(shí)鐘信號(hào),本設(shè)計(jì)也采用此方法。該模塊中的掃描信號(hào)就是取了計(jì)數(shù)器中的3個(gè)值,使用語句: seltmp=q(7 downto 5);此處seltmp要預(yù)先定義為3bit的寬度。2、 鍵盤掃描電路掃描電路的作用是用來提供鍵盤掃描信號(hào)的電路,掃描信號(hào)的變化的順序依次為000-001-010-011-100-101-110-111依次的周而復(fù)始。掃描時(shí)依序分別掃描八列按鍵,當(dāng)

23、掃描信號(hào)為000時(shí),掃描0這一列按鍵每掃描一列按鍵,就檢查一次是否有按鍵按下,如果這排有按鍵按下,就馬上停止掃描,立即進(jìn)行按鍵編碼動(dòng)作,存儲(chǔ)鍵碼,如果沒有按鍵按下,則繼續(xù)掃描下一列。用語句seltmp=q(7 downto 5); selout=seltmp;即可實(shí)現(xiàn)鍵盤掃描。3、 鍵盤譯碼電路上述鍵盤中的按鍵可分為數(shù)字鍵和功能鍵。數(shù)字鍵主要用來輸入數(shù)字,但鍵盤所產(chǎn)生的輸出kin3kin0無法拿來直接使用;另外不同的數(shù)字按鍵也擔(dān)負(fù)不同的功能,因此必須由鍵盤譯碼電路來規(guī)劃第個(gè)按鍵的輸出形式,以便執(zhí)行相應(yīng)的動(dòng)作。譯碼電路負(fù)責(zé)的工作有:a)判別是否有鍵按下。b)將被按下鍵編碼成對(duì)應(yīng)的zout7.08

24、位二進(jìn)制編碼,即用十進(jìn)制數(shù)來顯示按鍵值:key_code=zout;c)把key_code送到內(nèi)部下一級(jí)電路,即按鍵碼的寄存器_選擇器模塊。4、 按鍵碼存儲(chǔ)電路因?yàn)槊看螔呙钑?huì)產(chǎn)生新的按鍵數(shù)據(jù),可能會(huì)覆蓋前面的數(shù)據(jù),所以需要一個(gè)按鍵存儲(chǔ)電路,將整個(gè)鍵盤掃描完畢后記錄下來。5、 顯示電路該模塊把db3.0的值譯成8位的數(shù)碼管所對(duì)應(yīng)的0、1、2、3、4、5、6、7、8、9,使數(shù)碼管正常顯示按鍵值。library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.al

25、l;entity keys_test isport(clk20,clr:in std_logic; selout:out std_logic_vector(2 downto 0); notselout_0:out std_logic; key:in std_logic_vector(3 downto 0); segout:out std_logic_vector(7 downto 0);end keys_test; architecture a of keys_test iscomponent debouncing -鍵盤掃描模塊 port(key:in std_logic; clk,clr:

26、in std_logic; dly_out:out std_logic);end component; signal clk,clk1,clk2,clk4:std_logic; signal seltmp:std_logic_vector(2 downto 0); signal key_code:std_logic_vector(7 downto 0); signal c:std_logic_vector(3 downto 0); signal db,key_in:std_logic_vector(3 downto 0); signal seg:std_logic_vector(7 downt

27、o 0);begin segout(7 downto 0)=seg; selout=seltmp; notselout_0=not seltmp(0); key_in=not key;fenpin:block signal m:integer range 0 to 10#5#; begin process(clk20) begin if clk20event and clk20=1then if m=10#5# then m=0; else m=m+1; end if; end if; end process; process(m) begin if m=10#5# then clk4=1;

28、else clk4=0; end if; end process; end block fenpin;counter:block -時(shí)鐘產(chǎn)生電路 signal q:std_logic_vector(10 downto 0); begin process(clk4,clr) begin if clr=0 then q0); elsif clk4event and clk4=1 then q=q+1; end if;end process; clk=q(0); clk1=q(2); clk2=q(4); seltmpkey_in(0), dly_out=c(0),clr=clr,clk=clk);

29、 u2:debouncing port map(key=key_in(1), dly_out=c(1),clr=clr,clk=clk); u3:debouncing port map(key=key_in(2), dly_out=c(2),clr=clr,clk=clk); u4:debouncing port map(key=key_in(3),dly_out=c(3),clr=clr,clk=clk);end block debounuing;key_decoder:block -鍵盤譯碼電路 signal z:std_logic_vector(6 downto 0); signal z

30、out:std_logic_vector(7 downto 0); beginz=(not c)&seltmp; key_code=zout; -用十進(jìn)制數(shù)顯示 process(clk1,clr) beginif clr=0 then zout0);elsif clk1event and clk1=1 thencase z iswhen1110000=zoutzoutzoutzoutzoutzoutzoutzoutzoutzoutzoutzoutzoutzoutzoutzoutzoutzoutzoutzoutzoutzoutzoutzoutzoutzoutzoutzoutzoutzoutzou

31、tzoutzout=11111111;end case;end if;end process;end block key_decoder;reg_multiplexer:block -按鍵碼的存儲(chǔ)模塊signal key_code1:std_logic_vector(7 downto 0);beginprocess(clk2,clr)begin if clr=0 then key_code10); elsif(clk2event and clk2=1)then if(key_code=11111111) then key_code1=key_code1; else key_code1=key_

32、code; end if; end if;end process;db=key_code1(3 downto 0)when(seltmp(0)=0)else key_code1(7 downto 4)when(seltmp(0)=1)else 0000;end block reg_multiplexer;seven_segment:block -顯示模塊 begin seg=00111111 when db=0000 else 00000110 when db=0001 else 01011011 when db=0010 else 01001111 when db=0011 else 011

33、00110 when db=0100 else 01101101 when db=0101 else 01111101 when db=0110 else 00000111 when db=0111 else 01111111 when db=1000 else 01101111 when db=1001 else 01110111 when db=1010 else 01111100 when db=1011 else 00111001 when db=1100 else 01011110 when db=1101 else 01111001 when db=1110 else 011100

34、01 when db=1111 else 00000000; end block seven_segment; end a;頂層實(shí)體電路生成元件:圖3-5 頂層實(shí)體電路生成元件3.4 仿真結(jié)果在軟件平臺(tái)的錄入設(shè)計(jì)中,應(yīng)當(dāng)先錄入底層debouncing.vhd設(shè)計(jì)文本,并把它設(shè)為當(dāng)前的工程項(xiàng)目,經(jīng)編譯、仿真,得到仿真波形圖后,退出debouncing.vhd文本;再錄入頂層文本key_test.vhd,并把它設(shè)為當(dāng)前的工程項(xiàng)目,經(jīng)編譯、仿真,得到仿真波形圖。彈跳消除電路設(shè)計(jì)實(shí)體仿真波形如圖3-6和3-7所示: 圖3-6 彈跳消除電路設(shè)計(jì)實(shí)體原始波形圖圖3-7 彈跳消除電路設(shè)計(jì)實(shí)體仿真波形圖頂層設(shè)計(jì)實(shí)體仿真波形如圖3-8和3-9所示:圖3-8 頂層設(shè)計(jì)實(shí)體原始波形圖圖3-9 頂層設(shè)計(jì)實(shí)體仿真波形圖3.5 硬件驗(yàn)證結(jié)果將實(shí)驗(yàn)箱與微機(jī)和電源分別連接好。首先檢測(cè)試驗(yàn)箱是否可以使用,經(jīng)檢測(cè)無誤后,開通電源。根據(jù)引腳的鎖定情況,將clk20時(shí)鐘接20mhz時(shí)鐘輸入,key3.0分別接實(shí)驗(yàn)儀器的鍵盤輸出kin3.0,selout2.0分別接實(shí)驗(yàn)儀器的掃描輸入sel2.0,segout7.0分別接7段顯示器輸入dpa,如圖3-10所示。即把芯片與5行6列薄膜輕觸按鍵

溫馨提示

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