基于FPGA的通用电子密码锁VHDL代码Quartus仿真

名称:基于FPGA的通用电子密码锁VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

任务

使用一片CPLD/FPGA设计实现一个具有较高安全性和较低成本的通用电子密

码锁,其具体功能要求如下:←

1)数码输入:每按下一个数字键,就输入一个数值,并在显示器上的最右方显示出该数值,同时将先前输入的数据依序左移一个数字位置。←

(2)数码清除:按下此键可清除前面所有的输入值,清除成为“0000

(3)密码更改:按下此键时会将目前的数字设定成新的密码。←

(4)激活电锁:按下此键可将密码锁上锁。←

(5)解除电锁:按下此键会检査输入的密码是否正确,密码正确即开锁。←


FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com


演示视频:

设计文档:

设计文档.doc

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

整体仿真图

显示模块

密码输入模块

密码锁控制模块

密码修改模块


部分代码展示:

--设计一个四位的电子密码锁,
--每按下一个数字键,就输入一个数字,
--并在显示器上显示该数值,同时将先前输入的数据左移。
--密码清除(清除结果为0000),
--密码更改(按下更改键可将目前的密码设定为新密码),
--密码上锁(激活电锁)
--解除电锁(按下解除首先检查密码是否正确,密码正确就开锁)功能。
LIBRARY ieee;
   USE ieee.std_logic_1164.all;
--顶层模块
ENTITY mimasuo IS
   PORT (
      clk       : IN STD_LOGIC;--时钟
      
      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(7 DOWNTO 0);--数码管显示密码
      HEX1      : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管显示密码
      HEX2      : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管显示密码
      HEX3      : OUT STD_LOGIC_VECTOR(7 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);
         modify   : 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(7 DOWNTO 0);--数码管显示密码
      HEX1      : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管显示密码
      HEX2      : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管显示密码
      HEX3      : OUT STD_LOGIC_VECTOR(7 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;
   
   --调用密码输入模块
   i_mima_input : mima_input
      PORT MAP (
         clk            => clk,
         key_0          => key_0,
         key_1          => key_1,
         key_2          => key_2,
         key_3          => key_3,
         key_4          => key_4,
         key_5          => key_5,
         key_6          => key_6,
         key_7          => key_7,
         key_8          => key_8,
         key_9          => key_9,
   delect         => delect,
         current_state  => current_state,
         password       => password
      );

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 基于FPGA的通用电子密码锁VHDL代码Quartus仿真

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员