

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目錄 </b></p><p><b> 目錄1</b></p><p><b> 緒論2</b></p><p> 第一章 電子密碼鎖設(shè)計(jì)要求及目的3</p><p><b> 1.1設(shè)計(jì)要求3</b>&
2、lt;/p><p> 1.2 設(shè)計(jì)目的3</p><p> 第二章 系統(tǒng)設(shè)計(jì)方案4</p><p> 2.1. 密碼鎖的組成部分4</p><p> 2.2.矩陣式鍵盤的工作原理5</p><p> 2.3.密碼鎖輸入電路各主要功能模塊的設(shè)計(jì)6</p><p> 2.3.1 時(shí)
3、序產(chǎn)生電路6</p><p> 2.3.2 鍵盤掃描電路7</p><p> 2.3.3 彈跳消除電路7</p><p> 2.3.4 按鍵存儲(chǔ)電路8</p><p> 2.3.5 密碼鎖輸入電路模塊框圖9</p><p> 2.4 密碼鎖控制電路的設(shè)計(jì)9</p><p>
4、 2.4.1 數(shù)字按鍵輸入的響應(yīng)控制9</p><p> 2.4.2 功能按鍵輸入的響應(yīng)控制9</p><p> 2.4.3. 密碼控制模塊圖10</p><p> 2.5 密碼鎖顯示電路的設(shè)計(jì)10</p><p> 第三章 密碼鎖的整體組裝設(shè)計(jì)12</p><p> 第四章 系統(tǒng)仿真13<
5、;/p><p> 4.1鍵盤輸入去抖電路的仿真13</p><p> 4.2密碼鎖輸入電路的仿真13</p><p> 4.3密碼鎖控制電路的仿真14</p><p> 4.4密碼鎖顯示電路七段譯碼器的仿真15</p><p><b> 小結(jié)16</b></p>&l
6、t;p><b> 謝辭17</b></p><p><b> 參考文獻(xiàn)18</b></p><p><b> 附錄19</b></p><p><b> 附錄一19</b></p><p><b> 附錄二21</
7、b></p><p><b> 附錄三24</b></p><p><b> 緒論</b></p><p> 電子密碼鎖的使用體現(xiàn)了人們消費(fèi)水平、保安意識(shí)和科技水平的提高,而且避免了攜帶甚至丟失鑰匙的麻煩。目前設(shè)計(jì)密碼鎖的方法很多,例如用傳統(tǒng)的PCB板設(shè)計(jì)、用PLC設(shè)計(jì)或者用單片機(jī)設(shè)計(jì)等等。而用VHDL可以更
8、加快速、靈活地設(shè)計(jì)出符合各種要求的密碼鎖,優(yōu)于其他設(shè)計(jì)方法。VHDL是一種符合IEEE標(biāo)準(zhǔn)的硬件描述語言,其最大的特點(diǎn)是借鑒高級(jí)程序設(shè)計(jì)語言的功能特性,對(duì)電路的行為與結(jié)構(gòu)進(jìn)行高度抽象化、規(guī)范化的形式描述,并對(duì)設(shè)計(jì)的不同層次、不同領(lǐng)域的模擬驗(yàn)證與綜合優(yōu)化等處理,使設(shè)計(jì)過程廷到高度自動(dòng)化。</p><p> 本文介紹一種利用EDA技術(shù)和VHDL語言,在Quartus II環(huán)境下,設(shè)計(jì)了一種新型的電子密碼鎖。它體積小
9、、功耗低、價(jià)格便宜、安全可靠,維護(hù)和升級(jí)十分方便,具有較好的應(yīng)用前景。</p><p> 隨著社會(huì)物質(zhì)財(cái)富的日益增長,安全防盜已成為全社會(huì)問題。人們對(duì)鎖的要求越來越高,既要安全可靠地防盜,又要使用方便。彈子鎖由于結(jié)構(gòu)上的局限已難以滿足當(dāng)前社會(huì)管理和防盜要求,特別是在人員經(jīng)常變動(dòng)的公共場所,如辦公室、賓館等地方。電子密碼鎖由于其自身的優(yōu)勢,越來越受到人們的青睞,但是目前使用的電子密碼鎖大部分是基于單片機(jī)用分離元件
10、實(shí)現(xiàn)的,其成本較高且可靠性得不到保證。本文采用先進(jìn)的EDA技術(shù),利用Quartus II工作平臺(tái)和VHDL語言,設(shè)計(jì)了一種新型的電子密碼鎖。</p><p> 電子密碼鎖設(shè)計(jì)要求及目的</p><p><b> 1.1設(shè)計(jì)要求</b></p><p> ?。?)數(shù)碼輸入:每按下一個(gè)鍵,就輸入一個(gè)數(shù)值,并在數(shù)碼管上的最右方顯示出該數(shù)值,同時(shí)將
11、先前輸入的數(shù)據(jù)依序左移一個(gè)數(shù)字位置;</p><p> ?。?)數(shù)碼清除:按下此鍵可清除前面所有的輸入值,清除成為“0000”,能用Quartus II軟件仿真; </p><p> (3)密碼更改:按下此鍵時(shí)會(huì)將目前的數(shù)字設(shè)定成新的密碼;</p><p> (4)激活電鎖:按下此鍵可將密碼鎖上鎖;</p><p> (5)解除電鎖:按
12、下此鍵會(huì)檢查輸入的密碼是否正確,密碼正確即開鎖。</p><p> (6)創(chuàng)新:設(shè)置一個(gè)萬能密碼,在主人忘記密碼時(shí)使用。</p><p><b> 1.2 設(shè)計(jì)目的</b></p><p> 隨著電子技術(shù)的發(fā)展,具有防盜報(bào)警等功能的電子密碼鎖代替密碼量少、安全性差的機(jī)械式密碼鎖已是必然趨勢。電子密碼鎖與普通機(jī)械鎖相比,具有許多獨(dú)特的優(yōu)點(diǎn):
13、保密性好,防盜性強(qiáng),可以不用鑰匙,記住密碼即可開鎖等。</p><p> 本課程設(shè)計(jì)主要是基于VHDL文本輸入法設(shè)計(jì)電子密碼鎖,隨著社會(huì)物質(zhì)財(cái)富的日益增長,安全防盜已成為全社會(huì)關(guān)注的問題?;贓DA技術(shù)設(shè)計(jì)的電子密碼鎖,以其價(jià)格便宜、安全可靠、使用方便,受到了人們的普遍關(guān)注。而以現(xiàn)場可編程邏輯器件(FPGA)為設(shè)計(jì)載體,以硬件描述語言(VHDE)為主要表達(dá)方式,以QuartusⅡ開發(fā)軟件和GW48EDA開發(fā)系統(tǒng)
14、為設(shè)計(jì)工具設(shè)計(jì)的電子密碼鎖,由于其能夠?qū)崿F(xiàn)數(shù)碼輸入、數(shù)碼清除、密碼解除、密碼更改、密碼上鎖和密碼解除等功能,因此,能夠滿足社會(huì)對(duì)安全防盜的要求。</p><p> 電子密碼鎖是一種通過密碼輸入來控制電路或是芯片工作,從而控制機(jī)械開關(guān)的閉合,完成開鎖、閉鎖任務(wù)的電子產(chǎn)品。它的種類很多,有簡易的電路產(chǎn)品,也有基于芯片的性價(jià)比較高的產(chǎn)品?,F(xiàn)在應(yīng)用較廣的電子密碼鎖是以芯片為核心,通過編程來實(shí)現(xiàn)的。其性能和安全性已大大超
15、過了機(jī)械鎖,其特點(diǎn)如下:</p><p> 1.保密性好,編碼量多,遠(yuǎn)遠(yuǎn)大于彈子鎖。隨機(jī)開鎖成功率幾乎為零。</p><p> 2.密碼可變。 用戶可以經(jīng)常更改密碼,防止密碼被盜,同時(shí)也可以避免因人員的更替而使鎖的密級(jí)下降。</p><p> 3.誤碼輸入保護(hù)。當(dāng)輸入密碼多次錯(cuò)誤時(shí),報(bào)警系統(tǒng)自動(dòng)啟動(dòng)。</p><p> 4. 電子密碼
16、鎖操作簡單易行。</p><p> 第二章 系統(tǒng)設(shè)計(jì)方案</p><p> 2.1. 密碼鎖的組成部分</p><p> 作為通用電子密碼鎖,主要由三個(gè)部分組成:數(shù)字密碼輸入電路、密碼鎖控制電路和密碼鎖顯示電路。</p><p> 根據(jù)以上選定的輸入設(shè)備和顯示器件,并考慮到實(shí)現(xiàn)各項(xiàng)數(shù)字密碼鎖功能的具體要求,整個(gè)電子密碼鎖系統(tǒng)的總體組成
17、框圖如圖2.1所示。</p><p> (1) 密碼鎖輸入電路包括時(shí)序產(chǎn)生電路、鍵盤掃描電路、鍵盤彈跳消除電路、鍵盤譯碼電路等幾個(gè)小的功能電路。</p><p> (2) 密碼鎖控制電路包括按鍵數(shù)據(jù)的緩沖存儲(chǔ)電路,密碼的清除、變更、存儲(chǔ)、激活電鎖電路(寄存器清除信號(hào)發(fā)生電路),密碼核對(duì)(數(shù)值比較電路),解鎖電路(開/關(guān)門鎖電路)等幾個(gè)小的功能電路。</p>
18、;<p> (3) 七段數(shù)碼管顯示電路主要將待顯示數(shù)據(jù)的BCD碼轉(zhuǎn)換成數(shù)碼器的七段顯示驅(qū)動(dòng)編碼。</p><p> 圖2.1 數(shù)字電子密碼鎖系統(tǒng)總體框圖</p><p> 電子密碼鎖的輸入電路框圖是由鍵盤掃描電路、彈跳消除電路、鍵盤譯碼電路、按鍵數(shù)據(jù)緩存器,加上外接的一個(gè)3×4矩陣式鍵盤組成。如圖2.2。</p><p>
19、 圖2.2電子密碼鎖的輸入電路框圖</p><p> 2.2.矩陣式鍵盤的工作原理</p><p> 矩陣式鍵盤是一種常見的輸入裝置,在日常的生活中,矩陣式鍵盤在計(jì)算機(jī)、電話、手機(jī)、微波爐等各式電子產(chǎn)品上已經(jīng)被廣泛應(yīng)用。圖2.3是一個(gè)3×4矩陣式鍵盤的面板配置圖,其中數(shù)字0~9作為密碼數(shù)字輸入按鍵,*作為“上鎖”功能按鍵,#作為“解鎖/清除”功能按鍵。</p>
20、<p> 在鍵盤中按鍵數(shù)量較多時(shí),為了減少I/O口的占用,通常將按鍵排列成矩陣形式,如圖所示。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個(gè)按鍵加以連接。這樣,一個(gè)端口(如P1口)就可以構(gòu)成4*4=16個(gè)按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數(shù)比較多時(shí),采用矩陣法來做鍵盤是合理的
21、。 矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復(fù)雜一些,識(shí)別也要復(fù)雜一些,上圖中,列線通過電阻接正電源,并將行線所接的單片機(jī)的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當(dāng)按鍵沒有按下時(shí),所有的輸入端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會(huì)被拉低,這樣,通過讀入輸入線的狀態(tài)就可得知是否有鍵按下了。具體的識(shí)別及編程方法如下所述。 </p><p> 矩陣式鍵盤中,行、列線分別連
22、接到按鍵開關(guān)的兩端,行線通過上拉電阻接到+5V上。當(dāng)無鍵按下時(shí),行線處于高電平狀態(tài);當(dāng)有鍵按下時(shí),行、列線將導(dǎo)通,此時(shí),行線電平將由與此行線相連的列線電平?jīng)Q定。這一點(diǎn)是識(shí)別矩陣按鍵是否被按下的關(guān)鍵。然而,矩陣鍵盤中的行線、列線和多個(gè)鍵相連,各按鍵按下與否均影響該鍵所在行線和列線的電平,各按鍵間將相互影響,因此,必須將行線、列線信號(hào)配合起來作適當(dāng)處理,才能確定閉合鍵的位置。 </p><p> 圖2.3
23、0; 3×4矩陣式鍵盤的面板配</p><p> 表2.1. 行掃描信號(hào)、列按鍵輸入信號(hào)與按鍵位置的關(guān)系</p><p> 2.3.密碼鎖輸入電路各主要功能模塊的設(shè)計(jì) </p><p> 2.3.1 時(shí)序產(chǎn)生電路</p><p> 時(shí)序電路,它是由最基本的邏輯門電路加上反饋邏輯回路(輸出到輸入)或器件組合而成的電
24、路,與組合電路最本質(zhì)的區(qū)別在于時(shí)序電路具有記憶功能。時(shí)序電路的特點(diǎn)是:輸出不僅取決于當(dāng)時(shí)的輸入值,而且還與電路過去的狀態(tài)有關(guān)。它類似于含儲(chǔ)能元件的電感或電容的電路,如觸發(fā)器、鎖存器、計(jì)數(shù)器、移位寄存器、儲(chǔ)存器等電路都是時(shí)序電路的典型器件。 </p><p> 雖然組合邏輯電路能夠很好地處理像加、減等這樣的操作,但是要單獨(dú)使用組合邏輯電路,使操作按照一定的順序執(zhí)行,需要串聯(lián)起許多組合邏輯電路,而要通過硬件實(shí)現(xiàn)這種
25、電路代價(jià)是很大的,并且靈活性也很差。為了實(shí)現(xiàn)一種有效而且靈活的操作序列,我們需要構(gòu)造一種能夠存儲(chǔ)各種操作之間的信息的電路,我們稱這種電路為時(shí)序電路。</p><p> 本時(shí)序產(chǎn)生電路中使用了三種不同頻率的工作脈沖波形:系統(tǒng)時(shí)鐘脈沖(它是系統(tǒng)內(nèi)部所有時(shí)鐘脈沖的源頭,且其頻率最高)、彈跳消除取樣信號(hào)、鍵盤掃描信號(hào)。</p><p> 2.3.2 鍵盤掃描電路</p><
26、p> 鍵盤一般有獨(dú)立式和行列式(矩陣式)兩種。當(dāng)然還有其它的結(jié)構(gòu),比如交互式結(jié)構(gòu)等等,不過其它的結(jié)構(gòu)比較少用,在這里就不介紹了。在中穎的單片機(jī)中,有些單片機(jī)的LCD驅(qū)動(dòng)引腳的SEGMENT口可以共享按鍵掃描口,當(dāng)選擇為按鍵掃描口時(shí),可以使用這些口來掃描按鍵,所以在外部電路可以連接LCD和按鍵矩陣,采用分時(shí)掃描進(jìn)行處理,下面也將介紹這個(gè)特殊應(yīng)用的方法和注意的地方。</p><p> 掃描電路的作用是用來提
27、供鍵盤掃描信號(hào)(表4.1中的KY3~KY0)的,掃描信號(hào)變化的順序依次為1110-1101-1011-0111-1110......依序地周而復(fù)始。</p><p> 上述鍵盤中的按鍵可分為數(shù)字按鍵和文字按鍵,每一個(gè)按鍵可能負(fù)責(zé)不同的功能,例如清除數(shù)碼、退位、激活電鎖、開鎖等,詳細(xì)功能參見表1.3。 </p><p> 表2.3 鍵盤參數(shù)表</p><p>
28、 2.3.3 彈跳消除電路</p><p> 按鍵開關(guān)的典型連線分為低電平有效和高電平有效,本文的是低電平有效。 機(jī)械開關(guān)的抖動(dòng)存在三種情況按下時(shí)有抖動(dòng),松開時(shí)也有抖動(dòng),按下時(shí)有抖動(dòng)松開時(shí)無抖動(dòng),按下時(shí)無抖動(dòng)松開時(shí)有抖動(dòng)。機(jī)械開關(guān)的抖動(dòng)波形、抖動(dòng)次數(shù)、抖動(dòng)時(shí)間都是隨機(jī)的,并不是每次都會(huì)產(chǎn)生抖動(dòng)。不同開關(guān)的最長抖動(dòng)時(shí)間也不同。抖動(dòng)時(shí)間的長短和機(jī)械開關(guān)特性有關(guān),一般為5ms到10ms。但是某些開關(guān)的抖動(dòng)時(shí)間長達(dá)20
29、ms甚至更長。所以在具體設(shè)計(jì)中要具體分析根據(jù)實(shí)際情況來調(diào)整設(shè)計(jì)。彈跳現(xiàn)象以及彈跳消除如圖所示,雖然只是按下按鍵一次后放掉。結(jié)果在按鍵信號(hào)穩(wěn)定先后竟出現(xiàn)了多個(gè)段脈沖。如果將這樣的信號(hào)直接送到計(jì)數(shù)器之類的時(shí)序電路,結(jié)果將可能發(fā)生計(jì)數(shù)超過一次以上的誤動(dòng)作,從而誤以為鍵盤按了多次。因此必須加上彈跳消除電路除去短脈沖避免誤操作的發(fā)生</p><p> 彈跳消除電路的實(shí)現(xiàn)原理如圖1.6所示,先將鍵盤的輸入信號(hào)D_IN做為電
30、路的輸入信號(hào),CLK是電路的時(shí)鐘脈沖信號(hào),也就是取樣信號(hào),D_IN經(jīng)過兩級(jí)D觸發(fā)器延時(shí)后再使用RS觸發(fā)器處理。</p><p> 此處RS觸發(fā)器的前端連接和非門的處理原則是:</p><p> (1) 因?yàn)橐话闳说陌存I速度至多是10次/秒,亦即一次按鍵時(shí)間是100 ms,所以按下的時(shí)間可估算為50 ms。以取樣信號(hào)CLK的周期為8 ms計(jì),則可以
31、取樣到6次。 </p><p> (2) 對(duì)于不穩(wěn)定的噪聲,在4 ms以下則至多抽樣一次。</p><p> (3) 在觸發(fā)器之前,接上AND-NOT之后,SR的組態(tài)如表1.2所示。</p><p> 圖2.6 彈跳消除電路的內(nèi)部實(shí)現(xiàn)原理圖</p><p> 表2.2 RS觸發(fā)器真值表
32、</p><p> 2.3.4 按鍵存儲(chǔ)電路 </p><p> 因?yàn)槊看螔呙钑?huì)產(chǎn)生新的按鍵數(shù)據(jù),可能會(huì)覆蓋前面的數(shù)據(jù),所以需要一個(gè)按鍵存儲(chǔ)電路,將整個(gè)鍵盤掃描完畢后的結(jié)果記錄下來。按鍵存儲(chǔ)電路可以使用</p><p> 移位寄存器構(gòu)成。常見的移位寄存器的下列四種:串行輸入/串行輸出(SISO),串行輸入/并行輸出(SIPO),并行輸入/串行輸出(PISO),
33、并行輸入/并行輸出(PIPO)。 </p><p> 2.3.5 密碼鎖輸入電路模塊框圖</p><p> 輸入電路引腳圖如下圖所示,圖中CLK_1K為系統(tǒng)原始時(shí)鐘脈沖(1 kHz)</p><p> KEY_IN為鍵盤按鍵輸入,CLK_SCAN為鍵盤掃描序列輸出,DATA_N:數(shù)字輸出功能,DATA_F:功能輸出,F(xiàn)LAG_N為數(shù)字輸出標(biāo)志,F(xiàn)LAG_F為功
34、能輸出(上鎖及開鎖)標(biāo)志,CLK_CTR是控制電路工作時(shí)鐘信號(hào),CLK_DEBOUNCE是去抖電路工作時(shí)鐘信號(hào),大約125 Hz 。</p><p> 圖2.7. 密碼輸入模塊框圖</p><p> 2.4 密碼鎖控制電路的設(shè)計(jì)</p><p> 密碼鎖的控制電路是整個(gè)電路的控制中心,主要完成對(duì)數(shù)字按鍵輸入和功能按鍵輸入的響應(yīng)控制。</p>&l
35、t;p> 2.4.1 數(shù)字按鍵輸入的響應(yīng)控制</p><p> 如果輸入數(shù)字鍵,第一個(gè)數(shù)字會(huì)從顯示器的最右端開始顯示,此后每新按一個(gè)數(shù)字時(shí),顯示器上的數(shù)字必須往左移動(dòng)一位。若想要更改輸入的數(shù)字,可按退格鍵來清除前一個(gè)輸入的數(shù)字,或按清除鍵清除輸入的所有數(shù)字,再重新輸入 4位數(shù)字。既然設(shè)計(jì)的是四位電子密碼鎖,當(dāng)輸入的數(shù)字鍵超過 4位時(shí),電路不應(yīng)理會(huì)。 </p><p> ?。?)如
36、果按下數(shù)字鍵,第一個(gè)數(shù)字會(huì)從顯示器的最右端開始顯示,此后每新按一個(gè)數(shù)字時(shí),顯示器上的數(shù)字必須左移一格,以便將新的數(shù)字顯示出來。 (2)假如要更改輸入的數(shù)字,可以按倒退按鍵來清除前一個(gè)輸入的數(shù)字,或者按清除鍵清除所有輸入的數(shù)字,再重新輸入四位數(shù)。</p><p> ?。?) 由于這里設(shè)計(jì)的是一個(gè)四位的電子密碼鎖,所以當(dāng)輸入的數(shù)字鍵超過四個(gè)時(shí),電路不予理會(huì),而且不再顯示第四個(gè)以后的數(shù)字。<
37、/p><p> 2.4.2 功能按鍵輸入的響應(yīng)控制</p><p><b> 控制功能如下:</b></p><p> ?。?) 清除鍵:清除所有的輸入數(shù)字,即做歸零動(dòng)作。</p><p> ?。?) 激活電鎖鍵:按下此鍵時(shí)可將密碼鎖的門上鎖。(上鎖前必須預(yù)先設(shè)定一個(gè)四位的數(shù)字密碼。</p>
38、;<p> (3) 解除電鎖鍵:按下此鍵會(huì)檢查輸入的密碼是否正確,若密碼正確無誤則開門。 </p><p> 圖2.8電子密碼鎖的三種模式及關(guān)系</p><p> 2.4.3. 密碼控制模塊圖</p><p> 模塊引腳如下圖所示:圖中DATA_N[3..0]:4位行輸入.DATA_N[3..0]:為4位列掃描輸出,F(xiàn)LAG_
39、N和FLAG_F則對(duì)應(yīng)ENLOCK實(shí)現(xiàn)清除/上鎖功能,CLK為全局時(shí)鐘信號(hào),DATA_BCD[15..0]為輸出16位BCD碼,經(jīng)譯碼器后轉(zhuǎn)換為4位密碼輸出。</p><p> 圖2.9.密碼控制模塊圖</p><p> 2.5 密碼鎖顯示電路的設(shè)計(jì)</p><p> 密碼鎖顯示電路的設(shè)計(jì)比較簡單,這里直接采用四個(gè)4-7譯碼器來實(shí)現(xiàn)。BCD---七段顯示譯碼器
40、(74LS48) 1)輸入:8421BCD碼,用A3 A2 A1 A0表示(4位)。 2)輸出:七段顯示,用Ya ~ Yg 表示(7位) </p><p> 圖中A[3..0]為按鍵輸入在經(jīng)過去抖電路后的的BCD碼的高4位輸入數(shù)值,經(jīng)過4-7譯碼器譯碼后輸出0~9之間的數(shù)值,因?yàn)檩斎霝?6位的BCD碼,而每一個(gè)譯碼器僅4位輸入,故一共需要4個(gè)譯碼器來實(shí)現(xiàn)密碼鎖顯示電路的設(shè)計(jì)。譯碼器引腳如下圖所示:&l
41、t;/p><p> 圖2.10. 七段譯碼器輸入輸出引腳圖</p><p> 第三章 密碼鎖的整體組裝設(shè)計(jì)</p><p> 根據(jù)系統(tǒng)設(shè)計(jì)要求,系統(tǒng)設(shè)計(jì)采用自頂向下的設(shè)計(jì)方法。頂層設(shè)計(jì)采用原理圖設(shè)計(jì)方式,系統(tǒng)的整體組裝設(shè)計(jì)原理圖如圖3-1所示,它由密碼鎖輸入模塊、密碼鎖控制模塊和密碼鎖顯示譯碼模塊三部分組成。</p><p> 將前面各
42、個(gè)設(shè)計(jì)好的功能模塊進(jìn)行整合,可得到一個(gè)完整的電子密碼鎖系統(tǒng)的整體組裝設(shè)計(jì)原理圖,如圖所示。</p><p> 如下圖所示為系統(tǒng)設(shè)計(jì)原理圖,圖中CLK為輸入信號(hào)系統(tǒng)原始時(shí)鐘脈沖(1 kHz),KEY_IN[2..0]為按鍵輸入信號(hào),即當(dāng)有鍵按下時(shí)時(shí)鐘脈沖信號(hào)檢測到有信號(hào)輸入,KEYBOARD模塊對(duì)輸入信號(hào)進(jìn)行鍵盤掃描處理,判斷按下的是數(shù)字鍵還是功能鍵,每次的輸入數(shù)值都會(huì)通過七段譯碼器顯示結(jié)果,最后在核定密碼真確后
43、則開鎖。</p><p> 圖3.1密碼鎖的整體組裝設(shè)計(jì)</p><p><b> 第四章 系統(tǒng)仿真</b></p><p> 該密碼鎖利用Quartus Ⅱ工作平臺(tái)進(jìn)行編譯和綜合仿真,將程序下載FLEX10K芯片中,同時(shí)在EDA試驗(yàn)箱上進(jìn)行硬件驗(yàn)證。本文提出的電子密碼鎖由于采用VHDL語言設(shè)計(jì),用一片F(xiàn)PGA實(shí)現(xiàn),因而體積小,功耗低,稍
44、加修改就可以改變密碼的位數(shù)和輸入密碼的次數(shù),具有較好的應(yīng)用前景。但由于結(jié)構(gòu)還比較簡單,有待進(jìn)一步完善。</p><p> 4.1鍵盤輸入去抖電路的仿真</p><p> 對(duì)去抖電路源程序用Quartus Ⅱ10.0進(jìn)行時(shí)序仿真,得到仿真圖如下:</p><p> 圖中輸出信號(hào)QQ0,QQ1,D_OUT1,DD0,DD1是為便于仿真時(shí)觀察中間結(jié)果而增加的觀測點(diǎn)的
45、輸出,可以在程序中去掉,CLK為時(shí)鐘脈沖</p><p> 信號(hào),當(dāng)檢測到有鍵按下時(shí),即D_IN為高電平時(shí)接觸點(diǎn)出現(xiàn)信號(hào)來回彈跳的現(xiàn)象。</p><p> 圖4.1 鍵盤輸入去抖電路DEBOUNCING.VHD的仿真結(jié)果圖</p><p><b> 程序見附錄一</b></p><p> 4.2密碼鎖輸入電路的仿
46、真</p><p> 對(duì)密碼鎖輸入電路源程序用Quartus Ⅱ10.0進(jìn)行時(shí)序仿真,得到仿真圖如下:</p><p> 圖4.2輸入電路仿真結(jié)果圖</p><p> 說明:1、鍵盤譯碼電路除了負(fù)責(zé)將鍵盤送出的數(shù)據(jù)進(jìn)行譯碼外,另外就是在譯碼的同時(shí),必須判別所按下的是數(shù)字鍵還是功能鍵。</p><p> 2、若為數(shù)字鍵,則flag_nu
47、mb=1,且out_num 輸出BCD 碼顯示電路。</p><p> 3、若為功能鍵,則flag_func=1,且out_func 輸出4 位碼,并送往電鎖控制電路。</p><p> 4、對(duì)密碼鎖輸入模塊仿真如下圖:圖中的輸出信號(hào)CLK_SCAN,C_DEBOUNCE是為便于仿真時(shí)觀察中間結(jié)果而增加的觀測點(diǎn)的輸出,F(xiàn)LAG_N為數(shù)字輸出標(biāo)志,當(dāng)輸入為數(shù)字時(shí)為高電平,DATA_F為功
48、能輸出(4位),F(xiàn)LAG_F為功能輸出標(biāo)志當(dāng)按鍵輸入為退格鍵或確認(rèn)鍵時(shí)為高電平輸出,DATA_N為數(shù)字輸出,即在數(shù)字輸出標(biāo)志為高電平時(shí)確認(rèn)輸出數(shù)值。</p><p><b> 程序見附錄二</b></p><p> 4.3密碼鎖控制電路的仿真</p><p> 對(duì)密碼鎖控制電路源程序用Quartus Ⅱ10.0進(jìn)行時(shí)序仿真,得到仿真圖如下
49、:</p><p> 圖4.3密碼鎖控制電路仿真結(jié)果圖</p><p> 對(duì)密碼控制電路模塊進(jìn)行時(shí)序仿真如上圖: FLAG_N為數(shù)字輸出標(biāo)志,高電平時(shí)確認(rèn)輸出數(shù)字,F(xiàn)LAG_F為功能輸出標(biāo)志,密碼控制模塊根據(jù)4位按鍵輸入在判斷其為功能輸入還是數(shù)字輸入后輸出16位BCD碼。</p><p><b> 程序見附錄三</b></p>
50、<p> 4.4密碼鎖顯示電路七段譯碼器的仿真</p><p> 對(duì)密碼鎖顯示電路七段譯碼器源程序用Quartus Ⅱ10.0進(jìn)行時(shí)序仿真,得到仿真圖如下:</p><p> 對(duì)七段數(shù)碼顯示譯碼器源程序仿真如下圖,執(zhí)行功能如下:將輸入的BCD碼的高4位進(jìn)行轉(zhuǎn)換,如圖中輸入為1011時(shí),輸出7C;輸入為1000時(shí),輸出為7F。</p><p>&l
51、t;b> 程序見附錄四</b></p><p> 圖4.4 七段數(shù)碼顯示譯碼器仿真波形</p><p><b> 小結(jié)</b></p><p> 通過兩星期的緊張工作,最后完成了我的設(shè)計(jì)任務(wù)——基于VHDL語言的電子密碼鎖設(shè)計(jì)。通過本次課程設(shè)計(jì)的學(xué)習(xí),我深深的體會(huì)到設(shè)計(jì)課的重要性和目的性所在。本次設(shè)計(jì)課不僅僅培養(yǎng)了我們
52、實(shí)際操作能力,也培養(yǎng)了我們靈活運(yùn)用課本知識(shí),理論聯(lián)系實(shí)際,獨(dú)立自主的進(jìn)行設(shè)計(jì)的能力。它不僅僅是一個(gè)學(xué)習(xí)新知識(shí)新方法的好機(jī)會(huì),同時(shí)也是對(duì)我所學(xué)知識(shí)的一次綜合的檢驗(yàn)和復(fù)習(xí),使我明白了自己的缺陷所在,從而查漏補(bǔ)缺。希望學(xué)校以后多安排一些類似的實(shí)踐環(huán)節(jié),讓同學(xué)們學(xué)以致用。</p><p> 在設(shè)計(jì)中要求我要有耐心和毅力,還要細(xì)心,稍有不慎,一個(gè)小小的錯(cuò)誤就會(huì)導(dǎo)致結(jié)果的不正確,而對(duì)錯(cuò)誤的檢查要求我要有足夠的耐心,通過這次
53、設(shè)計(jì)和設(shè)計(jì)中遇到的問題,也積累了一定的經(jīng)驗(yàn),對(duì)以后從事集成電路設(shè)計(jì)工作會(huì)有一定的幫助。在應(yīng)用VHDL的過程中讓我真正領(lǐng)會(huì)到了其并行運(yùn)行與其他軟件(C語言)順序執(zhí)行的差別及其在電路設(shè)計(jì)上的優(yōu)越性。用VHDL硬件描述語言的形式來進(jìn)行數(shù)字系統(tǒng)的設(shè)計(jì)方便靈活,利用EDA軟件進(jìn)行編譯優(yōu)化仿真極大地減少了電路設(shè)計(jì)時(shí)間和可能發(fā)生的錯(cuò)誤,降低了開發(fā)成本,這種設(shè)計(jì)方法必將在未來的數(shù)字系統(tǒng)設(shè)計(jì)中發(fā)揮越來越重要的作用。</p><p>
54、; 此次的設(shè)計(jì)是參考了《EDA技術(shù)實(shí)驗(yàn)與課程設(shè)計(jì)》里的程序,不過由于程序里面出現(xiàn)了不少的語法錯(cuò)誤,使得在編譯時(shí)出現(xiàn)了20多個(gè)錯(cuò)誤,不過在看過書后,細(xì)心地檢查過程序后方能糾正過來。在糾正的過程中獲益良多。 在EDA軟件平臺(tái)上,用硬件描述語言VHDL完成設(shè)計(jì)文件,然后由計(jì)算機(jī)自動(dòng)地完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局、布線和仿真,直至對(duì)于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。感覺EDA還是很有研究價(jià)值的,能大大的
55、減少設(shè)計(jì)者的工作量。</p><p><b> 謝辭</b></p><p> 在此次課程設(shè)計(jì)中,非常感謝**老師對(duì)我的指導(dǎo)與大力的幫助。</p><p> 課程設(shè)計(jì)的完成,還要感謝老師給我們提供的各種參考文獻(xiàn),在老師的嚴(yán)格要求下,這次的實(shí)際操作讓我學(xué)到了很多從書本上學(xué)不到卻終身受益的知識(shí),良好的學(xué)習(xí)習(xí)慣,端正的學(xué)習(xí)態(tài)度。這為我以后的學(xué)習(xí)
56、和工作打下了良好的基礎(chǔ),更好的去面對(duì)社會(huì),適應(yīng)社會(huì)。在此特別感謝老師一學(xué)年來對(duì)我們的的耐心教學(xué)及環(huán)環(huán)引導(dǎo)讓我們對(duì)高頻電子線路設(shè)計(jì)的學(xué)習(xí)變得生動(dòng)有趣!</p><p><b> 參考文獻(xiàn)</b></p><p> [1]盧毅,賴杰.《VHDL與數(shù)字電路設(shè)計(jì)》.北京:科學(xué)出版社. 2002.3</p><p> [2]潘松、黃繼業(yè).EDA技術(shù)
57、與VHDL. 北京:清華大學(xué)出版社. 2006.7</p><p> [3]朱正偉.《EDA技術(shù)及應(yīng)用》.北京:清華大學(xué)出版社. 2005.10</p><p> [4]閻石.數(shù)字電子技術(shù)基礎(chǔ)[M].北京市西城區(qū):高等教育出版社.2008.12</p><p> [5]謝自美.電子線路設(shè)計(jì)實(shí)驗(yàn)測試[Z].武漢:華中科技大學(xué)出版社.2006.9</p>
58、;<p><b> 附錄</b></p><p><b> 附錄一</b></p><p> 鍵盤輸入去抖電路的VHDL源程序:</p><p> --DEBOUNCING.VHD</p><p> LIBRARY IEEE; </p><p> U
59、SE IEEE.STD_LOGIC_1164.ALL; </p><p> LIBRARY ALTERA; </p><p> USE ALTERA.MAXPLUS2.ALL;</p><p> ENTITY DEBOUNCING IS</p><p> PORT(D_IN, CLK: IN STD_LOGIC; </p>
60、<p> DD1, DD0, QQ1, QQ0 : OUT STD_LOGIC; </p><p> D_OUT, D_OUT1: OUT STD_LOGIC ); </p><p> END ENTITY DEBOUNCING ; </p><p> ARCHITECTURE ART OF DEBOUNCING IS</p>
61、<p> COMPONENT DCFQ IS</p><p> PORT(CLK, CLRN, PRN, D: IN STD_LOGIC; </p><p> Q: OUT STD_LOGIC); </p><p> END COMPONENT DCFQ; </p><p> SIGNAL VCC, INV_D : ST
62、D_LOGIC ; </p><p> SIGNAL Q0, Q1 : STD_LOGIC ; </p><p> SIGNAL D1, D0 : STD_LOGIC ; </p><p><b> BEGIN</b></p><p> VCC <= '1' ; </p>
63、<p> INV_D <= NOT D_IN ;</p><p> U1: DCFQ PORT MAP (CLK => CLK, CLRN => INV_D, PRN => VCC, D =>VCC , Q => Q0); </p><p> U2: DCFQ PORT MAP (CLK => CLK, CLRN => Q
64、0, PRN => VCC, D =>VCC , Q => Q1); </p><p> PROCESS (CLK)</p><p><b> BEGIN</b></p><p> IF CLK'EVENT AND CLK='1' THEN</p><p> D0 <
65、;= NOT Q1; </p><p> D1 <= D0; </p><p><b> END IF ;</b></p><p> END PROCESS ; </p><p> DD0 <= D0; DD1 <= D1; QQ1 <= Q1; QQ0 <= Q0;
66、 </p><p> D_OUT <= NOT (D1 AND NOT D0); </p><p> D_OUT1 <= NOT Q1 ; </p><p> END ARCHITECTURE ART; </p><p> --DCFQ.VHD</p><p> LIBRARY IEEE; <
67、;/p><p> USE IEEE.STD_LOGIC_1164.ALL; </p><p> ENTITY DCFQ IS</p><p> PORT(CLK, CLRN, PRN, D: IN STD_LOGIC; </p><p> Q: OUT STD_LOGIC);</p><p> END ENTIT
68、Y DCFQ ; </p><p> ARCHITECTURE ART OF DCFQ IS</p><p><b> BEGIN</b></p><p> PROCESS (CLK, CLRN, PRN)</p><p><b> BEGIN</b></p><p>
69、; IF CLRN='0' AND PRN='1' THEN</p><p><b> Q<='0'; </b></p><p> ELSIF CLRN='1' AND PRN='0' THEN</p><p><b> Q<='
70、;1'; </b></p><p> ELSIF CLK'EVENT AND CLK='1' THEN</p><p><b> Q <=D; </b></p><p><b> END IF ; </b></p><p> END PR
71、OCESS ; </p><p> END ARCHITECTURE ART; </p><p><b> 附錄二</b></p><p> 密碼鎖輸入電路的VHDL源程序:</p><p> --KEYBOARD.VHD</p><p> LIBRARY IEEE; </p>
72、;<p> USE IEEE.STD_LOGIC_1164.ALL; </p><p> USE IEEE.STD_LOGIC_ARITH.ALL ; </p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL ; </p><p> ENTITY KEYBOARD IS</p><p> P
73、ORT (CLK_1K: IN STD_LOGIC ; </p><p> --系統(tǒng)原始時(shí)鐘脈沖(1 kHz)</p><p> KEY_IN: IN STD_LOGIC_VECTOR (2 DOWNTO 0); --按鍵輸入</p><p> CLK_SCAN: OUT STD_LOGIC_VECTOR
74、 (3 DOWNTO 0) ; </p><p> --( 仿真時(shí)用)鍵盤掃描序列</p><p> DATA_N: OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ; --數(shù)字輸出</p><p> DATA_F: OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ; --功能輸出</p><p
75、> FLAG_N: OUT STD_LOGIC ; --數(shù)字輸出標(biāo)志</p><p> FLAG_F: OUT STD_LOGIC ; --功能輸出標(biāo)志</p><p> CLK_CTR: OUT STD_LOGIC; --控制電路工作時(shí)鐘信號(hào)</p><p> CLK_DEBOUNCE: OUT STD_LOGIC;
76、--(仿真時(shí)用)去抖電路工作時(shí)鐘信號(hào)</p><p><b> ); </b></p><p> END ENTITY KEYBOARD ; </p><p> ARCHITECTURE ART OF KEYBOARD IS</p><p> COMPONENT DEBOUNCING IS</p>
77、<p> PORT(D_IN: IN STD_LOGIC ; </p><p> CLK: IN STD_LOGIC ; </p><p> D_OUT: OUT STD_LOGIC ) ; </p><p> END COMPONENT DEBOUNCING; </p><p> SIGNAL CLK: STD_LOG
78、IC ; --電路工作時(shí)鐘脈沖</p><p> SIGNAL C_KEYBOARD: STD_LOGIC_VECTOR(1 DOWNTO 0); </p><p> --鍵掃信號(hào)“00-01-10-11”寄存器</p><p> SIGNAL C_DEBOUNCE: STD_LOGIC ; </p><p>&l
79、t;b> --去抖時(shí)鐘信號(hào)</b></p><p> SIGNAL C: STD_LOGIC_VECTOR(2 DOWNTO 0) ; </p><p> --鍵盤輸入去抖后的寄存器</p><p> SIGNAL N , F: STD_LOGIC_VECTOR(3 DOWNTO 0) ; </p><p>
80、 --數(shù)字、功能按鍵譯碼值的寄存器</p><p> SIGNAL FN , FF: STD_LOGIC ; </p><p> --數(shù)字、功能按鍵標(biāo)志值數(shù)字、功能按鍵</p><p> SIGNAL SEL: STD_LOGIC_VECTOR (3 DOWNTO 0) ; </p><p><b> BEGIN&
81、lt;/b></p><p><b> --內(nèi)部連接</b></p><p> DATA_N <= N ; </p><p> DATA_F <= F ; </p><p> FLAG_N <= FN ; </p><p> FLAG_F <= FF ;
82、 </p><p> CLK_CTR <= CLK ; </p><p> --掃描信號(hào)發(fā)生器 </p><p> COUNTER : BLOCK IS</p><p> SIGNAL Q: STD_LOGIC_VECTOR(5 DOWNTO 0); </p><p> SIGNAL SEL
83、: STD_LOGIC_VECTOR (3 DOWNTO 0); </p><p> --1110-1101-1011-0111 </p><p><b> BEGIN</b></p><p> PROCESS (CLK_1K) IS </p><p><b> BEGIN<
84、/b></p><p> IF CLK_1K'EVENT AND CLK_1K ='1' THEN</p><p> Q <= Q+1; </p><p><b> END IF; </b></p><p> C_DEBOUNCE <= Q(2) ; --去抖時(shí)鐘
85、信號(hào), 大約125 Hz </p><p> C_KEYBOARD <= Q(2 DOWNTO 1) ; </p><p> -- 產(chǎn)生鍵掃信號(hào)***“00-01-10-11”, 大約16 Hz</p><p> --C_DEBOUNCE <= Q(1) ; --仿真時(shí)用 </p><p> --C_KEY
86、BOARD <= Q(5 DOWNTO 4) ; --仿真時(shí)用</p><p> CLK <= Q(0) ; </p><p> END PROCESS; </p><p> CLK_DEBOUNCE<=C_DEBOUNCE; </p><p> SEL <= "1110&quo
87、t; WHEN C_KEYBOARD=0 ELSE</p><p> "1101" WHEN C_KEYBOARD=1 ELSE</p><p> "1011" WHEN C_KEYBOARD=2 ELSE</p><p> "0111" WHEN C_KEYBOARD=3 ELSE</p>
88、;<p><b> "1111"; </b></p><p> CLK_SCAN <= SEL ; </p><p> END BLOCK COUNTER ; </p><p><b> --鍵盤去抖</b></p><p> DEBOUNUING
89、: BLOCK IS</p><p><b> BEGIN</b></p><p> U1: DEBOUNCING PORT MAP (D_IN => KEY_IN(0) , D_OUT => C(0), </p><p> CLK => C_DEBOUNCE); </p><p> U2: D
90、EBOUNCING PORT MAP (D_IN => KEY_IN(1) , D_OUT => C(1), </p><p> CLK => C_DEBOUNCE); </p><p> U3: DEBOUNCING PORT MAP (D_IN => KEY_IN(2) , D_OUT => C(2), </p><p> C
91、LK => C_DEBOUNCE ); </p><p> END BLOCK DEBOUNUING ; </p><p><b> --鍵盤譯碼</b></p><p> KEY_DECODER : BLOCK </p><p> SIGNAL Z : STD_LOGIC_VECTOR(4 DOWNTO
92、 0) ; --按鍵位置</p><p><b> BEGIN</b></p><p> PROCESS(CLK)</p><p><b> BEGIN</b></p><p> Z <= C_KEYBOARD & C ; </p><p> I
93、F CLK'EVENT AND CLK = '1' THEN</p><p><b> CASE Z IS</b></p><p> WHEN "11101" => N <= "0000" ; --0</p><p> WHEN "00011&q
94、uot; => N <= "0001" ; --1</p><p> WHEN "00101" => N <= "0010" ; --2</p><p> WHEN "00110" => N <= "0011" ; --3</p>
95、;<p> WHEN "01011" => N <= "0100" ; --4</p><p> WHEN "01101" => N <= "0101" ; --5</p><p> WHEN "01110" => N <= &
96、quot;0110" ; --6</p><p> WHEN "10011" => N <= "0111" ; --7</p><p> WHEN "10101" => N <= "1000" ; --8</p><p> WHEN &
97、quot;10110" => N <= "1001" ; --9</p><p> WHEN OTHERS => N <= "1111" ; </p><p> END CASE ; </p><p><b> END IF ; </b></p>
98、<p> IF CLK'EVENT AND CLK = '1' THEN</p><p> CASE Z IS</p><p> WHEN "11011" => F <= "0100" ; --*_LOCK</p><p> WHEN "11110&qu
99、ot; => F <= "0001" ; --#_UNLOCK</p><p> WHEN OTHERS => F <= "1000" ; </p><p> END CASE ; </p><p><b> END IF ; </b></p>&
100、lt;p> END PROCESS ; </p><p> FN <= NOT ( N(3) AND N(2) AND N(1) AND N(0) ) ; </p><p> FF <= F(2) OR F(0) ; </p><p> END BLOCK KEY_DECODER ; </p><p> END A
101、RCHITECTURE ART;</p><p><b> 附錄三</b></p><p> 密碼鎖控制電路的VHDL源程序:</p><p> --CTRL.VHD</p><p> LIBRARY IEEE; </p><p> USE IEEE.STD
102、_LOGIC_1164.ALL; </p><p> USE IEEE.STD_LOGIC_ARITH.ALL; </p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL; </p><p> ENTITY CTRL IS</p><p>
103、 PORT (DATA_N: IN STD_LOGIC_VECTOR(3 DOWNTO 0); </p><p> DATA_F: IN STD_LOGIC_VECTOR(3 DOWNTO 0); </p><p> FLAG_N: IN STD_LOGIC
104、; </p><p> FLAG_F: IN STD_LOGIC; </p><p> CLK: IN STD_LOGIC; </p><p> ENLOCK: OUT STD_LOGIC; --1: LOCK, 0:
105、 UNLOCK</p><p> DATA_BCD: OUT STD_LOGIC_VECTOR (15 DOWNTO 0)); </p><p> END ENTITY CTRL ; </p><p> ARCHITECTURE ART
106、60;OF CTRL IS</p><p> SIGNAL ACC, REG: STD_LOGIC_VECTOR (15 DOWNTO 0); </p><p> --ACC用于暫存鍵盤輸入的信息,REG用于存儲(chǔ)輸入的密碼</p><p> SIGNAL NC:
107、 STD_LOGIC_VECTOR (2 DOWNTO 0); </p><p> SIGNAL RR2, CLR, BB, QA, QB: STD_LOGIC; </p><p> SIGNAL R1, R0: STD_LOGIC;
108、160;</p><p><b> BEGIN</b></p><p> --寄存器清零信號(hào)的產(chǎn)生進(jìn)程</p><p> PROCESS(CLK)</p><p><b> BEGIN</b></p><p> IF CLK'EVENT
109、AND CLK='1' THEN</p><p> R1<=R0; R0<=FLAG_F; </p><p><b> END IF; </b></p><p> RR2<=R1 AND NOT R0; &
110、lt;/p><p> CLR<=RR2; </p><p> END PROCESS; </p><p> --按鍵輸入數(shù)據(jù)的存儲(chǔ)、清零進(jìn)程</p><p> KEYIN_PROCESS : BLOCK IS</p><p> SIGNAL
111、0;RST, D0, D1: STD_LOGIC ; </p><p><b> BEGIN </b></p><p> RST <= RR2; </p><p> PROCESS(FLAG_N, RST) I
112、S</p><p><b> BEGIN</b></p><p> IF RST = '1' THEN </p><p> ACC <= "0000000000000000" ; --
113、CLEAR INPUT</p><p> NC <= "000" ; </p><p><b> ELSE</b></p><p> IF FLAG_N'EVENT AND FLAG_N = &
114、#39;1' THEN </p><p> IF NC < 4 THEN</p><p> ACC <= ACC(11 DOWNTO 0) & DATA_N ; </p><p>
115、NC <= NC + 1 ; </p><p><b> END IF; </b></p><p><b> END IF ; </b></p><p><b> END IF
116、60;; </b></p><p> END PROCESS ; </p><p> END BLOCK KEYIN_PROCESS ; </p><p> --上鎖/開鎖控制進(jìn)程</p><p> LOCK_PROCESS :
117、60;BLOCK IS</p><p><b> BEGIN</b></p><p> PROCESS(CLK, DATA_F) IS</p><p><b> BEGIN</b></p><p> IF (CLK'EVENT AND
118、 CLK = '1') THEN</p><p> IF NC = 4 THEN</p><p> IF DATA_F(2) = '1' THEN --上鎖控制信號(hào)有效 </p>
119、<p> REG <= ACC ; --密碼存儲(chǔ)</p><p> QA <= '1' ; QB <= '0'; </p><p> ELSIF DATA_F(0)
120、= '1' THEN --開鎖控制信號(hào)有效</p><p> IF REG = ACC THEN --密碼核對(duì)</p><p> QA<= '0'; QB <= '1'
121、; </p><p><b> END IF ; </b></p><p> ELSIF ACC = "1000100010001000" THEN </p><p> --設(shè)置“8
122、888”為萬用密碼</p><p> QA <= '0' ; QB<= '1'; </p><p><b> END IF ; </b></p><p><b> END I
123、F; </b></p><p><b> END IF ; </b></p><p> END PROCESS ; </p><p> END BLOCK LOCK_PROCESS ; </p><
124、p> --輸出上鎖/開鎖控制信號(hào)</p><p> ENLOCK <= QA AND NOT QB ; </p><p><b> --輸出顯示信息</b></p><p> DATA_BCD<= ACC ; </
125、p><p> END ARCHITECTURE ART; </p><p><b> 附錄四</b></p><p> 密碼鎖顯示電路七段譯碼器設(shè)計(jì)源程序:</p><p> LIBRARY IEEE ;</p><p> USE IEEE.STD_LOGIC_
126、1164.ALL ;</p><p> ENTITY DECL7S IS</p><p> PORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ) ;</p><p><b> END ;&
127、lt;/b></p><p> ARCHITECTURE one OF DECL7S IS </p><p><b> BEGIN</b></p><p> PROCESS( A )</p><p><b> BEGIN</b></p><p><b>
128、; CASE A IS</b></p><p> WHEN "0000" => LED7S <="0111111" ;</p><p> WHEN "0001" => LED7S <="0000110" ;</p><p> WHEN &quo
129、t;0010" => LED7S <="1011011" ;</p><p> WHEN "0011" => LED7S <="1001111" ;</p><p> WHEN "0100" => LED7S <="1100110" ;&l
130、t;/p><p> WHEN "0101" => LED7S <="1101101" ;</p><p> WHEN "0110" => LED7S <="1111101" ;</p><p> WHEN "0111" => LE
131、D7S <="0000111" ;</p><p> WHEN "1000" => LED7S <="1111111" ; </p><p> WHEN "1001" => LED7S <="1101111" ;</p><p>
132、 WHEN "1010" => LED7S <="1110111" ;</p><p> WHEN "1011" => LED7S <="1111100" ;</p><p> WHEN "1100" => LED7S <="0111001
133、" ;</p><p> WHEN "1101" => LED7S <="1011110" ;</p><p> WHEN "1110" => LED7S <="1111001" ;</p><p> WHEN "1111" =
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子密碼鎖課程設(shè)計(jì)
- 電子密碼鎖課程設(shè)計(jì)
- 課程設(shè)計(jì)--電子密碼鎖
- 電子密碼鎖課程設(shè)計(jì)
- 電子密碼鎖課程設(shè)計(jì)
- 電子密碼鎖課程設(shè)計(jì)
- 電子密碼鎖設(shè)計(jì)課程設(shè)計(jì)
- 課程設(shè)計(jì)----電子密碼鎖設(shè)計(jì)
- 電子密碼鎖設(shè)計(jì)課程設(shè)計(jì)
- 課程設(shè)計(jì)電子密碼鎖設(shè)計(jì)
- 課程設(shè)計(jì)-電子密碼鎖設(shè)計(jì)
- 電子密碼鎖課程設(shè)計(jì)報(bào)告
- eda課程設(shè)計(jì)---電子密碼鎖
- eda課程設(shè)計(jì)—電子密碼鎖
- eda電子密碼鎖課程設(shè)計(jì)
- 電子密碼鎖課程設(shè)計(jì)3
- 電子密碼鎖課程設(shè)計(jì).doc
- 電子密碼鎖——eda課程設(shè)計(jì)
- eda電子密碼鎖課程設(shè)計(jì)
- 電子密碼鎖課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論