基于FPGA的3位十进制密码锁VHDL代码Quartus DE2-115开发板

名称:基于FPGA的3位十进制密码锁VHDL代码Quartus  DE2-115开发板(文末获取)

软件:Quartus

语言:VHDL

代码功能:

借助EDA工具和设计方法,学习硬件描述语言VHDL用编程的方法来设计电路,在QUARTUSⅡ软件环境中,基于EDA实验室的开发装置DE2-115,其FPGA芯片型号为EP4CE115F29C7,进行电路的测试和仿真分析。系统功能要求:采用3位十进制数字作为内置密码,修改密码必须重置逻辑;系统通电后必须关上密码锁门,如果输入密码正确,密码器将启动开启装置,用绿色LED灯表示;如果密码错误,则红色LED灯报警;如果按错号码,可在开锁前按启动键消除输入而重新输入密码;等事务处理完毕后,按上锁键使系统进入安锁等待状态。系统分为控制器和受控电路两部分,受控电路由消抖电路、编码器、比较器、数据选择器(密码预置)、触发器等模块组成

本代码已在DE2-115开发板验证,DE2-115开发板如下,其他开发板可以修改管脚适配:

DE2-115开发板.png

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;
源代码

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

  • 15
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于FPGA数字频率计介绍: 数字频率计是一种基本的测量仪器,是用数字显示被测信号频率的仪器,被测信号可以是正弦波,方波或其它周期性变化的信号。如配以适当的传感器,可以对多种物理量进行测试,比如机械振动的频率,转速,声音的频率以及产品的计件等等。因此,它被广泛应用与航天、电子、测控等领域。 它的基本测量原理是,首先让被测信号与标准信号一起通过一个闸门,然后用计数器计数信号脉冲的个数,把标准时间内的计数的结果,用锁存器锁存起来,最后用显示译码器,把锁存的结果用液晶显示器显示出来。根据数字频率计的基本原理,本文设计方案的基本思想是分为四个模块来实现其功能,即整个数字频率计系统分为分频模块、计数模块、锁存器模块和显示模块等几个单元,并且分别用VHDL对其进行编程,实现了闸门控制信号、计数电路、锁存电路、显示电路等。 而且,本设计方案还要求,被测输入信号的频率范围自动切换量程,控制小数点显示置,并以十进制形式显示。本文详细论述了利用VHDL硬件描述语言设计,并在EDA(电子设计自动化)工具的帮助下,用大规模可编程器件(CPLD)实现数字频率计的设计原理及相关程序。特点是:无论底层还是顶层文件均用VerilogHDL语言编写,避免了用电路图设计时所引起的毛刺现象;改变了以往数字电路小规模多器件组合的设计方法。 整个频率计设计在一块CPLD芯片上,与用其他方法做成的频率计相比,体积更小,性能更可靠。该设计方案对其中部分元件进行编程,实现了闸门控制信号、多路选择电路、计数电路、选电路、段选电路等。 附件内容截图:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值