名称:五位二进制简易密码锁verilog代码ego1开发板vivado软件
软件:VIVADO
语言:Verilog
代码功能:
1、设计五位二进制简易密码锁,密码用五位二进制数组成;
2、用按键预设置密码和改动密码;
3、输入密码如果与设置密码一致,则用一个LED灯表示输入正确,否则用一个LED灯显示输入错误。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在ego1开发板验证,开发板如下,其他开发板可以修改管脚适配:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. 管脚分配
6. Testbench
7. 仿真图
整体仿真图
图中仿真了原始密码为11111时吗,输入10111,密码错误,然后再次输入11111,按下确认键后,密码锁打开(LED1亮),次数按下修改密码按键,输入10111,将密码修改为10111,然后关锁,再次输入10111,密码锁打开。
按键消抖模块(上升沿检测)
密码输入模块
图中仿真了输入10111,密码错误,然后再次输入11111,输入10111,将密码修改为10111,然后关锁,再次输入10111
密码锁控制模块
图中仿真了原始密码为11111时,输入10111,密码错误,然后再次输入11111,按下确认键后,密码锁打开(LED1亮),次数按下修改密码按键,输入10111,将密码修改为10111,然后关锁,再次输入10111,密码锁打开。
数码管显示模块
密码重置模块
图中仿真了原始密码为11111时,将密码修改为10111的过程。
部分代码展示:
//密码锁控制模块 module mimasuo_ctrl( input clk, input [19:0] password,//输入的密码 input [19: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://密码错误 state<=s_lock;//继续锁定 s_modify://修改密码 if(confirm==1) state<=s_pass;//返回开锁状态 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状态下都是开锁状态 led_open_buf<=1;//开锁 else led_open_buf<=0;//关锁 assign led_open=led_open_buf; endmodule