基于FPGA的电子密码锁的设计VHDL代码Quartus仿真

名称:基于FPGA的电子密码锁的设计VHDL代码Quartus仿真(文末获取)

软件:Quartus

语言:VHDL

代码功能:

电子密码锁的设计

设计任务:

    1.密码输入:每按下一个数字键,就输入一个数值,并在显示器上显示该数值,同时将先前输入的数据依次左移一位;

    2.密码清除:按下清除键可清除前面所有的输入值,清除结果为“0000”;

    3.密码更改:按下更改键可将目前的数码设定为新的密码;

    4.密码上锁:按下上锁键密码锁上锁;

    5. 密码解除:按下解除键首先检查输入密码是否正确,密码正确就开锁。

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;
   
   --调用密码输入模块
源代码

 扫描文章末尾的公众号二维码

  • 18
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值