王恺勋12310803(55%):顶层模块、状态机、时间处理
曾子杉12310733(45%):消抖、数码管显示
团队讨论,了解整体项目框架;大致确定顶层模块和子模块需求,确定所有所需状态
完成状态机设计和实施,完成仿真和上板测试;修改顶层模块和底层模块的时钟频率,使得结果正常符合预期
综合顶层模块与子模块,完成输出设计;项目文档编写;上板测试Debug
-
参数
(1) 出厂设置:智能提醒10s,自清洁10s工作时间,飓风模式10s倒计时返回二档,飓风模式按下menu倒计时5s返回二档,开关机手势模拟有效时间5s
(2)可以通过Time set模式对手势开关有效时间,智能提醒时间,当前时间进行调整
(3)恢复出厂设置按钮可以重新使参数回到(1)出厂设置值
-
开关机
(1)短按power键开机,初始化当前时间,长按3秒power键关机
(2)在关机状态下,按下左键后valid_standard秒(默认5秒)内按下右键开机;在任何开机状态下,按下右键后valid_standard秒(默认5秒)内按下左键关机
-
状态切换(见如下系统结构说明示意图)
-
辅助功能
(1)照明:除关机状态外,任何状态都可以开关灯
(2)时间功能:开机后显示当前时间,可以在待机模式下按下time_set_btn后设置当前时间,智能提醒时间,手势开关有效时间
(3)智能提醒:抽油烟工作模式下会统计抽油烟工作的累计时长,当该工作时长达到指定数值(默认时长为10小时),在待机模式下抽油烟机将通过输出设备提醒用户进行手动清洗或者开启自清洁。每次完成自清洁后抽油烟的累计工作时长自动清零,完成手动清洁后可通过手动开关对该统计值清零
(4)时间查询:在待机模式下按time_check_btn后可以实现查询当前工作时间和手势开关有效时间
系统输入:
input clk, // 系统时钟信号
input btn_power, // 开关机按键
input rst_n, // 恢复出厂设置按键
input btn_menu, // 菜单按键
input btn_confirm, // 确认按键
input [1:0] btn_level, // 档位选择(00自清洁,01一档,10二档,11三档)
input btn_manual_set_work_time, // 手动设置工作时间置0
input btn_light, // 照明按键
input btn_set_time, // 时间设置按键
input btn_check_time, // 时间查看设置
input btn_toggle, // 切换按键
input hand_left, // 手势左键
input hand_right, // 手势右键
input [7:0] btns_time_set, // 时间设置拨码开关
系统输出:
output reg [3:0] state_indicator, // 当前状态指示
output reg light_lighting, // 照明状态(LED)
output light_need_self_cleaning, // 照明状态 (是否需要清洁)
output [7:0] seg_en, // 输出控制信号
output [7:0] seg_out_0, // 输出控制信号0
output [7:0] seg_out_1 // 输出控制信号1
Rangehood_top 顶层模块,接收外部输入,输出最终结果
Debouncer 接收所有外部输入,将其消抖后输出回顶层模块
State_Machine 接收所有消抖后的信号与顶层模块中存储的当前状态,判断下一个状态,输出回顶层模块
reg4 接收来自状态机的下一状态,以一个较慢速时钟储存进顶层模块,方便别的模块功能实现
Clock_divider 时钟分频器
Time_manager 综合管理所有与正计时,倒计时,工作时间累积,超时提醒,时间查询,时间设置的功能
Display_manager 根据Time_manager的输出与当前模式,判断七段数码显示管的输出
手势开关实现开关机:
在关机状态下,按下左键后valid_standard秒(默认5秒)内按下右键开机;在任何开机状态下,按下右键后valid_standard秒(默认5秒)内按下左键关机
可以在待机模式下按下time_set_btn后设置开关机有效时间(不超过99秒)
- 完整的条件分支
确保“if-else”和“case default”分支完整编写,并且敏感列表中方程右侧的变量不被遗漏,以防止生成锁存器错误。
- 多驱动器multiple driven警告
警惕多驱动器问题,综合器无法正确完成综合。
- 复位处理的一致性
小心团队成员之间复位处理的一致性问题(上升沿与下降沿),以避免冲突并确保正确的同步。
- 板上测试的时间预算
为板上测试分配足够的时间,因为在此阶段通常会出现意外的错误。
- 区分阻塞和非阻塞赋值
从一开始就清楚区分阻塞赋值和非阻塞赋值,以避免因临时变化中的单周期延迟而引发潜在的逻辑错误。
- 仿真中的编译阶段问题
在仿真过程中,语法错误或绑定错误可能导致过程停滞在编译阶段,而没有明确的错误报告。要警惕并解决这些问题。
- 实时检测空气质量(如PM2.5、油烟、CO₂浓度)。
- 根据空气质量自动调节净化强度(风扇转速)。
- 检测室内温度,支持制冷、制热模式切换。
- 提供手动模式、自动模式和节能模式切换。
- 显示当前空气质量、温度和系统状态。
- 空气质量检测模块
- 数据解析:将信号转化为数字表示,用于判断空气质量等级(良好、一般、差)。
- 输出:根据空气质量等级,控制风扇转速和净化模式。
- 温度检测与空调控制模块
- 控制逻辑:
- 室温高于设定值 → 制冷模式(驱动制冷装置)。
- 室温低于设定值 → 制热模式(驱动加热器)。
- 温度适宜 → 关闭空调,仅保留空气净化功能。
- 模式切换:支持手动设置温度或使用自动调节。
- 控制逻辑:
- PWM风扇控制模块
- 实现风扇速度调节,通过PWM控制。
- 在空气质量差或高温模式下,提升风扇转速。
- 在节能模式下,降低风扇转速。
- 用户界面模块
- 输入:
- 按键或旋钮,用于手动设置模式、温度和风速。
- 模式指示灯,标识自动、手动或节能模式。
- 输入:
- 报警与提示模块
- 当空气质量过差或设备运行异常时,蜂鸣器报警。
- 提示用户清理过滤器或检查设备。
- 能耗管理模块
- 实时监测设备功率消耗,显示当前能耗。
- 在节能模式下,动态优化净化和空调功能的运行时间。
- 蓝牙连接与远程控制
- 用户通过手机App监控和控制设备状态。
- 实现设备数据上传与远程调试。
- 学习模式
- 记录用户习惯,自动调整空气净化和空调设定。

