基于VHDL的電子密碼鎖的設(shè)計(1)_第1頁
基于VHDL的電子密碼鎖的設(shè)計(1)_第2頁
基于VHDL的電子密碼鎖的設(shè)計(1)_第3頁
基于VHDL的電子密碼鎖的設(shè)計(1)_第4頁
基于VHDL的電子密碼鎖的設(shè)計(1)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、EDA仿真與實踐實習(xí)學(xué)院:信息科學(xué)與工程學(xué)院課題名稱:硬件描述語言設(shè)計苴千 基JVHDL勺電子密碼鎖的設(shè)計班級:學(xué)生:學(xué)號:指導(dǎo)教師:1 引言在日常的生活和工作中 , 住宅與部門的安全防范、單位的文件檔 案、財務(wù)報表以及一些個人資料的保存多以加鎖的辦法來解決。 若使 用傳統(tǒng)的機(jī)械式鑰匙開鎖,人們常需攜帶多把鑰匙 , 使用極不方便 , 且鑰匙丟失后安全性即大打折扣。 隨著科學(xué)技術(shù)的不斷發(fā)展, 人們對 日常生活中的安全保險器件的要求越來越高。 為滿足人們對鎖的使用 要求,增加其安全性,用密碼代替鑰匙的密碼鎖應(yīng)運(yùn)而生?;?EDA 技術(shù)設(shè)計的電子密碼鎖。以其價格便宜、使用方便、 安全性高、成本低、功

2、耗低、易操作等優(yōu)點,受到了人們的普遍關(guān)注。 而以可編程邏輯器件(FBDA為設(shè)計載體,以硬件描述語言(VHDL為主 要表達(dá)方式,以QuartuS H 5開發(fā)軟件等為設(shè)計工具設(shè)計的電子密碼 鎖,由于其能夠?qū)崿F(xiàn)密碼輸入、密碼校驗、密碼設(shè)置和更改等功能, 因此,能夠滿足社會對安全防盜的需求。本 設(shè) 計 的 各 個模塊 由相 應(yīng)的 VHDL 程 序具 體 實現(xiàn) , 并 在 QuartuS H 5.環(huán)1 境下進(jìn)行了整體電路的模擬仿真,最終實現(xiàn)“密碼鎖 控制器設(shè)計”的要求。2 設(shè)計內(nèi)容和要求2.1 設(shè)計內(nèi)容:題目:電子密碼鎖內(nèi)容:設(shè)計一個 4 位串行數(shù)字鎖。(1) 開鎖代碼為 4 位二進(jìn)制,當(dāng)輸入代碼的位數(shù)

3、與鎖內(nèi)給定的密碼一致, 且按規(guī)定程序開鎖時,方可開鎖,并點亮一個指示燈。否則進(jìn)入“錯 誤”狀態(tài),并發(fā)出報警信號。(2) 鎖內(nèi)的密碼可調(diào),且預(yù)置方便,保密性好。(3) 串行數(shù)字鎖的報警由點亮一個燈, 直到按下復(fù)位開關(guān), 報警才停下 此時,數(shù)字鎖又自動等待下一個開鎖狀態(tài)。要求:(1) 通過查閱相關(guān)技術(shù)資料,詳細(xì)描述電子密碼鎖的基本原理。(2) 編寫電子密碼鎖的Verilog HDL或 VHDLg序,并仿真編譯下載驗證。(3) 給出完整的系統(tǒng)頂層模塊圖與波形仿真圖。3設(shè)計分案密碼鎖控制器是硬件與軟件的結(jié)合。根據(jù)設(shè)計要求,決定以FBDA 芯片和VHDL語言設(shè)計此電子密碼鎖。用一片 FBDA芯片實現(xiàn),從

4、而 大大簡化了系統(tǒng)結(jié)構(gòu),降低了成本,提高了系統(tǒng)的保密性和可靠性。 這種設(shè)計不僅簡化了系統(tǒng)結(jié)構(gòu),降低了成本,更提高了系統(tǒng)的可靠性 和保密性。另外,采用可編程邏輯器件開發(fā)的數(shù)字系統(tǒng),方便地升級 和改進(jìn)。3.1系統(tǒng)總框圖本系統(tǒng)的硬件部分主要由密碼鎖控制電路、 密碼鎖顯示電路、LEDa示電路、 報警電路、密碼更改與設(shè)置電路組成。整體系統(tǒng)框圖如下圖 2.1所示。密碼鎖總框圖3.2密碼鎖的內(nèi)部結(jié)構(gòu)及主要功能3.2.1密碼鎖的主要功能密碼鎖控制器的主要功能有:(1) 密碼輸入:有二個按鍵來控制(分別代表O和1),每按下一個鍵,要求 在數(shù)碼管上顯示,并依次左移。(2) 密碼校驗:如果有按鍵按下,直到松開該按鍵

5、;紅綠燈指示門的狀態(tài),也就是密碼校驗結(jié)果,如果密碼校驗正確,綠亮起,否則如果密碼校驗錯誤紅燈 亮,并鳳鳴器響,表明密碼錯誤。(3) 錯誤報警:密碼輸入錯誤開始報警。(4)密碼修改:輸入密碼正確后4秒內(nèi)按按鍵輸入要設(shè)置和更改的密碼,按 按鍵確認(rèn)密碼設(shè)置與更改,則密碼設(shè)置成功4系統(tǒng)硬件電路4.1密碼鎖的顯示模塊段數(shù)碼管是電子開發(fā)過程中常用的輸出 顯示設(shè)備。在本設(shè)計中使用的是 8個四位一 體、共陰極型七段數(shù)碼管。其單個靜態(tài)數(shù)碼 管如下圖所示。由于七段數(shù)碼管公共端連接到 GND (共 陰極型),當(dāng)數(shù)碼管的中的一個段被輸入高 電平,則相應(yīng)的這一段被點亮。反之則不亮。共陽極性的數(shù)碼管與之相反。四位一體的七

6、段數(shù)碼管在單個靜態(tài)數(shù)碼管的基礎(chǔ)上加入了用于選擇哪一位數(shù)碼管的位選信號端口。八個數(shù)碼 管的a、b、c、d、e、f、g、h、dp都連在了一起,8個數(shù)碼管分別由 各自的位選信號來控制,被選通的數(shù)碼管顯示數(shù)據(jù),其余關(guān)閉。4.2密碼鎖控制模塊該模塊的作用是將輸入的密碼(暫時寄存于 ACC中)跟已經(jīng)存儲的密碼(REG中的密碼信息)進(jìn)行對比,如果一樣,則密碼鎖開鎖。 而在通過密碼驗證后可以按按鍵設(shè)定密碼。 在這里值得注意的是有一 個密碼“ 0000”為開始密碼,如果改名密碼了但是又忘記了密碼,重 新下載之后的初始密碼只要輸入的密碼為“0000則都可通過密碼鎖。模塊IoCk是整個設(shè)計的核心,它實現(xiàn)密碼鎖的邏輯

7、功能。在任何時候 按動密碼初始化按鍵內(nèi)密碼設(shè)置為程序初始化密碼值(在本模塊程序 中此值為“0000”代碼為4位二進(jìn)制數(shù),當(dāng)輸入代碼的位數(shù)和位值 與鎖內(nèi)給定的密碼一致,且按規(guī)定程序開鎖時,方可開鎖,并點亮開 鎖指示燈(緑燈)亮。否則,系統(tǒng)進(jìn)入 錯誤”狀態(tài),并發(fā)出報警信號。 串行數(shù)字鎖的報警方式是點亮指示燈(紅燈),并使喇叭鳴叫,直到按下復(fù)位開關(guān),報警才停止。此時,數(shù)字鎖又自動進(jìn)入等待下一次開 鎖的狀態(tài)。該4位串行電子密碼鎖設(shè)置 4位二進(jìn)制密碼,要求鎖內(nèi) 給定的密碼是可調(diào)的,且設(shè)置方便,保密性好。其具體操作分為輸入 密碼和修改密碼兩部分4.2.1輸入密碼密碼輸入值的比較主要有兩部分 ,密碼位數(shù)和內(nèi)

8、容,任何一個條件不滿足,都不能打開鎖。若鎖內(nèi)密碼為“ 0000”,key和key1置低電平,分別表示輸入“ 1 ”和“ 0”輸入密碼前先進(jìn)行復(fù)位操作,再按著從密碼最低位到最高位的順序 依次正確輸入0000,會在數(shù)碼管逐一顯示。經(jīng)檢驗,輸入的密碼等于鎖內(nèi)預(yù)先設(shè) 置的密碼密碼鎖開啟信號,鎖開啟。同時,密碼修改控制信號rw置低電平。若在輸 入密碼的過程中,4位二進(jìn)制密碼出現(xiàn)輸入錯誤,那么鎖不能開啟,同時,指示 燈紅燈 亮,發(fā)出報警信號。直到按下復(fù)位開關(guān),報警才停止。此時,數(shù)字鎖又 自動進(jìn)入等待下一次開鎖的狀態(tài)。4.2.2修改密碼為防止任意進(jìn)行密碼修改,必須在正確輸入密碼后,才能重新設(shè)置密碼。輸 入正

9、確密碼后,鎖打開,同時,密碼修改控制信號按鍵rw置低電平,就可直接 進(jìn)行修改密碼的操作。修改密碼實質(zhì)就是用輸入的新密碼去取代原來的舊密碼, 按確定按鍵ok,存儲新密碼時.5 VHDL程序設(shè)計密碼鎖控制器的各個功能模塊都是通過 VHDL語言來完成的。本 設(shè)計由密碼鎖顯示顯示模塊、分頻模塊、密碼輸入及校驗?zāi)K、報警 模塊、密碼更改與設(shè)置模塊幾部分組成,各模塊分工合作,最后達(dá)到 密碼鎖控制器設(shè)計的要求。表4-1程序的管腳分配表端口名對應(yīng)FBGA管腳說明ClkP2時鐘為50HzKeylAC23按下按鍵代表為“ 0 ”Key2AB21按下按鍵代表為“ 1 ”StartY14開始輸入密碼OkAA13確定輸

10、入密碼resetAC15復(fù)位rwV23該密碼clrU23清零redM19密碼錯誤紅燈亮gree nT22密碼正確緑燈亮beepA14蜂鳴器Seg7.0D16,D17,G13,D15,C15,C16,G15,J13代表數(shù)碼管的片內(nèi)顯示Dig7.0E15,K18,E22,C17,H15,K16,H12,D18代表數(shù)碼管的片外顯示VHDl程序總代碼Iibrary ieee;USe ieee.std_logic_1164.all;USe ieee.stdLlOgic_arith.all;USe ieee.std_logic_ Un Sig ned.all;en tity lock isport(key

11、1,key2:i n Stdo gic;clk,start,ok,reset,rw,clr: in stdo gic; red,gree n,beep:OUt std_logic:='1' dig:out Stdogic_vector(7 downto O); seg:out stdo gic_vector(7 dow nto O) );end lock;architecture rt1 of lock isSig nal keyi n,password:Stdo gic_vector(3 dow nto 0):="0000"Sig nal ope n1:s

12、td_logic:='0'Sig nal beep1:std_logic:='1'Sig nal a,shuru:std_logic;Sig nal count: stdo gic_vector(2 dow nto 0):="000"Signal temp: std_logic_vector(1 downto 0):="00"beg inprocess(clk)variable m:integer range 0 to 10;beginif clk'event and clk='1'thenif m

13、=9 thenm:=0;a<='1'elsem:=m+1;a<='0'end if;end if;end process; process(clk,start,ok,clr,rw,reset)beginif clk'event and clk='1'then if reset='0' thenred<='1'green<='1'beep1<='1'open1<='0'keyin<="0000"shu

14、ru<='0'count<="000Jend if; if start='0' then shuru<='1'end if;if rw='0' and open1='1'then shuru<='1'count<="000"end if;if clr='0' then keyin<="0000"count<="000"shuru<='1'elsif a

15、='1' and shuru='1' then if key1='0' then keyin<=keyin(2 downto 0)&'0'elsif key2='0' then keyin<=keyin(2 downto 0)&'1'end if;if count="011" thenshuru<='0' count<=count+1;else count<=count+1;end if;end if;if ok=&#

16、39;0'and open1='0' thenif (keyin=password)then red<='1'green<='0'open1<='1'else red<='0'green<='1'beep1<='0'open1<='0' end if; end if;if ok='0'and open1='1'thenpassword<=keyin;end if;end if;en

17、d process;process(clk,start,ok,clr,rw,reset)variable g:integer range 0 to 49999999;beginif clk'event and clk='1'thenif g=49999999 theng:=0;elseg:=g+1;end if;if g<=24999999 and beep1='0' thenbeep<='0'elsebeep<='1'end if;end process;process(clk)variable n:i

18、nteger range 0 to 50000;beginif clk'event and clk='1'thenif n=49999 thenn:=0;if temp="11"thentemp<="00"elsetemp<=temp+1;end if;elsen:=n+1;end if;if count="001" thencase temp is when "00" => dig<="01111111" ;if keyin(0)='0&

19、#39;then seg<="11000000" else seg<="11111001"end if; when others =>seg<="11111111" ;end case ;elsif count="010" thencase temp is when "00" => dig<="01111111" ;if keyin(1)='0'then seg<="11000000" else s

20、eg<="11111001"end if;when "01" => dig<="10111111" ;if keyin(0)='0'then seg<="11000000" else seg<="11111001"end if; when others =>seg<="11111111" ;end case ;elsif count="011" then case temp is when &quo

21、t;00" => dig<="01111111" ;if keyin(2)='0'then seg<="11000000" else seg<="11111001"end if;when "01" => dig<="10111111" ;if keyin(1)='0'then seg<="11000000" else seg<="11111001"end if; wh

22、en "10" => dig<="11011111" ;if keyin(0)='0'then seg<="11000000" else seg<="11111001"end if; when others =>seg<="11111111" ;end case ;elsif count="100" then case temp is when "00" => dig<="01111

23、111" ;if keyin(3)='0'then seg<="11000000"else seg<="11111001"end if;when "01" => dig<="10111111" ;if keyin(2)='0'then seg<="11000000" else seg<="11111001"end if; when "10" => dig<="

24、;11011111" ;if keyin(1)='0'then seg<="11000000" else seg<="11111001"end if; when "11" => dig<="11101111" ;if keyin(0)='0'then seg<="11000000" else seg<="11111001"end if; when others =>null;end case

25、;else dig<="11111111" ;seg<="11111111"end if;end PrOCeSS ;end rt1;6系統(tǒng)仿真當(dāng)各個模塊分別編譯成功后,則創(chuàng)建一個個元件符號。再用圖形 編輯器將各元件模塊組裝起來,這就是本設(shè)計中最頂層的圖形設(shè)計 文件。頂層圖形設(shè)計文件lock. gdf如圖所示,這個結(jié)構(gòu)框圖說明了整 個系統(tǒng)的外部輸入和輸出情況。為了獲得與目標(biāo)器件對應(yīng)的、精確的時序仿真文件譯了 。幸 kdi!知 Gm4恥時 F*< 口H-叫-M-l0FsJ編譯成功后進(jìn)行仿真。首先建立波形文件。波形文件lock. SCf建 好并存盤后,選擇菜單 "neW “VeCtOr WaVefOrm啟動仿真操 作,結(jié)束后觀察仿真波形。本設(shè)計中,仿真波形如圖所示。當(dāng)給初始 密碼輸入信號LC 一個低電平時,就將程序預(yù)先設(shè)定的密碼(“0000” ) 裝入lock中。按下reset后,系統(tǒng)復(fù)位,處于輸入密碼狀態(tài)。輸入 的開鎖密碼串行順序裝入,。密碼輸入完畢后,比較輸入的密碼是否 等于預(yù)先

溫馨提示

  • 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

提交評論