畢業(yè)設(shè)計(jì)畢業(yè)論文基于FPGA的數(shù)字密碼鎖電路設(shè)計(jì).doc_第1頁(yè)
畢業(yè)設(shè)計(jì)畢業(yè)論文基于FPGA的數(shù)字密碼鎖電路設(shè)計(jì).doc_第2頁(yè)
畢業(yè)設(shè)計(jì)畢業(yè)論文基于FPGA的數(shù)字密碼鎖電路設(shè)計(jì).doc_第3頁(yè)
畢業(yè)設(shè)計(jì)畢業(yè)論文基于FPGA的數(shù)字密碼鎖電路設(shè)計(jì).doc_第4頁(yè)
畢業(yè)設(shè)計(jì)畢業(yè)論文基于FPGA的數(shù)字密碼鎖電路設(shè)計(jì).doc_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

本科生畢業(yè)設(shè)計(jì)基于FPGA的數(shù)字密碼鎖電路設(shè)計(jì) 獨(dú) 創(chuàng) 性 聲 明本人鄭重聲明:所呈交的畢業(yè)論文(設(shè)計(jì))是本人在指導(dǎo)老師指導(dǎo)下取得的研究成果。除了文中特別加以注釋和致謝的地方外,論文(設(shè)計(jì))中不包含其他人已經(jīng)發(fā)表或撰寫(xiě)的研究成果。與本研究成果相關(guān)的所有人所做出的任何貢獻(xiàn)均已在論文(設(shè)計(jì))中作了明確的說(shuō)明并表示了謝意。簽名: 年 月 日授 權(quán) 聲 明本人完全了解許昌學(xué)院有關(guān)保留、使用本科生畢業(yè)論文(設(shè)計(jì))的規(guī)定,即:有權(quán)保留并向國(guó)家有關(guān)部門(mén)或機(jī)構(gòu)送交畢業(yè)論文(設(shè)計(jì))的復(fù)印件和磁盤(pán),允許畢業(yè)論文(設(shè)計(jì))被查閱和借閱。本人授權(quán)許昌學(xué)院可以將畢業(yè)論文(設(shè)計(jì))的全部或部分內(nèi)容編入有關(guān)數(shù)據(jù)庫(kù)進(jìn)行檢索,可以采用影印、縮印或掃描等復(fù)制手段保存、匯編論文(設(shè)計(jì))。本人論文(設(shè)計(jì))中有原創(chuàng)性數(shù)據(jù)需要保密的部分為(如沒(méi)有,請(qǐng)?zhí)顚?xiě)“無(wú)”): 簽名: 年 月 日指導(dǎo)教師簽名: 年 月 日 摘 要 VHDL語(yǔ)言實(shí)現(xiàn)了把硬件設(shè)計(jì)轉(zhuǎn)向軟件設(shè)計(jì)。以FPGA硬件為基礎(chǔ),用VHDL語(yǔ)言實(shí)現(xiàn)密碼鎖的各模塊,再把這些功能模塊連接整合。但這種連接不是傳統(tǒng)的多個(gè)模塊的連接,這些模塊是軟件模塊,通過(guò)單片F(xiàn)PGA即可在片內(nèi)完成連接。這種設(shè)計(jì)方法給技術(shù)開(kāi)發(fā)人員帶來(lái)了便利,同時(shí)要求開(kāi)發(fā)人員必須精通VHDL的編程方法。安全可靠、使用方便的電子密碼鎖越來(lái)越受到人們的喜愛(ài)。關(guān)鍵詞:VHDL語(yǔ)言;FPGA;密碼鎖;模塊ABSTRACTVHDL language implemented the conversion of hardware design to software design. Based on the FPGA hardware , the modules of trick lock implemented by VHDL language, and put these function modules connected to integration. But this connection is not the traditional connections of the multiple modules, the module is the software module, the connections can be finished in pieces through the monolithic FPGA. This design brought convenient for technology development personnel, also requires developers must be proficient in VHDL programming method. Safety and reliable and easy to use, making this electronic combination lock more and more popular.Key words:VHDL language;FPGA;Combination lock;Module目 錄1 緒論12 設(shè)計(jì)要求與設(shè)計(jì)思路22.1 設(shè)計(jì)要求22.2 設(shè)計(jì)思路22.3 設(shè)計(jì)原理及原理圖22.4 器件選擇42.5 器件簡(jiǎn)介 (FLEX10K系列)53 VHDL語(yǔ)言程序設(shè)計(jì)73.1 模塊一 寄存器73.2模塊二 控制電路83.3 模塊三 計(jì)數(shù)器113.4 模塊四 比較器123.5 模塊五 編碼器133.6 模塊六 顯示譯碼器154 最終的設(shè)計(jì)圖174.1 頂層仿真圖174.2 最終仿真結(jié)果一174.3 最終仿真結(jié)果二185 數(shù)字密碼鎖的技術(shù)展望20參考文獻(xiàn)21附 錄22致 謝241 緒論隨著社會(huì)物質(zhì)財(cái)富的日益增長(zhǎng),安全防盜已成為全社會(huì)關(guān)注的問(wèn)題,安全可靠、使用方便的電子密碼鎖越來(lái)越受到人們的青睞。密碼鎖是實(shí)際應(yīng)用極為廣泛的一種數(shù)字電路,它的主要功能是用來(lái)對(duì)某些操作進(jìn)行加密保護(hù),目的是避免無(wú)權(quán)人員使用某些設(shè)施或者進(jìn)行越權(quán)操作。由于充分利用了FPGA芯片密度大、功耗低、可重復(fù)編程和具有嵌人式陣列塊的結(jié)構(gòu)特點(diǎn),從而大大簡(jiǎn)化了系統(tǒng)結(jié)構(gòu),降低了成本,只需要一片F(xiàn)PGA就可以完成電路設(shè)計(jì)。這樣做不僅提高了系統(tǒng)的保密性和可靠性,而且采用這種器件開(kāi)發(fā)的數(shù)字系統(tǒng)其維護(hù)、升級(jí)與改進(jìn)都極其方便。使用FPGA可編程器件和VHDL語(yǔ)言,以Max+PlusII為工作平臺(tái)設(shè)計(jì)的電子密碼鎖具有密碼預(yù)置、誤碼鎖死、開(kāi)鎖提示以及報(bào)警等功能。EDA技術(shù)就是以計(jì)算機(jī)為工具在EDA軟件平臺(tái)上,對(duì)以硬件描述語(yǔ)言HDL為系統(tǒng)邏輯描述手段,完成的設(shè)計(jì)文件自動(dòng)完成邏輯編譯、邏輯化簡(jiǎn)、邏輯綜合及優(yōu)化、邏輯仿真,直至對(duì)特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。EDA的仿真測(cè)試技術(shù)只需要通過(guò)計(jì)算機(jī)就能對(duì)所設(shè)計(jì)的電子系統(tǒng)從各種不同層次的系統(tǒng)性能特點(diǎn)完成一系列準(zhǔn)確的測(cè)試與仿真操作,大大提高了大規(guī)模系統(tǒng)電子設(shè)計(jì)的自動(dòng)化程度。設(shè)計(jì)者的工作僅限于利用軟件方式,即利用硬件描述語(yǔ)言(這里使用VHDL)來(lái)完成對(duì)系統(tǒng)硬件功能的描述,在EDA工具(這里利用Max+PlusII)的幫助下就可以得到最后的設(shè)計(jì)結(jié)果,這使得對(duì)整個(gè)硬件系統(tǒng)的設(shè)計(jì)和修改過(guò)程如同完成軟件設(shè)計(jì)一樣方便 、高效。在本文中我選擇FPGA為硬件用VHDL語(yǔ)言來(lái)描述程序設(shè)計(jì)一個(gè)六位電子密碼鎖,VHDL在電子設(shè)計(jì)領(lǐng)域得到了廣泛的接受,并逐步取代了原有的非標(biāo)準(zhǔn)的硬件描述語(yǔ)言?,F(xiàn)在,VHDL和Verilog作為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語(yǔ)言,又得到眾多EDA公司的支持,在電子工程領(lǐng)域,已成為事實(shí)上的通用硬件描述語(yǔ)言。有專(zhuān)家估計(jì),到不久的將來(lái)用VHDL和Verilog兩種語(yǔ)言可以完成所有的硬件電路設(shè)計(jì)。VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),或稱(chēng)設(shè)計(jì)實(shí)體(可以是一個(gè)元件,一個(gè)電路模塊或一個(gè)系統(tǒng))分成外部(或稱(chēng)可是部分,及端口)和內(nèi)部(或稱(chēng)不可視部分),既涉及實(shí)體的內(nèi)部功能和算法完成部分。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開(kāi)發(fā)完成后,其他的設(shè)計(jì)就可以直接調(diào)用這個(gè)實(shí)體。而且用VHDL語(yǔ)言編程可以像用其它高級(jí)語(yǔ)言一樣,把一個(gè)復(fù)雜的程序分為許多的簡(jiǎn)單模塊來(lái)分別設(shè)計(jì)。2 設(shè)計(jì)要求與設(shè)計(jì)思路2.1 設(shè)計(jì)要求(1) 以FLEX10K系列FPGA為基本器件,用VHDL語(yǔ)言設(shè)計(jì)一個(gè)6位電子密碼鎖。(2) 軟件設(shè)計(jì)采用模塊化設(shè)計(jì)方法,再分別對(duì)每個(gè)模塊進(jìn)行程序設(shè)計(jì)。(3) 能夠隨時(shí)對(duì)當(dāng)前進(jìn)行修正調(diào)試,使電路可以進(jìn)行時(shí)時(shí)更新。(4) 能夠很方便地完成重設(shè)密碼和驗(yàn)證密碼。(5) 此設(shè)計(jì)主要完成軟件設(shè)計(jì)、和軟件仿真以及對(duì)所用器件的選擇與簡(jiǎn)介。(6) 能夠熟練運(yùn)用MAX+PLUS II以及常用的辦公軟件。2.2 設(shè)計(jì)思路(1) 根據(jù)設(shè)計(jì)要求,選擇FLEX10K系列為核心器件。(2) 密碼預(yù)先在內(nèi)部設(shè)置,可以設(shè)置任意位密碼,這里采用6位十進(jìn)制數(shù)字作為輸入密碼的數(shù)字密碼鎖(采用6位十進(jìn)制數(shù)字作為密碼這符合我們的平時(shí)生活習(xí)慣)。(3) 密碼輸入正確后,密碼鎖將啟動(dòng)開(kāi)啟裝置。這里密碼鎖只接受前6位密碼輸入,并以按鍵音提示,多余位數(shù)的密碼輸入將不起作用。在調(diào)試仿真程序時(shí),要特別注意輸入密碼的位數(shù),多輸或少輸可能得不到我們想要的結(jié)果,反而造成錯(cuò)誤。(4) 密碼器具有外接鍵盤(pán),可以用來(lái)輸入密碼和操作指令。還可輸出6位并行顯示,以提示使用者。(5) 設(shè)計(jì)好的功能模塊分別用軟件仿真正確后,再整合一個(gè)密碼鎖,并進(jìn)行整合仿真。2.3 設(shè)計(jì)原理及原理圖根據(jù)設(shè)計(jì)要求與設(shè)計(jì)思路,以及在測(cè)試或調(diào)整電子電路及設(shè)備時(shí),為測(cè)定電路的一些量值。先對(duì)數(shù)字密碼鎖進(jìn)行頂層設(shè)計(jì)并寫(xiě)出相應(yīng)的VHDL程序,然后將數(shù)字密碼鎖劃分為編碼模塊、比較模塊、計(jì)數(shù)器選擇模塊、指示譯碼模塊、寄存器模塊和控制器模塊6個(gè)部分,將各個(gè)模塊一一實(shí)現(xiàn)。頂層設(shè)計(jì)中各個(gè)模塊是作為元件來(lái)引用的,因此這里需要將各個(gè)模塊設(shè)計(jì)成獨(dú)立設(shè)計(jì)實(shí)體的具體形式,這樣便可以在頂層設(shè)計(jì)來(lái)引用這些模塊了。這種設(shè)計(jì)電路的方法不像傳統(tǒng)設(shè)計(jì)方法那樣,它用軟件設(shè)計(jì)代替了硬件設(shè)計(jì),使電路設(shè)計(jì)工作量大大減少。首先,密碼器通過(guò)外接鍵盤(pán)輸入數(shù)字密碼,然后密碼需要經(jīng)過(guò)10線(xiàn)至4線(xiàn)編碼器變成BCD碼;接下來(lái)通過(guò)4位比較器與存儲(chǔ)在系統(tǒng)中的預(yù)置密碼進(jìn)行比較,同時(shí)將輸入的密碼通過(guò)數(shù)碼管掃描模塊和指示譯碼模塊顯示出來(lái)。后文也將提到,論文設(shè)計(jì)只涉及到密碼鎖主體部分的軟件設(shè)計(jì)。本次設(shè)計(jì)中的密碼是串行輸入的,每次分別與一個(gè)預(yù)置碼比較。數(shù)據(jù)選擇是3位的六選一選擇,它的兩位選擇信號(hào)是由一個(gè)模6的計(jì)數(shù)器來(lái)給出的。外接鍵盤(pán)每送一個(gè)密碼數(shù)字,計(jì)數(shù)器的計(jì)數(shù)值加1。如果計(jì)數(shù)器的數(shù)值計(jì)到6時(shí),那么表示6個(gè)密碼已經(jīng)輸入完畢。接下來(lái)計(jì)數(shù)器應(yīng)向控制器發(fā)出反饋信號(hào)COUT,這表示控制器已經(jīng)可以進(jìn)入到啟動(dòng)狀態(tài)。當(dāng)密碼輸入錯(cuò)誤時(shí),密碼鎖將發(fā)出警報(bào)。(1) 系統(tǒng)頂層原理圖如下:圖2-1 系統(tǒng)頂層原理圖(2) 系統(tǒng)的仿真頂層圖:我們從系統(tǒng)的頂層仿真圖可以清楚的看到數(shù)字密碼鎖劃分為編碼模塊、比較模塊、計(jì)數(shù)器選擇模塊、指示譯碼模塊、寄存器模塊和控制器模塊6個(gè)部分。其中所設(shè)計(jì)的密碼鎖包括的狀態(tài):開(kāi)鎖狀態(tài)(OUTLOCK)、安鎖狀態(tài)(INLOCK)、輸入密碼狀態(tài)(PS_INPUT)、密碼初驗(yàn)狀態(tài)(PS_RIGHT)、密碼初驗(yàn)錯(cuò)誤狀態(tài)(PS_WRONG)、報(bào)警狀態(tài)(ALARM)及修改密碼狀態(tài)(PS_CHANGE),共7個(gè)狀態(tài)。其共有7個(gè)輸入信號(hào)端,分別是時(shí)鐘信號(hào)(CLK)、上鎖信號(hào)(LOCK)、開(kāi)始信號(hào)(START)、報(bào)警復(fù)位信號(hào)(OFF_AL)、修改密碼信號(hào)(PS_CH)、確認(rèn)信號(hào)(ENTER)、輸入密碼信號(hào)(KEY_IN9.0);共有4個(gè)輸出信號(hào)端,分別是鎖閉合(KEY)、報(bào)警信號(hào)(WARN)、位控制信號(hào)(WEI2.0)、數(shù)據(jù)輸出信號(hào)(DATAOUT7.0),其它的信號(hào)為中間傳遞信號(hào)。在使用時(shí)需要接入輸入鍵盤(pán)、輸出顯示器以及其它一些輔助的外圍設(shè)備后,即可構(gòu)成一個(gè)電子密碼鎖。圖2-2 系統(tǒng)的仿真頂層圖2.4 器件選擇90年代以來(lái),我國(guó)單片機(jī)的應(yīng)用經(jīng)歷了一個(gè)輝煌的時(shí)代。在電子設(shè)計(jì)數(shù)字化的今天,單片機(jī)幾乎應(yīng)用到電子設(shè)計(jì)的各個(gè)領(lǐng)域。但隨著應(yīng)用范圍的推廣,我們發(fā)現(xiàn)單片機(jī)并不是萬(wàn)能的,它本身還存在著一些缺陷,有些缺陷甚至是難以解決的。比較單片機(jī)和可編程器件FPGACPLD的優(yōu)劣,我們可以發(fā)現(xiàn)可編程器件FPGA/CPLD正在以一種非常迅速的發(fā)展勢(shì)頭趕超傳統(tǒng)的單片機(jī)。而與DSP芯片相比FPGA/CPLD又有易學(xué)和方便等特點(diǎn)。在FPGA和CPLD之間的選擇要看開(kāi)發(fā)項(xiàng)目的本身需要,對(duì)于普通規(guī)模且產(chǎn)量不是很大是,使用CPLD比較好。但本文考慮到今后的實(shí)際大規(guī)模應(yīng)用,所以選用FPGA作為此次畢業(yè)設(shè)計(jì)的硬件平臺(tái),以達(dá)到提前訓(xùn)練的目的。FPGA一般有以下的用處:1)直接使用于產(chǎn)品的電路系統(tǒng)板上;2)間接使用FPGA完成系統(tǒng)整機(jī)的設(shè)計(jì),包括最后的電路板的定型,然后將充分驗(yàn)證的設(shè)計(jì)軟件;3)用于各種硬件仿真;4)專(zhuān)用集成電路ASIC設(shè)計(jì)仿真;而這里是用它的第一種用處,即直接使用。2.5 器件簡(jiǎn)介 (FLEX10K系列)FLEX10K系業(yè)以工業(yè)上最大的PLD(達(dá)到10萬(wàn)門(mén))為特征,包括嵌入式陣列、多組低延時(shí)時(shí)鐘和內(nèi)部三總線(xiàn)等結(jié)構(gòu)特性,提供了復(fù)雜邏輯設(shè)計(jì)所需的性能和利用主系統(tǒng)集成的要求。FLEX10K器件可理想地用于復(fù)雜門(mén)陣列的各種場(chǎng)合。FLEX10K器件包含一個(gè)優(yōu)化接口,允許微處理器對(duì)FLEX10K器件進(jìn)行串行或并行、同步或異步配置。該優(yōu)化接口使微處理器把FLEX10K器件當(dāng)做存儲(chǔ)器來(lái)處理,并且通過(guò)寫(xiě)入虛擬存儲(chǔ)地址進(jìn)行配置,這樣設(shè)計(jì)者就很容易重新配置器件,其結(jié)構(gòu)框圖如下:圖2-3 FLEX10K器件的結(jié)構(gòu)框圖從上圖可以看到,每組LE連接到LAB,LAB被分成行和列,每行包含一個(gè)EAB。LAB和EAB由快速通道互相連接。IOE位于行通道和列通道的兩端。FLEX10K器件提供了6個(gè)專(zhuān)用輸入引腳,驅(qū)動(dòng)觸發(fā)器控制輸入,以保證高速、低擺率控制信號(hào)的有效分配。FLEX10K器件的結(jié)構(gòu)類(lèi)似于嵌入式門(mén)陣列。由于有標(biāo)準(zhǔn)的門(mén)陣列,嵌入式門(mén)陣列在通用的門(mén)海結(jié)構(gòu)中實(shí)現(xiàn)一般邏輯。除此之外,嵌入式門(mén)陣列有專(zhuān)門(mén)的芯片面積以實(shí)現(xiàn)大的專(zhuān)用功能。嵌入式門(mén)陣列在減少芯片面積的同時(shí)具有比標(biāo)準(zhǔn)門(mén)陣列更快的速度,這是通過(guò)嵌入在硅里的宏函數(shù)完成的。然而嵌入的宏函數(shù)不能被用戶(hù)化,限制了設(shè)計(jì)者選項(xiàng)。相比之下,F(xiàn)LEX10K器件是可編程的,在調(diào)試時(shí),給設(shè)計(jì)者提供了實(shí)現(xiàn)重復(fù)設(shè)計(jì)改變過(guò)程中對(duì)嵌入宏函數(shù)和一般邏輯的完全控制。每個(gè)FLEX10K器件包含一個(gè)實(shí)現(xiàn)存儲(chǔ)和專(zhuān)用邏輯功能的嵌入陣和一個(gè)實(shí)現(xiàn)一般邏輯的邏輯陣列。嵌入陣列和邏輯陣列的結(jié)合提供了嵌入式門(mén)陣列的高性能和高密度,可以使設(shè)計(jì)者在某個(gè)器件上實(shí)現(xiàn)一個(gè)完整的系統(tǒng)。要特別注意在使用時(shí),需加入一個(gè)ROM存儲(chǔ)器來(lái)裝載數(shù)據(jù)(若選用CPLD的器件可以不用附加外部存儲(chǔ)器)。邏輯陣列由邏輯塊(LAB)構(gòu)成,每個(gè)LAB包含8個(gè)邏輯單元和一個(gè)局部連接。每個(gè)邏輯單元有一個(gè)4輸入查找表、一個(gè)可編程觸發(fā)器和一個(gè)實(shí)現(xiàn)進(jìn)位和級(jí)聯(lián)功能的專(zhuān)用信號(hào)路徑。LAB中的8個(gè)邏輯單元可用來(lái)產(chǎn)生中規(guī)模邏輯塊,比如8比特計(jì)數(shù)器、地址譯碼器或狀態(tài)機(jī),或者通過(guò)邏輯陣列塊結(jié)合產(chǎn)生更大的邏輯塊。每個(gè)I/O管腳由位于快速互連通道的每個(gè)行、列兩端的I/O單元(IOE)輸入,每個(gè)IOE包含一個(gè)雙向I/O緩沖器和一個(gè)觸發(fā)器。這個(gè)觸發(fā)器可用數(shù)據(jù)輸入、輸出或雙向信號(hào)的輸出或輸入寄存器。3 VHDL語(yǔ)言程序設(shè)計(jì)3.1 模塊一 寄存器寄存器模塊中有6個(gè)寄存器M0到M5,可存儲(chǔ)6個(gè)BCD碼形式的密碼數(shù)據(jù)。6位寄存器的在這里的主要功能是寄存要保存的密碼,和將保存的密碼與使用者輸入的密碼進(jìn)行比較,以確認(rèn)其身份。architecture behave of shifter issignal m0: std_logic_vector(3 downto 0);signal m5: std_logic_vector(3 downto 0);beginprocess(clk)begin if clk=1 and clkevent then if en=1 then -密碼脈沖作為使能信號(hào) case addr is when 001 = if reg_wr=1 then m0=data_in; else data_out=m0; end if; end if; end process;end architecture behave;以下是仿真圖的信號(hào)端口說(shuō)明讀/寫(xiě)時(shí)鐘:CLK,讀/寫(xiě)信號(hào):REG_WR,使能:EN,地址:ADDR,數(shù)據(jù)輸入:DATA_IN,數(shù)據(jù)輸出:DATA_OUT。M0到M5分別寄存了從DATA_IN輸入的秘密,根據(jù)ADDR的值決定寄存在哪一個(gè)里。圖3-1 模塊一 寄存器的仿真圖3.2模塊二 控制電路電鎖控制電路是整個(gè)電路的控制中心,是這個(gè)電路設(shè)計(jì)的核心部分,也是本設(shè)計(jì)的重點(diǎn)與難點(diǎn)。但是用VHDL語(yǔ)言設(shè)計(jì)控制電路的程序編寫(xiě)并不難,因?yàn)樗O(shè)計(jì)的狀態(tài)多,所以設(shè)計(jì)占用的篇幅較多而已。而且理解程序也不難,設(shè)計(jì)時(shí)只要根據(jù)設(shè)計(jì)的狀態(tài)轉(zhuǎn)移圖編寫(xiě)程序就可以了。要想使所設(shè)計(jì)的密碼鎖具有什么樣的功能,就要根據(jù)設(shè)計(jì)的控制電路。以后想更新密碼鎖的功能,也可直接在控制模塊修改程序即可。又因?yàn)樗糜布荈PGA,則更新密碼鎖的功能不必再更新硬件,只需更新軟件。控制模塊采用有限狀態(tài)機(jī)設(shè)計(jì),將系統(tǒng)分為7個(gè)狀態(tài),即開(kāi)鎖狀態(tài)(OUTLOCK)、安鎖狀態(tài)(INLOCK)、輸入密碼狀態(tài)(PS_INPUT)、密碼初驗(yàn)狀態(tài)(PS_RIGHT)、密碼初驗(yàn)錯(cuò)誤狀態(tài)(PS_WRONG)、報(bào)警狀態(tài)(ALARM)及修改密碼狀態(tài)(PS_CHANGE)。編程時(shí)直接按照下面的狀態(tài)轉(zhuǎn)換圖,其狀態(tài)轉(zhuǎn)換如圖:OUTLOCKPS_CHANGEALARMINLOCKPS_INPUTPS_WRONGPS_RIGHTenter=1ps_ch=1enter=1lock=1off_al=1enter=1cmp_r=0start=1cmp_r=1圖3-2 控制模塊的狀態(tài)轉(zhuǎn)換圖architecture face of kongzhi isconstant key_active:std_logic:=1;type state_type is(outlock,inlock,ps_input,ps_right,ps_wrong,alarm,ps_change);signal state:state_type;begin cnt_clk -開(kāi)鎖 key=0; if lock=key_active then state=inlock;elsif ps_ch=key_active then state=ps_change; else state -安鎖 key=1;-關(guān)鎖 code_en=0;-禁止輸入密碼 cnt_clr=1;-清零信號(hào) reg_wr=0; warn=0; if start=1 then state=ps_input; else state state=inlock; end case; end if;end process;end architecture face;下圖是控制模塊的仿真圖,上電時(shí),系統(tǒng)處于開(kāi)鎖狀態(tài),按LOCK鍵,進(jìn)入“按鎖”狀態(tài),狀態(tài)編碼為“001”,閉鎖;準(zhǔn)備開(kāi)鎖,按START鍵,進(jìn)入輸入密碼狀態(tài),狀態(tài)編碼“010”,PS_I輸入6個(gè)脈沖,表示輸入密碼脈沖,每個(gè)密碼脈沖的寬度等于1個(gè)時(shí)鐘周期。在密碼脈沖有效時(shí)間內(nèi),有1個(gè)時(shí)鐘下降沿和1個(gè)時(shí)鐘上升沿,在下降沿時(shí),寄存器輸出對(duì)應(yīng)地址的密碼數(shù)據(jù),在上升沿時(shí),檢查比較結(jié)果。圖中CMP_R=1,表示相等,CIN=1,表示計(jì)數(shù)值滿(mǎn)6,所以進(jìn)入密碼初驗(yàn)正確狀態(tài),狀態(tài)編碼“011”;再按ENTER鍵,進(jìn)入開(kāi)鎖狀態(tài),鎖被打開(kāi)。以下是仿真圖的信號(hào)端口說(shuō)明clk:時(shí)鐘輸入,lock:安鎖,start:輸入密碼,off_al:報(bào)警復(fù)位,ps_ch:修改密碼,enter:密碼確認(rèn),ps_i:密碼脈沖,cmp_r:比較結(jié)果,cin:密碼輸入指示,cnt_clr:計(jì)數(shù)器清零,cnt_clk:計(jì)數(shù)器時(shí)鐘,reg_wr:寄存器讀/寫(xiě)信號(hào),key:鑰匙信號(hào),warn:報(bào)警信號(hào),code_en:密碼輸入使能。圖3-3 模塊二 控制電路的仿真圖3.3 模塊三 計(jì)數(shù)器此系統(tǒng)所設(shè)計(jì)的計(jì)數(shù)器是一個(gè)單向計(jì)數(shù)器,帶有異步清零端和計(jì)數(shù)滿(mǎn)指示端,模值為8。這個(gè)計(jì)數(shù)器有2個(gè)作用:計(jì)數(shù)值輸出作為寄存器的地址輸入;計(jì)數(shù)滿(mǎn)指示送人控制模塊,表示密碼長(zhǎng)度是否滿(mǎn)足。因?yàn)榇嗽O(shè)計(jì)是6位密碼鎖,所以計(jì)數(shù)器在計(jì)數(shù)滿(mǎn)6時(shí)要將計(jì)滿(mǎn)信號(hào)COUT置1。輸入CLR信號(hào)可以讓計(jì)數(shù)器清零,進(jìn)入復(fù)位狀態(tài)。若想改變密碼鎖的密碼位數(shù),就只需修改計(jì)算器模塊的部分參數(shù),但別忘了還要修改寄存器的參數(shù)。我之所以只做6位數(shù)的密碼鎖,是考慮到現(xiàn)在很多實(shí)際應(yīng)用場(chǎng)合都是6位的,而且密碼鎖的位數(shù)太多也會(huì)影響實(shí)際使用,它需要使用者牢牢死記密碼。architecture art of counter isconstant reset_active:std_logic:=1;signal cnt:std_logic_vector(2 downto 0);begin addr=cnt; process(clk,clr) begin if clr=reset_active then cnt=000; cout=0; elsif clk=1 and clkevent then if cnt=101 then cnt=110; cout=1; else cnt=cnt+1; end if; end if;end process;end architecture art; 以下是仿真圖的信號(hào)端口說(shuō)明計(jì)算值輸出:ADDR,計(jì)數(shù)滿(mǎn)指示:COUT。圖3-4 模塊三 計(jì)數(shù)器的仿真圖3.4 模塊四 比較器在數(shù)字密碼器中,比較器模塊的功能是對(duì)編碼器模塊的輸出和寄存器模塊的輸出進(jìn)行比較,然后將比較的結(jié)果送人到控制器模塊。比較器的具體工作原理是:當(dāng)比較結(jié)果相等時(shí),cmp_r的輸出為1;當(dāng)比較結(jié)果不相等時(shí),cmp_r的輸出為0。architecture art of compare isbegin c=1 when a=b else 0;end architecture art;圖3-5 模塊四 比較器的仿真圖3.5 模塊五 編碼器在數(shù)字密碼鎖中,輸入鍵盤(pán)有0到9共10個(gè)鍵,可以用10位二進(jìn)制數(shù)表示,而寄存器中數(shù)據(jù)存儲(chǔ)格式為BCD碼,所以需要轉(zhuǎn)換。編碼器模塊的主要功能是將10位二進(jìn)制數(shù)編碼為BCD碼,然后將編碼結(jié)果送人到比較器模塊和寄存器模塊。另外,編碼器還需要將輸入的跳變檢測(cè)出來(lái),將密碼脈沖ps_i送人控制模塊。architecture art of coder issignal key_in1:std_logic_vector(9 downto 0);signal key_in2:std_logic_vector(9 downto 0);signal temp:std_logic_vector(3 downto 0);beginu1:process(clk) -延遲信號(hào) begin if clk=1 and clkevent then if en=1 then key_in2=key_in1; key_in1=key_in; end if; end if;end process;ps_i temp temptemp=0000; end case; end if; end if;end process;code_out=temp when en=1 else 0000;end architecture art;以下是仿真圖的信號(hào)端口說(shuō)明按鍵輸入:KEY_IN,密碼脈沖:PS_I,編碼輸出:CODE_OUT。圖3-6 模塊五 編碼器的仿真圖3.6 模塊六 顯示譯碼器顯示器是采用6位并行顯示D1到D6,在具體使用時(shí)可直接接入相應(yīng)的顯示指示器即可。在這里用WEI信號(hào)來(lái)控制輸入的6位數(shù)的顯示。而且顯示器已將4位BCD碼轉(zhuǎn)換為顯示指示器的字形碼。需要說(shuō)明現(xiàn)在設(shè)計(jì)的顯示譯碼器的譯碼原理跟模塊五所設(shè)計(jì)的編碼器的編碼原理有實(shí)質(zhì)性的差別。architecture behave of XIANSHI is signal qq:std_logic_vector(3 downto 0); signal cntt:std_logic_vector(2 downto 0);beginprocess(clk) VARIABLE CNT:STD_LOGIC_VECTOR(2 DOWNTO 0);beginif clkevent and clk=1 then IF CNT5 THEN CNT:=CNT+1; ELS

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論