名称:基于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 ISPORT (clk : IN STD_LOGIC;--时钟key_0 : IN STD_LOGIC;--按键输入0key_1 : IN STD_LOGIC;--按键输入1key_2 : IN STD_LOGIC;--按键输入2key_3 : IN STD_LOGIC;--按键输入3key_4 : IN STD_LOGIC;--按键输入4key_5 : IN STD_LOGIC;--按键输入5key_6 : IN STD_LOGIC;--按键输入6key_7 : IN STD_LOGIC;--按键输入7key_8 : IN STD_LOGIC;--按键输入8key_9 : IN STD_LOGIC;--按键输入9confirm : 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 ISPORT (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 ISPORT (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 ISPORT (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 ISPORT (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
源代码
扫描文章末尾的公众号二维码