基于 FPGA 的洗衣机控制器的设计
班
姓
学
级:
名:
号:
基于FPGA的洗衣机控制器的设计
摘要:基于 FPGA 的洗衣机控制器设计,主要通过使用 VerilogHDL 语言,
在 Quartus2 上完成电路设计以及程序开发模拟。实现以洗衣机控制器为核心,
加上必要的外围电路,能够对洗衣机工作状态自由控制。全部程序由控制器模块,
分频模块,按键去抖模块,显示译码模块组成,顶层模块使用原理图实现,底层
由 Verilog HDL 语句实现。核心控制器 FPGA 根据控制端口的信号输入,向洗衣
机发出正传,反转,待机信号,并通过数码管和 LED 灯显示当前的工作状态以
及工作时间。该洗衣机控制电路可以方便快捷的实现对洗衣机的控制和状态的显
示功能,同时具有紧急暂停待机功能,保证控制的可靠性,以及洗涤循环次数报
警功能,提高任务精度。
关键词:洗衣机,FPGA,QuartusⅡ,Verilog HDL 语言
目录
一、系统设计······················································3
1 设计要求··················································3
2 总体设计方案··············································3
(1) 设计思路············································3
(2) 系统组成············································4
二、单元硬件电路设计··············································4
1 键盘模块··················································4
2 显示模块··················································4
3 中心控制模块··············································4
三、软件设计······················································5
1 控制模块程序设计··········································6
2 显示译码程序设计··········································6
3 分频模块程序设计··········································6
4 按键去抖程序设计··········································6
四、系统仿真测试··················································7
1 控制模块仿真··············································7
2 显示译码模块仿真··········································9
3 按键去抖模块仿真··········································9
4 分频模块仿真··············································9
附录一 使用说明··················································10
附录二 电路原理图················································10
附录三 程序清单··················································10
一、系统设计
1、设计要求
1.洗衣机的状态为待机 5s→正转 60s→待机 5s→反转 60s→,并用 3 个
LED 灯和 7 段显示器分别表示其工作状态和显示相应工作状态下的时间。
2.可自行设定洗衣机的循环次数,这里设置最大的循环次数为 15 次。
3.具有紧急情况的处理功能。当发生紧急情况时,立即转入待机状态,紧
急情况解除后,继续执行后续步骤;
4.洗衣机设定循环次数递减到零时立即报警,以表示洗衣机设定的循环次
数已经结束
2、总体设计方案
1、设计思路
题目要求设计一个洗衣机控制电路,实现对洗衣机工作状态的控制。
1. 中心控制模块基本实现要求功能,包括计时、LED 输出、电机正反转信
号输出、洗涤循环置数设置。
2. 分频模块实现从高频向低频转换,供中心控制模块使用
3.按键去抖模块,实现对按键的去抖功能。
4. 数码显示电路,将 10 进制时间通过数码管显示出来。
2、系统组成
洗衣机控制电路主要由中心控制模块、按键模块,显示模块,时钟分频模块,
四部分组成组成。
晶 体 振 荡
模块(产生
100Hz 信
号)
键 盘 模 块
(按键,拨
码开关等)
FPGA
显示模块(数码
管,LED 灯等)
报警功能
系统结构框图
二、单元硬件电路设计
1、按键模块
设有 1 个按键:add;1 个拨码开关 start。add 用于初始状态下设置循环次
数,没按一次循环次数加一,start 用于启动和停止洗衣机。
2、显示模块
设有 3 个 LED 灯,两个数码管,一个蜂鸣器。LED 灯用来表示当前状态,数
码管用来表示当前状态所剩余时间。蜂鸣器用来表示洗衣是否完成,洗衣完成时
蜂鸣器发出声音。
3、中心控制模块
中心控制模块是以一片 altera 公司的 Cyclone2 系列 FPGA 为主体,配合一
些外围电路实现的。Cyclone2 系列 FPGA 采用全铜层、低 K 值、1.2 伏 SRAM 工
艺设计,裸片尺寸被尽可能最小的优化。采用 300 毫米晶圆,以 TSMC 成功的 90nm
工艺技术为基础,Cyclone II 器件提供了 4,608 到 68,416 个逻辑单元(LE),
并具有一整套最佳的功能,包括嵌入式 18 比特 x18 比特乘法器、专用外部存储
器接口电路、4kbit 嵌入式存储器块、锁相环(PLL)和高速差分 I/O 能力。
三、软 件 设 计
采用 Quartus2 作为开发工具对可编程逻辑器件 FPGA 的编程,底层由
Verilog HDL 语句实现,顶层使用原理图实现。软件设计由控制模块,分频模块,
按键去抖模块,显示译码模块四部分组成,由于输入时钟为 100 HZ,因此使用
分频模块输出 1HZ 的方波,给控制模块提供每 1s 自加 1 的信号,控制模块输出
的计数时间输入给数码管显示译码模块,通过译码模块定时器的值可以在数码管
上显示,控制模块由此 1hz 的方波信号可以控制洗衣机的正转、反转、待机和报
警工作方式。按键消抖模块的作用是为了消除按键抖动而设立的。
1、控制模块程序设计
控制模块采用有限状态机实现对洗衣机工作状态的控制。
状态转换示意图
s0: 待机状态 s1:正转状态 s2:待机状态 s3:反转状态
软件流程图
循环设置
循环开始
待机 5 秒
循
环
次
数
未
到
正转 60 秒
待机 5 秒
达到循环次数
最大值
反转 60 秒
报警开始
循环结束
2、显示译码程序设计
数码管显示译码模块主要功能是把定时器送来的值译码并通过数码管显示
出来。fpga 的 Verilog HDL 硬件语言是并行的这有别于软件的描述语言扫描方式。
3、按键去抖程序设计
在进行独立按键或者矩阵式按键的设计的时候,我们在按下键盘的时候其实
并不只是按下去而是有一个抖动的过程,就连松手的过程也有抖动,然而这个抖
动通常被人们所忽略,从而导致输入数据的错误和乱码,因此我们必须对按键进
行按键的消抖处理。fpga 的 Verilog HDL 语言是硬件描述语言,主要运用了状
态机和延时的消抖方式。
4、分频模块程序设计
该模块通过输入的 clock 信号(100HZ)分频后得到 1HZ,供给中心控制模
块,其余模块使用未分频的 100HZ 信号。
四、系统仿真测试
1.控制模块仿真
顶层原理图设计
设置循环次数为 3,按 start 后洗衣机开始工作。
循环次数由 3 次减为 2 次,从电机反转到待机状态
待机 5 秒后,电机正转,开始第二次循环
当按下 emergency 紧急状况按钮
计数器 count 保持不变,电机停止转动
当 emergency 结束后电机恢复转动,洗衣机正常工作