基于FPGA的數(shù)字密碼鎖.doc_第1頁
基于FPGA的數(shù)字密碼鎖.doc_第2頁
基于FPGA的數(shù)字密碼鎖.doc_第3頁
基于FPGA的數(shù)字密碼鎖.doc_第4頁
基于FPGA的數(shù)字密碼鎖.doc_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

CPLD/FPGA課程設(shè)計項目名稱: 基于FPGA的數(shù)字密碼鎖設(shè)計 專業(yè)班級: 學(xué)生學(xué)號: 學(xué)生姓名: 指導(dǎo)老師: 2016年6月4日摘 要本設(shè)計是基于現(xiàn)場可編程門陣列FPGA 器件的電子密碼鎖的設(shè)計。通過Verilog語言控制4位二進(jìn)制數(shù),組成數(shù)字排列,形成一個簡單的數(shù)字密碼鎖,假設(shè)預(yù)設(shè)密碼為4位數(shù):0000,當(dāng)輸入正確時輸出為1、輸入錯誤時輸出為0。同時輸出輸入的次數(shù),當(dāng)3次以上輸入錯誤時,輸出一個報警信號,即使第四、五次輸入正確也輸出報警信號。本設(shè)計利用Modelsim軟件編寫Verilog HDL硬件描述語言程序以實(shí)現(xiàn)輸入密碼、開鎖、報警功能。 通過仿真調(diào)試,利用可編程器件FPGA的電子密碼鎖的設(shè)計基本達(dá)到了預(yù)期目的。關(guān)鍵詞: 現(xiàn)場可編程門陣列;數(shù)字密碼鎖;Verilog HDL;AbstractThis design is the electronic code lock field programmable gate array FPGA devices based design. By Verilog language control 4-bit binary number, composed of figures arranged to form a simple digital lock, assuming that the default password is 4 digits: 0000, correct output when the input is 1, the output of the input error to zero. At the same time the number of input and output, and when more than three times the input error, an alarm signal is output, even if the fourth and fifth also enter the correct output alarm signal.This design uses Modelsim software write Verilog HDL hardware description language program to implement a password lock, alarm function. The simulation debugging, using the programmable device FPGA design basic electronic locks to achieve the desired purpose.Key words: FPGA;The digital combination lock;Verilog HDL;目 錄摘 要IAbstractII第1章 所選項目的研究意義11.1 概述11.2 數(shù)字密碼鎖的研究現(xiàn)狀21.2.1 數(shù)字密碼鎖的應(yīng)用31.2.2 數(shù)字密碼鎖的困難31.3 本文研究意義31.4 設(shè)計思路4第2章 設(shè)計方案52.1 功能定義52.2 模塊設(shè)計5第3章 系統(tǒng)軟件設(shè)計73.1 設(shè)計概括73.2 設(shè)計流程73.2.1 密碼存儲模塊73.2.2 編碼模塊83.2.3 比較模塊83.3 主要程序模塊9第4章 軟件仿真144.1 仿真過程144.2 仿真結(jié)果154.3 仿真分析164.3.1 仿真過程17結(jié) 論18參考文獻(xiàn)19附錄1 程序代碼20項目創(chuàng)新及特色26基于FPGA的數(shù)字密碼鎖(CPLD/FPGA課程設(shè)計)第1章 所選項目的研究意義1.1 概述數(shù)字密碼鎖是一個小型的數(shù)字系統(tǒng),與普通機(jī)械鎖相比, 具有許多獨(dú)特的優(yōu)點(diǎn): 保密性好, 防盜性強(qiáng), 可以不用鑰匙, 記住密碼即可開鎖等。在人們平時生活中,貴重物品或個人信息資料大多數(shù)都已加鎖的方式進(jìn)行保管。如果使用傳統(tǒng)的機(jī)械鎖進(jìn)行對物品及資料的保管,那么人們要攜帶很多把鑰匙在身上,攜帶非常不便,而且鑰匙丟失將對物品保管的安全性大打折扣,也為人們的生活及心情帶來不便。隨著生活質(zhì)量的不斷提高,加強(qiáng)家庭防盜安全變得非常重要,但傳統(tǒng)機(jī)械鎖的構(gòu)造過于簡單,很容易被打開,從而降低了安全性。數(shù)字密碼鎖因為它的保密性很高,安全系數(shù)也非常高,再加上其不需要攜帶避免了丟失的可能,省去了因鑰匙丟失而需要換鎖的麻煩,受到了越來越多的人的歡迎。隨著人們對高科技產(chǎn)品也越來越推崇,在當(dāng)今社會科技的高度集中和創(chuàng)新,人們對日常生活中保護(hù)自身及財產(chǎn)安全的物品非常追捧,對其安全性的要求也非常的高。為了達(dá)到人們對鎖具安全性的高要求,加強(qiáng)鎖具的安全保密性,用密碼鎖來取代傳統(tǒng)機(jī)械鎖的鎖具是必然趨勢。數(shù)字密碼鎖比傳統(tǒng)機(jī)械鎖具更加的安全1。鎖具發(fā)展到現(xiàn)在已有若干年的歷史了,鎖是用于保管物品的器件,用來關(guān)住某種器物的一種器具。其必須用鑰匙才能打開。所以在人們的日常生活中離不開鎖,這使得我們隊鎖具的結(jié)構(gòu)和原理也多少有些了解,因此,就有了不借用鑰匙就打開鎖的方法。鎖具都存在致命的弱點(diǎn),比如鎖芯采用常見的銅、鋅、鋁等材料容易遭到暴力破壞,還有就是鎖具制作工藝的技術(shù)落后,從而導(dǎo)致防盜功能缺失,目前,國內(nèi)市場的鎖具,實(shí)際上都不具備真正的防盜功能,在慣偷面前用幾件簡單工具就可以輕松打開這些鎖,其實(shí)不是他們多么的高明,而是一般鎖具的原理過于簡單,面對這一社會現(xiàn)狀,新時代提出了鎖具必須改革的迫切需求2。安全防盜已成為人們所關(guān)注的焦點(diǎn)。然而傳統(tǒng)機(jī)械彈子鎖安全性低,密碼量少且需時刻攜帶鑰匙使其無法滿足一些特定場合的應(yīng)用要求,特別是在人員經(jīng)常變動的公共場所,目前使用的電子密碼鎖主要有兩個方案:一是基于單片機(jī)用分立元件實(shí)現(xiàn)的,二是通過現(xiàn)代人體生物特征識別技術(shù)實(shí)現(xiàn)的,前者電路較復(fù)雜且靈活性差,無法滿足應(yīng)用要求;后者有其先進(jìn)性但需考慮成本和安全性等諸多因素?;诖?,本文設(shè)計了一種新型電子密碼鎖,采用FPGA芯片,目前以硬件描述語言(Verilog 或VHDL)所完成的電路設(shè)計,可以經(jīng)過簡單的綜合與布局,快速的燒錄至 FPGA 上進(jìn)行測試,是現(xiàn)代 IC 設(shè)計驗證的技術(shù)主流3。這些可編輯元件可以被用來實(shí)現(xiàn)一些基本的邏輯門電路(比如AND、OR、XOR、NOT)或者更復(fù)雜一些的組合功能比如解碼器或數(shù)學(xué)方程式。在大多數(shù)的FPGA里面,這些可編輯的元件里也包含記憶元件例如觸發(fā)器(Flipflop)或者其他更加完整的記憶塊。FPGA一般來說比ASIC(專用集成芯片)的速度要慢,無法完成復(fù)雜的設(shè)計,而且消耗更多的電能。但是他們也有很多的優(yōu)點(diǎn)比如可以快速成品,可以被修改來改正程序中的錯誤和更便宜的造價。廠商也可能會提供便宜的但是編輯能力差的FPGA。因為這些芯片有比較差的可編輯能力,所以這些設(shè)計的開發(fā)是在普通的FPGA上完成的,然后將設(shè)計轉(zhuǎn)移到一個類似于ASIC的芯片上。另外一種方法是用CPLD(復(fù)雜可編程邏輯器件備)4。因此,隨著電子技術(shù)的飛速發(fā)展數(shù)字密碼鎖的產(chǎn)生是必然,其在使用的方便性、防盜報警功能、智能管理等方面都是傳統(tǒng)機(jī)械鎖無法比擬的,在對安全性有較高要求的設(shè)施及場所中得到了廣泛應(yīng)用。1.2 數(shù)字密碼鎖的研究現(xiàn)狀現(xiàn)如今,隨著高新技術(shù)的涌入,對傳統(tǒng)鎖具進(jìn)行了很大的的改進(jìn),鎖具的防盜性能得到了充分的加強(qiáng),由傳統(tǒng)鎖具改進(jìn)的智能密碼鎖已成為現(xiàn)如今安防系統(tǒng)中最強(qiáng)大的組成部分,它的作用是每一個傳統(tǒng)機(jī)械鎖具無法取代的。由于其在市場中巨大的潛力,國內(nèi)外許多的公司都投入很大的人力、物力來從事智能數(shù)字密碼鎖的研究開發(fā)生產(chǎn)。目前,市場上比較先進(jìn)的智能電子密碼鎖分別有:IC卡電子密碼鎖、射頻卡式電子密碼鎖、紅外遙控電子密碼鎖、指紋識別電子密碼鎖和瞳孔識別電子密碼鎖等。IC卡電子密碼鎖成本低,體積小,卡片本身無須電源等優(yōu)點(diǎn)占領(lǐng)了一定的市場份額,但是由于有機(jī)械接觸,會產(chǎn)生接觸磨損,而且使用不太方便,在一定程度上限制了它的應(yīng)用;射頻卡式電子密碼鎖是非接觸式電子密碼鎖,成本也不太高,體積跟IC卡密碼鎖相當(dāng),卡片使用感應(yīng)電源,重量很輕,技術(shù)成熟,受到了廣泛的歡迎,但是與IC卡電子密碼鎖相比,成本偏高;指紋識別電子密碼鎖和瞳孔識別電子密碼鎖可靠性很高,安全性是目前應(yīng)用系統(tǒng)中最高的,但是成本高昂,還沒進(jìn)入大眾化使用階段5。在國外,美國、日本、德國的電子密碼鎖保密性較好,并結(jié)合感應(yīng)卡技術(shù),生物識別技術(shù),使電子密碼鎖系統(tǒng)得到了飛躍式的發(fā)展。這幾個國家的密碼鎖識別的密碼更復(fù)雜,并且綜合性比較好,已經(jīng)進(jìn)入了成熟期,出現(xiàn)了感應(yīng)卡式密碼鎖,指紋式密碼鎖,虹膜密碼鎖,面部識別密碼鎖,序列混亂的鍵盤密碼鎖等各種技術(shù)的系統(tǒng),它們在安全性,方便性,易管理性等方面都各有特長,新型的電子密碼鎖系統(tǒng)的應(yīng)用也越來越廣。1.2.1 數(shù)字密碼鎖的應(yīng)用密碼鎖具有安全性高、成本低、功耗低、易操作等優(yōu)點(diǎn)。在安全技術(shù)防范領(lǐng)域,具有防盜報警功能的電子密碼鎖逐漸代替?zhèn)鹘y(tǒng)的機(jī)械式密碼鎖,克服了機(jī)械式密碼鎖密碼量少、安全性能差的缺點(diǎn),使密碼鎖無論在技術(shù)上還是在性能上都大大提高一步6。隨著大規(guī)模集成電路技術(shù)的發(fā)展,出現(xiàn)了帶微處理器的智能密碼鎖,它除具有電子密碼鎖的功能外,還引入了智能化管理、專家分析系統(tǒng)等功能,從而使密碼鎖具有很高的安全性、可靠性,應(yīng)用日益廣泛7.隨著人們對安全的重視和科技的發(fā)展,許多電子智能鎖(指紋識別、IC 卡辨認(rèn))已在國內(nèi)外相繼面世。但是這些產(chǎn)品的特點(diǎn)是針對特定的指紋和有效卡,只能適用于保密要求的箱、柜、門等。而且指紋識識別器若在公共場所使用存在容易機(jī)械損壞,IC卡還存在容易丟失、損壞等特點(diǎn)。加上其成本較高,一定程度上限制了這類產(chǎn)品的普及和推廣。鑒于目前的技術(shù)水平與市場的接收程度,電子密碼鎖是這類電子防盜產(chǎn)品的主流8。1.2.2 數(shù)字密碼鎖的困難1.Verilog HDL語言的程序設(shè)計和控制函數(shù)的調(diào)用編寫Verilog HDL語言時,輸入4位密碼未能和程序預(yù)設(shè)密碼進(jìn)行比較,無論密碼輸入正確與否,鎖均不打開,而且報警計數(shù)器也不進(jìn)行+1操作。在程序編譯時,函數(shù)調(diào)未能調(diào)用成功。2.報警程序模塊的設(shè)計計數(shù)器+1操作進(jìn)行時,系統(tǒng)中斷,從而導(dǎo)致系統(tǒng)重置,計數(shù)器又從0開始進(jìn)行+1操作,導(dǎo)致系統(tǒng)不報警。3.用Modelsim仿真軟件波形時,為準(zhǔn)確輸出正確波形在程序編寫時,未考慮初始密碼,導(dǎo)致波形錯誤。1.3 本文研究意義電子雜志、報刊經(jīng)??怯忻艽a開關(guān)、密碼鎖這樣的電路,大多數(shù)是使用常用的數(shù)字電路,如CD4017,然后通過不同的連接方式實(shí)現(xiàn)密碼控制功能。這種電路的特點(diǎn)就是密碼修改只能通過改變電路的連接來實(shí)現(xiàn),密碼很容易被破解,電路復(fù)雜,故障率高。本制作是針對這些電路而設(shè)計的,將以往的以單片機(jī)實(shí)現(xiàn)設(shè)計改為可編程器件FPGA利用Verilog HDL編程實(shí)現(xiàn)電子密碼鎖的設(shè)計。這種設(shè)計移動方便?;贔PGA的電子密碼鎖具有保密強(qiáng)、靈活性高、適用范圍廣等特點(diǎn),它在鍵盤上輸入,與打電話差不多,因而易于掌握,其突出優(yōu)點(diǎn)是“密碼”是記在被授權(quán)人腦子里的數(shù)字和字符,既準(zhǔn)確又可靠,不會丟失(除了忘記),難以被竊(除非自己泄露)。但是密碼不能太簡單,太簡單了就容易被他人在鍵盤上試探出來,或者可能被旁觀者窺測出來,造成保密性不足。當(dāng)然,密碼又不能太復(fù)雜,太復(fù)雜了可能自己都糊涂了,或者輸入密碼操作成功率低,造成使用不便。因此,為了發(fā)揚(yáng)優(yōu)點(diǎn)、克服弱點(diǎn),本設(shè)計采用“任意設(shè)定數(shù)字密碼”技術(shù)使得被授權(quán)人可以根據(jù)自己的需要或喜好設(shè)定密碼,常用常新,在輸入密碼的過程中,當(dāng)連續(xù)三次出現(xiàn)密碼錯誤時,則系統(tǒng)會長時間報警不止,這時必須按復(fù)位方可停止。本設(shè)計的FPGA電子密碼鎖的特點(diǎn)是:體積小、功耗低、價格便宜、安全可靠,維護(hù)和升級都十分方便,具有較好的應(yīng)用前景。它與傳統(tǒng)鎖具的不同之處在于:它與可編程邏輯器件實(shí)現(xiàn)系統(tǒng)的設(shè)計,應(yīng)用簡潔清晰的Verilog HDL語言實(shí)現(xiàn)設(shè)計編程思想,能夠?qū)崿F(xiàn)適時、智能控制管理功能,特別是在系統(tǒng)的擴(kuò)展上有很好的優(yōu)勢9。1.4 設(shè)計思路基于FPGA實(shí)現(xiàn)的數(shù)字密碼鎖設(shè)計中,主要包括4大部分:FPGA器件、密碼存儲、譯碼電路、報警電路。其中FPGA為主控部分,將消除同步模塊、計數(shù)器模塊、控制器模塊都用Verilog HDL語言寫入FPGA中代替了傳統(tǒng)復(fù)雜的電路設(shè)計,也省去了很多繁瑣的調(diào)試步驟。只有這些模塊在Modelsim平臺通過了仿真,就可以實(shí)現(xiàn)傳統(tǒng)電路模塊的功能。本次設(shè)計的數(shù)字密碼鎖主要是利用軟件的編程來對主控模塊的實(shí)現(xiàn)。當(dāng)通過按鍵輸入密碼后,就把輸入的信號送給FPGA,F(xiàn)PGA經(jīng)過里面?zhèn)€模塊的處理后傳給了各輸出電路模塊。密碼存儲器主要是用來存儲密碼和防止電源掉電而導(dǎo)致密碼鎖的數(shù)據(jù)丟失和提高密碼鎖的安全性。 對于本次密碼鎖的初步設(shè)計,首先要有一個大體的思路。本次設(shè)計采用FPGA為核心器件,通過Modelsim對其進(jìn)行程序仿真,組成的完整系統(tǒng)。程序通過采集輸入信息,與FPGA的存儲值進(jìn)行比較,如果密碼正確,則開鎖電路打開;如果密碼錯誤,鎖不打開,并且計數(shù)器進(jìn)行+1操作;累計3次輸入密碼錯誤,給警報一個高電平,讓其報警。第2章 設(shè)計方案2.1 功能定義數(shù)字密碼鎖具體功能如下: (1)用戶初次使用,可按下am_en鍵進(jìn)行密碼設(shè)置。(2)開鎖時一次完整的輸入密碼,當(dāng)輸入的密碼與設(shè)置的密碼相同時密碼鎖打開,即lockopen為高電平,連接的綠燈亮;否則密碼鎖關(guān)閉,即warn_en為高電平,連接的紅燈亮。 (3)當(dāng)輸入錯誤的次數(shù)3時,密碼鎖強(qiáng)制自動關(guān)閉。表 2-1 數(shù)字密碼鎖的FPGA引腳定義Inputrst復(fù)位信號高電平有效Inputam_en密碼設(shè)置鍵高電平有效Inputcipher_in 3:0密碼輸入InputEnter確定鍵高電平有效OutputReturn清除鍵高電平有效Outputwarn_en密碼錯誤或輸入次3高電平有效2.2 模塊設(shè)計2.2.1密碼設(shè)置或修改模塊用戶初次使用密碼鎖時可通過按am_en鍵進(jìn)行密碼設(shè)置,先輸入初始密碼0000,則進(jìn)入密碼設(shè)置,高電平有效。密碼是二進(jìn)制的四位數(shù)字密碼。以后修改密碼時,按am_en鍵,然后輸入舊密碼,正確時方可進(jìn)入密碼設(shè)置選項,否則重新開始。1.密碼輸入模塊開鎖時,一次完整輸入密碼后,按下enter鍵進(jìn)行密碼驗證,高電平有效,看輸入的數(shù)字是否等于原密碼的值,密碼正確時開鎖,否則關(guān)閉。當(dāng)輸入有誤時,按下return鍵,清除輸入的數(shù)字,重新輸入2.密碼輸入次數(shù)計數(shù)模塊開始時count=0,當(dāng)輸入密碼按下enter鍵時且密碼錯誤時count+1,當(dāng)conut3時,密碼鎖強(qiáng)制自動關(guān)閉。當(dāng)輸入的密碼正確時,count不計數(shù)。3.顯示模塊當(dāng)密碼輸入正確時,lockopen為高電平,綠色發(fā)光二極管燈亮,當(dāng)密碼輸入錯誤時或者當(dāng)count3時,warn_en為高電平,紅色發(fā)光二極管燈亮。25第3章 系統(tǒng)軟件設(shè)計3.1 設(shè)計概括本系統(tǒng)主要集中在以FPGA以核心外圍擴(kuò)展設(shè)計,整個電路主要電子鎖具的組成框圖是以可編程邏輯器件(FPGA)為核心,配以相應(yīng)硬件電路,完成密碼的設(shè)置、存貯、識別和驅(qū)動電磁執(zhí)行器并檢測其驅(qū)動電流值、報警等功能。 FPGA接收鍵入的代碼,并與存貯在閃存中的密碼進(jìn)行比較,如果密碼正確,則驅(qū)動電磁執(zhí)行器開鎖;如果密碼不正確,則允許操作人員重新輸入密碼,最多可輸入三次;如果三次都不正確,則通過FPGA產(chǎn)生報警。3.2 設(shè)計流程實(shí)現(xiàn)系統(tǒng)大量邏輯電路的集成,在設(shè)計中使用了現(xiàn)場可編程邏輯門陣列器件(FPGA)。FPGA主要實(shí)現(xiàn)以下邏輯功能:鍵盤處理、設(shè)置密碼、解碼開門以及報警等控制功能10。3.2.1 密碼存儲模塊在數(shù)字密碼鎖中,密碼存儲模塊是它的密碼規(guī)定電路,其功能有兩個:一個是將存儲的密碼輸出到比較模塊中與外部輸入的數(shù)字進(jìn)行比較操作,另一個是存儲用戶修改后的密碼。密碼存儲模塊的地址選擇信號由計數(shù)器模塊電路來進(jìn)行選擇。模為三的計數(shù)器模塊電路控制信號RESET和時鐘信號CNP是由控制器模塊來提供的。下面給出密碼存儲模塊的流程圖。如圖3-1所示 輸入密碼密碼正確YN存儲密碼輸入新密碼am_en鍵 圖3-1 密碼存儲流程圖 更改初始密碼am_en,首先輸入4位2進(jìn)制的初始密碼,程序判定和初始密碼一致,執(zhí)行更改密碼的程序;否則繼續(xù)輸入密碼,直至輸入正確。輸入4位2進(jìn)制數(shù)后,寄存器存儲新密碼。3.2.2 編碼模塊在保險柜密碼器中,由于密碼數(shù)字是由外接鍵盤輸入的信號,因此這里需要把它轉(zhuǎn)換成4位BCD碼送入到比較器中,這時需要采用10線至4線編碼器來完成這樣的轉(zhuǎn)換。因為前級消抖同步模塊的輸出是高電平,因此A0A9這10個數(shù)字的輸入信號經(jīng)過消抖同步后應(yīng)該是高電平有效。對于編碼器的輸出來說,B4是MSB,B1是LSB。在密碼器中,編碼模塊的頂層原理圖如圖3-16所示。3.2.3 比較模塊在數(shù)字密碼鎖中,比較模塊的主要功能是對編成模塊的輸出4位數(shù)據(jù)和密碼存儲模塊的輸出4位數(shù)據(jù)進(jìn)行比較,然后將比較的結(jié)果送入到控制器模塊的DEF端口上。比較器的具體工作原理是:當(dāng)比較結(jié)果相等時,DEP的輸出為1;當(dāng)比較結(jié)果不相等時,DEP的輸出為0。比較密碼正確后,即可開鎖。流程圖如圖3-2所示。輸入密碼密碼正確N+1N3紅燈亮 開鎖YYNN綠燈亮圖3-2 解鎖流程圖首先輸入4位2進(jìn)制密碼,輸入密碼正確,綠燈亮并開鎖;輸入密碼不正確,計數(shù)器N自加1,判定N是否大于3,如果大于3,紅燈亮,系統(tǒng)報警;否則繼續(xù)輸入密碼,直至N大于3。在這3次中,輸入密碼正確,計數(shù)器N重置,綠燈亮并開鎖。3.3 主要程序輸入密碼為1000、再輸入0000initial begin#10 rst=1; #10 rst=0;#10 am_en=0; /10時間單位后,am_en賦值0,在主程序里,有判定am的值來執(zhí)行if循環(huán)#10 cipher_in=4b1000; /置cipher為1000,此時輸入錯誤#10 cipher_in=4b0000; /置cipher為0000,此時輸入正確重新置位,判斷密碼是否=初始密碼#10 rst=1;#10 rst=0;#10 am_en=1; /10時間單位后,am_en賦值1,在主程序里,有判定am的值來執(zhí)行if循環(huán)#10 cipher_in=4b0000; /輸入0000,錯誤#10 cipher_in=4b1000; /輸入1000,錯誤#10 am_en=0; /10時間單位后,am_en賦值0,在主程序里,有判定am的值來執(zhí)行if循環(huán)#10 cipher_in=4b0000; /輸入0000,錯誤#10 cipher_in=4b0001; /輸入0001,錯誤#10 cipher_in=4b1000; /輸入1000,正確寄存器定義/parameter s0=2b00, /定義參數(shù)的值,通過計時寄存器 s1=2b01, /s0-s3代表輸入密碼錯誤的次數(shù) s2=2b10, s3=2b11;置位/always(cipher_in or posedge rst) if(rst) begin /置位設(shè)置,if(rst)為1 state=0; /將state重置為0 warn_en=0; /將warn_en重置為0 count=0; /將count重置為0 amend_cipher=0; /將amend_cipher重置為0 i=0; /將i重置為0end鍵入密碼/else if(!am_en) begin /if(rst)為0,不置位,判斷初始密碼am_en是否為0case(state_out) s0: if(cipher_in=amend_cipher) begin /判斷鍵入密碼是否等于初始密碼,執(zhí)行下列程序 count=1; /相同,count+1,密碼正確 warn_en=0; /輸入密碼正確,警報不累計 end else state=s1; /state=1,輸入錯誤 s1:if(cipher_in=amend_cipher) begin/判斷第二次鍵入密碼是否等于初始密碼,執(zhí)行下列程序 count=i; /相同,count=i,密碼正確 warn_en=0; /輸入密碼正確,警報不累計 end else state=s2; /第二位輸入密碼錯誤 s2:if(cipher_in=amend_cipher) begin/判斷第三次輸入密碼是否等于初始密碼,執(zhí)行下列程序 count=i; /相同,count=i,密碼正確 warn_en=0; /輸入密碼正確,警報不累計 end else state=s3; /第三位密碼錯誤 s3:begin warn_en=1; /警報此時為1 state=s3; /密碼輸錯3次 end /結(jié)束if循環(huán)嵌套 default:state=s0; /否則次數(shù)為0,即0次endcaseend /結(jié)束鍵入密碼循環(huán)輸入密碼錯誤判定/always(cipher_in or am_en or rst)if(rst) /if(rst)為1,重置j=0; /判定j=0,值返回到j(luò),j=1else /if(rst)為0if(am_en) /如果初始密碼為0 case(j) /j=1 2b00:begin /第一位鍵入的密碼 if(cipher_in=amend_cipher) /判斷輸入密碼和初始密碼是否相等 j=j+1; /相等,則j+1 else j=j; /否則j值不變 end 2b01:begin /j=01時,執(zhí)行下列程序 amend_cipher=cipher_in; /把輸入密碼賦值給初始密碼 j=j+1; /j自加1 end default: j=0; /否則次數(shù)為0,即0次 end第4章 軟件仿真4.1 仿真過程本設(shè)計在Modelsim下仿真,通過Verilog HDL語言控制。打開Modelsim界面,如圖4-1所示。圖4-1 ModelSim頁面在Modelsim下新建工程:Lock。出現(xiàn)下圖進(jìn)行編寫工程文件名。如圖4-2圖4-2新建工程在文件名建立完成后就可以進(jìn)行程序編寫了,雙擊LockI和LockII,進(jìn)行主程序及激勵程序的編寫。如圖4-3所示。圖4-3 程序編寫編寫后保存并編譯,編譯成功后,status為對勾狀態(tài)。若程序有錯誤,則不能編譯。如圖4-4所示。圖4-4 程序編譯程序編譯成功后進(jìn)行仿真如下圖4-4:圖4-4成功編譯4.2 仿真結(jié)果 數(shù)字密碼鎖仿真,如圖4-5。圖4-5 數(shù)字密碼鎖仿真設(shè)計4.3 仿真分析如圖4-6,黃線后邊仿真的驗證,當(dāng)更改密碼時,需先使am_en為高電平時,方可更改密碼,輸入舊密碼,然后輸入新密碼,再次驗證新密碼,驗證正確圖4-6 仿真分析4.3.1 仿真過程輸入密碼時,當(dāng)?shù)谝淮屋斎脲e誤,第二次輸入密碼正確時,計數(shù)器count計數(shù)為2,驗證正確。當(dāng)更改密碼時,需先使am_en為高電平時,方可更改密碼,輸入舊密碼,然后輸入新密碼,再次驗證新密碼,驗證正確。如圖4-7所示。圖4-7 仿真過程分析結(jié)論本設(shè)計主要是用硬件描述語言 Verilog HDL為主要的編譯語言,以ModelSim開發(fā)系統(tǒng)為設(shè)計工具,設(shè)計了一種具有密碼輸入密碼輸入正確開鎖和輸入錯誤達(dá)到三次后報警等功能的數(shù)字電子密碼鎖。同時介紹了闡述數(shù)字密碼鎖的工作原理、個工作模塊的組成及功能介紹和數(shù)字密碼鎖的軟件實(shí)現(xiàn)方法,在ModelSim環(huán)境下進(jìn)行的模擬仿真,反饋結(jié)果都能夠看出驗證程序設(shè)計的可行性和可靠性,對該數(shù)字密碼鎖進(jìn)行的時序仿真所得出的結(jié)果都表明:該電路能夠?qū)崿F(xiàn)本設(shè)計所要求的功能。設(shè)計的數(shù)字密碼鎖控制器設(shè)置的是4位密碼,在系統(tǒng)復(fù)位后,用戶需按鍵4次,輸入完整的一個密碼串,在輸入完后,系統(tǒng)將會進(jìn)行比較,如果發(fā)現(xiàn)密碼正確,則開鎖,如果連續(xù)輸入密碼錯誤達(dá)到三次系統(tǒng)就會報警。這樣的設(shè)計可以很好的滿足人們的日常需求,可以對保管的器物可以安心。同時,本設(shè)計中的數(shù)字密碼鎖還具備密碼修改功能,操作簡單,使得密碼鎖的使用更加安全、便捷。參考文獻(xiàn)1劉昌華EDA技術(shù)與應(yīng)用:基于Quartus和VHDLM北京:北京航空航天大學(xué)出版社,20122任葛榮可編程智能電子鎖控制器的設(shè)計與實(shí)現(xiàn)D廣東:華南理工大學(xué),20113趙鑫VHDL與數(shù)字電路設(shè)計M北京:機(jī)械工業(yè)出版社,2005:275-2764王金明數(shù)字系統(tǒng)設(shè)計與VerilogHDLM北京:電子工業(yè)出版社,200915賈熹濱數(shù)字邏輯基礎(chǔ)與Verilog硬件描述語言M北京:清華大學(xué)出版社,20126于斌,謝文龍ModelSim電子系統(tǒng)分析及仿真M北京:電子工業(yè)出版社,201427于斌,米秀杰 ModelSim電子系統(tǒng)分析及仿真M北京:電子工業(yè)出版社,2014128于斌ModelSim電子系統(tǒng)分析及仿真M北京:電子工業(yè)出版社,201429成超原4位數(shù)字密碼鎖設(shè)計(密碼設(shè)置及驗證電路)D武漢:華中科技大學(xué)文華學(xué)院,201210劉瀟婷基于FPGA的紅外遙控電子密碼鎖的實(shí)現(xiàn)D大連:大連海事大學(xué),2010附錄1 程序代碼module latch(cipher_in,count,warn_en,rst,am_en);input rst,am_en; /定義輸入變量:am_en、密碼設(shè)置鍵input 3:0cipher_in; /定義輸入變量:4位密碼output warn_en; /定義輸出變量,警告output1:0count; /定義計數(shù)reg warn_en; /定義警告為reg型變量reg1:0state,state_out; /reg型2位變量reg1:0count; /reg型2位變量reg3:0amend_cipher; /reg型4位變量parameter s0=2b00, /定義參數(shù)的值,通過計時寄存器 s1=2b01, /s0-s3代表輸入密碼錯誤的次數(shù) s2=2b10, s3=2b11;integer i; /定義有符號位變量always(cipher_in or posedge rst) /置位模塊if(rst) begin /rst為1,進(jìn)行復(fù)位 state=0; /將state重置為0 warn_en=0; /將warn_en重置為0 count=0; /將count重置為0 amend_cipher=0; /將amend_cipher重置為0 i=0; /將i重置為0end else if(!am_en) begin /if(rst)為0,再判斷初始密碼am_en case(state_out) s0: if(cipher_in=amend_cipher) begin /判斷鍵入密碼是否等于初始密碼,執(zhí)行下列程序 count=1; /相同,count+1,密碼正確 warn_en=0; /輸入密碼正確,警報不累計 end else state=s1; /state=1,輸入錯誤 s1:if(cipher_in=amend_cipher) begin /判斷第二次鍵入密碼是否等于初始密碼,執(zhí)行下列程序 count=i; /相同,count=i,密碼正確 warn_en=0; /輸入密碼正確,警報不累計 end else state=s2; /第二位輸入密碼錯誤 s2:if(cipher_in=amend_cipher) begin /判斷第三次輸入密碼是否等于初始密碼,執(zhí)行下列程序 count=i; /相同,count=i,密碼正確 warn_en=0; /輸入密碼正確,警報不累計 end else state=s3; /第三位密碼錯誤 s3:begin warn_en=1; /警報此時為1 state=s3; /密碼輸錯3次 end /結(jié)束if循環(huán)嵌套 default:state=s0; /否則次數(shù)為0,即0次 endcase end /結(jié)束if循環(huán)嵌套 end /結(jié)束if循環(huán)嵌套 always(state or posedge rst) if(rst) begin /if(rst)為1,重置 i=1; /i置位1 state_out=0; /state_out置位0end /結(jié)束if循環(huán)嵌套 else begin i=i+1; /i和i自加1比較,值返回i state_out=state; /state_out和state比較,值返回state_out end /結(jié)束if循環(huán)嵌套 integer j; /定義整型 jalways(cipher_in

溫馨提示

  • 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

提交評論