本文介紹了一種以FPGA 為基礎(chǔ)的數(shù)字密碼鎖。采用自頂向下的數(shù)字系統(tǒng)設(shè)計方法, 將數(shù)字密碼鎖系統(tǒng)分解為若干子系統(tǒng), 并且進(jìn)一步細(xì)劃為若干模塊, 然后用硬件描述語言VHDL 來設(shè)計這些模塊, 同時進(jìn)行硬件測試。測試結(jié)果表明該數(shù)字密碼鎖能夠校驗10 位十進(jìn)制數(shù)字密碼, 且可以預(yù)置密碼, 設(shè)有斷電保護(hù)裝置, 解碼有效指示等相應(yīng)功能。 1 功能概述 (1)密碼鎖的工作時鐘由外部晶振提供,時鐘頻率為50MHz,運算速度高,工作性能穩(wěn)定。 (2)密碼的設(shè)置和輸入由外接鍵盤完成,控制電路的安全系數(shù)高,操作方便; (3)密碼數(shù)字可以由鎖的所有者隨意設(shè)置,并可更改, 增強了用戶體驗。密碼修改必須符合預(yù)設(shè)規(guī)則,否則無法修改密碼。 (4)開鎖時, 不限制密碼的輸入位數(shù)(1到10 位皆可以), 減少了密碼被破 解的概率(約為10 億分之一的破 解率),密碼鎖的保密能力高。 (5)清除密碼鍵的設(shè)定,可以快速清除全部密碼,提高了對突發(fā)事件的適應(yīng)能力。 (6)對輸入的數(shù)字密碼既能直接顯示,又能轉(zhuǎn)換為星號,防治偷 窺,增強保密性。 (7)全部密碼輸入后, 正確時密碼鎖將開啟, 顯示屏出現(xiàn):Input Right! 指示燈變亮。錯誤時,顯示屏出現(xiàn):Input Failed! 指示燈變滅。 (8)設(shè)有斷電保護(hù)裝置,保證電路不會因掉電失去所修改的密碼,而回到最初的密碼值,增強密碼的穩(wěn)定性。 2 系統(tǒng)結(jié)構(gòu) 本系統(tǒng)設(shè)計主要包括硬件設(shè)計和軟件設(shè)計兩部分,均采用模塊化設(shè)計。其中硬件設(shè)計主要包括中央控制模塊、微控制器、顯示模塊、輸入模塊、外圍電路等內(nèi)容。軟件設(shè)計包括狀態(tài)控制模塊,邏輯控制模塊,液晶顯示驅(qū)動模塊,EPROM 驅(qū)動模塊,掃描輸入模塊等構(gòu)成。系統(tǒng)結(jié)構(gòu)框架圖如圖1 所示。 圖1:系統(tǒng)結(jié)構(gòu)框架圖 設(shè)計采用模塊化編程方式,整個程序由液晶LCD1602 模塊(LCD1602.v)、矩陣鍵盤模塊(Matrix_Keys.v)、存儲芯片AT24C02 模塊(AT24C_XX.v) 和頂層邏輯功能模塊(password.v) 組成。頂層邏輯功能模塊(password.v) 調(diào)用其他3 個模塊完成頂層功能的設(shè)計。如圖2 所示。 圖2:矩陣鍵盤原理圖 3 底層設(shè)計 3.1 輸入模塊 由于鍵盤按鍵數(shù)量較多,為了減少I/O 口的占用,本設(shè)計將按鍵排列成矩陣形式。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,8 個端口就可以構(gòu)成3*5=15個按鍵,實際上我們只用14 個按鍵就足以解決密碼問題,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20 鍵的鍵盤,而直接用端口線則只能多出一鍵(9 鍵)。故在需要的鍵數(shù)比較多時,采用矩陣法來做鍵盤是更合理的方案。 3.2 顯示模塊與外圍電路 本設(shè)計選用了LCD1602 作為顯示模塊的核心,可以方便地顯示所需的數(shù)字和提示語,具有界面人性化、功耗低、速度快、節(jié)約控制器資源等優(yōu)點。外圍電路主要是一個受控制器控制的LED,由于表示鎖的開啟與關(guān)閉。 3.3 存儲模塊 本設(shè)計使用存儲芯片AT24C02 作為密碼的外部存儲器。二線制串行EEPROM—24C02是低工作電壓的2K 位串行電可擦除只讀存儲器,內(nèi)部組織為256 個字節(jié),每個字節(jié)8 位,該芯片被廣泛應(yīng)用于低電壓及低功耗的工商業(yè)領(lǐng)域。設(shè)計使用I2C 協(xié)議實現(xiàn)控制器與存儲器的聯(lián)結(jié),實現(xiàn)密碼保存,并保證密碼不會因斷電丟失。 4 工作方式 本系統(tǒng)利用上述系統(tǒng)模塊作為硬件基礎(chǔ),使用VHDL 語言編寫程序,實現(xiàn)了五大主要功能: (1)確認(rèn)密碼:通過掃描矩陣鍵盤,判斷用戶輸入內(nèi)容,將鍵入的數(shù)碼與密碼存儲器中的密碼進(jìn)行比較,判斷密碼的正誤,并控制密碼鎖的開關(guān); (2)清除密碼:輸入密碼過程中發(fā)生按鍵失誤,可以通過選擇清除鍵清除當(dāng)前全部的密碼,方便重新輸入; (3)密碼保護(hù):通過顯示切換鍵,可以切換顯示模式。在顯示數(shù)字模式下,顯示屏即顯示輸入的數(shù)字,方便用戶操作;在保護(hù)模式下,顯示的密碼用“*”表示,防止外界偷 窺,提高安全性能; (4)修改密碼:當(dāng)密碼鎖處于打開狀態(tài)時,默認(rèn)識別當(dāng)前用戶為鎖的持有者,允許修改密碼。但修改密碼必須符合密碼鎖內(nèi)設(shè)的“潛在規(guī)則”,否則無法完成修改,防止密碼鎖被破壞; (5)斷電保護(hù):設(shè)置電路保護(hù)結(jié)構(gòu),保證電路不會因掉電失去所修改的密碼,而回到最初的密碼值。 其工作流程圖如圖3。 圖3:工作流程圖 5 仿真與調(diào)試 在設(shè)計過程中,首先針對各個模塊,使用Quartus II 等軟件進(jìn)行仿真,然后將程序燒錄進(jìn)行硬件調(diào)試。最后,將整個系統(tǒng)程序進(jìn)行全編譯, 進(jìn)行整個系統(tǒng)的軟件仿真,仿真通過后進(jìn)行整個系統(tǒng)的硬件調(diào)。 6 核心特點 本設(shè)計開創(chuàng)性地提出了修改密碼“潛在規(guī)則”的概念,即在修改密碼時,新密碼必須滿足密碼鎖制作時預(yù)設(shè)的潛在規(guī)則,否則無法成功修改密碼,例如:潛在規(guī)則為密碼必須為七位數(shù),則在修改密碼時若輸入為五位數(shù)則會提示密碼修改失敗。本設(shè)計的意義在于,當(dāng)入侵者通過非法手段獲取正確密碼并開鎖后,如果短時間內(nèi)不能發(fā)現(xiàn)潛在規(guī)則,就不得不放棄修改密碼,防止用戶利益二次受損。另外潛在規(guī)則的設(shè)計方式還可以為密碼所有位數(shù)和等于N,必須為偶數(shù)等等,每一種潛在規(guī)則都有對應(yīng)的說明書,所以即使批量生產(chǎn)也不存在潛在規(guī)則被破 解的問題。此外,用戶在忘記密碼時可以根據(jù)說明書,聯(lián)系潛在規(guī)則回憶密碼。另外,密碼鎖支持1~10 位任意位10 進(jìn)制數(shù)作為密碼,遠(yuǎn)大于一般密碼鎖,靈活性極高,可組合出約11 億種密碼組合,從概率學(xué)上講,隨機(jī)破 解密碼為不可能事件。 7 結(jié)束語 基于FPGA 適用于設(shè)計狀態(tài)機(jī)的特點,通過Quartus II 仿真以及實物測試,證明本數(shù)字密碼鎖具有功能完善、工作穩(wěn)定、安全系數(shù)高的特點,通過修改密碼方案的創(chuàng)新,使其在實際應(yīng)用中能進(jìn)一步顯示優(yōu)良的安全性能,具有較好的發(fā)展前景。 |