名稱(chēng):五位二進(jìn)制簡(jiǎn)易密碼鎖verilog代碼ego1開(kāi)發(fā)板vivado軟件(代碼在文末下載)
軟件:VIVADO
語(yǔ)言:Verilog
代碼功能:
1、設(shè)計(jì)五位二進(jìn)制簡(jiǎn)易密碼鎖,密碼用五位二進(jìn)制數(shù)組成;
2、用按鍵預(yù)設(shè)置密碼和改動(dòng)密碼;
3、輸入密碼如果與設(shè)置密碼一致,則用一個(gè)LED燈表示輸入正確,否則用一個(gè)LED燈顯示輸入錯(cuò)誤。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在ego1開(kāi)發(fā)板驗(yàn)證,開(kāi)發(fā)板如下,其他開(kāi)發(fā)板可以修改管腳適配:
演示視頻:
設(shè)計(jì)文檔:
1. 工程文件
2. 程序文件
3. 程序編譯
4. RTL圖
5. 管腳分配
6. Testbench
7. 仿真圖
整體仿真圖
圖中仿真了原始密碼為11111時(shí)嗎,輸入10111,密碼錯(cuò)誤,然后再次輸入11111,按下確認(rèn)鍵后,密碼鎖打開(kāi)(LED1亮),次數(shù)按下修改密碼按鍵,輸入10111,將密碼修改為10111,然后關(guān)鎖,再次輸入10111,密碼鎖打開(kāi)。
按鍵消抖模塊(上升沿檢測(cè))
密碼輸入模塊
圖中仿真了輸入10111,密碼錯(cuò)誤,然后再次輸入11111,輸入10111,將密碼修改為10111,然后關(guān)鎖,再次輸入10111
密碼鎖控制模塊
圖中仿真了原始密碼為11111時(shí),輸入10111,密碼錯(cuò)誤,然后再次輸入11111,按下確認(rèn)鍵后,密碼鎖打開(kāi)(LED1亮),次數(shù)按下修改密碼按鍵,輸入10111,將密碼修改為10111,然后關(guān)鎖,再次輸入10111,密碼鎖打開(kāi)。
數(shù)碼管顯示模塊
密碼重置模塊
圖中仿真了原始密碼為11111時(shí),將密碼修改為10111的過(guò)程。
部分代碼展示:
//密碼鎖控制模塊 module?mimasuo_ctrl( input?clk, input?[19:0]?password,//輸入的密碼 input?[19:0]?correct_password,//正確的密碼 input?confirm,//確認(rèn) input?reset,//清楚報(bào)警 input?modify,//修改密碼 input?lock_up,//上鎖 output?led_open,//開(kāi)鎖指示燈 output?[2:0]?current_state//當(dāng)前狀態(tài) ); //定義6個(gè)狀態(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)機(jī)控制 always@(posedge?clk) case(state) s_lock://鎖定狀態(tài) if(confirm==1) state<=s_compare; else state<=s_lock; s_compare://比對(duì)密碼狀態(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://密碼錯(cuò)誤 state<=s_lock;//繼續(xù)鎖定 s_modify://修改密碼 if(confirm==1) state<=s_pass;//返回開(kāi)鎖狀態(tài) else state<=s_modify; default:state<=s_lock; endcase reg?led_open_buf=0; always@(posedge?clk) if(state==s_modify?||?state==s_pass)//pass?和?modify狀態(tài)下都是開(kāi)鎖狀態(tài) led_open_buf<=1;//開(kāi)鎖 else led_open_buf<=0;//關(guān)鎖 assign?led_open=led_open_buf; endmodule
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=308