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

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

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

2-24030416235V21.doc

共1个文件

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

软件:Quartus

语言:VHDL

代码功能:

电子密码锁要求

(1)如果按下数字键,第一个数字会从显示器的最右端开始显示,此后每新按一个数字时,显示器上的数字必须左移一格,以便将新的数字显示出来。

(2)假如要更改输入的数字,可以按倒退按键来清除前一个输入的数字,或者按清除键清除所有输入的数字,再重新输入四位数。

(3)由于这里设计的是一个四位的电子密码锁,所以当输入的数字键超过四个时,电路不予理会,而且不再显示第四个以后的数字。

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

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. 管脚分配

5. 仿真图

密码输入模块

控制模块

显示模块

整体仿真

部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
--密码锁控制模块
ENTITY mimasuo_ctrl IS
   PORT (
      clk               : IN STD_LOGIC;
      password          : IN STD_LOGIC_VECTOR(15 DOWNTO 0);--输入密码
      current_num       : IN STD_LOGIC_VECTOR(2 DOWNTO 0);--当前输入密码个数
  dis_password      : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);--密码输出到数码管
      led_open          : OUT STD_LOGIC--开锁指示灯
   );
END mimasuo_ctrl;
ARCHITECTURE trans OF mimasuo_ctrl IS
   SIGNAL  correct_password  : STD_LOGIC_VECTOR(15 DOWNTO 0):=x"1234";--预设正确密码为1234  
   SIGNAL  in_password  : STD_LOGIC_VECTOR(15 DOWNTO 0):=x"0000";--输入最终密码
   SIGNAL led_open_buf : STD_LOGIC := '0';
BEGIN
   PROCESS (clk)
   BEGIN
      IF (clk'EVENT AND clk = '1') THEN   
IF(current_num<="100")THEN--输入4个数字
in_password<=password;--输入最终密码
END IF;
      END IF;
   END PROCESS;
   
   dis_password<=in_password;
   
   --控制开锁指示灯
   PROCESS (clk)
   BEGIN
      IF (clk'EVENT AND clk = '1') THEN
         IF (in_password = correct_password) THEN
            led_open_buf <= '1';--高电平表示开锁
         ELSE
            led_open_buf <= '0';
         END IF;
      END IF;
   END PROCESS;
   led_open <= led_open_buf;--输出开锁指示灯
   
END trans;

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

  • 2-24030416235V21.doc
    下载

相关推荐