名稱:電子密碼鎖設計Verilog代碼Quartus仿真
軟件:Quartus
語言:Verilog
代碼功能:
電子密碼鎖設計
II、課題任務
用VerilogHDL語言編寫程序,設計一個電子密碼鎖控制電路,當輸入正確代碼時,輸出開鎖信號以推動執(zhí)行機構工作。密碼鎖控制電路中存儲一個可修改的6位代碼,當輸入的代碼等于存儲的代碼時,開鎖。從第一位代碼輸入后5秒內未將鎖打開,則電路自動復位并進入自鎖狀態(tài),使之無法再打開,并發(fā)出持續(xù)20秒的報警信號。允許有三次輸錯的機會,三次輸入錯誤,電路自動復位并進入自鎖狀態(tài),無法再打開。
III、具體設計內容:
1、設計任務
密碼鎖整體結構如圖1所示,其中FPGA編程是本課程設計任務,通過按鍵產(chǎn)生控制信號輸入給FPGA芯片,F(xiàn)PGA對按鍵信號進行處理,并輸出信號給執(zhí)行機構對密碼鎖進行操作。FPGA的輸入時鐘頻率為1MHz。
圖1 密碼鎖整體系統(tǒng)
? ?開始開鎖信號為外部輸入信號,當該信號為高電平時,開始輸入密碼,密碼為按鍵形式,每次按鍵會先發(fā)送一個高脈沖信號,即按鍵中斷信號,然后將該按鍵對應的數(shù)字送出,具體時序如圖2所示,F(xiàn)PGA接收到開始開鎖信號后開始檢測按鍵中斷信號,如果按鍵中斷有上跳沿跳變,便讀取4位鍵值數(shù)據(jù),然后與
存儲的代碼匹配,如果匹配成功則輸出4位二進制數(shù)0001,如果匹配不成功,需要重新輸入,則輸出二進制數(shù)0010,如果要復位自鎖輸出0011,同時將警報輸出信號置高電平,高電平持續(xù)20秒時間再置成低電平,不進行任何操作時輸出0000,電子密碼鎖按鍵時序如下圖2所示:
圖2 電子密碼鎖按鍵信號時序圖
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
演示視頻:
設計文檔:
1、工程文件
2、程序文件
3、程序編譯
4、RTL圖
5、Testbench
6、仿真圖
Testbench
整體仿真圖
上圖前段仿真了輸入密碼5秒內未打開,輸出alarm_led報警信號和0011執(zhí)行機構信號(actuator),中段是輸入密碼正確,開鎖,輸出0001執(zhí)行機構信號(actuator),最后一段是連續(xù)輸入3次錯誤密碼,輸出alarm_led報警信號和0011執(zhí)行機構信號(actuator)
上圖為輸入一次錯誤密碼時,執(zhí)行機構輸出0010
按鍵檢測模塊
狀態(tài)機控制模塊
輸出控制模塊
部分代碼展示:
//密碼鎖 module?locker( input?clk,//時鐘 input?rst_p,//高電平復位 input?start_key,//開始解鎖 input?[3:0]?value,//鍵值 input?confirm_key,//輸入按鍵 output?alarm_led,//報警 output?[3:0]?actuator//執(zhí)行機構信號 ); wire?key_int;//按鍵中斷 wire?[3:0]?state; //按鍵中斷檢測模塊 key_detect?i_key_detect( .?clk(clk),//時鐘 .?confirm_key(confirm_key),//輸入按鍵 .?key_int(key_int)?//按鍵上升沿 ); //狀態(tài)機控制 fsm?i_fsm( .?clk(clk), .?rst_p(rst_p),//高電平復位 .?start_key(start_key),//開始解鎖 .?value(value),//鍵值 .?key_int(key_int),//按鍵中斷 .?state(state)?//輸出狀態(tài) );