名称:基于FPGA的3位十进制密码锁VHDL代码Quartus仿真
软件:Quartus
语言:VHDL
代码功能:
借助EDA工具和设计方法,学习硬件描述语言VHDL用编程的方法来设计电路,在QUARTUSⅡ软件环境中,进行电路的测试和仿真分析。
系统功能要求:
1.采用3位十进制数字作为内置密码,修改密码必须重置逻辑;
2.系统通电后必须关上密码锁门,如果输入密码正确,密码器将启动开启装置,用绿色LED灯表示;
3.如果密码错误,则红色LED灯报警;
4.如果按错号码,可在开锁前按启动键消除输入而重新输入密码;
5.等事务处理完毕后,按上锁键使系统进入安锁等待状态。
6.系统分为控制器和受控电路两部分,受控电路由消抖电路、编码器、比较器、数据选择器(密码预置)、触发器等模块组成。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. 管脚分配
6. Testbench
7. 仿真图
整体仿真图
显示模块
密码输入模块
密码锁控制模块
密码修改模块
部分代码展示:
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; --顶层模块 ENTITY?mimasuo?IS ???PORT?( ??????clk_in???????:?IN?STD_LOGIC;--50MHz ?????? ??????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;--确认键(开锁) ??????modify????:?IN?STD_LOGIC;--修改键(更改) ??????lock_up???:?IN?STD_LOGIC;--锁住键(上锁) ???delect????:?IN?STD_LOGIC;--删除键(清除) ??????led_open??:?OUT?STD_LOGIC;--绿灯,开锁指示信号,高电平表示开锁,低电平表示锁住 led_red??:?OUT?STD_LOGIC;--红灯 ?????? ??????HEX0??????:?OUT?STD_LOGIC_VECTOR(6?DOWNTO?0);--数码管显示密码 ??????HEX1??????:?OUT?STD_LOGIC_VECTOR(6?DOWNTO?0);--数码管显示密码 ??????HEX2??????:?OUT?STD_LOGIC_VECTOR(6?DOWNTO?0)--数码管显示密码 ???); END?mimasuo; ARCHITECTURE?trans?OF?mimasuo?IS --分频模块 COMPONENT?CLOCK?IS--?Divide?50MHz?to?100Hz --GENERIC(D?:?INTEGER?:=?50);--仿真时改小为50加快仿真速度,实际上板验证时改为500000 GENERIC(D?:?INTEGER?:=?500000);--仿真时改小为50加快仿真速度,实际上板验证时改为500000 ???PORT(CLK:?IN?STD_LOGIC; ?????????DAV:?OUT?STD_LOGIC); ???END?COMPONENT; ???--例化重置模块 ???COMPONENT?reset_password?IS ??????PORT?( ?????????clk???????:?IN?STD_LOGIC; ?????????password??:?IN?STD_LOGIC_VECTOR(11?DOWNTO?0); ?????????correct_password?:?OUT?STD_LOGIC_VECTOR(11?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(11?DOWNTO?0);--当前输入密码 HEX0??????:?OUT?STD_LOGIC_VECTOR(6?DOWNTO?0);--数码管显示密码 HEX1??????:?OUT?STD_LOGIC_VECTOR(6?DOWNTO?0);--数码管显示密码 HEX2??????:?OUT?STD_LOGIC_VECTOR(6?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; ???delect????:?IN?STD_LOGIC;--删除键 ?????????current_state?:?IN?STD_LOGIC_VECTOR(2?DOWNTO?0); ?????????password??:?OUT?STD_LOGIC_VECTOR(11?DOWNTO?0) ??????); ???END?COMPONENT; ???--例化密码锁控制模块 ???COMPONENT?mimasuo_ctrl?IS ??????PORT?( ?????????clk???????:?IN?STD_LOGIC; ?????????password??:?IN?STD_LOGIC_VECTOR(11?DOWNTO?0); ?????????correct_password?:?IN?STD_LOGIC_VECTOR(11?DOWNTO?0); ?????????confirm???:?IN?STD_LOGIC; ?????????modify????:?IN?STD_LOGIC; ?????????lock_up???:?IN?STD_LOGIC; ?????????led_open??:?OUT?STD_LOGIC; ?????????current_state?:?OUT?STD_LOGIC_VECTOR(2?DOWNTO?0) ??????); ???END?COMPONENT;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=685
341