名称:基于FPGA的数字锁控制电路VHDL代码Quartus仿真(文末获取)
软件:Quartus
语言:VHDL
代码功能:
任务及要求
硬件描述语言VHDL是一种用形式化方法描述数字电路和系统的语言。利用这种语
,数字电路系统的设计可以从上层到下层(从抽象到具体)逐层描述自己的设计思
想,用一系列分层次的模块来表示复杂的数字系统。然后,利用电子设计自动化(ED
A)工具,逐层进行仿真验证。设计一个用于数字锁的控制电路,功能要求如下
1.开锁代码为二位十进制数(BCD码表示),当输入代码的位数和位值与锁内给定
的密码一致,且按规定程序开锁时,方可开锁,并点亮开锁指示灯(用输出高电平表示)。否则,系统进入“错误”状态,发出报警信号。
2.开锁程序由设计者确定,并要求锁内给定的密码是可调的。
3.报警方式是点亮指示灯(输出高电平),直到输入复位信号,报警才停止。
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
源代码
扫描文章末尾的公众号二维码