名称:基于FPGA的电子密码锁的设计VHDL代码Quartus仿真(文末获取)
软件:Quartus
语言:VHDL
代码功能:
电子密码锁的设计
设计任务:
1.密码输入:每按下一个数字键,就输入一个数值,并在显示器上显示该数值,同时将先前输入的数据依次左移一位;
2.密码清除:按下清除键可清除前面所有的输入值,清除结果为“0000”;
3.密码更改:按下更改键可将目前的数码设定为新的密码;
4.密码上锁:按下上锁键密码锁上锁;
5. 密码解除:按下解除键首先检查输入密码是否正确,密码正确就开锁。
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. 管脚分配
6. Testbench
7. 仿真图
整体仿真图
显示模块
密码输入模块
密码锁控制模块
密码修改模块
部分代码展示:文章来源:https://www.toymoban.com/news/detail-839819.html
--设计一个四位的电子密码锁, --每按下一个数字键,就输入一个数字, --并在显示器上显示该数值,同时将先前输入的数据左移。 --此外,包含密码清除(清楚结果为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; --调用密码输入模块
源代码
扫描文章末尾的公众号二维码文章来源地址https://www.toymoban.com/news/detail-839819.html
到了这里,关于基于FPGA的电子密码锁的设计VHDL代码Quartus仿真的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!