畢業(yè)設(shè)計論文基于FPGA的四位電子密碼鎖_第1頁
畢業(yè)設(shè)計論文基于FPGA的四位電子密碼鎖_第2頁
畢業(yè)設(shè)計論文基于FPGA的四位電子密碼鎖_第3頁
畢業(yè)設(shè)計論文基于FPGA的四位電子密碼鎖_第4頁
畢業(yè)設(shè)計論文基于FPGA的四位電子密碼鎖_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1緒論1.1國內(nèi)外現(xiàn)狀及其發(fā)展隨著人們生活水平的提高和安全意識的加強,對安全的要求也就越來越高。鎖自古以來就是把守護門的鐵將軍,人們對它要求甚高,既要安全可靠的防盜,又要使用方便,這也是制鎖者長期以來研制的主題。隨著電子技術(shù)的發(fā)展,各類電子產(chǎn)品應(yīng)運而生,電子密碼鎖就是其中之一。據(jù)有關(guān)資料介紹,電子密碼鎖的研究從20世紀30年代就開始了,在一些特殊場所早就有所應(yīng)用。這種鎖是通過鍵盤輸入一組密碼完成開鎖過程。研究這種鎖的初衷,就是為提高鎖的安全性。由于電子鎖的密鑰量(密碼量)極大,可以與機械鎖配合使用,并且可以避免因鑰匙被仿制而留下安全隱患。電子鎖只需記住一組密碼,無需攜帶金屬鑰匙,免除了人們攜帶金屬鑰匙的煩惱,而被越來越多的人所欣賞。電子鎖的種類繁多,例如數(shù)碼鎖,指紋鎖,磁卡鎖,IC卡鎖,生物鎖等。但較實用的還是按鍵式電子密碼鎖。20世紀80年代后,隨著電子鎖專用集成電路的出現(xiàn),電子鎖的體積縮小,可靠性提高,成本較高,是適合使用在安全性要求較高的場合,且需要有電源提供能量,使用還局限在一定范圍,難以普及,所以對它的研究一直沒有明顯進展。目前,在西方發(fā)達國家,電子密碼鎖技術(shù)相對先進,種類齊全,電子密碼鎖已被廣泛應(yīng)用于智能門禁系統(tǒng)中,通過多種更加安全,更加可靠的技術(shù)實現(xiàn)大門的管理。在我國電子鎖整體水平尚處于國際上70年代左右,電子密碼鎖的成本還很高,市場上仍以按鍵電子鎖為主,按鍵式和卡片鑰匙式電子鎖已引進國際先進水平,現(xiàn)國內(nèi)有幾個廠生產(chǎn)供應(yīng)市場。但國內(nèi)自行研制開發(fā)的電子鎖,其市場結(jié)構(gòu)尚未形成,應(yīng)用還不廣泛。國內(nèi)的不少企業(yè)也引進了世界上先進的技術(shù),發(fā)展前景非??捎^。希望通過不斷的努力,使電子密碼鎖在我國也能得到廣泛應(yīng)用。目前使用的電子密碼鎖大部分是基于單片機技術(shù),以單片機為主要器件,其編碼器與解碼器的生成為軟件方式。在實際應(yīng)用中,由于程序容易跑飛,系統(tǒng)的可靠性能較差?;诂F(xiàn)場可編程邏輯門陣列FPGA器件的電子密碼鎖,用FPGA器件構(gòu)造系統(tǒng),所有算法完全由硬件電路來實現(xiàn),使得系統(tǒng)的工作可靠性大為提高。由于FPGA具有現(xiàn)場可編程功能,當(dāng)設(shè)計需要更改時,只需更改FPGA中的控制和接口電路,利用EDA工具將更新后的設(shè)計下載到FPGA中即可,無需更改外部電路的設(shè)計,大大提高了設(shè)計的效率。1.2電子密碼鎖的系統(tǒng)簡介通用的電子密碼鎖主要由四個部分組成:數(shù)字密碼輸入電路、密碼鎖控制電路和密碼鎖顯示電路。密碼鎖輸入電路包括時序產(chǎn)生電路、鍵盤掃描電路、鍵盤彈跳消除電路、鍵盤譯碼電路等幾個小的功能電路。密碼鎖控制電路包括按鍵數(shù)據(jù)的緩沖存儲電路,密碼的清除、變更、存儲、激活電鎖電路(寄存器清除信號發(fā)生電路),密碼核對(數(shù)值比較電路),解鎖電路(開/關(guān)門鎖電路)等幾個小的功能電路。密碼顯示電路主要將顯示數(shù)據(jù)的BCD碼轉(zhuǎn)換成相對應(yīng)的編碼。如,若選用七段數(shù)碼管顯示電路,主要將待顯示數(shù)據(jù)的BCD碼轉(zhuǎn)換成數(shù)碼器的七段顯示驅(qū)動編碼。1.3系統(tǒng)設(shè)計要求設(shè)計一個具有較高安全性和較低成本的通用電子密碼鎖,具體功能要求如下:數(shù)碼輸入:每按下一個數(shù)字鍵,就輸入一個數(shù)值,并在顯示器上的顯示出該數(shù)值,同時將先前輸入的數(shù)據(jù)依序左移一個數(shù)字位置。數(shù)碼清除:按下此鍵可清除前面所有的輸入值,清除為“0000”。密碼更改:按下此鍵時會將目前的數(shù)字設(shè)定成新的密碼。激活電鎖:按下此鍵可將密碼鎖上鎖。解除電鎖:按下此鍵會檢查輸入的密碼是否正確,密碼正確即開鎖。1.4本課題的研究目的和意義隨著人們生活水平的提高,對家庭防盜技術(shù)的要求也是越來越高,傳統(tǒng)的機械鎖由于其構(gòu)造的簡單,被撬的事件屢見不鮮,電子鎖由于其保密性高,使用靈活性好,安全系數(shù)高,受到了廣大用戶的歡迎。現(xiàn)在市場上主要是基于單片機技術(shù)的電子密碼鎖,但可靠性較差。FPGA即現(xiàn)場可編程門陣列,它是在PAL、GAL、EPLD等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物,是一種超大規(guī)模集成電路,具有對電路可重配置能力。相對于基于單片機技術(shù)的電子密碼鎖,用FPGA器件來構(gòu)成系統(tǒng),可靠性提高,并且由于FPGA具有的現(xiàn)場可編程功能,使得電子密碼鎖的更改與升級更為方便簡單。通過本次設(shè)計掌握FPGA系統(tǒng)設(shè)計的方法,熟悉FPGA設(shè)計的相關(guān)軟件,以及硬件描述語言的使用,了解電子密碼鎖的系統(tǒng)構(gòu)成,利用FPGA實現(xiàn)電子密碼鎖的設(shè)計與實現(xiàn),可以加深自己對所學(xué)專業(yè)的認識,關(guān)聯(lián)知識,增強自己的動手能力,積累實踐經(jīng)驗,為以后的工作打好基礎(chǔ)。2FPGA與VHDL硬件描述語言此次設(shè)計是按照"自頂向下"的設(shè)計方法,對整個系統(tǒng)進行方案設(shè)計和功能劃分,系統(tǒng)的關(guān)鍵電路用一片或幾片專用集成電路(ASIC)實現(xiàn),然后采用硬件描述語言(VHDL)完成系統(tǒng)行為級設(shè)計,最后通過綜合器和適配器生成最終的目標器件。自上而下的設(shè)計方法是現(xiàn)代電子系統(tǒng)的新型設(shè)計策略,它從設(shè)計的總體要求出發(fā),自上而下地逐步從系統(tǒng)數(shù)學(xué)模型的設(shè)計與仿真,到數(shù)據(jù)流級的設(shè)計與仿真,選擇系統(tǒng)設(shè)計方案,最后完成系統(tǒng)硬件的整體設(shè)計。2.1FPGA的相關(guān)介紹FPGA是英文FieldProgrammableGateArray的縮寫,即現(xiàn)場可編程門陣列,它是在PAL、GAL、EPLD等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物[9]。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。FPGA采用了邏輯單元陣列LCA(LogicCellArray)這樣一個新概念,內(nèi)部包括可配置邏輯模塊CLB(ConfigurableLogicBlock)、輸出輸入模塊IOB(InputOutputBlock)和內(nèi)部連線(Interconnect)三個部分。FPGA的基本特點主要有:采用FPGA設(shè)計ASIC電路,用戶不需要投片生產(chǎn),就能得到合用的芯片。FPGA可做其它全定制或半定制ASIC電路的中試樣片。FPGA內(nèi)部有豐富的觸發(fā)器和I/O引腳。FPGA是ASIC電路中設(shè)計周期最短、開發(fā)費用最低、風(fēng)險最小的器件之一。FPGA采用高速CHMOS工藝,功耗低,可以與CMOS、TTL電平兼容??梢哉f,F(xiàn)PGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。目前FPGA的品種很多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等。FPGA是由存放在片內(nèi)RAM中的程序來設(shè)置其工作狀態(tài)的,因此,工作時需要對片內(nèi)的RAM進行編程。用戶可以根據(jù)不同的配置模式,采用不同的編程方式。加電時,F(xiàn)PGA芯片將EPROM中數(shù)據(jù)讀入片內(nèi)編程RAM中,配置完成后,F(xiàn)PGA進入工作狀態(tài)。掉電后,F(xiàn)PGA恢復(fù)成白片,內(nèi)部邏輯關(guān)系消失,因此,F(xiàn)PGA能夠反復(fù)使用。FPGA的編程無須專用的FPGA編程器,只須用通用的EPROM、PROM編程器即可。當(dāng)需要修改FPGA功能時,只需換一片EPROM即可。這樣,同一片F(xiàn)PGA,不同的編程數(shù)據(jù),可以產(chǎn)生不同的電路功能。因此,F(xiàn)PGA的使用非常靈活。FPGA設(shè)計流程包括系統(tǒng)設(shè)計和設(shè)計實現(xiàn),系統(tǒng)方案完成之后即進入設(shè)計實現(xiàn)階段的工作,他以系統(tǒng)方案為輸入,進行RTL級描述、功能仿真(RTL級仿真)、邏輯綜合、布線前門級仿真、適配(布局布線)、時序仿真(布線后門級仿真)、時序分析、器件編程、系統(tǒng)驗證一系列流程的處理才能完成FPGA芯片的設(shè)計,其設(shè)計流程如圖2.1所示。模模塊劃分及其功能描述各模塊接口信號定義系統(tǒng)行為描述系統(tǒng)行為仿真時序、同步、算法測試等方案系統(tǒng)設(shè)計方案系統(tǒng)設(shè)計方案圖2.1系統(tǒng)設(shè)計流程2.2VHDL硬件描述語言VHDL(VeryhighspeedintegratedcircuitHardwareDescriptionLanguage)硬件描述語言從高于邏輯級的抽象層次上描述硬件的功能、信號連接關(guān)系及定時關(guān)系。VHDL的設(shè)計流程如下圖。圖2.2VHDL的設(shè)計流程。2.2.1VHDL語言的基本結(jié)構(gòu)一個完整的VHDL語言程序通常包含實體(Entity、)結(jié)構(gòu)體(Architecture)、配置(Configuration)、包集合(Package)和庫(Library)五個部分。1實體實體說明部分是說明一個器件的外觀視圖,即從器件外部看到的器件外貌,其中包括器件的端口,同時也可以定義參數(shù),并把參數(shù)從外部傳入模塊內(nèi)部,主要用于描述所設(shè)計的系統(tǒng)的外部接口。結(jié)構(gòu)體結(jié)構(gòu)體是描述一個器件的內(nèi)部視圖,是次級設(shè)計單元。在其對應(yīng)的初級設(shè)計單元實體說明被編譯并且被并入設(shè)計庫之后,它就可以單獨地被并入該設(shè)計庫中。結(jié)構(gòu)體描述一個設(shè)計的結(jié)構(gòu)和行為,把一個設(shè)計的輸入和輸出之間的關(guān)系建立起來。一個設(shè)計可以有多個結(jié)構(gòu),分別代表該器件的不同實現(xiàn)方案。根據(jù)對一個器件設(shè)計由抽象到具體的過程,可把結(jié)構(gòu)體的描述方式分為三個層次:行為描述方式、寄存器傳輸描述方式(RTL)和結(jié)構(gòu)描述方式。庫庫是經(jīng)編譯后的實體、結(jié)構(gòu)體、包集合和配置的集合。使用庫時總要在設(shè)計單元的前面予以說明。一旦說明,庫中的數(shù)據(jù)對該設(shè)計單元就是可見的,從而共享已經(jīng)編譯過的設(shè)計結(jié)果。VHDL語言中存在的庫大致有IEEE庫、STD庫、ASIC廠家提供的庫、用戶定義的庫和現(xiàn)行作業(yè)庫。包集合包集合屬庫中的一個層次,是一種可編譯的源設(shè)計單元。它收集了VHDL語言中所用到的信號、常數(shù)、數(shù)據(jù)類型、函數(shù)和過程的說明等。用戶可以構(gòu)造一個包集合,用以存放常數(shù)、數(shù)據(jù)類型、函數(shù)和過程,該包集合經(jīng)編譯后便自動加到WORK庫中。使用庫中的包集合時,在打開庫后要用USE語句說明,例如:LIBRARYIEEE;USEIEEE.STD-LOGIC-1164.ALL;配置配置語句從一個庫中為一個實體選擇一個特定的結(jié)構(gòu)體,是一種放在庫中的被編輯單元,并有相應(yīng)的配置名。通過配置技術(shù),可以選取多種不同的結(jié)構(gòu)體,以便對一個設(shè)計任務(wù)采用仿真工具進行多種配置的性能實驗。另外,配置說明和規(guī)定的特性還可以用在多層描述中。3電子密碼鎖的設(shè)計與實現(xiàn)3.1電子密碼鎖設(shè)計要求設(shè)計一個基于FPGA的電子密碼鎖,其基本要求為:1.密碼鎖為四位顯示,可以通過按鍵接受密碼設(shè)置;按下數(shù)字鍵,第一個數(shù)字會顯示器的最右端顯示,隨后每按下一個新數(shù)字,顯示器上的已經(jīng)存在的數(shù)字整體會向左移一位,并將以新的數(shù)字顯示出來;2.當(dāng)輸入密碼時,四位密碼都正確,則綠燈亮,密碼鎖開鎖;當(dāng)其中任意一位不正確時,則紅燈亮,密碼鎖不開鎖,當(dāng)按下復(fù)位鍵時,顯示為最初設(shè)置,可再重新輸入密碼。3.若要更改輸入數(shù)字,則可按復(fù)位鍵消除所有輸入的數(shù)字,再重新輸入數(shù)字。4.電子密碼鎖為4位,當(dāng)輸入超過4位時,電路不予理會,且不會顯示第4個以后的數(shù)字。3.2總體設(shè)計思想首先根據(jù)電子密碼鎖的邏輯功能,設(shè)計邏輯電路。然后根據(jù)邏輯電路,編寫FPGA程序?qū)崿F(xiàn)邏輯功能,再用仿真軟件進行仿真調(diào)試,最后下載到FPGA芯片上運行。本設(shè)計為四位電子密碼鎖,通過輸入密碼并直觀地通過數(shù)顯模塊顯示出來;對輸入信號進行顯示,通過控制模塊判斷輸入密碼是否正確,四位密碼都正確,則密碼鎖開鎖,只要其中有一位不正確,則密碼鎖不開鎖,同時該系統(tǒng)還應(yīng)有復(fù)位功能,按下復(fù)位鍵,允許重新輸入密碼。此電子密碼鎖的設(shè)計中采用自頂向下的設(shè)計思路,運用VHDL硬件描述語言對各個模塊進行層次化、系統(tǒng)化的描述,并且先設(shè)計一個頂層文件,再把各個模塊連接起來。圖3.1為數(shù)字電子密碼鎖系統(tǒng)總體框圖。圖3.1圖3.1電子密碼鎖系統(tǒng)總體框圖3.3子模塊的設(shè)計思想及實現(xiàn)3.3.1輸入模塊的設(shè)計與實現(xiàn)作為電子密碼鎖的輸入電路,數(shù)字密碼輸入電路可采用一個3×4的通用數(shù)字機械鍵盤作為本設(shè)計的輸入設(shè)備。機械式鍵盤具有低成本、可靠性高、構(gòu)成電路簡單、技術(shù)成熟和應(yīng)用廣泛等特點,因此將其應(yīng)用到通用電子密碼鎖中是比較適宜的。輸入模塊主要包括時序產(chǎn)生電路、鍵盤掃描電路和彈跳消除電路。1.時序產(chǎn)生電路本時序產(chǎn)生電路中使用了三種不同頻率的工作脈沖波形:系統(tǒng)時鐘脈沖(它是系統(tǒng)內(nèi)部所有時鐘脈沖的源頭,且其頻率最高)、彈跳消除取樣信號、鍵盤掃描信號。當(dāng)一個系統(tǒng)中需使用多種操作頻率的脈沖波形時,最方便的方法之一就是利用一計數(shù)器來產(chǎn)生各種需要的頻率。也就是先建立一個N位計數(shù)器,N的大小根據(jù)電路的需求決定,N的值越大,電路可以分頻的次數(shù)就越多,這樣就可以獲得更大的頻率變化,以便提供多種不同頻率的時鐘信號。若輸入時鐘為CLK,N位計數(shù)器的輸出為Q[N-1..0],則Q(0)為CLK的2分頻脈沖信號,Q(1)為CLK的4分頻脈沖信號,Q(2)為CLK的8分頻脈沖信號??Q(N-1)為CLK的2N分頻脈沖信號;Q(5DOWNTO4)取得的是一個脈沖波形序列,其值依00-01-10-11-00-01周期性變化,其變化頻率為CLK的32分頻。我們利用以上規(guī)律即可得到各種我們所需要頻率的信號或信號序列。SIGNALCLK:STD_LOGIC;--電路工作時鐘脈沖 SIGNALC_KEYBOARD:STD_LOGIC_VECTOR(1DOWNTO0); --鍵掃信號“00-01-10-11”寄存器SIGNALC_DEBOUNCE:STD_LOGIC;--去抖時鐘信號2.鍵盤掃描電路掃描電路的作用是用來提供鍵盤掃描信號的,掃描信號變化的順序依次為1110-1101-1011-0111-1110??依序的周而復(fù)始。掃描時依序分別掃描四列按鍵,當(dāng)掃描信號為1110時掃描KY3這一排按鍵;當(dāng)掃描信號為1101室,掃描KY2這一排按鍵;當(dāng)掃描信號為1011時,掃描KY1這一排按鍵;當(dāng)掃描信號為0111時,掃描KY0這一排按鍵。每掃描一排按鍵就檢查一次是否有鍵被按下,如果這排沒有按鍵被按下就忽略,反之,如果出現(xiàn)被按下的鍵則立刻進行按鍵編碼的動作,且將編碼的結(jié)果儲存于寄存器中。--掃描信號發(fā)生器COUNTER:BLOCKIS SIGNALQ:STD_LOGIC_VECTOR(5DOWNTO0); SIGNALSEL:STD_LOGIC_VECTOR (3DOWNTO--1110-1101-1011-0111BEGINPROCESS(CLK_1K)IS0);BEGINIFCLK_1K'EVENTANDCLK_1K='1'THENQ<=Q+1;ENDIF;C_DEBOUNCE<=Q(2);--去抖時鐘信號,大約125Hz C_KEYBOARD<=Q(6DOWNTO5); --產(chǎn)生鍵掃信號***“00-01-10-11”,大約16HzC_DEBOUNCE<=Q(1);--仿真時用 C_KEYBOARD<=Q(5DOWNTO4); --仿真時用CLK<=Q(0);ENDPROCESS;3.彈跳消除電路由于設(shè)計采用的矩陣式鍵盤是機械開關(guān)結(jié)構(gòu),因此在開關(guān)切換的瞬間會在接觸點出現(xiàn)信號來回彈跳的現(xiàn)象,對于電子密碼鎖這種靈敏度較高的電路這種彈跳將很可能會造成誤動作輸入,從而影響到密碼鎖操作的正確性。彈跳現(xiàn)象產(chǎn)生的原因是,雖然每次只是按下按鍵一次然后放掉,然而實際產(chǎn)生的按鍵信號卻不知跳動一次,經(jīng)過取樣信號的檢查后,將會造成誤判斷,以為鍵盤按了兩次。圖3.2彈跳現(xiàn)象產(chǎn)生錯誤的抽樣結(jié)果如果調(diào)整抽樣頻率,彈跳現(xiàn)象就可以獲得改善。圖3.3調(diào)整抽樣頻率后得到的抽樣結(jié)果因此必須加上彈跳消除電路,避免誤操作信號的發(fā)生。特別要注意的是,彈跳消除電路所使用的脈沖信號的頻率必須比其他電路使用的脈沖信號的頻率更高;通常將掃描電路的工作頻率定在24Hz左右,而將彈跳消除電路的工作頻率定在128Hz左右,其工作頻率通常是前者的4倍或者更高。DEBOUNUING:BLOCKISBEGINU1:DEBOUNCINGPORTMAP(D_IN=>KEY_IN(0),D_OUT=>C(0),CLK=>C_DEBOUNCE);U2:DEBOUNCINGPORTMAP(D_IN=>KEY_IN(1),D_OUT=>C(1),CLK=>C_DEBOUNCE);U3:DEBOUNCINGPORTMAP(D_IN=>KEY_IN(2),D_OUT=>C(2),CLK=>C_DEBOUNCE);3.3.2控制電路設(shè)計與實現(xiàn)密碼鎖的控制電路是整個電路的控制中心,主要完成對數(shù)字按鍵輸入和功能按鍵輸入的相應(yīng)控制。1.?dāng)?shù)字按鍵輸入的響應(yīng)控制如果按下數(shù)字鍵,第一個數(shù)字會從顯示其的最右端開始顯示,此后每新按一個數(shù)字時,顯示器上的數(shù)字必須左移一格,以便將新的數(shù)字顯示出來。假如要更改輸入的數(shù)字,可以按倒退按鍵來清除前一個輸入的數(shù)字,或者按清除鍵清除所有出入的數(shù)字,再重新輸入四位數(shù)。當(dāng)輸入的數(shù)字鍵超過預(yù)設(shè)位數(shù)時,電路不予理會,而且不再顯示以后的數(shù)字。2。功能按鍵輸入的響應(yīng)控制(1)清除鍵:清除所有的輸入數(shù)字,即作歸零動作。(2)激活電鎖鍵:按下此鍵時可將密碼鎖的門上鎖。(3)解除電鎖鍵:按下此鍵會檢查輸入的密碼是否正確,若密碼正確無誤則開門。使用電子密碼鎖的時候,只會用到三種工作模式,其中輸入文字模式用的是數(shù)字按鍵,只有上鎖和開鎖兩個模式必須占用功能按鍵。但是在實際操作中,難免會有按錯鍵的情況發(fā)生,使得“清除輸入”功能是用的機率很高,所以在設(shè)計中共設(shè)置了兩個功能按鍵,其中“接觸電鎖”和“清除電鎖”共用一個功能按鍵,另一個功能按鍵是“激活電鎖”。--CTRL.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL; USEIEEE.STD_LOGIC_ARITH.ALL; USEIEEE.STD_LOGIC_UNSIGNED.ALL; ENTITYCTRLIS PORT(DATA_N:INSTD_LOGIC_VECTOR(3DOWNTO0); DATA_F:INSTD_LOGIC_VECTOR(3DOWNTO0); FLAG_N:INSTD_LOGIC;FLAG_F:INSTD_LOGIC;CLK:INSTD_LOGIC; ENLOCK:OUTSTD_LOGIC; --1:LOCK,0:UNLOCK DATA_BCD:OUTSTD_LOGIC_VECTOR(15DOWNTO0)); ENDENTITYCTRL;ARCHITECTUREARTOFCTRLIS SIGNALACC,REG:STD_LOGIC_VECTOR(15DOWNTO0); --ACC用于暫存鍵盤輸入的信息,REG用于存儲輸入的密碼 SIGNALNC:STD_LOGIC_VECTOR(2DOWNTO0); SIGNALRR2,CLR,BB,QA,QB:STD_LOGIC;SIGNALR1,R0:STD_LOGIC;BEGIN--寄存器清零信號的產(chǎn)生進程PROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENR1<=R0;R0<=FLAG_F;ENDIF;RR2<=R1ANDNOTR0;CLR<=RR2;ENDPROCESS;--按鍵輸入數(shù)據(jù)的存儲、清零進程KEYIN_PROCESS:BLOCKISSIGNALRST,D0,D1:STD_LOGIC;BEGINRST<=RR2;PROCESS(FLAG_N,RST)ISBEGINIFRST='1'THENACC<="0000000000000000";--CLEARINPUTNC<="000";ELSEIFFLAG_N'EVENTANDFLAG_N='1'THENIFNC<4THEN ACC<=ACC(11DOWNTO0)&DATA_N; NC<=NC+1;ENDIF;ENDIF;ENDIF;ENDPROCESS; ENDBLOCKKEYIN_PROCESS; --上鎖/開鎖控制進程LOCK_PROCESS:BLOCKISBEGINPROCESS(CLK,DATA_F)ISBEGINIF(CLK'EVENTANDCLK='1')THENIFNC=4THENIFDATA_F(2)='1'THEN--上鎖控制信號有效REG<=ACC;--密碼存儲QA<='1';QB<='0';ELSIFDATA_F(0)='1'THEN--開鎖控制信號有效IFREG=ACCTHEN--密碼核對QA<='0';QB<='1';ENDIF;ELSIFACC="1000100010001000"THEN--設(shè)置“8888”為萬用密碼QA<='0';QB<='1';ENDIF;ENDIF;ENDIF;ENDPROCESS; ENDBLOCKLOCK_PROCESS; --輸出上鎖/開鎖控制信號 ENLOCK<=QAANDNOTQB; --輸出顯示信息DATA_BCD<=ACC; ENDARCHITECTUREART; 3.3.3顯示模塊設(shè)計與實現(xiàn)顯示模塊實際上是一個譯碼器,作用是用來顯示輸入的密碼,其主要原理是四位二進制BCD編碼轉(zhuǎn)換成七段二進制數(shù)字,以阿拉伯?dāng)?shù)字的形式輸出在數(shù)碼管上,使觀眾能夠更直觀的看到結(jié)果。KEY_DECODER:BLOCK SIGNALZ:STD_LOGIC_VECTOR(4DOWNTO0);--按鍵位置BEGINPROCESS(CLK)BEGINZ<=C_KEYBOARD&C;IFCLK'EVENTANDCLK='1'THENCASEZISWHEN"11101"=>N<="0000";--0WHEN"00011"=>N<="0001";--1WHEN"00101"=>N<="0010";--2WHEN"00110"=>N<="0011";--3WHEN"01011"=>N<="0100";--4WHEN"01101"=>N<="0101";--5 WHEN"01110"=>N<="0110";--6WHEN"10011"=>N<="0111";--7WHEN"10101"=>N<="1000";--8WHEN"10110"=>N<="1001";--9WHENOTHERS =>N<="1111";ENDCASE;ENDIF;3.3.4電子密碼鎖的系統(tǒng)實現(xiàn)單獨模塊只有彼此聯(lián)系起來構(gòu)成一個完整的系統(tǒng),才能實現(xiàn)其功能,這個過程有兩種實現(xiàn)方法:①元件例化。也是用編程的方式將它們各個程序、信號、輸入輸出之間的關(guān)系用VHDL語言來敘述清楚,還關(guān)系到程序的調(diào)用問題,需要設(shè)計者思路清晰,設(shè)計合理;②元器件圖示連線。這種連線方法思路清晰可見,而且用的時候很簡單方便,出現(xiàn)錯誤也很好檢查。在設(shè)計中選擇的是這種方法。通過總的頂層元件圖可以很清晰的看到模塊連接的原理。4電子密碼鎖的時序仿真4.1電子密碼鎖的設(shè)計流程使用QuartusⅡ進行電子密碼鎖設(shè)計的流程為編寫VHDL程序(使用TextEditor)(見附錄);編譯VHDL程序(使用Compiler);仿真驗證VHDL程序(使用WaveformEditor,Simulator);進行芯片的時序分析(使用TimingAnalyzer);安排芯片管腳位置(使用FloorplanEditor);下載程序至芯片(使用Programmer)。4.2系統(tǒng)主要模塊的仿真本節(jié)主要是闡述設(shè)計在QuartusII軟件中實現(xiàn)編譯與仿真。在QuartusII在輸入源程序后,我們需要建立一個工程,在工程中我們要把設(shè)計文件加入工程中;然后選擇仿真器和綜合器類型。值得注意的是,選擇默認的“NONE”,表示選擇QuartusII軟件中自帶的仿真器和綜合器,結(jié)合自己的設(shè)計,最后選擇目標芯片。工程建立以后,可以進行源程序的編譯。選擇“Processing”StartCompilation,啟動全程編譯。編譯后產(chǎn)生的報告如下所示:圖4.1編譯后產(chǎn)生的統(tǒng)計報告編譯成功后,就可以進行波形的仿真。1.防抖模塊的仿真圖4.2為鍵盤輸入防抖電路的仿真結(jié)果圖,圖中的輸出信號N,ACC,REG是為了便于仿真時觀察中間結(jié)果而增加的觀測點的輸出,調(diào)試好后程序中的相應(yīng)語句應(yīng)注釋掉。由圖上可以看出,原來的彈跳現(xiàn)象經(jīng)過鍵盤輸入防抖電路處理后已經(jīng)清除了,必須連續(xù)兩次取樣檢測到信號才會有反應(yīng),否則電路將其視為噪聲,不予理會。圖圖4.2鍵盤輸入防抖電路的仿真結(jié)果圖由圖中可以看出,鍵盤掃描出的信號彈跳現(xiàn)象得到改善。2.密碼鎖輸入電路的仿真圖4.3為密碼鎖輸入電路的仿真結(jié)果圖,圖中的輸出信號CLK_SCAN,C_DEBOUNCE 是為便于仿真時觀察中間結(jié)果而增加的觀測點的輸出,調(diào)試好后程序中的相應(yīng)語句應(yīng)注釋掉。圖4.3密碼鎖輸入電路仿真結(jié)果圖輸入信號KEY_IN[2,0]依序依011-101-110-011-101的順序周期性循環(huán),對鍵盤進行掃描。如有按鍵發(fā)生,鍵盤掃描輸出信號CLK_SCAN做出反應(yīng)。3.密碼鎖控制電路的仿真圖4.4、圖4.5分別是兩個密碼鎖控制電路仿真結(jié)果圖。圖4.4密碼鎖控制電路仿真結(jié)果圖(一)圖4.4的仿真過程為先輸入上鎖密碼“1234”,再按下上鎖鍵激活電鎖接著輸入萬能解鎖密碼“8888”,最后按下解鎖鍵解鎖。圖4.5密碼鎖控制電路仿真結(jié)果圖(二)圖4.5的仿真過程為先輸入上鎖密碼“1234”,再按下上鎖鍵激活電鎖,接著輸入解鎖密碼“1234”;最后按下解鎖鍵解鎖。從仿真圖上可以看出,密碼控制電路的設(shè)計是正確的。通過波形仿真來驗證是否完成了相應(yīng)的模塊功能,如果出現(xiàn)問題要進行相應(yīng)的修改。進行完波形仿真,就可以通過QuartusII中的模塊編輯器來建立相應(yīng)的功能模塊,將前面各個設(shè)計好的功能模塊進行整合,可得到一個完整的電子密碼鎖系統(tǒng)的整體組裝設(shè)計原理圖。如下圖所示:總結(jié)在基于FPGA的系統(tǒng)設(shè)計中,采用了自頂向下的設(shè)計方法,它的好處是可以先調(diào)試各個單元電路,在每個單元電路設(shè)計完成后,采用專門的仿真工具進行功能仿真,確定每個單元電路都沒有問題后再連接頂層圖形文件,這樣整個系統(tǒng)的調(diào)試就輕松得多,可節(jié)省不少設(shè)計時間。此設(shè)計實現(xiàn)了基于FPGA的用VHDL語言編程的數(shù)字密碼鎖功能電路,它的優(yōu)點是采用可編程邏輯器件FPGA,使得系統(tǒng)有相當(dāng)大的靈活性,隨時可以進行硬件升級、擴展,而且系統(tǒng)設(shè)計完善以后還可以將主控的FPGA固化成一片ASIC,那么這塊ASIC就可以作為專用的數(shù)字密碼鎖芯片。而且由于硬件可升級,還可隨時增加密碼位數(shù)或增加新的功能,使得密碼鎖有更高的安全性、可靠性和方便性,可以安裝在不同的門上,具有一定的推廣應(yīng)用價值。同時克服了基于單片機技術(shù)程序容易跑飛,系統(tǒng)的可靠性能較差的問題。由于考慮到體積、成本等因素,本裝置在性能上功能上海存在不足,還有待于進一步提高:增加語音播報功能,可以提高裝置的靈敏度,同時方便用戶的操作??稍谘b置中增加一個報警和語音芯片,增加蜂鳴報警指示和語音說明指示,可以根據(jù)輸入的密碼數(shù)字播報,同時可以擴展鎖的安全防盜報警功能。結(jié)束語畢業(yè)設(shè)計可以說是大學(xué)四年的一次總結(jié),是所學(xué)知識的一次重要的綜合性應(yīng)用。在這次設(shè)計中,我把重點放在了新知識的學(xué)習(xí)以及設(shè)計流程中的程序仿真和模塊分析上。在設(shè)計過程中,需要解決的問題都是些很具體的問題,這和以往有很大的區(qū)別。以往要解決問題只要求我們在局部解答,各種條件都是已知的,解決方案可以在已學(xué)的課本知識中得到。而設(shè)計中的具體的問題要求從全局解決,要求系統(tǒng)的考慮各種因素來解決,也有著各種未知的難點要求解決。在這次畢業(yè)設(shè)計的過程中,我得到了我的導(dǎo)師董素鴿老師的悉心指導(dǎo)和無私幫助,她嚴謹?shù)闹螌W(xué)態(tài)度和謙和的為人給我留下了深刻的印象。在論文完成之際,首先對我的導(dǎo)師董素鴿老師以最誠摯的謝意,在我寫論文期間對我的引導(dǎo)和啟發(fā)。在整個論文的選題、理論研究、總體設(shè)計、詳細設(shè)計的過程中,自始自終得到了董素鴿老師的悉心指導(dǎo)和深切關(guān)懷。感謝董素鴿老師對我的論文不厭其煩的精心修改,董老師多次耐心地審閱了論文全稿,提出了許多寶貴的意見。她嚴謹?shù)闹螌W(xué)態(tài)度給我留下了深刻的印象,使我終身受益。這次畢業(yè)設(shè)計我學(xué)到了很多東西,鍛煉了自己獨立學(xué)習(xí)的能力。在與導(dǎo)師董素鴿老師和同學(xué)的討論過程中,也看到了自己的不足,更激勵我要努力。感謝我的老師和同學(xué)給與我的幫助。參考文獻李連華.基于FPGA的電子密碼鎖設(shè)計.中國科技信息,2006許琦.基于FPGA的電子密碼鎖的設(shè)計.科技信息,2006王衛(wèi)兵,劉克剛,朱秋萍.用FPGA的電子密碼鎖.電子技術(shù),2005[4]趙益丹,徐曉林,周振峰.電子密碼鎖的系統(tǒng)原理、設(shè)計程序及流程圖.嘉興學(xué)院學(xué)報,2003陸重陽,盧東華.FPGA技術(shù)及其發(fā)展趨勢.微電子技術(shù),2003王曉勇.FPGA的基本原理及運用.艦船電子工程,2005程耀林.FPGA的系統(tǒng)設(shè)計方法解析.現(xiàn)代電子技術(shù),2005K.Benkrid,A.BenkridandS.Belkacemi.EfficientFPGAhardwaredevelopment:Amulti-languageapproach.JournalofSystemsArchitecture,2007Altera,NovasTeamforFPGAVisibilityEnhancement.ElectronicNews(NorthAmerica).2006張忠.自頂向下的FPGA設(shè)計.電子產(chǎn)品世界,1998路而紅.專用集成電路設(shè)計與電子設(shè)計自動化.北京:清華大學(xué)出版社,2004羅杰,康華光.兩種硬件描述語言VHDL/Verilog的發(fā)展及其應(yīng)用.電氣電子教學(xué)學(xué)報,2002曹建國,王威,王丹.一種基于VHDL的電子密碼鎖的設(shè)計與實現(xiàn).沈陽大學(xué)學(xué)報,2006譚會生,瞿遂春.EDA技術(shù)綜合應(yīng)用實例與分析.西安:西安電子科技大學(xué)出版社,2004梁麗.電子密碼鎖的計算機仿真設(shè)計.計算機仿真,2005附錄1.鍵盤輸入去抖電路的VHDL源程序--DCFQ.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDCFQISPORT(CLK,CLRN,PRN,D:INSTD_LOGIC;Q:OUTSTD_LOGIC);ENDENTITYDCFQ;ARCHITECTUREARTOFDCFQISBEGINPROCESS(CLK,CLRN,PRN)BEGINIFCLRN='0'ANDPRN='1'THENQ<='0';ELSIFCLRN='1'ANDPRN='0'THENQ<='1';ELSIFCLK'EVENTANDCLK='1'THENQ<=D;ENDIF;ENDPROCESS;ENDARCHITECTUREART; --DEBOUNCING.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;LIBRARYALTERA;USEALTERA.MAXPLUS2.ALL; ENTITYDEBOUNCINGISPORT(D_IN,CLK:INSTD_LOGIC;DD1,DD0,QQ1,QQ0:OUTSTD_LOGIC;D_OUT,D_OUT1:OUTSTD_LOGIC);ENDENTITYDEBOUNCING; ARCHITECTUREARTOFDEBOUNCINGISCOMPONENTDCFQISPORT(CLK,CLRN,PRN,D:INSTD_LOGIC;Q:OUTSTD_LOGIC);ENDCOMPONENTDCFQ; SIGNALVCC,INV_D:STD_LOGIC;SIGNALQ0,Q1:STD_LOGIC;SIGNALD1,D0:STD_LOGIC;BEGINVCC<='1';INV_D<=NOTD_IN;U1:DCFQPORTMAP(CLK=>CLK,CLRN=>INV_D,PRN=>VCC,D=>VCC,Q=>Q0);U2:DCFQPORTMAP(CLK=>CLK,CLRN=>Q0,PRN=>VCC,D=>VCC,Q=>Q1);PROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THEND0<=NOTQ1;D1<=D0;ENDIF;ENDPROCESS;DD0<=D0;DD1<=D1;QQ1<=Q1;QQ0<=Q0;D_OUT<=NOT(D1ANDNOTD0);D_OUT1<=NOTQ1;ENDARCHITECTUREART;2.密碼鎖輸入電路源程序--KEYBOARD.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL; ENTITYKEYBOARDISPORT(CLK_1K:INSTD_LOGIC;KEY_IN:INSTD_LOGIC_VECTOR(2DOWNTO0); CLK_SCAN:OUTSTD_LOGIC_VECTOR(3DOWNTO0); DATA_N:OUTSTD_LOGIC_VECTOR(3DOWNTO0); DATA_F:OUTSTD_LOGIC_VECTOR(3DOWNTO0); FLAG_N:OUTSTD_LOGIC;FLAG_F:OUTSTD_LOGIC;CLK_CTR:OUTSTD_LOGIC; CLK_DEBOUNCE:OUTSTD_LOGIC ;ENDENTITYKEYBOARD; ARCHITECTUREARTOFKEYBOARDISCOMPONENTDEBOUNCINGISPORT(D_IN:INSTD_LOGIC;CLK:INSTD_LOGIC;D_OUT:OUTSTD_LOGIC);ENDCOMPONENTDEBOUNCING; SIGNALCLK:STD_LOGIC;SIGNALC_KEYBOARD:STD_LOGIC_VECTOR(1DOWNTO0); SIGNALC_DEBOUNCE:STD_LOGIC; SIGNALC:STD_LOGIC_VECTOR(2DOWNTO0); SIGNALN,F:STD_LOGIC_VECTOR(3DOWNTO0); SIGNALFN,FF:STD_LOGIC;SIGNALSEL:STD_LOGIC_VECTOR(3DOWNTO0); BEGINDATA_N<=N;DATA_F<=F;FLAG_N<=FN;FLAG_F<=FF;CLK_CTR<=CLK;COUNTER:BLOCKISSIGNALQ:STD_LOGIC_VECTOR(5DOWNTO0); SIGNALSEL:STD_LOGIC_VECTOR(3DOWNTO0); BEGINPROCESS(CLK_1K)ISBEGINIFCLK_1K'EVENTANDCLK_1K='1'THENQ<=Q+1;ENDIF;C_DEBOUNCE<=Q(2);C_KEYBOARD<=Q(6DOWNTO5); C_DEBOUNCE<=Q(1);C_KEYBOARD<=Q(5DOWNTO4);CLK<=Q(0);ENDPROCESS;CLK_DEBOUNCE<=C_DEBOUNCE; SEL<="1110"WHENC_KEYBOARD=0ELSE"1101"WHENC_KEYBOARD=1ELSE"1011"WHENC_KEYBOARD=2ELSE"0111"WHENC_KEYBOARD=3ELSE"1111";CLK_SCAN<=SEL;ENDBLOCKCOUNTER; DEBOUNUING:BLOCKISBEGINU1:DEBOUNCINGPORTMAP(D_IN=>KEY_IN(0),D_OUT=>C(0),CLK=>C_DEBOUNCE);U2:DEBOUNCINGPORTMAP(D_IN=>KEY_IN(1),D_OUT=>C(1),CLK=>C_DEBOUNCE);U3:DEBOUNCINGPORTMAP(D_IN=>KEY_IN(2),D_OUT=>C(2),CLK=>C_DEBOUNCE);ENDBLOCKDEBOUNUING; KEY_DECODER:BLOCK SIGNALZ:STD_LOGIC_VECTOR(4DOWNTO0); BEGINPROCESS(CLK)BEGINZ<=C_KEYBOARD&C;IFCLK'EVENTANDCLK='1'THENCASEZISWHEN"11101"=>N<="0000";--0WHEN"00011"=>N<="0001";--1WHEN"00101"=>N<="0010";--2WHEN"00110"=>N<="0011";--3WHEN"01011"=>N<="0100";--4WHEN"01101"=>N<="0101";--5WHEN"01110"=>N<="0110";--6WHEN"10011"=>N<="0111";--7WHEN"10101"=>N<="1000";--8WHEN"10110"=>N<="1001";--9WHENOTHERS =>N<="1111";ENDCASE;ENDIF;IFCLK'EVENTANDCLK='1'THENCASEZISWHEN"11011"=>F<="0100";--*_LOCKWHEN"11110"=>F<="0001";--#

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論