• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

電子密碼鎖設(shè)計(jì)Verilog代碼Quartus仿真

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

2-250320201230U5.doc

共1個(gè)文件

名稱:電子密碼鎖設(shè)計(jì)Verilog代碼Quartus仿真

軟件:Quartus

語(yǔ)言:Verilog

代碼功能:

電子密碼鎖設(shè)計(jì)

II、課題任務(wù)

用VerilogHDL語(yǔ)言編寫程序,設(shè)計(jì)一個(gè)電子密碼鎖控制電路,當(dāng)輸入正確代碼時(shí),輸出開(kāi)鎖信號(hào)以推動(dòng)執(zhí)行機(jī)構(gòu)工作。密碼鎖控制電路中存儲(chǔ)一個(gè)可修改的6位代碼,當(dāng)輸入的代碼等于存儲(chǔ)的代碼時(shí),開(kāi)鎖。從第一位代碼輸入后5秒內(nèi)未將鎖打開(kāi),則電路自動(dòng)復(fù)位并進(jìn)入自鎖狀態(tài),使之無(wú)法再打開(kāi),并發(fā)出持續(xù)20秒的報(bào)警信號(hào)。允許有三次輸錯(cuò)的機(jī)會(huì),三次輸入錯(cuò)誤,電路自動(dòng)復(fù)位并進(jìn)入自鎖狀態(tài),無(wú)法再打開(kāi)。

III、具體設(shè)計(jì)內(nèi)容:

1、設(shè)計(jì)任務(wù)

密碼鎖整體結(jié)構(gòu)如圖1所示,其中FPGA編程是本課程設(shè)計(jì)任務(wù),通過(guò)按鍵產(chǎn)生控制信號(hào)輸入給FPGA芯片,F(xiàn)PGA對(duì)按鍵信號(hào)進(jìn)行處理,并輸出信號(hào)給執(zhí)行機(jī)構(gòu)對(duì)密碼鎖進(jìn)行操作。FPGA的輸入時(shí)鐘頻率為1MHz。

圖1 密碼鎖整體系統(tǒng)

? ?開(kāi)始開(kāi)鎖信號(hào)為外部輸入信號(hào),當(dāng)該信號(hào)為高電平時(shí),開(kāi)始輸入密碼,密碼為按鍵形式,每次按鍵會(huì)先發(fā)送一個(gè)高脈沖信號(hào),即按鍵中斷信號(hào),然后將該按鍵對(duì)應(yīng)的數(shù)字送出,具體時(shí)序如圖2所示,F(xiàn)PGA接收到開(kāi)始開(kāi)鎖信號(hào)后開(kāi)始檢測(cè)按鍵中斷信號(hào),如果按鍵中斷有上跳沿跳變,便讀取4位鍵值數(shù)據(jù),然后與

存儲(chǔ)的代碼匹配,如果匹配成功則輸出4位二進(jìn)制數(shù)0001,如果匹配不成功,需要重新輸入,則輸出二進(jìn)制數(shù)0010,如果要復(fù)位自鎖輸出0011,同時(shí)將警報(bào)輸出信號(hào)置高電平,高電平持續(xù)20秒時(shí)間再置成低電平,不進(jìn)行任何操作時(shí)輸出0000,電子密碼鎖按鍵時(shí)序如下圖2所示:

圖2 電子密碼鎖按鍵信號(hào)時(shí)序圖

FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com

演示視頻:

設(shè)計(jì)文檔:

1、工程文件

2、程序文件

3、程序編譯

4、RTL圖

5、Testbench

6、仿真圖

Testbench

整體仿真圖

上圖前段仿真了輸入密碼5秒內(nèi)未打開(kāi),輸出alarm_led報(bào)警信號(hào)和0011執(zhí)行機(jī)構(gòu)信號(hào)(actuator),中段是輸入密碼正確,開(kāi)鎖,輸出0001執(zhí)行機(jī)構(gòu)信號(hào)(actuator),最后一段是連續(xù)輸入3次錯(cuò)誤密碼,輸出alarm_led報(bào)警信號(hào)和0011執(zhí)行機(jī)構(gòu)信號(hào)(actuator)

上圖為輸入一次錯(cuò)誤密碼時(shí),執(zhí)行機(jī)構(gòu)輸出0010

按鍵檢測(cè)模塊

狀態(tài)機(jī)控制模塊

輸出控制模塊

部分代碼展示:

//密碼鎖
module?locker(
input?clk,//時(shí)鐘
input?rst_p,//高電平復(fù)位
input?start_key,//開(kāi)始解鎖
input?[3:0]?value,//鍵值
input?confirm_key,//輸入按鍵
output?alarm_led,//報(bào)警
output?[3:0]?actuator//執(zhí)行機(jī)構(gòu)信號(hào)
);
wire?key_int;//按鍵中斷
wire?[3:0]?state;
//按鍵中斷檢測(cè)模塊
key_detect?i_key_detect(
.?clk(clk),//時(shí)鐘
.?confirm_key(confirm_key),//輸入按鍵
.?key_int(key_int)?//按鍵上升沿
);
//狀態(tài)機(jī)控制
fsm?i_fsm(
.?clk(clk),
.?rst_p(rst_p),//高電平復(fù)位
.?start_key(start_key),//開(kāi)始解鎖
.?value(value),//鍵值
.?key_int(key_int),//按鍵中斷
.?state(state)?//輸出狀態(tài)
);
  • 2-250320201230U5.doc
    下載

相關(guān)推薦