【至簡設計案例系列】基於FPGA的密碼鎖(XILINX ISE版)

本文爲明德揚原創及錄用文章,轉載請註明出處!
作者:造就狂野青春

一、總體設計
1、概述
本文基於明德揚至簡設計法和明德揚設計規範,設計了一個基於FPGA的數字密碼鎖,實現了在撥碼開關條件下,按鍵設置密碼、按鍵輸入解鎖密碼,密碼正確時正確指示燈亮、密碼錯誤時或者默認狀態錯誤指示燈亮,密碼正確時一位數碼管顯示1,其他情況顯示0。本案例的擴展和應用在現實生活中具有重大意義。在本案例的設計過程中,應用了至簡設計法、計數器模板應用等,在經過逐步改進、調試等一系列工作之後,最終達到了設計目標。

2、設計目標
(1)實現8位數字密碼鎖功能
(2)按鍵1、2設置密碼,按鍵1有效時設置一位密碼0,按鍵2有效時設置一位密碼1,按下8次後密碼設置完成
(3)按鍵3、4輸入密碼,按鍵3有效時輸入一位密碼0,按鍵2有效時輸入一位密碼1,按下8次後密碼輸入完成
(4)比較設置的密碼和輸入的密碼是否相同,正確時正確指示燈亮,數碼管顯示1,否則錯誤指示燈亮,數碼管顯示0;

3、模塊功能
(1)密碼模塊實現功能:
SW1有效時按鍵1、2設置密碼,按鍵1有效時設置一位密碼0,按鍵2有效時設置一位密碼1,按下8次後密碼設置完成
SW2有效時按鍵3、4輸入密碼,按鍵3有效時輸入一位密碼0,按鍵2有效時輸入一位密碼1,按下8次後密碼輸入完成
(2)數碼管顯示模塊實現功能:
密碼正確時數碼管顯示1,否則顯示0;
(3)led模塊實現功能:
密碼正確時led_y指示燈亮,否則led_n指示燈亮;
(4)按鍵模塊實現功能:
將外來異步信號打兩拍處理,將異步信號同步化;
實現20ms按鍵消抖功能,並輸出有效按鍵信號;

4、信號定義
1)頂層模塊Lock_Top.v

信號 定義
clk 系統時鐘
rst_n 低電平復位信號
key_in 按鍵輸入
sw 撥碼開關
led_y 正確指示燈
led_n 錯誤指示燈
seg_sel 數碼管位選信號
segment 數碼管顯示信號

2)密碼模塊password.v

信號 定義
clk 系統時鐘
rst_n 低電平復位信號
key_vld 按鍵有效
SW 撥碼開關
password_set 設置的密碼
password_shift 輸入的密碼

3)數碼管顯示模塊sel_disp.v

信號 定義
clk 系統時鐘
rst_n 低電平復位信號
password_set 設置的密碼
password_shift 輸入的密碼
seg_sel 數碼管位選信號
segment 數碼管顯示信號

4)led模塊led_flag.v

信號 定義
clk 系統時鐘
rst_n 低電平復位信號
led_y 正確指示燈
led_n 錯誤指示燈

5)按鍵模塊key_module.v

信號 定義
clk 系統時鐘
rst_n 低電平復位信號
key_in 按鍵輸入
key_vld 有效按鍵

5、密碼模塊核心代碼
在這裏插入圖片描述

SW1有效時按鍵1、2設置密碼,按鍵1有效時設置一位密碼0,按鍵2有效時設置一位密碼1,按下8次後密碼設置完成
SW2有效時按鍵3、4輸入密碼,按鍵3有效時輸入一位密碼0,按鍵2有效時輸入一位密碼1,按下8次後密碼輸入完成

6、數碼管顯示
在這裏插入圖片描述
參數化設置顯示0~F對應的8位數
在這裏插入圖片描述
對比設置的密碼和輸入的密碼是否一致,密碼正確時數碼管顯示1,否則顯示0;

7、led指示燈模塊
在這裏插入圖片描述
密碼正確時led_y指示燈亮,否則led_n指示燈亮;

8、按鍵消抖代碼
在這裏插入圖片描述

利用明德揚的按鍵消抖模塊,每20ms掃描一次按鍵輸入key_in,可以達到消抖的目的,再用寄存器緩存一下,按鍵爲低電平有效,所以檢測當檢測到按鍵有下降沿變化時,代表該按鍵被按下,按鍵有效,輸出1;

9、Modelsim仿真驗證
在這裏插入圖片描述
編寫測試文件,添加激勵,這裏避免長時間仿真,需將消抖時間縮小
在這裏插入圖片描述
按鍵2按下時設置了一位密碼1,再按鍵時設置了兩位密碼1;
在這裏插入圖片描述
按鍵4按下時輸入了一位密碼1,再按鍵時輸入了兩位密碼1;
在這裏插入圖片描述

設置的密碼和輸入的密碼是否相同,正確時正確指示燈亮,數碼管顯示1,否則錯誤指示燈亮,數碼管顯示0;從仿真圖可以看出符合功能要求。

在這個設計案例中,至簡設計法和明德揚至簡法發揮了至關重要的作用,使我能夠快速準確完成設計。

本設計可以加以拓展:

可以結合開發板外設和實際情況,改變設置和輸入密碼的方式、位數,以及密碼正確與否的反應,如蜂鳴器報警等等。

對於初學者而言,流水燈太簡單,複雜項目又太難,不如嘗試一下這些相對簡單而又酷炫的案例,並一步步拓展成大項目。趕緊動手嘗試吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章