黃明霞 許澤恩 李如仁 李文韜 王 魯
(沈陽建筑大學(xué)交通工程學(xué)院 遼寧 沈陽 110168)
隨著社會經(jīng)濟的發(fā)展和居民生活水平不斷提高,人們的安全意識也逐漸提高,對密碼鎖的可靠性、 安全性提出了更高的要求。傳統(tǒng)的機械鎖構(gòu)造簡單,鑰匙重合性高、可復(fù)制性強,存在很大的安全隱患。隨著電子技術(shù)的發(fā)展,信息數(shù)字化已經(jīng)融入到人們的日常生活當(dāng)中,面對機械鎖存在的安全問題,電子密碼鎖應(yīng)運而生。電子密碼鎖與傳統(tǒng)的機械鎖相比,用密碼代替鑰匙,具有保密性好、安全性高、操作簡單等優(yōu)點,因此逐漸受到了人們的青睞。
實際應(yīng)用中大多數(shù)電子密碼鎖系統(tǒng)是采用單片機設(shè)計的,而單片機在運行過程中程序容易跑飛,系統(tǒng)穩(wěn)定性較差[1-3]。利用FPGA技術(shù)并使用Verilog HDL硬件描述語言設(shè)計的電子密碼鎖不存在程序跑飛的情況,而且開發(fā)成本低,系統(tǒng)穩(wěn)定性高,安全可靠[4-6]。
本文設(shè)計的電子密碼鎖系統(tǒng)具有解鎖、修改默認(rèn)密碼、警報提示功能。設(shè)置的密碼為4位的十進制數(shù),當(dāng)用戶輸入密碼后與預(yù)置的默認(rèn)密碼進行對比,若密碼正確,則解鎖燈亮起,解鎖成功;若密碼錯誤,則警報燈亮起,解鎖失敗。修改密碼時按對應(yīng)的按鍵,輸入4位十進制數(shù),即可更改預(yù)置默認(rèn)密碼。
電子密碼鎖通常是由密碼控制器和外圍電路組成,其中密碼控制器的功能是檢測輸入的密碼,并與預(yù)置默認(rèn)密碼對比,根據(jù)對比結(jié)果發(fā)出不同指令。外圍電路則是通過鍵盤輸入密碼、顯示輸入的密碼、對輸入的密碼發(fā)出對應(yīng)的信號。本文中的電子密碼鎖系統(tǒng)包括按鍵輸入、按鍵消抖、分頻模塊、密碼檢測模塊、密碼輸出控制模塊、譯碼顯示模塊。密碼鎖系統(tǒng)框圖和流程分別如圖1和圖2所示。
圖1 密碼鎖系統(tǒng)框圖
圖2 密碼鎖系統(tǒng)流程
1) 按鍵輸入。按鍵采用行列式按鍵,4×4矩陣鍵盤,橫向布局4根及縱向布局4根分別連到開關(guān)兩端,每根I/O接口互不干擾。依次給行線發(fā)送低電平信號,若列線信號全部為高電平,則低電平信號所在行中無按鍵按下;若有列線輸入為低電平,則低電平信號所在行和出現(xiàn)低電平的列的交點處有按鍵按下。
2) 按鍵消抖。由于矩陣鍵盤是機械開關(guān),在按鍵按下和釋放時的一段時間內(nèi)存在抖動。若不消抖,可能會出現(xiàn)多次按鍵按下的情況,從而發(fā)生錯誤。按鍵抖動時間由機械特性決定,一般為5~10 ms。解決方法為:取按鍵按下和釋放抖動時間內(nèi)的某個穩(wěn)定的時間(10 ms)作為真正按鍵的使能。
3) 分頻模塊。分頻模塊是對輸入時鐘信號做分頻處理。因為系統(tǒng)時鐘信號為50 MHz,而密碼檢測模塊、密碼輸出控制模塊和數(shù)碼管正常工作需要1 kHz的時鐘信號,所以要對時鐘輸入信號做分頻處理。
4) 密碼檢測模塊。密碼檢測模塊為密碼鎖的核心控制,控制密碼的運行狀態(tài)、修改和檢測。檢測按鍵輸入的值,對輸入的密碼進行存儲、驗證、響應(yīng)結(jié)果并輸出指令。
5) 密碼輸出控制模塊。輸出控制模塊接收檢測模塊的信號,對響應(yīng)輸出結(jié)果發(fā)出解鎖信號或警報信號。
6) 譯碼顯示模塊。將設(shè)置密碼和修改密碼時輸入的值(二進制碼)轉(zhuǎn)換為邏輯電平,并在數(shù)碼管上顯示。
本文主要對密碼鎖系統(tǒng)的分頻模塊、密碼檢測模塊和密碼輸出控制模塊進行編譯與功能仿真。在上述設(shè)計思路下,使用Verilog HDL語言對分頻模塊、密碼檢測模塊和密碼輸出控制模塊進行編程,然后在Quartus II開發(fā)環(huán)境中綜合并調(diào)出原理圖,最后通過ModelSim軟件仿真[7-8]。
分頻模塊的功能是把密碼鎖系統(tǒng)的50 MHz時鐘輸入信號分頻為1 kHz時鐘信號。分頻模塊輸出的1 kHz信號提供密碼檢測模塊和密碼輸出控制模塊正常工作。在分頻模塊的設(shè)計中,將時鐘輸入和復(fù)位端設(shè)為clk_50MHz和RST,定義一個寄存器變量cnt用于計數(shù)。每經(jīng)過一個clk_50MHz信號上升沿cnt1計數(shù)一次,當(dāng)cnt1計數(shù)到24 999時clk_1kHz產(chǎn)生一次跳變輸出1 kHz信號。分頻模塊的原理圖如圖3所示。
圖3 分頻模塊原理圖
密碼檢測模塊的功能是檢測輸入密碼和修改密碼,比較輸入的密碼與默認(rèn)的密碼。若密碼正確,該模塊則輸出密碼正確信號;若密碼錯誤,則輸出警報信號;若有修改密碼信號,則更改默認(rèn)密碼。輸入信號clk_1kHz、RST、key_flag、key_xg、key_value分別表示時鐘信號、復(fù)位信號、按鍵按下標(biāo)志、修改密碼信號、按鍵輸入的值;輸出信號mima_r、right、error分別表示輸出的密碼、密碼輸入正確和錯誤信號。key_cnt、mima_r、mima_r2、PASSWORD為寄存器變量,其中:key_cnt用于統(tǒng)計輸入密碼的位數(shù);mima_r和mima_r2都是16位寄存器變量,分別用于存儲按鍵輸入的值和修改密碼時按鍵輸入值;PASSWORD用于存儲正確密碼。密碼檢測模塊原理如圖4所示。
圖4 密碼檢測模塊原理
設(shè)默認(rèn)密碼為1111,按鍵輸入的值key_value[3:0]分別存儲于mima_r[15:12]、mima_r[11:8]、mima_r[7:4]、mima_r[3:0]。輸入密碼1111,密碼正確right信號跳變;輸入密碼2345,密碼錯誤,error信號跳變。仿真如圖5所示。
圖5 密碼輸入正確及錯誤仿真
修改密碼按鍵按下,處于修改密碼狀態(tài),key_xg、key_flag處于高電平,連續(xù)輸入2222,默認(rèn)密碼修改為2222。隨后輸入密碼2222,密碼正確,right信號跳變。仿真如圖6所示。
圖6 修改密碼仿真
密碼輸出控制模塊的功能是接收檢測模塊的right和error信號,并輸出解鎖信號和警報信號。該模塊的設(shè)計采用三段式有限狀態(tài)機,狀態(tài)分為start初始化、S1輸出解鎖信號、S2輸出警報信號,編碼方式使用獨熱碼(One-hot)編碼。輸入信號為clk_1kHz、RST、right、error;輸出信號jiesuo、alarm、led_right、led_alarm分別表示解鎖信號、警報信號、解鎖燈光、警報燈光;密碼輸出控制模塊的原理如圖7所示。
圖7 密碼輸出模塊原理
本文利用FPGA技術(shù),使用Verilog HDL硬件描述語言設(shè)計的電子密碼鎖可以解鎖、修改密碼、發(fā)出警報,具有開發(fā)成本低、穩(wěn)定性好、實用性強、安全可靠等優(yōu)點。而且當(dāng)控制電路需要修改時,僅需借助FPGA平臺重新編程即可,無須更改電路,大大提高了設(shè)計效率。由仿真結(jié)果可知,本文方法滿足設(shè)計要求,達到了預(yù)期效果。