實(shí)驗(yàn)9:密碼鎖
設(shè)計(jì)4位二進(jìn)制密碼鎖,要求如下:
4位密碼輸入代碼分別為Q、U、N、B,開箱時(shí),鑰匙插入鑰匙孔右旋使D=1,如果輸入密碼(如:QUNB=0101)與設(shè)置的代碼相同,則保險(xiǎn)箱被打開,即輸出端G=1,否則箱體發(fā)出報(bào)警。
根據(jù)任務(wù)要求可知,只有當(dāng)D=1,且輸入密碼=0101時(shí),輸出G=1,報(bào)警器W=0。其他情況下D=1,輸出G=0,報(bào)警器W=1。若D=0, 輸出G=0,報(bào)警器W=0。密碼鎖真值表如下:
Verilog HDL建模描述
4位密碼鎖程序清單codedlock.v
<code verilog> module codedlock
( input wire q,u,n,b, //四位開關(guān)作為密碼輸入 input wire d, //一位按鍵作為開鎖使能信號(hào) output wire led1, //保險(xiǎn)箱打開信號(hào)對(duì)應(yīng)的led輸出 output wire led2 //報(bào)警信號(hào)對(duì)應(yīng)的led輸出 ); wire [3:0] code; //四位變量存儲(chǔ)密碼 reg open; //保險(xiǎn)箱開箱信號(hào) reg alarm; //報(bào)警信號(hào) assign code = {q,u,n,b}; always@(d or code) if(d == 1'b1) //使能,開始判斷密碼 begin if(code == 4'b0101) begin open = 1'b1; //開鎖 alarm = 1'b0; //沒報(bào)警 end else begin open = 1'b0; alarm = 1'b1; end end else begin open = 1'b0; end assign led1 = ~open; //led亮表示密碼鎖沒開 assign led2 = ~alarm; //led亮代表發(fā)出報(bào)警信號(hào) endmodule </code>
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。