软件:Quartus
语言:VHDL
代码功能:
设计一个基于FPGA的紫外线消毒灯控制器
设计要求:
1、系统主要外设:按键1个(自恢复式)、消毒灯1个(Led模拟)、系统时钟(1KHz);
2、系统主要功能:当用户短按一次按键,消毒灯亮15分钟。连续按键两次(3秒钟内),消毒灯常亮。任何状态下按住按键保持3秒,消毒灯熄灭。
3、设计语言:VHDL
(说明:紫外线灯控制端口高电平为熄灭状态,低电平为点亮状态。按键未按下时为高电平,按下时为低电平)
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图(系统框图)
状态机视图
5. Testbench
6. 仿真图
6.1 整体仿真图
6.2 长按检测模块仿真图
6.3 消毒灯控制模块仿真图
部分代码展示:
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY Disinfection_lamp IS PORT ( clk_1K : IN STD_LOGIC;--1KHz时钟 key : IN STD_LOGIC;--按键,按下低电平 Led : OUT STD_LOGIC--LED消毒灯,低电平亮 ); END Disinfection_lamp; ARCHITECTURE RTL OF Disinfection_lamp IS --按键模块 COMPONENT long_key IS PORT ( clk_1K : IN STD_LOGIC; key : IN STD_LOGIC; long_press : OUT STD_LOGIC ); END COMPONENT; --消毒灯控制模块 COMPONENT lamp IS PORT ( clk_1K : IN STD_LOGIC; key : IN STD_LOGIC; long_press : IN STD_LOGIC; Led : OUT STD_LOGIC ); END COMPONENT; SIGNAL long_press : STD_LOGIC; BEGIN --调用按长按检测模块 i_long_key : long_key PORT MAP ( clk_1K => clk_1K, key => key, long_press => long_press ); --调用消毒灯控制模块 i_lamp : lamp PORT MAP ( clk_1K => clk_1K, key => key, long_press => long_press, Led => Led ); END RTL;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=951
阅读全文
878