VHDL语言的洗衣机控制器设计---复习过程_第1页
VHDL语言的洗衣机控制器设计---复习过程_第2页
VHDL语言的洗衣机控制器设计---复习过程_第3页
VHDL语言的洗衣机控制器设计---复习过程_第4页
VHDL语言的洗衣机控制器设计---复习过程_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、Good is good, but better carries it.精益求精,善益求善。VHDL语言的洗衣机控制器设计目录TOCo1-3hzuHYPERLINKl_Toc311108450一、目的PAGEREF_Toc311108450h2HYPERLINKl_Toc311108451二、内容及要求PAGEREF_Toc311108451h2HYPERLINKl_Toc3111084521、设计的主要内容PAGEREF_Toc311108452h2HYPERLINKl_Toc3111084532、设计的主要要求PAGEREF_Toc311108453h3HYPERLINKl_Toc3111

2、08454三、原理PAGEREF_Toc311108454h3HYPERLINKl_Toc3111084551基于状态机的控制电路设计PAGEREF_Toc311108455h3HYPERLINKl_Toc3111084562洗衣机控制器的工作原理PAGEREF_Toc311108456h3HYPERLINKl_Toc311108457(1)洗衣机的工作状态PAGEREF_Toc311108457h3HYPERLINKl_Toc311108458(2)全自动洗衣过程PAGEREF_Toc311108458h4HYPERLINKl_Toc311108459(3)单独执行某个洗衣程序PAGEREF

3、_Toc311108459h4HYPERLINKl_Toc311108460(4)设计思路PAGEREF_Toc311108460h5HYPERLINKl_Toc311108461四、步骤及仿真图7HYPERLINKl_Toc311108463五、程序设计PAGEREF_Toc311108463h10(1)时钟分频模块10HYPERLINKl_Toc311108464(2)数码管显示PAGEREF_Toc311108464h11HYPERLINKl_Toc311108465(3)定时器电路PAGEREF_Toc311108465h12。(4)预置时间和编码电路13HYPERLINKl_Toc3

4、11108466(5)时序电路PAGEREF_Toc311108466h13HYPERLINKl_Toc311108467(6)译码器14HYPERLINKl_Toc311108468六、心得体会PAGEREF_Toc311108468h14HYPERLINKl_Toc311108469七、参考文献PAGEREF_Toc311108469h15一、目的1学习掌握全自动洗衣机的控制原理。2掌握基于有限状态机的控制电路设计方法.二、内容及要求1、设计的主要内容:设计一个全自动洗衣机控制器电路,实现对洗衣机的全自动控制。根据全自动洗衣机的控制原理设计一个控制电路,使之能够控制全自动洗衣机完成整个工作

5、过程。洗衣机工作过程分为两种情况:(1)全部自动完成当按下复位按钮时,洗衣机上电,控制电路复位到初始状态(默认水位为“中”;使用)者可根据衣服的多少,按下水位控制按钮,改变水位设置,以控制上水时加水的多少;当按下启动/暂停按钮时,洗衣机开始洗衣的第一个操作:进水阀门打开,开始上水,并根据水位设置(高、中、低、少)历时不同的时间timeadd(8s、7s、6s、5s);然后进水阀门关闭,电机开始运转,开始洗衣过程,并历时9s;然后电机停止运转,排水阀门打开,开始排水,并根据水位设置(高、中、低、少)历时不同的时间timedrain(7s、6s、5s、4s);然后排水阀门关闭,进水阀门打开,开始第

6、二次上水,并历时timeadd当甩干结束后,整个洗衣过程完成,扬声器发出持续15秒的急促的“嘀嘀”音,提示用户洗衣结束。正常运行状态下全自动洗衣机工作过程:空闲(idle)第一次加水(water1)7s洗衣(wash)9s第一次排水(drain1)6s第二次加水(water2)7s漂洗(rinse)9s第二次排水(drain2)6s甩干(dry)5s蜂鸣15s。洗衣机整个工作过程可分为9个状态,运用有限状态机的设计思想来实现。(2)人工干预在每个工作状态下,如果想要洗衣机暂停工作,可按下启动/暂停按钮,则洗衣机立刻暂停当时的操作。比如,在第一次加水过程中,若按下启动/暂停按钮,则进水阀门立刻关

7、闭,暂停上水,计时暂停;当再次按下启动/暂停按钮,则进水阀门又打开,并继续计时,直到加水满timeadd后,进入洗衣过程。洗衣机功能设置:打开洗衣机盖/合上洗衣机盖:当洗衣机在甩干过程中,若打开洗衣机盖,则洗衣机应立即暂停工作,停止电机运转和排水;只有合上洗衣机盖,洗衣机才能继续工作。因此洗衣机控制器有一个open_door输入信号,并根据此信号控制洗衣机的动作。水位控制:有一个水位控制按钮,逐次按动它,水位可以在高、中、低、少这4档间切换,以控制上水时加水的多少。洗衣模式选择:有一个洗衣模式选择按钮,在洗衣机上电后开始启动之前,按动此按钮,可以选择洗衣机单独执行不同的洗衣程序:浸泡、洗涤、漂

8、洗、脱水(甩干);若不按此按钮,则默认全程自动执行浸泡、洗涤、漂洗、甩干这4个程序。2、设计的主要要求:(1)根据设计题目要求编写相应程序代码。(2)画出洗衣机控制器包括不同洗衣模式的完整的状态转移图。(3)对编写的VHDL程序代码进行编译和仿真。(4)总结设计内容。三、原理1基于状态机的控制电路设计有限状态机(FSM,FiniteStateMachine)是一种重要的时序逻辑电路单元,尤其适合于设计数字系统的控制模块。状态机可以认为是组合逻辑和寄存器逻辑的特殊组合,它一般包括两个部分:组合逻辑部分和寄存器部分。组合逻辑部分又包括次态逻辑和输出逻辑,分别用于状态译码和产生输出信号;寄存器部分用

9、于存储状态。状态机的次态是现态及输入信号的函数,输出信号根据状态机的现态或输入信号而定。根据输出信号产生方法的不同,状态机可分为两类:摩尔(Moore)型状态机和米里(Mealy)型状态机。对于Moore型状态机,其输出只为状态机当前状态的函数,而与输入无关。而对于Mealy型状态机,其输出不仅与状态机当前状态有关,而且与输入有关。实用的状态机一般都设计为同步时序电路,它在时钟信号的触发下,完成各状态之间的转移,并产生相应的输出。采用VerilogHDL语言实现基于状态机的控制电路设计,就是在时钟信号的触发下,完成两项任务:(1)用case或if-else语句描述出状态的转移,(2)描述状态机

10、的输出信号(通常是控制信号)。2洗衣机控制器的工作原理(1)洗衣机的工作状态洗衣机有9个工作状态分别为:空闲(idle)、第一次加水(water1)、洗衣(wash)、第一次排水(drain1)、第二次加水(water2)、漂洗(rinse)、第二次排水(drain2)、甩干(dry)、蜂鸣(beep)。(2)全自动洗衣过程最简单的操作是在洗衣机上电后(默认水位为“中”,通过水位控制按钮设置好合适的)水位,然后按下start_pause启动/暂停按钮,使洗衣机全自动完成整个洗衣过程,此时洗衣机控制器状态转移图如图1所示。图1洗衣机控制器状态转移图start_pauserstidlem=0,w=

11、0d=015sbeepm=0,d=0speakerwater1w=1m=0,7swashm=1w=0,浸泡9s甩干5sdrym=1,d=1w=06sdrain2d=1w=0,m=09srinsem=1w=0,d=07sdrain1d=1w=0,m=06swater2w=1m=0,d=0洗涤漂洗图1全自动洗衣机控制器的状态转移图。一旦按下rst按钮,则电路复位到初始状态,控制信号m=0,w=0,d=0。当按下start_pause启动/暂停按钮时,则进入water1状态,w=1,使进水阀门打开,开始上水,并历时7s。然后转移到下一状态wash,w=0,使进水阀门关闭;同时m=1,使电机开始运转,

12、开始洗衣过程,并历时9s。再转移到下一状态drain1,直到当甩干结束后,整个洗衣过程完成,扬声器发出持续15秒的急促的“嘀嘀”音,提示用户洗衣结束,控制器又返回到初始状态。(3)单独执行某个洗衣程序但有时候,人们可能需要单独执行某个洗衣程序,如洗涤或脱水,这时可以在洗衣前通过按动洗衣模式选择按钮来选择不同的洗衣程序。在这种情况下,洗衣机控制器的状态转移图就会比图1更复杂一些,下面加以详细说明。首先在idle状态下,当按下启动/暂停按钮时,控制器要根据不同的洗衣模式跳转到不同的状态:若默认是全自动洗衣程序或选择浸泡程序,则跳转到water1;若选择洗涤程序,则跳转到wash;若选择漂洗程序,则

13、跳转到water2;若选择甩干,则跳转到dry。而当洗衣机执行完相应的洗衣程序后,则所有控制信号、计时器应清零,同时控制器应返回初始状态。因此,在water1状态下,当加好水时控制器不是直接跳转到wash,而是要先判断洗衣模式是否为浸泡程序,若是,则跳转到idle;若不是,才直接跳转到wash。同理,在drain1状态下,当排完水时控制器不是直接跳转到water2,而是要先判断洗衣模式是否为洗涤程序,若是,则跳转到idle;若不是,才直接跳转到water2。在drain2状态下,当排完水时控制器不是直接跳转到dry,而是要先判断洗衣模式是否为漂洗程序,若是,则跳转到idle;若不是,才直接跳转

14、到dry。(4)设计思路洗衣机控制器系统结构图如图2所示,将整个设计划分为两个子模块:时钟分频子模块和洗衣机状态控制器子模块。图2洗衣机控制器系统结构图(1)时钟分频子模块clkdiv.v将系统时钟50MHz分频为1KHz,再将1KHz分频为1Hz,以产生洗衣结束时的提示蜂鸣音speaker=clk_1Hz&clk_1KHz&alarm(每间隔1s产生一个音频为1KHz的提示音)。1Hz的时钟信号还作为洗衣机状态控制器子模块的输入时钟信号,驱动洗衣定时器计数。(2)洗衣机状态控制器子模块wash_ctrl.v设计时,首先应画出状态转移图并仔细分析,明确在每个状态下控制器要输出哪些控制信号,计数

15、器该怎样计数;当希望洗衣机暂停时,所有控制信号应都变为0,计数器暂停计数。当计数器正常计数到预定值时,应跳转到下一状态。然后用case语句、if-else语句对状态转移和输出进行描述。信号定义:inputclk_1KHz,clk_1Hz,rst,start_pause,mode,level,open_door;/*start_pause:启动/暂停按钮信号,高有效;mode:洗衣模式选择信号,高有效。不按时,默认全程执行浸泡、洗涤、漂洗、甩干这4个程序;每按一下,单独选择浸泡,或洗涤,或漂洗,或甩干程序。level:水位控制信号(负脉冲),每按一下,循环选择水位(高、中、低、少);open_d

16、oor:洗衣机盖打开信号(负脉冲)第一次按是,“开盖”,再按一次则是合盖。*/outputW,M,D;/W是进水阀门控制信号,M是引擎工作信号,D是放水阀门控制信号output3:0times;/定时计数器,用于洗衣各过程的定时计数outputspeaker;/洗衣结束提示音信号,驱动扬声器发声output3:0nextstate;/状态机,描述洗衣机的状态转移过程为方便设计,这里还定义了一些中间变量:reg3:0modestate;/洗衣模式计数器,0:默认全自动洗程序,1:只执行浸泡程序,2:只执行洗涤程序,3:只执行漂洗程序,4:只执行甩干程序。根据其值决定控制器从idle状态应跳转到哪

17、一状态。reg3:0waterlevel;/水位计数器,用来控制加水时间,当水位为高、中、低、少时其值为0、1、2、3。reg3:0timeadd;/加水时间计数器,根据水位选择控制加水时间,当水位为高、中、低、少时其值为8s、7s、6s、5s。reg3:0timedrain;/排水时间计数器,根据水位选择控制排水时间,当水位为高、中、低、少时其值为7s、6s、5s、4s;regdoorstate;/洗衣机盖的状态,为“1”表示盖是打开的,为“0”表示盖是合上的。regstart_pause_level;/将启动/暂停脉冲信号转换为相应的高低电平信号。regalarm;/蜂鸣状态信号,蜂鸣时a

18、larm为“1”,平时为“0”整个模块包括8大部分:5/用parameter常量定义状态机的状态,洗衣、漂洗、甩干和蜂鸣的时间长度/将启动/暂停脉冲信号转换为高低电平信号always(posedgestart_pauseorposedgerst)/洗衣模式选择(对modestate赋值)always(posedgerstorposedgemode)/水位控制(对waterlevel赋值)always(posedgerstornegedgelevel)/复位时默认水位为“中”/open_door信号控制always(posedgerstornegedgeopen_door)/根据水位选择控制加水

19、时间和排水时间always(posedgeclk_1KHz)begincase(waterlevel)endcaseend/状态机输出及状态转移always(posedgeclk_1Hzorposedgerst)beginif(rst)/控制信号清零,计数器清零,状态机回到空闲状态elsebegincase(nextstate)idle:/(1)空闲状态/根据modestate的值判断应跳转到哪个状态water1:/(2)第一次加水beginif(!start_pause_level)beginend/暂停操作elsebeginif(timestimeadd-1)beginend/若未加好水,

20、则一直加水elsebeginend/否则根据modestate是否为4d1判断应跳转到空闲态或下一个状态endendwash:/(3)洗衣6drain1:/(4)第一次排水/若未排完水,则一直排水/否则根据modestate是否为4d2判断应跳转到空闲态或下一个状态water2:/(5)第二次加水rinse:/(6)漂洗drain2:/(7)第二次排水/若未排完水,则一直排水/否则根据modestate是否为4d3判断应跳转到空闲态或下一个状态dry:/(8)甩干beep:/(9)蜂鸣endcaseendend/speaker信号输出assignspeaker=clk_1Hz&clk_1KHz

21、&alarm;四、步骤及仿真图(1)在上面的代码提示框架中完成核心子模块wash_ctrl.v的设计。(2)对核心子模块wash_ctrl.v进行时序仿真。仿真全程自动顺序执行浸泡、洗涤、漂洗、甩干这4个程序当rst信号来到时,所有的信号置零;当start_pause信号有效时,进入加水状态;只要不再按下start_pause按钮,洗衣机将按照预定的时序自动完成洗衣的全过程。如图3所示。图3洗衣过程全部自动完成的仿真图仿真人工干预洗衣过程在洗衣过程全部自动完成后,再分别给rst和start_pause一个正脉冲,模拟一次新的洗衣过程。在洗衣状态(wash)下,第二次按下start_pause按

22、钮,则M从“1”变为“0”,洗衣机暂停操作;稍后第三次按下start_pause按钮时,则M从“0”变为“1”,洗衣机继续操作。如图4所示。图4人工干预洗衣过程的仿真图仿真选择洗衣模式在人工干预洗衣过程结束后,再给rst一个正脉冲,模拟一次新的洗衣过程。当第一次按下mode按钮时,洗衣机进入浸泡程序操作;第二次按下mode按钮时,洗衣机进入洗涤程序。当然,若依次按下mode按钮时,洗衣机会依次进入漂洗、甩干程序(后两个程序限于篇幅不作图解)。如图5所示。仔细观察modestate和nextstate的变化。图5选择洗衣模式的仿真图仿真进行水位控制在上述洗衣过程结束后,再给rst一个正脉冲,模拟

23、一次新的洗衣过程。先给level一个负脉冲,设置水位为低,再启动;到第二次加水期间,给level一个负脉冲,设置水位为少。观察洗衣和漂洗过程中的加水时间和排水时间是否分别与设置的水位相一致。图6设置水位分别为低和少时的仿真图仿真在甩干过程中,打开洗衣机盖的现象图7在甩干过程中,先后打开和合上洗衣机盖时的仿真图(3)设计顶层图形文件(如图8所示),编译。注意这里用未消抖按键9、按键10(低有效),作为水位控制信号level_n与洗衣机盖打开信号open_door_n的控制键,因此还需要增加按钮消抖模块。图8顶层图形文件wash_top.bdt(4)进行引脚锁定。输入信号:clk(f=50MHz)

24、接Pin28;rst接键1(Pin233);start_pause接键4(Pin236);mode接键7(Pin239);level_n:水位控制信号,负脉冲有效,接键9(Pin132);open_door_n:洗衣机盖打开信号,负脉冲有效,接键10(Pin128)。输出信号:W接发光二极管D8(Pin168);M接D7(Pin167)接D6(Pin166);D;times3.0:当前状态工作时间,接数码管1,从高位到低位分别接Pin16、Pin15、Pin14、Pin13;nextstate3.0:当前工作状态,接数码管2,从高位到低位分别接Pin20、Pin19、Pin18、Pin17;m

25、odestate3.0:所选洗衣模式,接数码管7,从高位到低位分别接Pin140、Pin139、Pin138、Pin137;10waterlevel3.0:当前水位档位,接数码管8,从高位到低位分别接Pin160、Pin159、Pin158、Pin141;speaker接Pin174。五、程序设计(1)时钟分频模块数码管显示(3)定时器电路end(4)预置时间和编码电路(5)时序电路(6)译码器六、心得体会课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.从选题到定稿,从理论到实践,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中,难免会遇到过各种各样

温馨提示

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

评论

0/150

提交评论