-1-人民武装学院VerilogHDL课程设计洗衣机控制器的设计学生姓名:周云学号:PB102027115专业:电子信息科学与技术年级:2010级指导老师:周骅老师时间:2011年12月22日-2-目录引言......................................................................................................................-3-一、设计内容......................................................................................................-4-1.设计内容....................................................................................................-4-2.功能............................................................................................................-4-二、洗衣机控制器的工作原理..........................................................................-6-1.洗衣机的工作状态..................................................................................-6-2.全自动洗衣过程......................................................................................-7-3.单独执行某个洗衣程序............................................................................-8-三、洗衣机的状态转换图..................................................................................-9-1.洗衣机的状态转换图................................................................................-9-2.设计思路..................................................................................................-9-四、设计程序....................................................................................................-11-1.全自动洗衣机主程序..............................................................................-11-2.全自动洗衣机测试程序..........................................................................-15-五、步骤及仿真图............................................................................................-17-1.在代码提示框架中完成核心子模块wash_ctrl.v的设计...................-17-2.对核心子模块wash_ctrl.v进行时序仿真...........................................-17-六、功能图........................................................................................................-20-1.设计顶层图形文件,编译....................................................................-20-2.功能引脚锁定..........................................................................................-20-心得体会............................................................................................................-22--3-引言随着高密度现场可编程逻辑器件的广泛应用,当前数字系统正朝着速度快、容量大、体积小、重量轻的方向发展的时候,越来越多的工程人员采用硬件描述语言HDL(hardwaredescriptionlanguage)来进行项目的开发。目前最通用的HDL有VHDL与Verilog两种,它们具有IEEE国际标准,语法严谨,是今后数字电路与系统设计的必然趋势,它的优点在于具有行为级描述方式,可对设计进行准确描述,易于设计修改,缩短开发周期。基于VHDL开发系统有多种上,是其中之一,他的功能强大,在开发有限状态机FSM(finitestatemachine)时序电路时,我们不需要要再用传统的电路输入的方法,通过设计寄存器组来实现各个状态之间的转换,我们可充分利用硬件描述语言的抽象建模能力,用CAD工具直接绘制状态转移图,具体的逻辑简化可和电路设计可同计算机自动完成,从而提高了设计的效率,并且条理更清晰,修改方便等。-4-一、设计内容1.设计内容设计一个智能洗衣机控制器,能够实现进水、洗涤、漂洗、甩干等一系列过程全自动控制.2.功能洗衣机是一种在家庭中不可缺少的家用电器,发展非常快,全自动式洗衣机因使用方便得到大家的青睐,全自动即进水、洗涤、漂洗、摔干等一系列过程自动完成,控制器通常设有几种洗涤程序,对不同的衣物可供用户选择。洗衣机的工作流程由进水、洗衣、排水、脱水4个过程组成。在半自动洗衣机中,这4个过程分别用相应的按钮开关来控制。全自动洗衣机中,这4个过程可做到全自动依次运行,直至洗衣结束。全自洗衣机的洗衣桶(外桶)和脱水桶(内桶)是以同一心安放的,内桶可以旋转,作为脱水用。内桶的周围有许多小孔,使内桶和外桶的水流相通,洗衣机的进水和排水分别由进水电磁阀和排水电磁阀来执行。进水时通过控制系统将进水电磁阀打开,经进水管将水注入到外桶。排水时,通过控制系统将排水电磁阀打开,将水由外桶排到机外。洗涤正转、反转由洗涤电动机驱动波盘的正、反转来实现,此时脱水桶并不旋转。脱水时,控制系统将离合器合上,由洗涤电动机带动内桶正转进行甩干。高、中、低水位控制开关分别用来检测高、中、低水位。启动按钮用来启动洗衣机工作,停止按钮用来实现手动-5-停止进水、排水、脱水及报警。排水按钮用来实现手动排水。普通洗衣机的工作流程示意图当按下复位按钮时,洗衣机上电,控制电路复位到初始状态(默认水位为“中”;使用)者可根据衣服的多少,按下水位控制按钮,改变水位设置,以控制上水时加水的多少;当按下启动/暂停按钮时,洗衣机开始洗衣的第一个操作:进水阀门打开,开始上水,并根据水位设置(高、中、低、少)历时不同的时间timeadd(8s、7s、6s、5s);然后进水阀门关闭,电机开始运转,开始洗衣过程,并历时9s;然后电机停止运转,排水阀门打开,开始排水,并根据水位设置(高、中、低、少)历时不同的时间timedrain(7s、6s、5s、4s);然后排水阀门关闭,进水阀门打开,开始第二次上水,并历时timeadd……当甩干结束后,整个洗衣过程完成,扬声器发出持续15秒的急促的“嘀嘀”音,提示用户洗衣结束。正常运行状态下全自动洗衣机工作过程:空闲(idle)→第一次加水(water1)7s→洗衣(wash)9s→第一次排水(drain1)6s→第二次加水(water2)7s→漂洗(rinse)9s→第二次排水(drain2)6s→甩干(dry)5s→蜂鸣15s。洗衣机整个工作过程可分为9个状态,运用有限状态机的设计思想来实现。-6-二、洗衣机控制器的工作原理有限状态机(FSM,FiniteStateMachine)是一种重要的时序逻辑电路单元,尤其适合于设计数字系统的控制模块。状态机可以认为是组合逻辑和寄存器逻辑的特殊组合,它一般包括两个部分:组合逻辑部分和寄存器部分。组合逻辑部分又包括次态逻辑和输出逻辑,分别用于状态译码和产生输出信号;寄存器部分用于存储状态。状态机的次态是现态及输入信号的函数,输出信号根据状态机的现态或输入信号而定。根据输出信号产生方法的不同,状态机可分为两类:摩尔(Moore)型状态机和米里(Mealy)型状态机。对于Moore型状态机,其输出只为状态机当前状态的函数,而与输入无关。而对于Mealy型状态机,其输出不仅与状态机当前状态有关,而且与输入有关。实用的状态机一般都设计为同步时序电路,它在时钟信号的触发下,完成各状态之间的转移,并产生相应的输出。采用VerilogHDL语言实现基于状态机的控制电路设计,就是在时钟信号的触发下,完成两项任务:(1)用case或if-else语句描述出状态的转移,(2)描述状态机的输出信号(通常是控制信号)。1.洗衣机的工作状态洗衣机有9个工作状态分别为:空闲(idle)、第一次加水(water1)、洗衣(wash)、第一次排水(drain1)、第二次加-7-水(water2)、漂洗(rinse)、第二次排水(drain2)、甩干(dry)、蜂鸣(beep)。2.全自动洗衣过程在洗衣机上电后(默认水位为“中”,通过水位控制按钮设置好合适的)水位,然后按下start_pause启动/暂停按钮,使洗衣机全自动完成整个洗衣过程,此洗衣机控制器状态转移图如下图所示:洗衣机控制器状态转移图分析上图:一旦按下rst按钮,则电路复位到初始状态,控制信号m=0,w=0,d=0。当按下start_pause启动/暂停按钮时,则进入water1状态,w=1,使进水阀门打开,开始上水,并历时7s。然后转移到下一状态——wash,w=0,使进水阀门关闭;同时m=1,使电机开始运转,开始洗衣过程,并历时9s。再转移到下一状态——drain1,……直到当甩干结束后,整个洗衣过程完成,扬声器发出持续15秒的急促的“嘀嘀”音,提示用户洗衣结束,控制器又返-8-回到初始状态。3.单独执行某个洗衣程序有时候,人们可能需要单独执行某个洗衣程序,如洗涤或脱水,这时可以在洗衣前通过按动洗衣模式选择按钮来选择不同的洗衣程序。在这种情况下,洗衣机控制器的状态转移图就会比全自动洗衣机控制器状态转移图更复杂一些。首先在idle状态下,当按下启动/暂停按钮时,控制器要根据不同的洗衣模式跳转到不同的状态:若默认是全自动洗衣程序或选择浸泡程序,则跳转到water1;若选择洗涤程序,则跳转到wash;若选择漂洗程序,则跳转到water2;若选择甩干,则跳转到dry。而当洗衣机执行完相应的洗衣程序后,则所有控制信号、计时器应清零,同时控制器应返回初始状态。因此,在water1状态下,当加好水时控制器不是直接跳转到wash,而是要先判断洗衣模式是否为浸泡程序,若是,则跳转到idle;若不是,才直接跳转到wash。同理,在drain1状态下,当排完水时控制器不是直接跳转到water2,而是要先判断洗衣模式是否为洗