名称:密码锁设计Verilog代码Quartus? 睿智FPGA开发板
软件:Quartus
语言:Verilog
代码功能:
1、设计一个密码锁的控制电路,当输入正确代码时,输岀开锁信号用红灯亮、绿灯熄灭表示关锁,用绿灯亮、红灯熄灭表示开锁。
2、在锁的控制电路中储存一个可以修改的4位代码,当开锁按钮开关的输入代码等于储存代码时,开锁。
3、从第一个按钮触动后的5秒内若未将锁打开,则电路自动复位并进入自锁状态,使之无法再打开,并由扬声器发出持续20秒的报警信号。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在睿智FPGA开发板验证,睿智FPGA开发板如下,其他开发板可以修改管脚适配:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. 管脚分配
部分代码展示:
//,密码锁 module?mimasuo( input?clk,//时钟 input?reset,//-复位 //数字输入按键 input?key_0,//--S0 input?key_1,//--S1 input?key_2,//--S2 input?key_3,//--S3 input?confirm_key,//-确认键--S4 input?modify_key,//--修改--S5 input?lock_up_key,//--上锁--S6 output?alarm,//报警,灯-- output?led_open,//开锁,灯-- output?led_close,//关锁,灯-- output??[7:0]?DIG,//数码管位选 output??[7:0]?SEG//数码管段选 ); wire?key_0_p; wire?key_1_p; wire?key_2_p; wire?key_3_p; wire?[2:0]?current_state; wire?[15:0]?password; wire?[15:0]?correct_password; wire?confirm; wire?modify; wire?lock_up; wire?open; assign?led_close=~open; assign?led_open=open; //上升沿检测 key_jitter?i1_key_jitter( .?clkin(clk),???? .?key_in(confirm_key),//输入 .?key_posedge(),//消抖后按键上升沿 .?key_negedge(confirm),//消抖后按键下降沿 .?key_value()//消抖后按键 ); //上升沿检测 key_jitter?i2_key_jitter( .?clkin(clk),???? .?key_in(modify_key),//输入 .?key_posedge(),//消抖后按键上升沿 .?key_negedge(modify),//消抖后按键下降沿 .?key_value()//消抖后按键 ); //上升沿检测 key_jitter?i3_key_jitter( .?clkin(clk),???? .?key_in(lock_up_key),//输入 .?key_posedge(),//消抖后按键上升沿 .?key_negedge(lock_up),//消抖后按键下降沿 .?key_value()//消抖后按键 ); //密码输入模块 mima_input?i_mima_input( .?clk(clk), .?key_0(key_0), .?key_1(key_1), .?key_2(key_2), .?key_3(key_3), .?key_0_p(key_0_p), .?key_1_p(key_1_p), .?key_2_p(key_2_p), .?key_3_p(key_3_p), .?current_state(current_state), .?password(password) ); //密码锁控制模块 mimasuo_ctrl?i_mimasuo_ctrl( .?clk(clk), .?password(password), .?correct_password(correct_password), .?confirm(confirm), .?reset(reset), .?modify(modify), .?lock_up(lock_up), .?key_0(key_0_p), .?key_1(key_1_p), .?key_2(key_2_p), .?key_3(key_3_p), .?led_open(open), .?current_state(current_state) ); //报警模块 alarm_on?i_alarm_on( .?clk(clk), .?current_state(current_state), .?alarm(alarm) ); //重置密码模块 reset_password?i_reset_password( .?clk(clk), .?password(password), .?correct_password(correct_password), .?confirm(confirm), .?current_state(current_state) ); //显示模块 display?i_display( .clk(clk), .?password(password),//输入密码 .?DIG(DIG),//数码管位选 .?SEG(SEG)//数码管段选 ); endmodule
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=520
阅读全文
507