当前位置: 首页 > news >正文

宠物智能投喂器 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;

代码获取:点击下方公众号卡片

http://www.cnnetsun.cn/news/2749204.html

相关文章:

  • 如何快速解锁QQ音乐加密文件:qmcflac2mp3音频格式转换终极指南
  • 从零实现手势识别:基于加速度传感器的舞蹈动作评分系统
  • 告别无效改稿内耗:okbiye 以分段式自研体系重塑毕业生论文全流程撰写逻辑
  • 百度网盘秒传脚本完整指南:3分钟实现永久文件分享的终极教程
  • 从‘防抖’到‘动态迟滞’:在LTspice里亲手调试一个抗干扰比较器电路
  • 高效Live2D资源提取工具:Unity AssetBundle深度解析与自动化迁移方案
  • 深入理解kNN算法:从几何直觉到工程实践
  • ROS参数服务器实战:从命令行到C++/Python代码,手把手教你玩转param配置
  • 树莓派部署私有游戏服务器:从零搭建Pretend You‘re Xyzzy
  • Cura 3D打印切片软件:从零到精通的完整实践指南
  • 基于Arduino与挑战-应答机制构建高安全无线遥控系统
  • 豆包2026深度实战指南:四大智能能力域与工作流嵌入方法
  • Scratch编程实战:从零制作跨平台“狗追松鼠”游戏
  • 你的工作,分我一半!Kimi Work Beta 版想替你
  • Headroom-AI 上下文压缩实战指南
  • Windows 11右键菜单终极自定义指南:快速打造个性化高效工作流
  • 从零搭建Arduino兼容板:深入理解ATmega328P最小系统与硬件原理
  • 英雄联盟终极效率工具:如何用League Akari自动化你的游戏体验
  • Typora插件终极指南:62个插件如何彻底改变你的Markdown写作体验
  • 大麦猫眼纷玩岛三平台回流票自动盯梢工具(Python轻量版)
  • FANUC CNC数据采集实战:一个月填坑记,从连接失败到关键参数获取(附C++代码)
  • 3分钟掌握原神成就数据导出:YaeAchievement完全指南
  • 构建多轮对话与记忆:让知识库问答系统具备上下文能力
  • 多语言客服机器人架构设计:支持混合语言输入的实战方案
  • 5步掌握pk3DS:打造专属宝可梦世界的终极指南
  • 创客电子设计实战:从模块化思维到智能生活应用
  • 从“AI帮你写”到“AI替你干”:Java开发的智能化拐点到了
  • 基于ESP8266与Firebase的物联网光敏传感器开发实战
  • 提升杀毒软件开发效率:用快马平台自动生成文件遍历与报告模块
  • 对比Rust特征静态分发与动态分发在实现Rust宏编程元编程原理解析时的机器码指令缓存命中表现