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

洗衣机控制系统 FPGA 设计 Verilog Quartus

名称:洗衣机控制系统 FPGA 设计 Verilog Quartus

软件:Quartus

语言:Verilog

开发板/平台:DE2-115

功能介绍

本项目实现了一个基于 FPGA 的洗衣机控制系统,使用 Verilog 编写并在 Quartus 工程中完成设计。系统模拟洗衣机的完整工作流程,包括启动、洗涤、暂停、清洗、暂停、脱水、暂停和结束等阶段,并通过 LED 与数码管直观显示当前状态和剩余时间。 设计支持 4 种工作模式:正常模式、单独洗涤、单独清洗和单独甩干。正常模式用于演示完整洗衣流程,单独模式便于分别验证洗涤、清洗、甩干控制逻辑。用户可通过按键完成复位、启动、模式切换和停止控制,mode_led 用于显示当前模式。 系统使用 50MHz 主时钟,内部实现精确到秒的倒计时控制。4 位数码管以分:秒格式显示剩余时间,LED 分别模拟电机正转、暂停、反转和结束提示。该设计适合用于 FPGA 课程设计、数字逻辑综合实验、状态机设计学习以及开发板综合验证。

运行环境

开发语言:Verilog 开发软件:Quartus 目标开发板:DE2-115 主要时钟:50MHz 工程内容包含 Quartus 工程文件、Verilog 源码、管脚约束、编译输出文件、仿真相关文件和设计文档。

设计思路

系统采用模块化设计思路,将洗衣机控制任务拆分为顶层互联、流程控制和显示驱动三个部分。顶层模块负责统一对外接口,将 50MHz 时钟、复位、启动、模式切换和停止按键接入控制逻辑,同时把控制模块输出的时间数据送入显示模块,最终驱动 LED 和 4 位数码管。 核心控制部分围绕有限状态机实现。系统包含空闲、启动、洗涤、暂停、清洗、脱水、结束以及单独洗涤、单独清洗、单独甩干等状态,通过 start_n、mode_key、stop_key 等按键完成状态切换。正常模式下按洗涤、暂停、清洗、暂停、脱水、暂停、结束的顺序执行;单独模式下则只执行对应功能,便于独立测试或演示某一段流程。 时间控制使用 50MHz 主时钟分频产生 1 秒节拍,再由分钟和秒钟计数器实现倒计时显示。正常模式总流程按分钟秒钟方式显示剩余时间,洗涤、清洗、甩干以及各暂停阶段均由控制模块统一调度。 电机动作通过 LED 进行模拟显示。洗涤阶段按正转、暂停、反转的周期运行;清洗阶段采用另一组正转、暂停、反转节奏;甩干阶段持续正转。结束后 end_led 点亮,提示流程完成。

模块结构

系统主要由 3 个 Verilog 模块组成: 1. wash_machine:顶层模块,负责系统接口定义、显示模块和控制模块的实例化,以及分钟、秒钟等内部信号连接。 2. wash_ctrl:洗衣机控制模块,负责核心状态机、模式选择、倒计时控制、电机动作控制和 LED 状态输出。 3. display:数码管显示模块,负责将分钟、秒钟时间转换为 4 位数码管显示所需的段码输出,用于显示剩余时间。

开发板验证

本设计支持 DE2-115 开发板验证,工程中已完成对应的 Quartus 管脚约束与分配,可直接结合板载按键、LED 和数码管进行功能观察。 上板操作时,先按下复位键使系统进入初始状态。若选择正常洗衣流程,直接按下 start 键,系统开始执行完整流程:洗涤、暂停、清洗、暂停、脱水、暂停并最终结束。运行过程中 4 位数码管显示剩余分钟和秒钟,LED 用于指示正转、暂停、反转以及结束状态。 若需要单独执行洗涤、清洗或甩干,可在复位后通过 mode_key 切换模式,mode_led 显示当前模式:00 为正常模式,01 为单独洗涤,10 为单独清洗,11 为单独甩干。选择模式后按 start 键启动,对单独模式可通过 stop_key 停止。

演示视频

配套演示视频展示了洗衣机控制系统的运行过程,可用于观察复位、启动、模式切换、倒计时显示、LED 状态指示以及结束提示等功能表现。

演示视频请关注公众号后获取对应资料查看。

仿真图/仿真说明/设计文档图片

设计文档中包含工程文件、程序编译、RTL 图、管脚分配、Testbench、整体仿真图、控制模块和显示模块等内容,可用于理解工程结构、状态机实现和显示驱动逻辑。仿真相关文件位于 ModelSim 仿真目录,可作为功能验证和二次修改时的参考。

部分代码

以下展示顶层模块wash_machine的部分代码,完整代码可关注下方公众号卡片获取。

module wash_machine( clk_50M, reset_n, start_n, mode_key, stop_key, end_led, led_1, led_2, led_3, HEX0, HEX1, HEX2, HEX3, mode_led ); input wire clk_50M; // 50MHz 时钟信号 input wire reset_n; // 复位信号,低电平有效 input wire start_n; // 启动按键,低电平有效 input wire mode_key; // 模式切换按键 input wire stop_key; // 停止按键 output wire end_led; // 结束指示灯 output wire led_1; // 电机正转指示灯 output wire led_2; // 电机暂停指示灯 output wire led_3; // 电机反转指示灯 output wire [7:0] HEX0; // 数码管0,显示秒个位 output wire [7:0] HEX1; // 数码管1,显示秒十位 output wire [7:0] HEX2; // 数码管2,显示分个位 output wire [7:0] HEX3; // 数码管3,显示分十位 output wire [1:0] mode_led; // 模式指示灯 wire [7:0] minute_time; // 分钟时间 wire [7:0] second_time; // 秒钟时间 // 实例化显示模块,用于驱动数码管显示剩余时间 display b2v_inst( .clk(clk_50M), .minute_time(minute_time), .second_time(second_time), .HEX0(HEX0), .HEX1(HEX1), .HEX2(HEX2), .HEX3(HEX3)); // 实例化洗衣机控制模块,负责核心逻辑控制 wash_ctrl b2v_inst2( .clk_50M(clk_50M), .reset_n(reset_n), .start_n(start_n), .mode_key(mode_key), .stop_key(stop_key), .end_led(end_led), .led_1(led_1), .led_2(led_2), .led_3(led_3), .minute_out(minute_time), .mode_led(mode_led), .second_out(second_time)); endmodule

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

http://www.jsqmd.com/news/972094/

相关文章:

  • StackGAN-v2架构深度解析:理解堆叠生成对抗网络的秘密
  • STM32F4的Flash读写避坑指南:从扇区选择到数据安全,我的踩坑记录
  • 第二板块:Android 四大组件标准化学理 | 第六篇:四大组件架构总论与 Manifest 规范
  • [从0开始学Java|第二十七天]IO(异常File)
  • Randall-Sundrum膜世界中的紧凑物体构建与稳定性分析
  • 别再手动调格式了!用Jaspersoft Studio 6.2.0搞定PDF报表排版(附常见报错解决)
  • 电商图片下载工具技术原理:从浏览器内核到智能分类
  • 别再为没有PDB文件发愁了:用JetBrains dotPeek搭建本地符号服务器,轻松调试任意NuGet包源码
  • OriginPro 2021b 保姆级教程:三步搞定多曲线填充面积图,告别数据遮盖烦恼
  • 信号处理入门:5分钟搞懂Butterworth滤波器阶数与截止频率怎么选
  • 考研复习 Day 47 | 密码学--第七章 公钥密码(下)
  • 从Wi-Fi信号到音频均衡器:手把手拆解幅频/相频在真实电子设备中的应用
  • ESP32 ADC测量不准?深入排查Wi-Fi干扰、供电噪声与代码配置(避坑指南)
  • ESP32-S3驱动WS2812灯带:从原理图到代码,手把手搞定RMT配置
  • 别再到处找图了!我整理了全套Apriltag TAG16H5高清大图(附Python脚本一键下载)
  • ёRadio显示配置全攻略:OLED、TFT屏幕驱动与界面定制
  • 软件工程期末自救指南:避开这10个高频易错点,轻松拿下简答题和名词解释
  • TVA与MES/SCADA对接关键协议兼容方案
  • 拼多多商品图片视频批量采集:整店自动分类与高清原图
  • 别再被MicroLIB坑了!N32G45X串口打印printf的两种正确打开方式(Keil MDK实战)
  • AI 制造 AI 的奇点:深度解析“递归自我改进(RSI)”
  • 【花雕学编程】Arduino BLDC 之自主避障式辐射侦察机器人
  • 六年之约第二年年度目标
  • SpringBoot+Vue书店管理系统源码+论文
  • 避坑指南:ADS链路预算仿真时,BudNF控件报错或结果不准?可能是你没用对这个隐藏功能
  • 从FLM到烧录器:保姆级教程教你为自制的CMSIS-DAP离线下载器生成专属下载算法
  • 别再混淆了!一文讲透SAP WM里仓储单位SU、HU和Quant的区别与联系
  • 操作系统知识点
  • 多平台电商通用采集技术:一套代码打通1688/淘宝/天猫/拼多多/京东
  • 别再死磕公式了!用Python手搓一个Cartographer概率地图更新模拟器(附代码)