宠物智能投喂器 FPGA 设计 VHDL Quartus
名称:宠物智能投喂器 FPGA 设计 VHDL Quartus
软件:Quartus
语言:VHDL
开发板/平台:DE2-115
功能介绍
本设计实现了一个基于 FPGA 的宠物智能投喂器控制系统,使用 VHDL 编写并在 Quartus 环境下完成工程实现。系统通过 DE2-115 开发板上的拨码开关、按键、LED 和八位七段数码管完成投喂参数设置、倒计时显示、投喂状态指示和缺粮报警等功能。 用户可以通过拨码开关设置投喂次数和投喂重量档位,其中投喂次数支持 1~4 次选择,重量档位支持 20g、40g、60g、80g、100g 等显示配置。按键部分包含启动、时间增加、时间减少和手动应急投喂,便于演示定时投喂和人工触发投喂两类场景。 显示部分使用 HEX0~HEX7 数码管显示重量、次数和时间信息,LED0 用于缺粮报警,LED1 用于喂食状态提示。整体功能贴近“定时、定量、缺粮提醒”的智能投喂器控制需求,适合作为 FPGA 课程设计、VHDL 综合设计和 DE2-115 板级实验参考。运行环境
开发语言:VHDL 开发软件:Quartus 目标开发板:DE2-115 主要硬件资源:50MHz 时钟、KEY 按键、SW 拨码开关、LED 指示灯、HEX 七段数码管 顶层模块:pet_smart_feeder设计思路
系统采用模块化 VHDL 设计,把投喂控制、时间节拍、数码管显示和顶层板级连接分开实现。顶层 pet_smart_feeder 负责连接 DE2-115 的按键、拨码、LED 和 HEX 数码管资源,并通过泛型参数设置 1 秒分频系数、默认倒计时时间和单次投喂持续时间,便于在仿真和上板时分别调整时间尺度。 投喂逻辑以用户设置为核心:SW1~SW0 用于选择投喂次数,SW4~SW2 用于选择投喂重量档位,KEY0 用于启动定时流程,KEY1/KEY2 用于调整投喂间隔时间,KEY3 用于手动应急投喂。系统根据倒计时状态控制投喂输出,在投喂阶段点亮喂食指示 LED,并将当前设置和时间信息送入显示模块。 剩余粮量检测通过 SW5 输入模拟,高电平表示缺粮状态,控制逻辑驱动 LED0 输出缺粮报警。这样的设计把实际传感器接口抽象为单路数字输入,便于课程设计、实验演示和后续扩展到真实粮仓检测开关。模块结构
工程主要模块包括: pet_smart_feeder:顶层模块,连接时钟、复位、按键、拨码、LED 和八位数码管,并协调各功能模块。 tick_gen:时间节拍产生模块,根据系统时钟产生秒级节拍,用于倒计时和定时控制。 feeder_control:投喂控制核心模块,处理启动、时间调整、手动投喂、缺粮检测、投喂次数和重量设置等逻辑。 display_driver:显示驱动模块,将时间、次数、重量等数据转换为七段数码管显示内容。 LED7S:七段数码管译码模块,用于数字到段码的转换。 tb_pet_smart_feeder:测试平台,用于对顶层控制流程进行仿真验证。开发板验证
工程面向 DE2-115 开发板使用,顶层端口已经按照板载资源进行管脚约束,包含 50MHz 系统时钟、低有效复位拨码、KEY0~KEY3 按键、SW0~SW5 拨码输入、LED0/LED1 指示灯以及 HEX0~HEX7 八位七段数码管显示输出。约束文件可直接用于 Quartus 工程编译和下载验证,适合在 DE2-115 上观察按键启动、手动投喂、缺粮报警、次数/重量设置和倒计时显示等功能。仿真图/仿真说明/设计文档图片
工程包含 tb_pet_smart_feeder 测试平台,可用于验证投喂器顶层逻辑的启动、参数设置、倒计时、投喂输出和缺粮报警流程。Quartus 工程中包含综合、布局布线、时序分析和下载文件生成结果,可作为学习 VHDL 模块化设计与 FPGA 板级实现流程的参考。部分代码
以下展示顶层模块 pet_smart_feeder 的部分代码,完整源码请下载压缩包查看。
entity pet_smart_feeder is
generic(
G_1S_DIV: integer := 50000000;
G_COUNTDOWN_SECONDS: integer := 600;
G_FEED_SECONDS: integer := 3
);
port(
clk: in std_logic; -- 50MHz系统时钟
rst_n: in std_logic; -- 低电平复位SW17
start_key_n: in std_logic; -- 启动键(低有效)key0
sw_times: in std_logic_vector(1 downto 0); -- 次数拨码SW1~0:00→1次,01→2次,10→3次,11→4次
sw_weight: in std_logic_vector(2 downto 0); -- 重量拨码SW4~2:000→20/001→40/010→60/011→80/100→100g
time_key_add_n: in std_logic; -- 时间加键(低有效)key1
time_key_sub_n: in std_logic; -- 时间减键(低有效)key2
feed_key_n: in std_logic; -- 手动应急喂键(低有效)key3
sw_check: in std_logic; -- 剩余粮量检测,高电平缺粮 SW5
food_shortage_led: out std_logic; -- 缺粮报警LED输出 LED0
food_feed_led: out std_logic; -- 喂食LED输出 LED1
HEX0: out std_logic_vector(6 downto 0); -- 数码管HEX0段码(重量个位)
HEX1: out std_logic_vector(6 downto 0); -- 数码管HEX1段码(重量十位)
HEX2: out std_logic_vector(6 downto 0); -- 数码管HEX2段码(重量百位)
HEX3: out std_logic_vector(6 downto 0); -- 数码管HEX3段码(次数N)
HEX4: out std_logic_vector(6 downto 0); -- 数码管HEX4段码(分钟个位)
HEX5: out std_logic_vector(6 downto 0); -- 数码管HEX5段码(分钟十位)
HEX6: out std_logic_vector(6 downto 0); -- 数码管HEX6段码(小时个位)
HEX7: out std_logic_vector(6 downto 0) -- 数码管HEX7段码(小时十位)
);
end pet_smart_feeder;
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 宠物智能投喂器 FPGA 设计 VHDL Quartus
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 宠物智能投喂器 FPGA 设计 VHDL Quartus
发表评论
模板文件不存在: ./template/plugins/comment/pc/index.htm