名稱:數(shù)字密碼鎖Verilog代碼vivado? ego1開發(fā)板
軟件:vivado
語言:Verilog
代碼功能:
數(shù)字密碼鎖:
1、有改密碼功能;
2、密碼錯誤三次報警燈閃爍;
3、通過按鍵輸入密碼。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在ego1開發(fā)板驗證,ego1開發(fā)板如下,其他開發(fā)板可以修改管腳適配:
演示視頻:
設計文檔:
Testbench
仿真圖
整體仿真
按鍵模塊
密碼輸入模塊
控制模塊
顯示模塊
報警模塊
修改密碼模塊
部分代碼展示:
//密碼鎖控制模塊 module?mimasuo_ctrl( input?clk, input?[15:0]?password,//輸入的密碼 input?[15:0]?correct_password,//正確的密碼 input?confirm,//確認 input?reset,//清楚報警 input?modify,//修改密碼 input?lock_up,//上鎖 output?led_open,//開鎖指示燈 output?[2:0]?current_state//當前狀態(tài) ); //定義6個狀態(tài) parameter?s_lock=3'd0; parameter?s_compare=3'd1; parameter?s_pass=3'd2; parameter?s_error=3'd3; parameter?s_modify=3'd4; parameter?s_alarm=3'd5; reg?[2:0]?state=3'd0; assign?current_state=state; reg?[2:0]?error_cnt=3'd0; //狀態(tài)機控制 always@(posedge?clk) case(state) s_lock://鎖定狀態(tài) if(confirm==1) state<=s_compare; else state<=s_lock; s_compare://比對密碼狀態(tài) if(correct_password==password) state<=s_pass; else state<=s_error; s_pass://密碼正確 if(modify==1) state<=s_modify;//修改密碼 else?if(lock_up==1) ???state<=s_lock;//上鎖 else state<=s_pass; s_error://密碼錯誤 if(error_cnt>=3'd2) state<=s_alarm;//錯誤3次報警 else state<=s_lock;//繼續(xù)鎖定 s_alarm://報警 if(reset==1)//清除報警 state<=s_lock;//繼續(xù)鎖定 else state<=s_alarm;//報警 s_modify://修改密碼 if(confirm==1) state<=s_pass;//返回開鎖狀態(tài) else state<=s_modify; default:state<=s_lock; endcase always@(posedge?clk) if(reset==1) error_cnt<=3'd0; else if(state==s_error) error_cnt<=error_cnt+3'd1;//輸入錯誤密碼次數(shù)計數(shù) reg?led_open_buf=0; always@(posedge?clk) if(state==s_modify?||?state==s_pass)//pass?和?modify狀態(tài)下都是開鎖狀態(tài) led_open_buf<=1;//開鎖 else led_open_buf<=0;//關鎖 assign?led_open=led_open_buf; endmodule
點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=450
閱讀全文