名称:数字密码锁Verilog代码vivado? ego1开发板
软件:vivado
语言:Verilog
代码功能:
数字密码锁:
1、有改密码功能;
2、密码错误三次报警灯闪烁;
3、通过按键输入密码。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在ego1开发板验证,ego1开发板如下,其他开发板可以修改管脚适配:
演示视频:
设计文档:
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//当前状态 ); //定义6个状态 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; //状态机控制 always@(posedge?clk) case(state) s_lock://锁定状态 if(confirm==1) state<=s_compare; else state<=s_lock; s_compare://比对密码状态 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;//继续锁定 s_alarm://报警 if(reset==1)//清除报警 state<=s_lock;//继续锁定 else state<=s_alarm;//报警 s_modify://修改密码 if(confirm==1) state<=s_pass;//返回开锁状态 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;//输入错误密码次数计数 reg?led_open_buf=0; always@(posedge?clk) if(state==s_modify?||?state==s_pass)//pass?和?modify状态下都是开锁状态 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
阅读全文
842