VerilogHDL课程设计_第1页
VerilogHDL课程设计_第2页
VerilogHDL课程设计_第3页
VerilogHDL课程设计_第4页
VerilogHDL课程设计_第5页
已阅读5页,还剩19页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1人民武装学院VERILOGHDL课程设计洗衣机控制器的设计2学生姓名周云学号PB102027115专业电子信息科学与技术年级2010级指导老师周骅老师时间2011年12月22日目录引言3一、设计内容41设计内容42功能4二、洗衣机控制器的工作原理61洗衣机的工作状态62全自动洗衣过程73单独执行某个洗衣程序8三、洗衣机的状态转换图91洗衣机的状态转换图92设计思路9四、设计程序111全自动洗衣机主程序112全自动洗衣机测试程序15五、步骤及仿真图171在代码提示框架中完成核心子模块WASH_CTRLV的设计172对核心子模块WASH_CTRLV进行时序仿真173六、功能图201设计顶层图形文件,编译202功能引脚锁定20心得体会22引言随着高密度现场可编程逻辑器件的广泛应用,当前数字系统正朝着速度快、容量大、体积小、重量轻的方向发展的时候,越来越多的工程人员采用硬件描述语言HDLHARDWAREDESCRIPTIONLANGUAGE来进行项目的开发。目前最通用的HDL有VHDL与VERILOG两种,它们具有IEEE国际标准,语法严谨,是今后数字电路与系统设计的必然趋势,它的优点在于具有行为级描述方式,可对设计进行准确描述,易于设计修改,缩短开发周期。基于VHDL开发系统有多种上,是其中之一,他的功能强大,在开发有限状态机FSMFINITESTATEMACHINE时序电路时,我们不需要要再用传统的电路输入的方法,通过设计寄存器组来实现各个状态之间的转换,我们可充分利用硬件描述语言的抽象建模能力,用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)66S第二次加水(WATER2)7S漂洗(RINSE)9S第二次排水(DRAIN2)6S甩干(DRY)5S蜂鸣15S。洗衣机整个工作过程可分为9个状态,运用有限状态机的设计思想来实现。二、洗衣机控制器的工作原理有限状态机(FSM,FINITESTATEMACHINE)是一种重要的时序逻辑电路单元,尤其适合于设计数字系统的控制模块。状态机可以认为是组合逻辑和寄存器逻辑的特殊组合,它一般包括两个部分组合逻辑部分和寄存器部分。组合逻辑部分又包括次态逻辑和输出逻辑,分别用于状态译码和产生输出信号;寄存器部分用于存储状态。状态机的次态是现态及输入信号的函数,输出信号根据状态机的现态或输入信号而定。根据输出信号产生方法的不同,状态机可分为两类摩尔(MOORE)型状态机和米里(MEALY)型状态机。对于MOORE型状态机,其输出只为状态机当前状态的函数,而与输入无关。而对于MEALY型状态机,其输出不仅与状态机当前状态有关,而且与输入有关。实用的状态机一般都设计为同步时序电路,它在时钟信号的触发下,完成各状态之间的转移,并产生相应的输出。采用VERILOGHDL语言实现基于状态机的控制电路设计,就是在时钟信号的触发下,完成两项任务(1)用CASE或IF7ELSE语句描述出状态的转移,(2)描述状态机的输出信号(通常是控制信号)。1洗衣机的工作状态洗衣机有9个工作状态分别为空闲(IDLE)、第一次加水(WATER1)、洗衣(WASH)、第一次排水(DRAIN1)、第二次加水(WATER2)、漂洗(RINSE)、第二次排水(DRAIN2)、甩干(DRY)、蜂鸣(BEEP)。2全自动洗衣过程在洗衣机上电后(默认水位为“中”,通过水位控制按钮设置好合适的)水位,然后按下START_PAUSE启动/暂停按钮,使洗衣机全自动完成整个洗衣过程,此洗衣机控制器状态转移图如下图所示洗衣机控制器状态转移图分析上图一旦按下RST按钮,则电路复位到初始状态,控8制信号M0,W0,D0。当按下START_PAUSE启动/暂停按钮时,则进入WATER1状态,W1,使进水阀门打开,开始上水,并历时7S。然后转移到下一状态WASH,W0,使进水阀门关闭;同时M1,使电机开始运转,开始洗衣过程,并历时9S。再转移到下一状态DRAIN1,直到当甩干结束后,整个洗衣过程完成,扬声器发出持续15秒的急促的“嘀嘀”音,提示用户洗衣结束,控制器又返回到初始状态。3单独执行某个洗衣程序有时候,人们可能需要单独执行某个洗衣程序,如洗涤或脱水,这时可以在洗衣前通过按动洗衣模式选择按钮来选择不同的洗衣程序。在这种情况下,洗衣机控制器的状态转移图就会比全自动洗衣机控制器状态转移图更复杂一些。首先在IDLE状态下,当按下启动/暂停按钮时,控制器要根据不同的洗衣模式跳转到不同的状态若默认是全自动洗衣程序或选择浸泡程序,则跳转到WATER1;若选择洗涤程序,则跳转到WASH;若选择漂洗程序,则跳转到WATER2;若选择甩干,则跳转到DRY。而当洗衣机执行完相应的洗衣程序后,则所有控制信号、计时器应清零,同时控制器应返回初始状态。因此,在WATER1状态下,当加好水时控制器不是直接跳转到WASH,而是要先判断洗衣模式是否为浸泡程序,若是,则跳转到IDLE;若不是,才直接跳转到9WASH。同理,在DRAIN1状态下,当排完水时控制器不是直接跳转到WATER2,而是要先判断洗衣模式是否为洗涤程序,若是,则跳转到IDLE;若不是,才直接跳转到WATER2。在DRAIN2状态下,当排完水时控制器不是直接跳转到DRY,而是要先判断洗衣模式是否为漂洗程序,若是,则跳转到IDLE;若不是,才直接跳转到DRY。三、洗衣机的状态转换图1洗衣机的状态转换图由上面全自动洗衣机的工作原理,可知洗衣机控制器的状态转换图如下图所示10洗衣机控制器的状态转换图2设计思路洗衣机控制器系统结构图如下图所示,将整个设计划分为两个子模块时钟分频子模块和洗衣机状态控制器子模块。洗衣机控制器系统结构图A时钟分频子模块CLKDIVV11将系统时钟50MHZ分频为1KHZ,再将1KHZ分频为1HZ,以产生洗衣结束时的提示蜂鸣音SPEAKERCLK_1HZSTART_PAUSE启动/暂停按钮信号,高有效;MODE洗衣模式选择信号,高有效。不按时,默认全程执行浸泡、洗涤、漂洗、甩干这4个程序;每按一下,单独选择浸泡,或洗涤,或漂洗,或甩干程序。LEVEL水位控制信号(负脉冲),每按一下,循环选择水位(高、中、低、少);OPEN_DOOR洗衣机盖打开信号(负脉冲)第一次按是,“开盖”,再按一次则是合盖。12四、设计程序1全自动洗衣机主程序TIMESCALE1S/100USMODULEWASH_FSM03TIMES,CLOCK,RST,START,W,M,D,SPEAKERINPUTCLOCK,START,RSTOUTPUT03TIMEESOUTPUTW,M,D,SPEAKERREG03TIMESPARAMETERIDLE0,WATER11,WASH2,DRAIN13,WATER24,RINSE5,DRAIN26,DRY7,BEEP8RG04WASH_STATEALWAYSNEGEDGECLOCKCASEWASH_STATEIDLEIFRSTBEGINSTATE1WASH_STATEWATER1ELSEWASH_STATEIDLEENDWATER1BEGINW1IFTIMS7SWASH_STATEWASHELSEWASH_STATEWATER1ENDWASHBEGINM1IFTIMES9SWASH_STATEDRAIN1ELSEWASH_STATEWASHEND13DRAIN1BEGIND1IFTIMES6SWASH_STATEWATER2ELSEWASH_STATEDRAIN1ENDWATER2BEGINW1IFTIMES7SWASHSTATERINSEELSEWASH_STATEWATER2ENDRINSEBEGINM1IFTIMES9SWASH_STATEDRYELSEWASH_STATERINSEENDDRYBEGIND1IFTIMES5SWASH_STATEBEEPELSEWASHSTATEDRYENDENDCASEENDMODULE对程序进行分析如下OUTPUTW,M,D/W是进水阀门控制信号,M是引擎工作信号,D是放水阀门控制信号OUTPUT30TIMES/定时计数器,用于洗衣各过程的定时计数OUTPUTSPEAKER/洗衣结束提示音信号,驱动扬声器发声14OUTPUT30NEXTSTATE/状态机,描述洗衣机的状态转移过程为方便设计,这里还定义了一些中间变量REG30MODESTATE/洗衣模式计数器,0默认全自动洗程序,1只执行浸泡程序,2只执行洗涤程序,3只执行漂洗程序,4只执行甩干程序。根据其值决定控制器从IDLE状态应跳转到哪一状态。REG30WATERLEVEL/水位计数器,用来控制加水时间,当水位为高、中、低、少时其值为0、1、2、3。REG30TIMEADD/加水时间计数器,根据水位选择控制加水时间,当水位为高、中、低、少时其值为8S、7S、6S、5S。REG30TIMEDRAIN/排水时间计数器,根据水位选择控制排水时间,当水位为高、中、低、少时其值为7S、6S、5S、4S;REGDOORSTATE/洗衣机盖的状态,为“1”表示盖是打开的,为“0”表示盖是合上的。REGSTART_PAUSE_LEVEL/将启动/暂停脉冲信号转换为相应的高低电平信号。REGALARM/蜂鸣状态信号,蜂鸣时ALARM为“1”,平时为“0”整个模块包括8大部分5用PARAMETER常量定义状态机的状态,洗衣、漂洗、甩干和蜂鸣的时间长度将启动/暂停脉冲信号转换为高低电平信号ALWAYSPOSEDGESTART_PAUSEORPOSEDGERST15洗衣模式选择(对MODESTATE赋值)ALWAYSPOSEDGERSTORPOSEDGEMODE水位控制(对WATERLEVEL赋值)ALWAYSPOSEDGERSTORNEGEDGELEVEL/复位时默认水位为“中”OPEN_DOOR信号控制ALWAYSPOSEDGERSTORNEGEDGEOPEN_DOOR根据水位选择控制加水时间和排水时间ALWAYSPOSEDGECLK_1KHZBEGINCASEWATERLEVELENDCASEEND状态机输出及状态转移ALWAYSPOSEDGECLK_1HZORPOSEDGERSTBEGINIFRST/控制信号清零,计数器清零,状态机回到空闲状态ELSEBEGINCASENEXTSTATEIDLESPEAKER信号输出ASSIGNSPEAKERCLK_1HZ(1)空闲状态/根据MODESTATE的值判断应跳转到哪个状态WATER1(2)第一次加水BEGINIFSTART_PAUSE_LEVELBEGINEND暂停操作ELSEBEGINIFTIMESTIMEADD1BEGINEND若未加好水,则一直加水ELSEBEGINEND否则根据MODESTATE是否为4D1判断应跳转到空闲态或下一个状态ENDENDWASH(3)洗衣6DRAIN1(4)第一次排水/若未排完水,则一直排水否则根据MODESTATE是否为4D2判断应跳转到空闲态或下一16个状态WATER2(5)第二次加水RINSE(6)漂洗DRAIN2(7)第二次排水/若未排完水,则一直排水否则根据MODESTATE是否为4D3判断应跳转到空闲态或下一个状态DRY(8)甩干BEEP(9)蜂鸣ENDCASEENDEND2全自动洗衣机测试程序TIMESCALE1S/100USMODULEWASH_FSM_TEST_VREGCLOCKREGSTARTREGRSTWIREWWIREMWIREDWIRESPEAKALWAYSBEGAN3CLK13CLK0ENDINITIALBEGINW0M0D03W1M0D07M1W017D09D1W0M06W1M0D07M1W0D09D1W0M06M1D1W05W0M0D0SPEAKER115W0M0D03ENDENDMODULE18五、步骤及仿真图1在代码提示框架中完成核心子模块WASH_CTRLV的设计2对核心子模块WASH_CTRLV进行时序仿真(1)仿真全程自动顺序执行浸泡、洗涤、漂洗、甩干这4个程序当RST信号来到时,所有的信号置零;当START_PAUSE信号有效时,进入加水状态;只要不再按下START_PAUSE按钮,洗衣机将按照预定的时序自动完成洗衣的全过程。19洗衣过程全部自动完成的仿真图(2)仿真人工干预洗衣过程在洗衣过程全部自动完成后,再分别给RST和START_PAUSE一个正脉冲,模拟一次新的洗衣过程。在洗衣状态(WASH)下,第二次按下START_PAUSE按钮,则M从“1”变为“0”,洗衣机暂停操作;稍后第三次按下START_PAUSE按钮时,则M从“0”变为“1”,洗衣机继续操作。(3)仿真选择洗衣模式在人工干预洗衣过程结束后,再给RST一个正脉冲,模拟一次新的洗衣过程。当第一次按下MODE按钮时,洗衣机进入浸泡程序操作;第二次按下MODE按钮时,洗衣机进入洗涤程序。当然,20若依次按下MODE按钮时,洗衣机会依次进入漂洗、甩干程序(后两个程序限于篇幅不作图解)。仔细观察MODESTATE和NEXTSTATE的变化。选择洗衣模式的仿真图(4)仿真进行水位控制在上述洗衣过程结束后,再给RST一个正脉冲,模拟一次新的洗衣过程。先给LEVEL一个负脉冲,设置水位为低,再启动;到第二次加水期间,给LEVEL一个负脉冲,设置水位为少。观察洗衣和漂洗过程中的加水时间和排水时间是否分别与设置的水位相一致。设置水位分别为低和少时的仿真图(5)仿真在甩干过程中,打开洗衣机盖的现象21在甩干过程中,先后打开和合上洗衣机盖时的仿真图六、功能图1设计顶层图形文件,编译这里用未消抖按键9、按键10(低有效),作为水位控制信号LEVEL_N与洗衣机盖打开信号OPEN_DOOR_N的控制键,因此还需要增加按钮消抖模块。顶层图形文件2功能引脚锁定(1)输入信号CLK(F50MHZ)接PIN28;RST接键1(PIN233)22;START_PAUSE接键4(PIN236);MODE接键7(PIN239);LEVEL_N水位控制信号,负脉冲有效,接键9(PIN132);OPEN_DOOR_N洗衣机盖打开信号,负脉冲有效,接键10(PIN128)。(2)输出信号W接发光二极管D8(PIN168);M接D7(PIN167)接D6(PIN166);D;TIMES30当前状态工作时间,接数码管1,从高位到低位分别接PIN16、PIN15、PIN14、PIN13;NEXTSTATE30当前工作状态,接数码管2,从高位到低位分别接PIN20、PIN19、PIN18、PIN17;MODESTATE30所选洗衣模式,接数码管7,从高位到低位分别接PIN140、PIN139、PIN138、PIN137;10WATERLEVEL30当前水位档位,接数码管8,从高位到低位分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论