基于FPGA的電子密碼鎖設計_第1頁
基于FPGA的電子密碼鎖設計_第2頁
基于FPGA的電子密碼鎖設計_第3頁
基于FPGA的電子密碼鎖設計_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、一、前言電子密碼鎖的使用體現了人們的消費水平、保安意識和科技水平的提高, 而且避免了攜帶甚至丟失鑰匙的麻煩。目前設計密碼鎖的方法很多,例如傳統的 PCBg設計、用PLC設計或者單片機設計等等。而用 VHDLM以更加快速、靈活 地設計出符合各種要求的密碼鎖,優于其他設計方法。VHDL>一種符合IEEE標準的硬件描述語言,其最大的特點是借鑒高級程序語言的功能特性,對電路的行為與結構進行高度的抽象化、規范化的形式描述,并對設計的不同層次、不同領 域的模擬驗證與綜合優化等處理,使設計過程延到高度自動化。二、方案設計密碼鎖的的構成主要由密碼輸入、密碼設置、比較控制和報警部分組成, 此外密碼鎖必須能

2、夠保存已設置的密碼,因而需要一個寄存器來保存密碼,同時 由于控制電路和報警電路要用到不同的時鐘, 因而需要一個時序產生電路來生成 需要的不同信號,采用分頻方法實現。根據密碼鎖的電路特點,選用的是實驗箱的模式 6電路,根據電路功能, 在這里設計的密碼鎖以4位2進制代碼作為密碼的電子密碼鎖。其原理框圖如下所示:時序產生電除密碼輸入密碼設置三、功能模塊的實現報警電路1k比較控制寄存器(保存 圖、電子瑞輸麻i解圖開鎖信號1、時序電路在密碼鎖的電路中,輸入計時、報警計時需要的1HZ的時鐘脈沖信號,而驅動蜂鳴器工作需要的很高頻率的脈沖信號,因而這里采用輸入一個高頻脈沖(1024HZ信號來驅動蜂鳴器,采用分

3、頻的方法得到1HZ的計時脈沖,程序如下: process(clk_1k)variable cnt1:integer:=0;beginif rising_edge(clk_1k) thenif cnt1=512 thenclk_1<=not clk_1;cnt1:=0;else cnt1:=cnt1+1;end if;end if;end process;程序說明:clk_1k為輸入的1024Hz高頻月沖,cnt為分頻得到的1HZ計時脈沖。 2、密碼設置為了安全性,密碼鎖必須能夠重復的設定密碼,在設定密碼鎖后,應該設置一個寄存器來存儲設定的密碼,程序如下: process(rst,pass

4、word,enter_p) is beginif rst='0' thenif enter_p='1' then ram<=password; en1<='1'end if;end if;end process;程序說明:rst低電平時所有的模塊復位,只有密碼設置模塊工作; password為設置密碼時的輸入端,ram就是存儲密碼的寄存器;enter_p為在這 里為密碼設置使能端,高電平有效。密碼設置的仿真波形如下圖,由圖中可以清楚地看到在enter_p高電平時寄存器ram中得到了輸入的密碼1001。圖二、密碼設置仿真波形3、密碼輸入

5、密碼輸入部分要求在密碼開始輸入時進行計時,超時了要求報警,因此在 密碼輸入時設置一個計時使能信號 en2,密碼開始輸入時使能信號en2有效,控 制電路的計時器開始計時;而且在密碼確認鍵按下之前,電路不能對輸入密碼和 已設置密碼進行比較,因此需要設置一個寄存器,來存儲輸入的數據,當確認鍵按下時,就將寄存器里的數據送給控制部分進行比較。程序如下: process(rst,enter_c,en1,code)beginif rst='1' thenif en1='1' thenif enter_c='1' then code_tmp<=code;

6、en2<='1'end if;else code_tmp<="0000"en2<='0'end if;else code_tmp<="0000"en2<='0'end if;end process;程序說明:rst置高,設置密碼模塊不工作,其他部分正常工作,en1為高 時代表密碼設置完畢,密碼鎖開始工作;enter_c是密碼輸入使能信號,高電平 時表示開始密碼輸入,此時code_tmp中開始存儲輸入的數據,計時使能信號en2 也變成高電平。密碼輸入仿真波形如下,由圖中可清楚的看

7、到在enter_c為高時,寄存器code_tmp中存儲了輸入的數據code (系統仿真時有10ns的延時)。圖三、密碼輸入仿真波形4、控制部分此部分是密碼鎖設計的核心模塊,它實現密碼鎖的邏輯功能。開鎖代碼為位二進制數,當輸入代碼的位數和位值與鎖內設置的密碼一致,且在規定時間內開鎖,方可打開,并且點亮開鎖指示燈led_g;否則,系統進入“錯誤”狀態, 并且發出警報。警報的方式為蜂鳴器發出警報,指示燈 led_r閃爍。直到30秒 過后或者按下復位鍵,經行下一次密碼輸入。模塊源程序:process(rst,clk_1,en2)variable lock:std_logic:='0'v

8、ariable cnt3:integer:=0; beginif rst='0' thenlock:='0'cnt3:=0;sp_en<='0'led_g<='0'led_r<='0' elseif rising_edge(clk_1) thenif lock='0' thenif en2='1' thenif cnt3=5 thensp_en<='1';led_g<='0';led_r<='1'cn

9、t3:=0;lock:='1'elseif code_en='1' thenif ram=code_tmp thensp_en<='0';led_g<='1'led_r<='0'lock:='1'elsesp_en<='1'led_g<='0'led_r<='1'end if;end if;cnt3:=cnt3+1;end if;end if;else cnt3:=0;end if;end if;end if;end

10、 process;程序說明:、lock為自鎖信號,lock為1時,系統進入自鎖狀態,不再工作。、Cnt3為密碼輸入計時信號,en2為1 (即開始輸入密碼)時開始計時, 當超過5秒而沒有輸入正確密碼時,系統自鎖并報警。、code_en為密碼確認鍵,此鍵按下時,系統開始將輸入的密碼和設置的密碼進行比較,若二者一致則發出開鎖信號,若不一致則發出報警信號,系統進 入自鎖狀態。5、報警電路報警電路的作用就是在密碼輸入錯誤或者輸入超時的情況下經行報警,蜂鳴器發出聲音,并且警報燈不停閃爍,直到復位鍵按下或者計時30s結束。源程序如下:process(rst,sp_en,clk_1,clk_1k)variab

11、le tmp_en1:std_logic:='0'variable cnt4:integer:=1;beginif rst='1' thenif rising_edge(clk_1) thenif sp_en='1' and cnt4>0 thenif cnt4=31 thencnt4:=0;tmp_en1:='0'else cnt4:=cnt4+1; tmp_en1:='1'end if;end if;end if;else tmp_en1:='0'cnt4:=1;end if;speake

12、r<=tmp_en1 and clk_1k;led_f<=tmp_en1 and clk_1;end process;程序說明:Cnt4是一個30進制計數器,對報警時間進行計時。Sp_en是控制電路發出的報警信號。四、軟件仿真將完整的程序在Quartus軟件下進行編譯,通過之后進行波形仿真,觀察 仿真波形看是否實現了密碼鎖的邏輯功能,下面是在密碼輸入正確、密碼輸入超 時和密碼輸入錯誤時的仿真波形圖。圖四、密碼輸入正確仿真波形如圖所示,首先在rst為0時將密碼設為1001,然后輸入密碼1001,當確 認鍵code_en按下時,系統判斷密碼正確,輸出一個開鎖信號,開鎖指示燈led_g

13、點鳧0圖五、密碼輸入錯誤仿真波形如圖,密碼設置仍然為1001,但輸入一個錯誤的密碼1000,當密碼確認按 下時,系統發出錯誤警報,蜂鳴器 Speaker發出響聲,報警燈led_f閃爍。圖六、出入超時仿真波形如圖,密碼設置不變,依舊是 1001,但是密碼輸入按鍵enter_c按下,輸 入密碼后不按下確認鍵,五秒過后,系統判斷密碼輸入超時,此時輸6超時警報, 蜂鳴器報警,led_g點亮,led_f閃爍。五、心得體會這次的課程設計安排在了假期以后,上學期的 VHDLS言已經有些生疏了, 這給編程帶來了一些難度,但是經過復習還是重新熟悉了編程的方法和技巧。在寫程序的時候有時候不注意仿真, 犯了想當然的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論