• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于FPGA的3位十进制密码锁VHDL代码Quartus仿真

07/19 08:06
355
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240304152346213.doc

共1个文件

名称:基于FPGA的3位十进制密码锁VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

借助EDA工具和设计方法,学习硬件描述语言VHDL用编程的方法来设计电路,在QUARTUSⅡ软件环境中,进行电路的测试和仿真分析。

系统功能要求:

1.采用3位十进制数字作为内置密码,修改密码必须重置逻辑;

2.系统通电后必须关上密码锁门,如果输入密码正确,密码器将启动开启装置,用绿色LED灯表示;

3.如果密码错误,则红色LED灯报警;

4.如果按错号码,可在开锁前按启动键消除输入而重新输入密码;

5.等事务处理完毕后,按上锁键使系统进入安锁等待状态。

6.系统分为控制器和受控电路两部分,受控电路由消抖电路、编码器比较器数据选择器(密码预置)、触发器等模块组成。

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

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. 管脚分配

6. Testbench

7. 仿真图

整体仿真图

显示模块

密码输入模块

密码锁控制模块

密码修改模块

部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
--顶层模块
ENTITY mimasuo IS
   PORT (
      clk_in       : IN STD_LOGIC;--50MHz
      
      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;--绿灯,开锁指示信号,高电平表示开锁,低电平表示锁住
led_red  : OUT STD_LOGIC;--红灯
      
      HEX0      : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--数码管显示密码
      HEX1      : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--数码管显示密码
      HEX2      : OUT STD_LOGIC_VECTOR(6 DOWNTO 0)--数码管显示密码
   );
END mimasuo;
ARCHITECTURE trans OF mimasuo IS
--分频模块
COMPONENT CLOCK IS-- Divide 50MHz to 100Hz
--GENERIC(D : INTEGER := 50);--仿真时改小为50加快仿真速度,实际上板验证时改为500000
GENERIC(D : INTEGER := 500000);--仿真时改小为50加快仿真速度,实际上板验证时改为500000
   PORT(CLK: IN STD_LOGIC;
         DAV: OUT STD_LOGIC);
   END COMPONENT;
   --例化重置模块
   COMPONENT reset_password IS
      PORT (
         clk       : IN STD_LOGIC;
         password  : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
         correct_password : OUT STD_LOGIC_VECTOR(11 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(11 DOWNTO 0);--当前输入密码
HEX0      : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--数码管显示密码
HEX1      : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--数码管显示密码
HEX2      : OUT STD_LOGIC_VECTOR(6 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(11 DOWNTO 0)
      );
   END COMPONENT;
   --例化密码锁控制模块
   COMPONENT mimasuo_ctrl IS
      PORT (
         clk       : IN STD_LOGIC;
         password  : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
         correct_password : IN STD_LOGIC_VECTOR(11 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;

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=685

  • 2-240304152346213.doc
    下载

相关推荐