名称:基于FPGA的6位的电子密码锁VHDL代码Quartus AX301开发板
软件:Quartus
语言:VHDL
代码功能:
6位的电子密码锁:
1.每按下一个数字键,就输入一个数字,并在显示器上显示该数值,同时将先前输入的数据左移。此外,包含密码清除(密码右移),密码更改(可以通过按键修改新密码),密码上锁和密码解除(按下解除首先检查密码是否正确,密码正确就开锁)功能。
2.密码连续错误3次报警。
3.使用4x4矩阵键盘输入数字。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在AX301开发板(加4x4矩阵键盘)验证,AX301开发板如下,其他开发板可以修改管脚适配:
设计文档:
1、工程文件
2、程序文件
3、程序编译
4、RTL图
5、管脚分配
6、仿真图
报警仿真
密码输入仿真
控制仿真
部分代码展示:
LIBRARY ieee; USE ieee.std_logic_1164.all; --显示模块 ENTITY display IS PORT ( clk : IN STD_LOGIC; password : IN STD_LOGIC_VECTOR(23 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 display; --一共4位密码--输入数据显示 ARCHITECTURE behave OF display IS BEGIN --数码管译码 PROCESS (clk) BEGIN IF (clk'EVENT AND clk = '1') THEN CASE password(15 DOWNTO 12) IS--密码第1位 WHEN "0000" => HEX3 HEX3 HEX3 HEX3 HEX3 HEX3 HEX3 HEX3 HEX3 HEX3 END CASE; END IF; END PROCESS; --数码管译码 PROCESS (clk) BEGIN IF (clk'EVENT AND clk = '1') THEN CASE password(11 DOWNTO 8) IS--密码第2位 WHEN "0000" => HEX2 HEX2 HEX2 HEX2 HEX2 HEX2 HEX2 HEX2 HEX2 HEX2 END CASE; END IF; END PROCESS; --数码管译码 PROCESS (clk) BEGIN IF (clk'EVENT AND clk = '1') THEN CASE password(7 DOWNTO 4) IS--密码第3位 WHEN "0000" => HEX1 HEX1 HEX1 HEX1 HEX1 HEX1 HEX1 HEX1 HEX1 HEX1 END CASE; END IF; END PROCESS;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=682
阅读全文
530