基于FPGA的電子密碼鎖系統(tǒng)的設(shè)計(jì)_第1頁(yè)
基于FPGA的電子密碼鎖系統(tǒng)的設(shè)計(jì)_第2頁(yè)
基于FPGA的電子密碼鎖系統(tǒng)的設(shè)計(jì)_第3頁(yè)
基于FPGA的電子密碼鎖系統(tǒng)的設(shè)計(jì)_第4頁(yè)
基于FPGA的電子密碼鎖系統(tǒng)的設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、目 錄第1章 緒論1.1 國(guó)內(nèi)外現(xiàn)狀及其發(fā)展1.2 電子密碼鎖的系統(tǒng)簡(jiǎn)介1.3 系統(tǒng)設(shè)計(jì)要求 1.4 本課題的研究目的和意義第2章 現(xiàn)場(chǎng)可編程門陣列FPGA 2.1 FPGA的基本結(jié)構(gòu) 2.1.1 可配置存儲(chǔ)器2.1.2 可配置邏輯塊(CLB)2.1.3 輸入/輸出塊(IOB)2.1.4 可編程內(nèi)部連線(PI)2.2 FPGA的設(shè)計(jì)流程2.3 VHDL硬件描述語(yǔ)言第3章 電子密碼鎖的設(shè)計(jì)與仿真3.1 硬件設(shè)備3.2 密碼鎖輸入電路3.3 密碼鎖控制電路3.4 系統(tǒng)有關(guān)編譯和仿真結(jié)論參考文獻(xiàn)附錄基于FPGA的電子密碼鎖系統(tǒng)的設(shè)計(jì)隨著電子技術(shù)的發(fā)展,具有防盜報(bào)警等功能的電子密碼鎖代替密碼量少、安全

2、性差的機(jī)械式密碼鎖已是必然趨勢(shì)。電子密碼鎖與普通機(jī)械鎖相比,具有許多獨(dú)特的優(yōu)點(diǎn):保密性好,防盜性強(qiáng),可以不用鑰匙,記住密碼即可開鎖等。目前使用的電子密碼鎖大部分是基于單片機(jī)技術(shù),以單片機(jī)為主要器件,其編碼器與解碼器的生成為軟件方式。在實(shí)際應(yīng)用中,由于程序容易跑飛,系統(tǒng)的可靠性能較差。本文主要闡述了一種基于現(xiàn)場(chǎng)可編程門陣列FPGA器件的電子密碼鎖的設(shè)計(jì)方法。用FPGA器件構(gòu)造系統(tǒng),所有算法完全由硬件電路來(lái)實(shí)現(xiàn),使得系統(tǒng)的工作可靠性大為提高。由于FPGA具有現(xiàn)場(chǎng)可編程功能,當(dāng)設(shè)計(jì)需要更改時(shí),只需更改FPGA中的控制和接口電路,利用EDA工具將更新后的設(shè)計(jì)下載到FPGA中即可,無(wú)需更改外部電路的設(shè)計(jì)

3、,大大提高了設(shè)計(jì)的效率。因此,采用FPGA開發(fā)的數(shù)字系統(tǒng),不僅具有很高的工作可靠性,而且升級(jí)也極其方便。本文采用EDA技術(shù),利用Quartus II工作平臺(tái)和硬件描述語(yǔ)言,設(shè)計(jì)了一種電子密碼鎖,并通過(guò)一片F(xiàn)PGA芯片實(shí)現(xiàn)。關(guān)鍵詞:電子密碼鎖 FPGA 硬件描述語(yǔ)言 EDA27第1章 緒論1.1 國(guó)內(nèi)外現(xiàn)狀及其發(fā)展隨著人們生活水平的提高和安全意識(shí)的加強(qiáng),對(duì)安全的要求也就越來(lái)越高。鎖自古以來(lái)就是把守護(hù)門的鐵將軍,人們對(duì)它要求甚高,既要安全可靠的防盜,又要使用方便,這也是制鎖者長(zhǎng)期以來(lái)研制的主題。隨著電子技術(shù)的發(fā)展,各類電子產(chǎn)品應(yīng)運(yùn)而生,電子密碼鎖就是其中之一。據(jù)有關(guān)資料介紹,電子密碼鎖的研究從20

4、世紀(jì)30年代就開始了,在一些特殊場(chǎng)所早就有所應(yīng)用。這種鎖是通過(guò)鍵盤輸入一組密碼完成開鎖過(guò)程。研究這種鎖的初衷,就是為提高鎖的安全性。由于電子鎖的密鑰量(密碼量)極大,可以與機(jī)械鎖配合使用,并且可以避免因鑰匙被仿制而留下安全隱患。電子鎖只需記住一組密碼,無(wú)需攜帶金屬鑰匙,免除了人們攜帶金屬鑰匙的煩惱,而被越來(lái)越多的人所欣賞。電子鎖的種類繁多,例如數(shù)碼鎖,指紋鎖,磁卡鎖,IC卡鎖,生物鎖等。但較實(shí)用的還是按鍵式電子密碼鎖。20世紀(jì)80年代后,隨著電子鎖專用集成電路的出現(xiàn),電子鎖的體積縮小,可靠性提高,成本較高,是適合使用在安全性要求較高的場(chǎng)合,且需要有電源提供能量,使用還局限在一定范圍,難以普及,

5、所以對(duì)它的研究一直沒(méi)有明顯進(jìn)展。目前,在西方發(fā)達(dá)國(guó)家,電子密碼鎖技術(shù)相對(duì)先進(jìn),種類齊全,電子密碼鎖已被廣泛應(yīng)用于智能門禁系統(tǒng)中,通過(guò)多種更加安全,更加可靠的技術(shù)實(shí)現(xiàn)大門的管理。在我國(guó)電子鎖整體水平尚處于國(guó)際上70年代左右,電子密碼鎖的成本還很高,市場(chǎng)上仍以按鍵電子鎖為主,按鍵式和卡片鑰匙式電子鎖已引進(jìn)國(guó)際先進(jìn)水平,現(xiàn)國(guó)內(nèi)有幾個(gè)廠生產(chǎn)供應(yīng)市場(chǎng)。但國(guó)內(nèi)自行研制開發(fā)的電子鎖,其市場(chǎng)結(jié)構(gòu)尚未形成,應(yīng)用還不廣泛。國(guó)內(nèi)的不少企業(yè)也引進(jìn)了世界上先進(jìn)的技術(shù),發(fā)展前景非??捎^。希望通過(guò)不斷的努力,使電子密碼鎖在我國(guó)也能得到廣泛應(yīng)用1。目前使用的電子密碼鎖大部分是基于單片機(jī)技術(shù),以單片機(jī)為主要器件,其編碼器與解碼

6、器的生成為軟件方式2。在實(shí)際應(yīng)用中,由于程序容易跑飛,系統(tǒng)的可靠性能較差?;诂F(xiàn)場(chǎng)可編程邏輯門陣列FPGA器件的電子密碼鎖,用FPGA器件構(gòu)造系統(tǒng),所有算法完全由硬件電路來(lái)實(shí)現(xiàn),使得系統(tǒng)的工作可靠性大為提高。由于FPGA具有現(xiàn)場(chǎng)可編程功能,當(dāng)設(shè)計(jì)需要更改時(shí),只需更改FPGA中的控制和接口電路,利用EDA工具將更新后的設(shè)計(jì)下載到FPGA中即可,無(wú)需更改外部電路的設(shè)計(jì),大大提高了設(shè)計(jì)的效率。1.2 電子密碼鎖的系統(tǒng)簡(jiǎn)介通用的電子密碼鎖主要由三個(gè)部分組成:數(shù)字密碼輸入電路、密碼鎖控制電路和密碼鎖顯示電路。(1) 密碼鎖輸入電路包括時(shí)序產(chǎn)生電路、鍵盤掃描電路、鍵盤彈跳消除電路、鍵盤譯碼電路等幾個(gè)小的功

7、能電路。(2) 密碼鎖控制電路包括按鍵數(shù)據(jù)的緩沖存儲(chǔ)電路,密碼的清除、變更、存儲(chǔ)、激活電鎖電路(寄存器清除信號(hào)發(fā)生電路),密碼核對(duì)(數(shù)值比較電路),解鎖電路(開/關(guān)門鎖電路)等幾個(gè)小的功能電路。(3) 密碼顯示電路主要將顯示數(shù)據(jù)的BCD碼轉(zhuǎn)換成相對(duì)應(yīng)的編碼。如,若選用七段數(shù)碼管顯示電路,主要將待顯示數(shù)據(jù)的BCD碼轉(zhuǎn)換成數(shù)碼器的七段顯示驅(qū)動(dòng)編碼。1.3 系統(tǒng)設(shè)計(jì)要求設(shè)計(jì)一個(gè)具有較高安全性和較低成本的通用電子密碼鎖,具體功能要求如下:(1)數(shù)碼輸入:每按下一個(gè)數(shù)字鍵,就輸入一個(gè)數(shù)值,并在顯示器上的顯示出該數(shù)值,同時(shí)將先前輸入的數(shù)據(jù)依序左移一個(gè)數(shù)字位置。(2)數(shù)碼清除:按下此鍵可清除前面所有的輸入值

8、,清除為“0000”。(3)密碼更改:按下此鍵時(shí)會(huì)將目前的數(shù)字設(shè)定成新的密碼。(4)激活電鎖:按下此鍵可將密碼鎖上鎖。(5)解除電鎖:按下此鍵會(huì)檢查輸入的密碼是否正確,密碼正確即開鎖。1.4 本課題的研究目的和意義隨著人們生活水平的提高,對(duì)家庭防盜技術(shù)的要求也是越來(lái)越高,傳統(tǒng)的機(jī)械鎖由于其構(gòu)造的簡(jiǎn)單,被撬的事件屢見不鮮,電子鎖由于其保密性高,使用靈活性好,安全系數(shù)高,受到了廣大用戶的歡迎?,F(xiàn)在市場(chǎng)上主要是基于單片機(jī)技術(shù)的電子密碼鎖,但可靠性較差。FPGA即現(xiàn)場(chǎng)可編程門陣列,它是在PAL、GAL、EPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物,是一種超大規(guī)模集成電路,具有對(duì)電路可重配置能力。通常F

9、PGA都有著上萬(wàn)次的重寫次數(shù),也就是說(shuō)現(xiàn)在的硬件設(shè)計(jì)和軟件設(shè)計(jì)一樣靈活、方便。相對(duì)于基于單片機(jī)技術(shù)的電子密碼鎖,用FPGA器件來(lái)構(gòu)成系統(tǒng),可靠性提高,并且由于FPGA具有的現(xiàn)場(chǎng)可編程功能,使得電子密碼鎖的更改與升級(jí)更為方便簡(jiǎn)單。通過(guò)本次設(shè)計(jì)掌握FPGA系統(tǒng)設(shè)計(jì)的方法,熟悉FPGA設(shè)計(jì)的相關(guān)軟件,以及硬件描述語(yǔ)言的使用,了解電子密碼鎖的系統(tǒng)構(gòu)成,利用FPGA實(shí)現(xiàn)電子密碼鎖的設(shè)計(jì)與實(shí)現(xiàn),可以加深自己對(duì)所學(xué)專業(yè)的認(rèn)識(shí),關(guān)聯(lián)知識(shí),增強(qiáng)自己的動(dòng)手能力,積累實(shí)踐經(jīng)驗(yàn),為以后的工作打好基礎(chǔ)。第2章 現(xiàn)場(chǎng)可編程門陣列FPGA自1985年Xilinx公司推出第一片大規(guī)?,F(xiàn)場(chǎng)可編程邏輯器件(FPGA)至今,F(xiàn)PG

10、A已經(jīng)歷了十幾年的歷史。在這十幾年的過(guò)程中,可編程器件有了驚人的發(fā)展:從最初的1200個(gè)可利用門,到今天的25萬(wàn)可利用門,規(guī)模增大了200多倍;FPGA供應(yīng)商也從Xilinx的一枝獨(dú)秀,到今天近20個(gè)廠商的分庭抗?fàn)帲籉PGA從單一的基于SRA結(jié)構(gòu)到今天各種結(jié)構(gòu)類型的出現(xiàn),都充分體現(xiàn)了可編程器件這一巨大市場(chǎng)的吸引力。2.1 FPGA的基本結(jié)構(gòu)FPGA的發(fā)展非常迅速,形成了各種不同的結(jié)構(gòu)。按邏輯功能塊的大小,F(xiàn)PGA可分為細(xì)粒度FPGA和粗粒度FPGA。細(xì)粒度FPGA的邏輯功能塊較小,資源可以充分利用,但連線和開關(guān)多,速度慢;粗粒度FPGA的邏輯功能塊規(guī)模大,功能強(qiáng),但資源不能充分利用。2.1.1

11、 可配置存儲(chǔ)器FPGA芯片邏輯功能的配置是由按點(diǎn)陣分布于芯片的存儲(chǔ)單元靜態(tài)存儲(chǔ)器(SRAM)實(shí)現(xiàn)的,即通過(guò)對(duì)分布的SRAM的不同加電配置,決定各部分的邏輯定義。對(duì)于FPGA器件編程實(shí)現(xiàn),實(shí)際上就是由加載于SRAM上的配置數(shù)據(jù)決定和控制各個(gè)CLB、IOB及內(nèi)部連線PI的邏輯功能和它們之間的相互連接關(guān)系。加載不同的配置數(shù)據(jù),芯片便實(shí)現(xiàn)不同的邏輯功能。配置LCA的數(shù)據(jù)文件由XACT(Xilinx Automated CAE Tools)開發(fā)系統(tǒng)產(chǎn)生,通過(guò)數(shù)據(jù)配置方式及相應(yīng)接口加載于芯片中。2.1.2 可配置邏輯塊(CLB)XC4000系列的CLB具有13個(gè)輸入、4個(gè)輸出。內(nèi)部由兩個(gè)獨(dú)立的四輸入邏輯函

12、數(shù)發(fā)生器、一對(duì)觸發(fā)器和若干個(gè)由配置控制的多路轉(zhuǎn)換器組成。邏輯塊的輸入輸出可以接到外部的可編程連線資源。兩個(gè)四輸入邏輯函數(shù)發(fā)生器(輸入分別為F1F4和G1G4),可以獨(dú)立提供四輸入的任意定義的布爾函數(shù),它們的輸出分別為F和G。2.1.3 輸入/輸出塊(IOB)用戶可配置的IOB為芯片外部引腳和內(nèi)部邏輯提供了一個(gè)界面,每個(gè)IOB控制一個(gè)外部引腳,并可定義為輸入、輸出或雙向三種功能。當(dāng)IOB定義為輸入時(shí),輸入信號(hào)經(jīng)Pad進(jìn)入輸入緩沖器,并根據(jù)配置可以直接輸入,亦可以通過(guò)邊沿觸發(fā)器或電平敏感鎖存器輸入。當(dāng)IOB定義為輸出時(shí),輸出信號(hào)可以通過(guò)配置選擇是否反相,是直接傳輸?shù)絇ad,還是通過(guò)邊沿觸發(fā)器寄存后

13、傳輸??梢赃x擇用輸出使能信號(hào)(OE)使輸出緩沖器是否為高阻狀態(tài),以實(shí)現(xiàn)三態(tài)輸出或雙向I/O傳輸。2.1.4 可編程內(nèi)部連線(PI)內(nèi)部連線由一些具有可編程開關(guān)點(diǎn)或開關(guān)矩陣的金屬線段組成,結(jié)構(gòu)對(duì)稱、規(guī)范,適合于建立自動(dòng)有效的布局布線算法。布線通道的數(shù)目由陣列規(guī)模決定。2.2 FPGA的設(shè)計(jì)流程FPGA設(shè)計(jì)流程包括系統(tǒng)設(shè)計(jì)和設(shè)計(jì)實(shí)現(xiàn),系統(tǒng)方案完成之后即進(jìn)入設(shè)計(jì)實(shí)現(xiàn)階段的工作,他以系統(tǒng)方案為輸入,進(jìn)行RTL級(jí)描述、功能仿真(RTL級(jí)仿真)、邏輯綜合、布線前門級(jí)仿真、適配(布局布線)、時(shí)序仿真(布線后門級(jí)仿真)、時(shí)序分析、器件編程、系統(tǒng)驗(yàn)證一系列流程的處理才能完成FPGA芯片的設(shè)計(jì),其設(shè)計(jì)流程如圖2.

14、4所示。需要說(shuō)明的是,如果仿真驗(yàn)證不對(duì)或者某一步有錯(cuò),就要返回修改。有必要檢查和修改的地方有RTL級(jí)描述、系統(tǒng)方案、約束和測(cè)試激勵(lì)等。一般情況下,對(duì)RTL級(jí)的描述即原理圖或者HDL設(shè)計(jì)代碼的修改最多也最有效。修改后要重新走一遍流程。有時(shí)要反復(fù)修改,經(jīng)過(guò)多次這樣的迭代才能完成最后的設(shè)計(jì)。2.3 VHDL硬件描述語(yǔ)言VHDL(Very high speed integrated circuit Hardware Description Language)硬件描述語(yǔ)言從高于邏輯級(jí)的抽象層次上描述硬件的功能、信號(hào)連接關(guān)系及定時(shí)關(guān)系。VHDL的設(shè)計(jì)流程如下圖。硬件驗(yàn)證總體方案網(wǎng)表綜合:面向FPGA和AS

15、IC編寫HDL代碼軟件模擬圖2.4 VHDL的設(shè)計(jì)流程第3章 電子密碼鎖的設(shè)計(jì)與仿真通過(guò)第一章電子密碼鎖系統(tǒng)結(jié)構(gòu)的分析,我們知道通用的電子密碼鎖主要由三個(gè)部分組成:數(shù)字密碼輸入電路、密碼鎖控制電路和密碼鎖顯示電路。也就是說(shuō),設(shè)計(jì)分為三個(gè)大的功能模塊。圖3.1為數(shù)字電子密碼鎖系統(tǒng)總體框圖。圖3.1 數(shù)字電子密碼鎖系統(tǒng)總體框圖3.1 硬件設(shè)備作為電子密碼鎖的輸入電路,數(shù)字密碼輸入電路可采用一個(gè)3×4的通用數(shù)字機(jī)械鍵盤作為本設(shè)計(jì)的輸入設(shè)備。機(jī)械式鍵盤具有低成本、可靠性高、構(gòu)成電路簡(jiǎn)單、技術(shù)成熟和應(yīng)用廣泛等特點(diǎn),因此將其應(yīng)用到通用電子密碼鎖中還是比較適宜的。數(shù)字電子密碼鎖的顯示信息電路可采用

16、LED數(shù)碼管顯示和液晶屏幕顯示兩種。液晶顯示具有高速顯示、高可靠性、易于擴(kuò)展和升級(jí)等優(yōu)點(diǎn),但是普通液晶顯示屏存在亮度低、對(duì)復(fù)雜環(huán)境的適應(yīng)能力差等缺點(diǎn),在低亮度的環(huán)境下還需要加入其它輔助的照明設(shè)備,驅(qū)動(dòng)電路設(shè)計(jì)相對(duì)復(fù)雜,因此本設(shè)計(jì)的顯示電路使用通用的LED數(shù)碼管。3.2 密碼鎖輸入電路1時(shí)序產(chǎn)生電路本時(shí)序產(chǎn)生電路中使用了三種不同頻率的工作脈沖波形:系統(tǒng)時(shí)鐘脈沖(它是系統(tǒng)內(nèi)部所有時(shí)鐘脈沖的源頭,且其頻率最高)、彈跳消除取樣信號(hào)、鍵盤掃描信號(hào)。當(dāng)一個(gè)系統(tǒng)中需使用多種操作頻率的脈沖波形時(shí),最方便的方法之一就是利用一計(jì)數(shù)器來(lái)產(chǎn)生各種需要的頻率。也就是先建立一個(gè)N位計(jì)數(shù)器,N的大小根據(jù)電路的需求決定,N的

17、值越大,電路可以分頻的次數(shù)就越多,這樣就可以獲得更大的頻率變化,以便提供多種不同頻率的時(shí)鐘信號(hào)。若輸入時(shí)鐘為CLK,N位計(jì)數(shù)器的輸出為QN-1.0,則Q(0)為CLK的2分頻脈沖信號(hào),Q(1)為CLK的4分頻脈沖信號(hào),Q(2)為CLK的8分頻脈沖信號(hào)Q(N-1)為CLK的2N分頻脈沖信號(hào);Q(5 DOWNTO 4)取得的是一個(gè)脈沖波形序列,其值依000110110001周期性變化,其變化頻率為CLK的32分頻。我們利用以上規(guī)律即可得到各種我們所需要頻率的信號(hào)或信號(hào)序列。SIGNAL CLK: STD_LOGIC ; -電路工作時(shí)鐘脈沖SIGNAL C_KEYBOARD: STD_LOGIC_V

18、ECTOR(1 DOWNTO 0); -鍵掃信號(hào)“00-01-10-11”寄存器SIGNAL C_DEBOUNCE: STD_LOGIC ; -去抖時(shí)鐘信號(hào)2鍵盤掃描電路掃描電路的作用是用來(lái)提供鍵盤掃描信號(hào)的,掃描信號(hào)變化的順序依次為11101101101101111110依序的周而復(fù)始。掃描時(shí)依序分別掃描四列按鍵,當(dāng)掃描信號(hào)為1110時(shí)掃描KY3這一排按鍵;當(dāng)掃描信號(hào)為1101室,掃描KY2這一排按鍵;當(dāng)掃描信號(hào)為1011時(shí),掃描KY1這一排按鍵;當(dāng)掃描信號(hào)為0111時(shí),掃描KY0這一排按鍵。每掃描一排按鍵就檢查一次是否有鍵被按下,如果這排沒(méi)有按鍵被按下就忽略,反之,如果出現(xiàn)被按下的鍵則立刻

19、進(jìn)行按鍵編碼的動(dòng)作,且將編碼的結(jié)果儲(chǔ)存于寄存器中。-掃描信號(hào)發(fā)生器 COUNTER : BLOCK ISSIGNAL Q: STD_LOGIC_VECTOR(5 DOWNTO 0); SIGNAL SEL: STD_LOGIC_VECTOR (3 DOWNTO 0); -1110-1101-1011-0111 BEGINPROCESS (CLK_1K) IS BEGIN IF CLK_1K'EVENT AND CLK_1K ='1' THEN Q <= Q+1; END IF; C_DEBOUNCE <= Q(2) ; -去抖時(shí)鐘信號(hào), 大約125 Hz C

20、_KEYBOARD <= Q(6 DOWNTO 5) ; - 產(chǎn)生鍵掃信號(hào)*“00-01-10-11”, 大約16 Hz-C_DEBOUNCE <= Q(1) ; -仿真時(shí)用 -C_KEYBOARD <= Q(5 DOWNTO 4) ; -仿真時(shí)用 CLK <= Q(0) ; END PROCESS; 3彈跳消除電路 由于設(shè)計(jì)采用的矩陣式鍵盤是機(jī)械開關(guān)結(jié)構(gòu),因此在開關(guān)切換的瞬間會(huì)在接觸點(diǎn)出現(xiàn)信號(hào)來(lái)回彈跳的現(xiàn)象,對(duì)于電子密碼鎖這種靈敏度較高的電路這種彈跳將很可能會(huì)造成誤動(dòng)作輸入,從而影響到密碼鎖操作的正確性。彈跳現(xiàn)象產(chǎn)生的原因是,雖然每次只是按下按鍵一次然后放掉,然而實(shí)際

21、產(chǎn)生的按鍵信號(hào)卻不知跳動(dòng)一次,經(jīng)過(guò)取樣信號(hào)的檢查后,將會(huì)造成誤判斷,以為鍵盤按了兩次。圖3.2 彈跳現(xiàn)象產(chǎn)生錯(cuò)誤的抽樣結(jié)果如果調(diào)整抽樣頻率,彈跳現(xiàn)象就可以獲得改善。圖3.3 調(diào)整抽樣頻率后得到的抽樣結(jié)果因此必須加上彈跳消除電路,避免誤操作信號(hào)的發(fā)生。特別要注意的是,彈跳消除電路所使用的脈沖信號(hào)的頻率必須比其他電路使用的脈沖信號(hào)的頻率更高;通常將掃描電路的工作頻率定在24Hz左右,而將彈跳消除電路的工作頻率定在128Hz左右,其工作頻率通常是前者的4倍或者更高。DEBOUNUING : BLOCK IS BEGINU1: DEBOUNCING PORT MAP (D_IN => KEY_I

22、N(0) , D_OUT => C(0), CLK => C_DEBOUNCE); U2: DEBOUNCING PORT MAP (D_IN => KEY_IN(1) , D_OUT => C(1), CLK => C_DEBOUNCE); U3: DEBOUNCING PORT MAP (D_IN => KEY_IN(2) , D_OUT => C(2), CLK => C_DEBOUNCE ); 3.3 密碼鎖控制電路控制鎖的控制電路是整個(gè)電路的控制中心,主要完成對(duì)數(shù)字按鍵輸入和功能按鍵輸入的相應(yīng)控制。1數(shù)字按鍵輸入的響應(yīng)控制(1)如果按下

23、數(shù)字鍵,第一個(gè)數(shù)字會(huì)從顯示其的最右端開始顯示,此后每新按一個(gè)數(shù)字時(shí),顯示器上的數(shù)字必須左移一格,以便將新的數(shù)字顯示出來(lái)。(2)假如要更改輸入的數(shù)字,可以按倒退按鍵來(lái)清除前一個(gè)輸入的數(shù)字,或者按清除鍵清除所有出入的數(shù)字,再重新輸入四位數(shù)。(3)當(dāng)輸入的數(shù)字鍵超過(guò)預(yù)設(shè)位數(shù)時(shí),電路不予理會(huì),而且不再顯示以后的數(shù)字。2。功能按鍵輸入的響應(yīng)控制(1)清除鍵:清除所有的輸入數(shù)字,即作歸零動(dòng)作。(2)激活電鎖鍵:按下此鍵時(shí)可將密碼鎖的門上鎖。(3)解除電鎖鍵:按下此鍵會(huì)檢查輸入的密碼是否正確,若密碼正確無(wú)誤則開門。使用電子密碼鎖的時(shí)候,只會(huì)用到三種工作模式,其中輸入文字模式用的是數(shù)字按鍵,只有上鎖和開鎖兩個(gè)

24、模式必須占用功能按鍵。但是在實(shí)際操作中,難免會(huì)有按錯(cuò)鍵的情況發(fā)生,使得“清除輸入”功能是用的機(jī)率很高,所以在設(shè)計(jì)中共設(shè)置了兩個(gè)功能按鍵,其中“接觸電鎖”和“清除電鎖”共用一個(gè)功能按鍵,另一個(gè)功能按鍵是“激活電鎖”。3.4 系統(tǒng)有關(guān)編譯和仿真本節(jié)主要是闡述設(shè)計(jì)在Quartus II6.0軟件中實(shí)現(xiàn)編譯與仿真。在Quartus II6.0在輸入源程序后,我們需要建立一個(gè)工程,在工程中我們要把設(shè)計(jì)文件加入工程中;然后選擇仿真器和綜合器類型值得注意的是如果選擇默認(rèn)的“NONE”,表示選擇Quartus II軟件中自帶的仿真器和綜合器,結(jié)合自己的設(shè)計(jì),在此我選擇默認(rèn)項(xiàng)“NONE”;最后選擇目標(biāo)芯片。在“

25、Family”欄選擇芯片系列,在此我選擇“Cyclone”系列再選擇此系列的具體芯片EP2C35F484C6。工程建立以后,可以進(jìn)行源程序的編譯。選擇“Processing”Start Compilation,啟動(dòng)全程編譯。編譯后產(chǎn)生的報(bào)告如下所示:圖3.4 編譯后產(chǎn)生的統(tǒng)計(jì)報(bào)告編譯成功后,就可以進(jìn)行波形的仿真。1 防抖模塊的仿真圖3.5為鍵盤輸入防抖電路的仿真結(jié)果圖,圖中的輸出信號(hào)N,ACC,REG是為了便于仿真時(shí)觀察中間結(jié)果而增加的觀測(cè)點(diǎn)的輸出,調(diào)試好后程序中的相應(yīng)語(yǔ)句應(yīng)注釋掉。由圖上可以看出,原來(lái)的彈跳現(xiàn)象經(jīng)過(guò)鍵盤輸入防抖電路處理后已經(jīng)清除了,必須連續(xù)兩次取樣檢測(cè)到信號(hào)才會(huì)有反應(yīng),否則電

26、路將其視為噪聲,不予理會(huì)。圖3.5 鍵盤輸入防抖電路的仿真結(jié)果圖 由圖中可以看出,鍵盤掃描出的信號(hào)彈跳現(xiàn)象得到改善。2密碼鎖輸入電路的仿真圖3.6為密碼鎖輸入電路的仿真結(jié)果圖,圖中的輸出信號(hào)CLK_SCAN,C_DEBOUNCE是為便于仿真時(shí)觀察中間結(jié)果而增加的觀測(cè)點(diǎn)的輸出,調(diào)試好后程序中的相應(yīng)語(yǔ)句應(yīng)注釋掉。圖3.6 密碼鎖輸入電路仿真結(jié)果圖輸入信號(hào)KEY_IN2.0依序依011101110011101的順序周期性循環(huán),對(duì)鍵盤進(jìn)行掃描。如有按鍵發(fā)生,鍵盤掃描輸出信號(hào)CLK_SCAN做出反應(yīng)。3密碼鎖控制電路的仿真圖3.7、圖3.8分別是兩個(gè)密碼鎖控制電路仿真結(jié)果圖。圖3.7 密碼鎖控制電路仿真

27、結(jié)果圖圖3.7的仿真過(guò)程為先輸入上鎖密碼“1234”,再按下上鎖鍵激活電鎖接著輸入萬(wàn)能解鎖密碼“8888”,最后按下解鎖鍵解鎖。圖3.8 密碼鎖控制電路仿真結(jié)果圖圖3.8仿真過(guò)程為先輸入上鎖密碼“1234”,再按下上鎖鍵激活電鎖,接著輸入解鎖密碼“1234”;最后按下解鎖鍵解鎖。從仿真圖看出,密碼控制電路的設(shè)計(jì)是正確的。結(jié)論在這次課程設(shè)計(jì)的過(guò)程中,我學(xué)到了很多東西,鍛煉了自己獨(dú)立學(xué)習(xí)的能力。在與導(dǎo)師和同學(xué)的討論過(guò)程中,也看到了自己的不足,更激勵(lì)我要努力。感謝我的老師和同學(xué)給與我的幫助。在本論文完成之際,我心中充滿了感謝之情,感謝所有關(guān)心和支持我的老師,朋友和我的家人,感謝他們對(duì)我的關(guān)心和支持。

28、參考文獻(xiàn)1 李連華.基于FPGA的電子密碼鎖設(shè)計(jì).中國(guó)科技信息,2006,(01):642 許琦.基于FPGA的電子密碼鎖的設(shè)計(jì).科技信息,2006,(10):240-2413 王衛(wèi)兵,劉克剛,朱秋萍.用FPGA的電子密碼鎖.電子技術(shù),2005,(01):26-284 趙益丹,徐曉林,周振峰.電子密碼鎖的系統(tǒng)原理、設(shè)計(jì)程序及流程圖.嘉興學(xué)院學(xué)報(bào),2003,15(S1):103-105附錄源程序:1.鍵盤輸入去抖電路的VHDL源程序-DCFQ.VHDLIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY DCFQ IS PORT(CLK, CLRN,

29、PRN, D: IN STD_LOGIC; Q: OUT STD_LOGIC); END ENTITY DCFQ ; ARCHITECTURE ART OF DCFQ IS BEGIN PROCESS (CLK, CLRN, PRN) BEGINIF CLRN='0' AND PRN='1' THEN Q<='0' ELSIF CLRN='1' AND PRN='0' THEN Q<='1' ELSIF CLK'EVENT AND CLK='1' THEN Q &

30、lt;=D; END IF ; END PROCESS ; END ARCHITECTURE ART;  -DEBOUNCING.VHDLIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; LIBRARY ALTERA; USE ALTERA.MAXPLUS2.ALL; ENTITY DEBOUNCING IS PORT(D_IN, CLK: IN STD_LOGIC; DD1, DD0, QQ1, QQ0 : OUT STD_LOGIC; D_OUT, D_OUT1: OUT STD_LOGIC ); END ENTITY DEBOUNCING ;

31、ARCHITECTURE ART OF DEBOUNCING IS COMPONENT DCFQ IS PORT(CLK, CLRN, PRN, D: IN STD_LOGIC; Q: OUT STD_LOGIC); END COMPONENT DCFQ; SIGNAL VCC, INV_D : STD_LOGIC ; SIGNAL Q0, Q1 : STD_LOGIC ; SIGNAL D1, D0 : STD_LOGIC ; BEGIN VCC <= '1' ; INV_D <= NOT D_IN ; U1: DCFQ PORT MAP (CLK => C

32、LK, CLRN => INV_D, PRN => VCC, D =>VCC , Q => Q0); U2: DCFQ PORT MAP (CLK => CLK, CLRN => Q0, PRN => VCC, D =>VCC , Q => Q1); PROCESS (CLK) BEGINIF CLK'EVENT AND CLK='1' THEN D0 <= NOT Q1; D1 <= D0; END IF ; END PROCESS ; DD0 <= D0; DD1 <= D1; QQ1 &

33、lt;= Q1; QQ0 <= Q0; D_OUT <= NOT (D1 AND NOT D0); D_OUT1 <= NOT Q1 ; END ARCHITECTURE ART;2.密碼鎖輸入電路源程序-KEYBOARD.VHDLIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; ENTITY KEYBOARD ISPORT (CLK_1K: IN STD_LOGIC ; -系統(tǒng)原始時(shí)鐘脈沖(1 kHz) KEY_

34、IN: IN STD_LOGIC_VECTOR (2 DOWNTO 0); -按鍵輸入 CLK_SCAN: OUT STD_LOGIC_VECTOR (3 DOWNTO 0) ; -( 仿真時(shí)用)鍵盤掃描序列 DATA_N: OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ; -數(shù)字輸出DATA_F: OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ; -功能輸出 FLAG_N: OUT STD_LOGIC ; -數(shù)字輸出標(biāo)志 FLAG_F: OUT STD_LOGIC ; -功能輸出標(biāo)志 CLK_CTR: OUT STD_LOGIC; -控制電路工作時(shí)鐘信

35、號(hào) CLK_DEBOUNCE: OUT STD_LOGIC -(仿真時(shí)用)去抖電路工作時(shí)鐘信號(hào) ); END ENTITY KEYBOARD ; ARCHITECTURE ART OF KEYBOARD IS COMPONENT DEBOUNCING ISPORT(D_IN: IN STD_LOGIC ; CLK: IN STD_LOGIC ; D_OUT: OUT STD_LOGIC ) ; END COMPONENT DEBOUNCING; SIGNAL CLK: STD_LOGIC ; -電路工作時(shí)鐘脈沖 SIGNAL C_KEYBOARD: STD_LOGIC_VECTOR(1 DOW

36、NTO 0); -鍵掃信號(hào)“00-01-10-11”寄存器 SIGNAL C_DEBOUNCE: STD_LOGIC ; -去抖時(shí)鐘信號(hào) SIGNAL C: STD_LOGIC_VECTOR(2 DOWNTO 0) ; -鍵盤輸入去抖后的寄存器 SIGNAL N , F: STD_LOGIC_VECTOR(3 DOWNTO 0) ; -數(shù)字、功能按鍵譯碼值的寄存器 SIGNAL FN , FF: STD_LOGIC ; -數(shù)字、功能按鍵標(biāo)志值數(shù)字、功能按鍵 SIGNAL SEL: STD_LOGIC_VECTOR (3 DOWNTO 0) ; BEGIN - 內(nèi)部連接DATA_N <=

37、N ; DATA_F <= F ; FLAG_N <= FN ; FLAG_F <= FF ; CLK_CTR <= CLK ; -掃描信號(hào)發(fā)生器 COUNTER : BLOCK ISSIGNAL Q: STD_LOGIC_VECTOR(5 DOWNTO 0); SIGNAL SEL: STD_LOGIC_VECTOR (3 DOWNTO 0); -1110-1101-1011-0111 BEGINPROCESS (CLK_1K) IS BEGIN IF CLK_1K'EVENT AND CLK_1K ='1' THEN Q <= Q+1;

38、 END IF; C_DEBOUNCE <= Q(2) ; -去抖時(shí)鐘信號(hào), 大約125 Hz C_KEYBOARD <= Q(5 DOWNTO 4) ; - 產(chǎn)生鍵掃信號(hào)*“00-01-10-11”, 大約16 Hz-C_DEBOUNCE <= Q(1) ; -仿真時(shí)用 -C_KEYBOARD <= Q(5 DOWNTO 4) ; -仿真時(shí)用 CLK <= Q(0) ; END PROCESS; CLK_DEBOUNCE<=C_DEBOUNCE; SEL <= "1110" WHEN C_KEYBOARD=0 ELSE"

39、1101" WHEN C_KEYBOARD=1 ELSE"1011" WHEN C_KEYBOARD=2 ELSE"0111" WHEN C_KEYBOARD=3 ELSE"1111" CLK_SCAN <= SEL ; END BLOCK COUNTER ; -鍵盤去抖 DEBOUNUING : BLOCK IS BEGINU1: DEBOUNCING PORT MAP (D_IN => KEY_IN(0) , D_OUT => C(0), CLK => C_DEBOUNCE); U2: DEBOU

40、NCING PORT MAP (D_IN => KEY_IN(1) , D_OUT => C(1), CLK => C_DEBOUNCE); U3: DEBOUNCING PORT MAP (D_IN => KEY_IN(2) , D_OUT => C(2), CLK => C_DEBOUNCE ); END BLOCK DEBOUNUING ; -鍵盤譯碼 KEY_DECODER : BLOCK SIGNAL Z : STD_LOGIC_VECTOR(4 DOWNTO 0) ; -按鍵位置BEGINPROCESS(CLK) BEGIN Z <= C_

41、KEYBOARD & C ; IF CLK'EVENT AND CLK = '1' THENCASE Z IS WHEN "11101" => N <= "0000" ; -0 WHEN "00011" => N <= "0001" ; -1 WHEN "00101" => N <= "0010" ; -2 WHEN "00110" => N <= "0011&quo

42、t; ; -3 WHEN "01011" => N <= "0100" ; -4 WHEN "01101" => N <= "0101" ; -5 WHEN "01110" => N <= "0110" ; -6 WHEN "10011" => N <= "0111" ; -7 WHEN "10101" => N <= "1000" ;

43、-8 WHEN "10110" => N <= "1001" ; -9 WHEN OTHERS => N <= "1111" ; END CASE ; END IF ; IF CLK'EVENT AND CLK = '1' THENCASE Z IS WHEN "11011" => F <= "0100" ; -*_LOCK WHEN "11110" => F <= "0001" ;

44、-#_UNLOCK WHEN OTHERS => F <= "1000" ; END CASE ; END IF ; END PROCESS ; FN <= NOT ( N(3) AND N(2) AND N(1) AND N(0) ) ; FF <= F(2) OR F(0) ; END BLOCK KEY_DECODER ; END ARCHITECTURE ART;3密碼鎖控制電路程序-CTRL.VHDLIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; ENTITY CTRL IS PORT(DATA_N:IN STD_LOGIC_VECTOR(3 DOWNTO 0); DATA_f:IN STD_LOGIC_VECTOR(3 DOWNTO 0); FLAG_N:IN STD_LOGIC

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論