1、实 验 报 告实验课程名称 数字逻辑系统设计 实验项目名称 基于 FGPA 的洗衣机自动控制程序年 级 2011 级 专 业 集成电路工程 学 生 姓 名 张少雄 学 号 2011020758 理 学 院实验时间:2012 年 06 月 03 日数字逻辑系统设计贵州大学理学院 11 级集成电路工程 张少雄 学号 2011020758实验名称:基于 FGPA的洗衣机自动控制程序实验要求:使用 Verilog HDL 或 VHDL 语言编程实现全自动洗衣机基本功能实验仪器:FPGA 集成实验箱实验时间:2012 年 5 月 28 日至 2012 年 5 月 30 日实验地点:博学楼 513S实验步
2、骤:一、分析实验要求,确定程序设计思路根据实验要求及实验条件,将程序分为两个模块:100Hz 脉冲产生模块和自动洗涤控制模块。1、100Hz 脉冲产生模块FPGA 集成实验箱内提供 40MHz 的时钟脉冲,而实验要求实现精度为秒的计时,固根据程序简化原则,在不影响用户使用体验的前提下,将自动洗涤控制模块输入时钟调整为100Hz。2、自动洗涤控制模块标准洗涤可分为如下几步:1)待机:等待用户按下“开始”启动洗涤程序。2)注水:正式进入洗涤进程,等待水位到达预设值。3)洗涤:加满水后,电机开始按“正转-暂停- 反转-暂停”循环转动,持续时间为预设值。4)排水:洗涤结束后,自动排水。5)甩干:脏水排
3、干后,自动进行甩干。6)第二到第五步重复三次,洗涤进程结束并通知用户。结合以上分析,本实验采用状态机来实现洗涤步骤。共分为五个状态:await(待机) 、pump(注水) 、wash(洗涤) 、drain(排水) 、spin(甩干)。二、模块端口及参数设置1、100Hz 脉冲产生模块端口及参数输入:clki -本实验为 40MHz 晶振输出:clko -为自动洗涤控制模块提供 100Hz 时钟参数:out -为 reg 型变量,通过 always 块记数赋值实现分频2、自动洗涤控制模块输入:clk -100Hz 时钟rst -复位startk -启动开关wlh -高水位开关,表示注水满wll
4、-低水位开关,表示排水结束输出:pumpk -注水开关wfk, wrk-电机正转与反转开关draink -排水开关spink-甩干开关alartk -警报器,通知用户洗涤完毕参数:state-为 reg 型变量,为五种状态赋值独热码t,t1,t2,tt -为 reg 型变量,分别为洗涤总时间、电机转动时间、甩干时间、洗涤次数3、顶层模块输入、输出与自动洗涤控制模块相同。参数:clklnk-为 wire 型变量,用于连接 100Hz 脉冲产生模块输出 clko 与自动洗涤控制模块输入 clkA W A I TP U M PS P I ND R A I NW A S Ht t = = 3s t a
5、 r t kw lhT = = 5 分钟w llt 2 = = 1 分钟三、确定各状态的程序结构1、await 状态:if(startk)进入 pump 状态elsebegin为各项参数及输出量赋初值end 2、pump 状态:if(wlh)进入 wash 状态elseif(tt=3)返回 await 状态并将 alartk 打开else停留在 pump 状态并将 pumpk 打开3、wash 状态:if(t5 分钟)进入排水状态else begin停留在 wash 状态并关闭 pumpk总时间 t 开始计数if(t10)endelse /中间 3s 和最后 3s 电机停beginwfk=0;
6、wrk=0;endend /-洗涤状态-drain: if(wll) /若低水位开关 wll=1 则进入甩干状态state=spin;elsebeginstate=drain; /否则停留在排水状态draink=1; /排水开关打开wfk=0; /电机关闭wrk=0;t=0; /时间重置t1=0;end/-排水状态-spin: if(t2)begint2=t2-1; /若 t20 则 t2 自减,甩干开关打开spink=1;endelsebegint2=6000; /若 t2=0 则重置甩干时间tt=tt+1; /洗涤次数加 1spink=0; /关闭甩干开关和排水开关draink=0;state=pump; /返回注水状态end /-甩干状态-default: state=await; /若状态码出现其它数值,则默认为待机状态endcaseendmodule control 模块仿真波形五、实验结果经 FPGA 集成实验箱进行实物仿真,该程序完全实现实验要求的各项功能