扫码加入

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

基于FPGA的数字锁控制电路VHDL代码Quartus仿真

2025/07/23
680
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-24050H00S5922.doc

共1个文件

名称:基于FPGA的数字锁控制电路VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

任务及要求:

硬件描述语言VHDL是一种用形式化方法描述数字电路和系统的语言。利用这种语言,数字电路系统的设计可以从上层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示复杂的数字系统。然后,利用电子设计自动化(EDA)工具,逐层进行仿真验证。

设计一个用于数字锁的控制电路,功能要求如下:

1.开锁代码为二位十进制数(BCD码表示),当输入代码的位数和位值与锁内给定的密码一致,且按规定程序开锁时,方可开锁,并点亮开锁指示灯(用输出高电平表示)。否则,系统进入“错误”状态,发出报警信号。

2.开锁程序由设计者确定,并要求锁内给定的密码是可调的。

3.报警方式是点亮指示灯(输出高电平),直到输入复位信号,报警才停止。

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

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

仿真图为:先输入初始密码12,开锁,开锁指示灯亮。按下修改密码按键,输入25,确认后将密码修改为25。再输入12,此时无法开锁,密码错误,报警。按下报警复位按键,清除报警。再输入25,确认,开锁,开锁指示灯亮。

部分代码展示:

--2位的电子密码锁
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;--确认键
      reset     : IN STD_LOGIC;--重置键
      modify    : IN STD_LOGIC;--修改键
      lock_up   : IN STD_LOGIC;--锁住键
      
      alarm     : OUT STD_LOGIC;--报警
      led_open  : OUT STD_LOGIC;--开锁指示信号,高电平表示开锁,低电平表示锁住
      
      HEX0      : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管显示
      HEX1      : 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(7 DOWNTO 0);
         correct_password : OUT STD_LOGIC_VECTOR(7 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(7 DOWNTO 0);--当前输入密码
         HEX0      : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
         HEX1      : 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;
         current_state : IN STD_LOGIC_VECTOR(2 DOWNTO 0);
         password  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
      );
   END COMPONENT;
   --例化密码锁控制模块
   COMPONENT mimasuo_ctrl IS
      PORT (
         clk       : IN STD_LOGIC;
         password  : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
         correct_password : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
         confirm   : IN STD_LOGIC;
         reset     : IN STD_LOGIC;
         modify    : IN STD_LOGIC;
alarm     : OUT 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(7 DOWNTO 0);
   SIGNAL correct_password : STD_LOGIC_VECTOR(7 DOWNTO 0);
   SIGNAL led_open_signal   : STD_LOGIC;
   SIGNAL HEX0_signal       : STD_LOGIC_VECTOR(7 DOWNTO 0);
   SIGNAL HEX1_signal       : STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN

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

  • 2-24050H00S5922.doc
    下载

相关推荐