当前位置: 首页 > 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.rkmt.cn/news/1483820.html

相关文章:

  • [从0开始学Java|第二十七天]IO(异常File)
  • Randall-Sundrum膜世界中的紧凑物体构建与稳定性分析
  • STM32F4的Flash读写避坑指南:从扇区选择到数据安全,我的踩坑记录
  • AI 制造 AI 的奇点:深度解析“递归自我改进(RSI)”
  • ESP32 ADC测量不准?深入排查Wi-Fi干扰、供电噪声与代码配置(避坑指南)
  • 软件工程期末自救指南:避开这10个高频易错点,轻松拿下简答题和名词解释
  • 拼多多商品图片视频批量采集:整店自动分类与高清原图
  • ёRadio显示配置全攻略:OLED、TFT屏幕驱动与界面定制
  • 操作系统知识点
  • SpringBoot+Vue书店管理系统源码+论文
  • 别再只把DBC当配置文件了!聊聊它在Autosar CAN开发中的三个隐藏用法(附Vector CANdb++实操)
  • 从PCB布线到天线设计:工程师必懂的传输线理论实战避坑指南
  • 从一张黑白方块到机器人视觉:手把手教你用Apriltag TAG16H5做位姿估计(OpenCV+Pytho
  • Pluto SDR + MATLAB 无线通信入门:从零搭建你的第一个模拟收发系统(避坑AGC与数据帧)
  • 用51单片机玩转AT24C02 EEPROM:手把手教你I2C时序与代码调试(附Proteus仿真)
  • 厂房设备整体搬迁,找对团队省心又高效
  • 用 React 写视频?Remotion 这个库把前端和后期的饭碗一起端了
  • 从PCB布线到天线设计:深入浅出聊聊‘特性阻抗Z0’为什么是射频工程师的命根子
  • Weka数据预处理实战:用‘Discretize’滤镜搞定连续数据离散化,让模型更稳定(以Iris数据集为例)
  • 雪亮工程全面升级|国标GB28181视频平台EasyGBS赋能视频监控,筑牢基层治理 “千里眼”
  • 群晖NAS上部署Adminer全记录:从MariaDB到Elasticsearch,我的全能数据库管理面板搭建心得
  • 从游戏引擎到机器人控制:反对称矩阵这个‘数学工具’到底怎么用?
  • 告别Swing丑界面!用FlatLaf 1.6.5给你的Java桌面应用换上IDEA同款皮肤(附Maven/Gradle配置)
  • 从硬件视角拆解SR-IOV:一张物理网卡如何‘分身’成256个虚拟设备?
  • 群晖Docker小白也能搞定的RuoYi-flowable工作流部署(附完整避坑指南)
  • 手把手教你配置TMS320F28335的SPI自测模式(附完整代码与避坑指南)
  • 保姆级教程:用Docker Compose一键部署qBittorrent+Transmission+IYUU Plus辅种全家桶
  • 别再只会console.log了!QML调试的6个隐藏技巧(含性能追踪实战)
  • 目前有实力的热风机实力厂家推荐,矿用热风机/电热风机/热风机/工业热风机,热风机厂商选哪家 - 品牌推荐师
  • 不止OBD4:通过SE16N查T077S表,深入理解SAP总账科目组的底层逻辑