基于FPGA的數字密碼鎖

0 前言
自古以來人們對物品安全就十分重視 , 數字化的今天 , 電子鎖正在逐步取代以往的機械鎖被廣泛運用在門禁、銀行和保險柜 。 然而 , 這些基于單片機的密碼鎖可靠性較差 , 而且功能拓展有限 。 隨著物聯網技術的發展 , 人們對電子鎖安全性和可靠性又提出了新的要求 。 本文所述的FPGA,即現場可編程門陣列 , 它是在PAL、GAL、CPLD等可編程器件的基礎上進一步發展的產物 。 由于其高集成度 , 使得電子產品在體積上大大縮減 , 且具有可靠、靈活、高效等特性 , 己備受設計師們的青睞 。
1 系統概述
1.1 功能概述
(1)初始密碼為000000,按C鍵設置密碼 , 密碼設置完成后按A鍵即上鎖 。
(2)以4×4鍵盤為輸入設備 , 按B鍵開始密碼輸入 , 串行輸入6位密碼 , 輸入完成后按#鍵 , 確認密碼輸入完成 。 七段數碼管將顯示用戶所輸入的數字 。
(3)密碼輸入正確 , 則開鎖指示燈滅 , 若密碼輸入錯誤或位數不足 , 報警燈亮 。
(4)處于報警狀態時 , 按*鍵可解除報警 。
(5)為保證安全 , 系統只有在開鎖狀態時 , 按C鍵 , 用戶才可重新設置密碼 。
1.2 系統結構
系統以4×4矩陣鍵盤為輸入設備 , 七段數碼管和指示燈為系統的輸入顯示和輸出指示器 。 系統內部可分為以下幾個模塊:鍵盤掃描及消抖電路、分頻電路、譯碼電路、編碼器、寄存器、比較器、控制器、計數器 。 系統結構大致如圖1所示 。

基于FPGA的數字密碼鎖

文章插圖

按鍵所用開關為機械彈性開關 , 當機械觸點斷開、閉合時 , 由于機械觸點的彈性作用 , 一個按鍵開關在閉合或斷開時不會穩定地接通或立即斷開 , 在電路上則會表現為連續地輸入同一個值 。 因此在鍵盤掃描電路里加入了鍵盤消抖程序 。 為使用戶能夠看到自己所輸入的密碼 , 將七段數碼管的顯示電路也集中到了鍵盤掃描電路內 。 鍵盤掃描所用的時鐘頻率為1kHz,故將系統所用的1MHz的時鐘分頻為1kHz供鍵盤掃描用 , 以分頻模塊為例 , 其程序如下:
基于FPGA的數字密碼鎖

文章插圖

1.3 狀態機
狀態機(FSM)在一個有限狀態之下以目前電路所處的狀態為準 , 一旦外加時序及輸入信號來臨 , 則以目前的狀態及輸入信號的變化狀況為依據 , 產生下一次的狀態及電位 。 狀態機是密碼鎖的主要控制部分 , 如圖2所示 , 狀態分為7種 , S1:密碼修改狀態;S2:開鎖狀態;S3:閉鎖狀態:S4:密碼輸入正確狀態:S5:密碼輸入狀態;S6:密碼輸入錯誤狀態;S7:報警狀態 。
基于FPGA的數字密碼鎖

文章插圖

系統上電時 , 處于開鎖狀態 , 當輸入change信號時 , 系統進入修改密碼狀態;若輸入lock信號 , 進入安鎖狀態 , 鎖閉合;在安鎖狀態 , 輸入start信號 , 進入輸入密碼狀態;在輸入密碼狀態 , 由ps_i_l密碼脈沖作為計數時鐘 , 計數值輸出作為寄存器地址 , 當計數器計到6時 , 返回計數滿信號cin,如果密碼內容和長度均正確 , 進入密碼初驗正確狀態 , 如果密碼錯誤 , 進入密碼初驗錯誤狀態;在密碼初驗正確狀態 , 輸入確認信號enter時 , 進入開鎖狀態;在密碼初驗錯誤狀態 , 輸入確認信號enter時 , 進入報警狀態;在報警狀態 , warn信號等于‘1",如果輸入清楚報警信號off_al,則進入安鎖狀態 。 以開鎖過程為例 , 其功能仿真波形如圖3所示 。
【基于FPGA的數字密碼鎖】