名称:基于FPGA的电子密码锁的设计VHDL代码Quartus仿真
软件:Quartus
语言:VHDL
代码功能:
电子密码锁的设计
设计任务:
1.密码输入:每按下一个数字键,就输入一个数值,并在显示器上显示该数值,同时将先前输入的数据依次左移一位;
2.密码清除:按下清除键可清除前面所有的输入值,清除结果为“0000”;
3.密码更改:按下更改键可将目前的数码设定为新的密码;
4.密码上锁:按下上锁键密码锁上锁;
5. 密码解除:按下解除键首先检查输入密码是否正确,密码正确就开锁。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. 管脚分配
6. Testbench
7. 仿真图
整体仿真图
显示模块
密码输入模块
密码锁控制模块
密码修改模块
部分代码展示:
--设计一个四位的电子密码锁, --每按下一个数字键,就输入一个数字, --并在显示器上显示该数值,同时将先前输入的数据左移。 --此外,包含密码清除(清楚结果为0000), --密码更改(按下更改键可将目前的密码设定为新密码), --密码上锁和密码解除(按下解除首先检查密码是否正确,密码正确就开锁)功能。 LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; --顶层模块 ENTITY?mimasuo?IS ???PORT?( ??????clk???????:?IN?STD_LOGIC;--1024Hz ?????? ??????key_0?????:?IN?STD_LOGIC;--按键输入0 ??????key_1?????:?IN?STD_LOGIC;--按键输入1 ??????key_2?????:?IN?STD_LOGIC;--按键输入2 ??????key_3?????:?IN?STD_LOGIC;--按键输入3 ??????key_4?????:?IN?STD_LOGIC;--按键输入4 ??????key_5?????:?IN?STD_LOGIC;--按键输入5 ??????key_6?????:?IN?STD_LOGIC;--按键输入6 ??????key_7?????:?IN?STD_LOGIC;--按键输入7 ??????key_8?????:?IN?STD_LOGIC;--按键输入8 ??????key_9?????:?IN?STD_LOGIC;--按键输入9 ?????? ??????confirm???:?IN?STD_LOGIC;--确认键(开锁) ??????modify????:?IN?STD_LOGIC;--修改键(更改) ??????lock_up???:?IN?STD_LOGIC;--锁住键(上锁) ???delect????:?IN?STD_LOGIC;--删除键(清除) ??????led_open??:?OUT?STD_LOGIC;--开锁指示信号,高电平表示开锁,低电平表示锁住 ?????? ??????HEX0??????:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0);--数码管显示 ??????HEX1??????:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0);--数码管显示 ??????HEX2??????:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0);--数码管显示 ??????HEX3??????:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0)--数码管显示 ???); END?mimasuo; ARCHITECTURE?trans?OF?mimasuo?IS ???--例化重置模块 ???COMPONENT?reset_password?IS ??????PORT?( ?????????clk???????:?IN?STD_LOGIC; ?????????password??:?IN?STD_LOGIC_VECTOR(15?DOWNTO?0); ?????????correct_password?:?OUT?STD_LOGIC_VECTOR(15?DOWNTO?0); ?????????confirm???:?IN?STD_LOGIC; ?????????current_state?:?IN?STD_LOGIC_VECTOR(2?DOWNTO?0) ??????); ???END?COMPONENT; ???--例化显示模块 ???COMPONENT?display?IS ??????PORT?( ?????????clk???????:?IN?STD_LOGIC; ?????????password??:?IN?STD_LOGIC_VECTOR(15?DOWNTO?0);--当前输入密码 ?????????HEX0??????:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0); ?????????HEX1??????:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0); ?????????HEX2??????:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0); ?????????HEX3??????:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0) ??????); ???END?COMPONENT; ???--例化密码输入模块 ???COMPONENT?mima_input?IS ??????PORT?( ?????????clk???????:?IN?STD_LOGIC; ?????????key_0?????:?IN?STD_LOGIC; ?????????key_1?????:?IN?STD_LOGIC; ?????????key_2?????:?IN?STD_LOGIC; ?????????key_3?????:?IN?STD_LOGIC; ?????????key_4?????:?IN?STD_LOGIC; ?????????key_5?????:?IN?STD_LOGIC; ?????????key_6?????:?IN?STD_LOGIC; ?????????key_7?????:?IN?STD_LOGIC; ?????????key_8?????:?IN?STD_LOGIC; ?????????key_9?????:?IN?STD_LOGIC; ???delect????:?IN?STD_LOGIC;--删除键 ?????????current_state?:?IN?STD_LOGIC_VECTOR(2?DOWNTO?0); ?????????password??:?OUT?STD_LOGIC_VECTOR(15?DOWNTO?0) ??????); ???END?COMPONENT; ???--例化密码锁控制模块 ???COMPONENT?mimasuo_ctrl?IS ??????PORT?( ?????????clk???????:?IN?STD_LOGIC; ?????????password??:?IN?STD_LOGIC_VECTOR(15?DOWNTO?0); ?????????correct_password?:?IN?STD_LOGIC_VECTOR(15?DOWNTO?0); ?????????confirm???:?IN?STD_LOGIC; ?????????modify????:?IN?STD_LOGIC; ?????????lock_up???:?IN?STD_LOGIC; ?????????led_open??:?OUT?STD_LOGIC; ?????????current_state?:?OUT?STD_LOGIC_VECTOR(2?DOWNTO?0) ??????); ???END?COMPONENT; ??? ???--定义信号 ???SIGNAL?current_state????:?STD_LOGIC_VECTOR(2?DOWNTO?0); ???SIGNAL?password?????????:?STD_LOGIC_VECTOR(15?DOWNTO?0); ???SIGNAL?correct_password?:?STD_LOGIC_VECTOR(15?DOWNTO?0); ???SIGNAL?led_open_signal???:?STD_LOGIC; BEGIN ???led_open?<=?led_open_signal; ??? ???--调用密码输入模块
代码文件(付费下载):
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=687
阅读全文
906