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