名稱:4位密碼鎖控制basys2開發(fā)板verilog密碼修改四位密碼鎖(代碼在文末下載)
軟件:ISE
語言:Verilog
代碼功能:
4位密碼鎖控制器
1)數(shù)碼輸入:每輸入一組4位二進(jìn)制數(shù),就輸入一個(gè)數(shù)值,并在顯示器上的顯示出該數(shù)值,同時(shí)將先前輸入的數(shù)據(jù)依序左移一個(gè)數(shù)字位置。
2)數(shù)碼清除:按下此鍵可清除前面輸入值。
3)密碼更改:按下此鍵時(shí)會(huì)將目前的數(shù)字設(shè)定成新的密碼。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在Basys2開發(fā)板驗(yàn)證,開發(fā)板如下,其他開發(fā)板可以修改管腳適配:
演示視頻:
設(shè)計(jì)文檔:
1. 工程文件
2. 程序文件
3. 管腳約束
4. 程序編譯
5. RTL圖
整體框圖
模塊連接圖
單模塊
6. Testbench
7. 仿真圖
密碼輸入方式:先將key_0、key_1、key_2、key_3撥到對(duì)應(yīng)電平代表的二進(jìn)制數(shù),再按下key_en鍵輸入到數(shù)碼管顯示。
testbench仿真激勵(lì)文件功能:密碼鎖上電默認(rèn)密碼1234,首先模擬輸入數(shù)字3,然后通過清除按鍵清除3,再依次輸入1234,按確認(rèn)鍵(confirm)開鎖,此時(shí)可以看到led_open拉高,表示開鎖,然后按下修改按鍵(modify),再依次輸入3723將密碼修改為3723。再按關(guān)鎖鍵(lock_up)關(guān)鎖。最后再依次輸入3723將密碼鎖打開。
7.1 整體仿真圖
7.2 mima_input模塊
7.3 mimasuo_ctrl模塊
7.4 reset_password模塊
7.5 display模塊
部分代碼展示:
//1)數(shù)碼輸入:每輸入一組4位二進(jìn)制數(shù),就輸入一個(gè)數(shù)值,并在顯示器上的顯示出該數(shù)值,同時(shí)將先前輸入的數(shù)據(jù)依序左移一個(gè)數(shù)字位置。 //2)數(shù)碼清除:按下此鍵可清除前面輸入值。 //3)密碼更改:按下此鍵時(shí)會(huì)將目前的數(shù)字設(shè)定成新的密碼。 module?mimasuo( input?clk,//50M時(shí)鐘 //每輸入一組4位二進(jìn)制數(shù) input?key_0, input?key_1, input?key_2, input?key_3, input?key_en,//將4位二進(jìn)制數(shù)輸入 input?reset_key,//密碼清除 input?confirm,//確認(rèn) input?modify,//修改密碼 input?lock_up,//關(guān)鎖 output?led_open,//開鎖指示燈 output?[3:0]?smg_wei,//位選,高電平亮 output?[7:0]?smg_duan//段選,高電平亮 ); wire?[2:0]?current_state; wire?[15:0]?password; wire?[15:0]?correct_password; //密碼輸入模塊 mima_input?i_mima_input( .?clk(clk), //每輸入一組4位二進(jìn)制數(shù) .?key_0(key_0), .?key_1(key_1), .?key_2(key_2), .?key_3(key_3), .?key_en(key_en),//將4位二進(jìn)制數(shù)輸入 .?reset_key(reset_key),//密碼清除 .?current_state(current_state),//狀態(tài)機(jī)狀態(tài) .?password(password)//輸入的密碼 ); //密碼鎖控制模塊 mimasuo_ctrl?i_mimasuo_ctrl( .?clk(clk), .?password(password),//輸入的密碼 .?correct_password(correct_password),//正確的密碼 .?confirm(confirm),//確認(rèn) .?modify(modify),//修改密碼 .?lock_up(lock_up),//關(guān)鎖 .?led_open(led_open),//開鎖指示燈 .?current_state(current_state)//狀態(tài)機(jī)狀態(tài) ); //顯示模塊 display?i_display ( .?clk(clk), .?password(password),//輸入的密碼 .?smg_wei(smg_wei),//位選,高電平亮 .?smg_duan(smg_duan)//段選,高電平亮 ); //密碼修改模塊 reset_password?i_reset_password( .?clk(clk), .?password(password),//輸入的密碼 .?correct_password(correct_password),//正確的密碼 .?confirm(confirm),//確認(rèn) .?current_state(current_state)//狀態(tài)機(jī)狀態(tài) ); endmodule
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=268