名称:4位密码锁控制basys2开发板verilog密码修改四位密码锁(代码在文末下载)
软件:ISE
语言:Verilog
代码功能:
4位密码锁控制器
1)数码输入:每输入一组4位二进制数,就输入一个数值,并在显示器上的显示出该数值,同时将先前输入的数据依序左移一个数字位置。
2)数码清除:按下此键可清除前面输入值。
3)密码更改:按下此键时会将目前的数字设定成新的密码。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在Basys2开发板验证,开发板如下,其他开发板可以修改管脚适配:
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 管脚约束
4. 程序编译
5. RTL图
整体框图
模块连接图
单模块
6. Testbench
7. 仿真图
密码输入方式:先将key_0、key_1、key_2、key_3拨到对应电平代表的二进制数,再按下key_en键输入到数码管显示。
testbench仿真激励文件功能:密码锁上电默认密码1234,首先模拟输入数字3,然后通过清除按键清除3,再依次输入1234,按确认键(confirm)开锁,此时可以看到led_open拉高,表示开锁,然后按下修改按键(modify),再依次输入3723将密码修改为3723。再按关锁键(lock_up)关锁。最后再依次输入3723将密码锁打开。
7.1 整体仿真图
7.2 mima_input模块
7.3 mimasuo_ctrl模块
7.4 reset_password模块
7.5 display模块
部分代码展示:
//1)数码输入:每输入一组4位二进制数,就输入一个数值,并在显示器上的显示出该数值,同时将先前输入的数据依序左移一个数字位置。 //2)数码清除:按下此键可清除前面输入值。 //3)密码更改:按下此键时会将目前的数字设定成新的密码。 module mimasuo( input clk,//50M时钟 //每输入一组4位二进制数 input key_0, input key_1, input key_2, input key_3, input key_en,//将4位二进制数输入 input reset_key,//密码清除 input confirm,//确认 input modify,//修改密码 input lock_up,//关锁 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位二进制数 . key_0(key_0), . key_1(key_1), . key_2(key_2), . key_3(key_3), . key_en(key_en),//将4位二进制数输入 . reset_key(reset_key),//密码清除 . current_state(current_state),//状态机状态 . password(password)//输入的密码 ); //密码锁控制模块 mimasuo_ctrl i_mimasuo_ctrl( . clk(clk), . password(password),//输入的密码 . correct_password(correct_password),//正确的密码 . confirm(confirm),//确认 . modify(modify),//修改密码 . lock_up(lock_up),//关锁 . led_open(led_open),//开锁指示灯 . current_state(current_state)//状态机状态 ); //显示模块 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),//确认 . current_state(current_state)//状态机状态 ); endmodule
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=268
1023