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

下载本文档

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

文档简介

1、目 录 TOC o 1-3 h z u HYPERLINK l _Toc311108450 一、目的 PAGEREF _Toc311108450 h 2 HYPERLINK l _Toc311108451 二、内容及要求 PAGEREF _Toc311108451 h 2 HYPERLINK l _Toc311108452 1、设计的主要内容 PAGEREF _Toc311108452 h 2 HYPERLINK l _Toc311108453 2、设计的主要要求 PAGEREF _Toc311108453 h 3 HYPERLINK l _Toc311108454 三、原理 PAGEREF

2、_Toc311108454 h 3 HYPERLINK l _Toc311108455 1 基于状态机的控制电路设计 PAGEREF _Toc311108455 h 3 HYPERLINK l _Toc311108456 2 洗衣机控制器的工作原理 PAGEREF _Toc311108456 h 3 HYPERLINK l _Toc311108457 1洗衣机的工作状态 PAGEREF _Toc311108457 h 3 HYPERLINK l _Toc311108458 2全自动洗衣过程 PAGEREF _Toc311108458 h 4 HYPERLINK l _Toc311108459

3、3单独执行某个洗衣程序 PAGEREF _Toc311108459 h 4 HYPERLINK l _Toc311108460 4设计思路 PAGEREF _Toc311108460 h 5 HYPERLINK l _Toc311108461 四、步骤及仿真图7 HYPERLINK l _Toc311108463 五、 程序设计 PAGEREF _Toc311108463 h 10(1)时钟分频模块10 HYPERLINK l _Toc311108464 2数码管显示 PAGEREF _Toc311108464 h 11 HYPERLINK l _Toc311108465 3定时器电路 PAG

4、EREF _Toc311108465 h 12。4预置时间和编码电路13 HYPERLINK l _Toc311108466 5时序电路 PAGEREF _Toc311108466 h 13 HYPERLINK l _Toc311108467 6译码器14 HYPERLINK l _Toc311108468 六、心得体会 PAGEREF _Toc311108468 h 14 HYPERLINK l _Toc311108469 七、参考文献 PAGEREF _Toc311108469 h 15一、目的 1 学习掌握全自动洗衣机的控制原理。2 掌握基于有限状态机的控制电路设计方法.二、内容及要求1

5、、设计的主要内容:设计一个全自动洗衣机控制器电路,实现对洗衣机的全自动控制。 根据全自动洗衣机的控制原理设计一个控制电路, 使之能够控制全自动洗衣机完成整个 工作过程。洗衣机工作过程分为两种情况: 1全部自动完成 当按下复位按钮时,洗衣机上电,控制电路复位到初始状态默认水位为“中;使用 者可根据衣服的多少,按下水位控制按钮,改变水位设置,以控制上水时加水的多少;当按 下启动/暂停按钮时,洗衣机开始洗衣的第一个操作:进水阀门翻开,开始上水,并根据水 位设置高、中、低、少历时不同的时间timeadd8s、7s、6s、5s ;然后进水阀门关闭, 电机开始运转,开始洗衣过程,并历时 9s;然后电机停止

6、运转,排水阀门翻开,开始排水, 并根据水位设置高、中、低、少历时不同的时间timedrain7s、6s、5s、4s ;然后排水 阀门关闭,进水阀门翻开,开始第二次上水,并历时timeadd当甩干结束后,整个洗衣 过程完成,扬声器发出持续 15 秒的急促的“嘀嘀音,提示用户洗衣结束。正常运行状态 下全自动洗衣机工作过程:空闲idle第一次加水water17s洗衣wash9s第一次排水drain16s第二 次加水water27s漂洗rinse9s第二次排水drain26s甩干dry5s蜂鸣 15s 。 洗衣机整个工作过程可分为 9 个状态,运用有限状态机的设计思想来实现。 2人工干预 在每个工作状

7、态下,如果想要洗衣机暂停工作,可按下启动/暂停按钮,那么洗衣机立刻 暂停当时的操作。比方,在第一次加水过程中,假设按下启动/暂停按钮,那么进水阀门立刻关 闭,暂停上水,计时暂停;当再次按下启动/暂停按钮,那么进水阀门又翻开,并继续计时, 直到加水满 timeadd 后,进入洗衣过程。 洗衣机功能设置: 翻开洗衣机盖/合上洗衣机盖:当洗衣机在甩干过程中,假设翻开洗衣机盖,那么洗衣机 应立即暂停工作,停止电机运转和排水;只有合上洗衣机盖,洗衣机才能继续工作。因此洗 衣机控制器有一个 open_door 输入信号,并根据此信号控制洗衣机的动作。 水位控制:有一个水位控制按钮,逐次按动它,水位可以在高

8、、中、低、少这 4 档 间切换,以控制上水时加水的多少。 洗衣模式选择:有一个洗衣模式选择按钮,在洗衣机上电后开始启动之前,按动此 按钮,可以选择洗衣机单独执行不同的洗衣程序:浸泡、洗涤、漂洗、脱水甩干 ;假设不 按此按钮,那么默认全程自动执行浸泡、洗涤、漂洗、甩干这 4 个程序。2、设计的主要要求:1根据设计题目要求编写相应程序代码。2画出洗衣机控制器包括不同洗衣模式的完整的状态转移图。3对编写的VHDL程序代码进行编译和仿真。4总结设计内容。三、原理1 基于状态机的控制电路设计有限状态机FSM,Finite State Machine是一种重要的时序逻辑电路单元,尤其适 合于设计数字系统的

9、控制模块。 状态机可以认为是组合逻辑和存放器逻辑的特殊组合, 它一 般包括两个局部:组合逻辑局部和存放器局部。组合逻辑局部又包括次态逻辑和输出逻辑, 分别用于状态译码和产生输出信号; 存放器局部用于存储状态。 状态机的次态是现态及输入 信号的函数,输出信号根据状态机的现态或输入信号而定。 根据输出信号产生方法的不同,状态机可分为两类:摩尔Moore型状态机和米里 Mealy型状态机。对于 Moore 型状态机,其输出只为状态机当前状态的函数,而与输入 无关。而对于 Mealy 型状态机,其输出不仅与状态机当前状态有关,而且与输入有关。 实用的状态机一般都设计为同步时序电路,它在时钟信号的触发下

10、,完成各状态之间 的转移,并产生相应的输出。 采用 Verilog HDL 语言实现基于状态机的控制电路设计, 就是在时钟信号的触发下, 完 成两项任务: 1用 case 或 if-else 语句描述出状态的转移, 2描述状态机的输出信号通 常是控制信号 。 2 洗衣机控制器的工作原理 1洗衣机的工作状态 洗衣机有 9 个工作状态分别为:空闲idle 、第一次加水water1 、洗衣wash 、第 一次排水drain1 、第二次加水water2 、漂洗rinse 、第二次排水drain2 、甩干dry 、 蜂鸣beep 。 2全自动洗衣过程 最简单的操作是在洗衣机上电后默认水位为“中,通过水位

11、控制按钮设置好适宜的 水位,然后按下start_pause启动/暂停按钮,使洗衣机全自动完成整个洗衣过程,此时洗衣机控制器状态转移图如图 1所示。 图1 洗衣机控制器状态转移图 start_p ause rst idle m=0 , w=0 d=0 15s beep m=0,d=0 speaker water1 w=1 m=0 , 7s wash m=1 w=0 , 浸泡 9s 甩干 5s dry m=1,d=1 w=0 6s drain2 d=1 w=0, m=0 9s rinse m=1 w=0,d=0 7s drain1 d=1 w=0, m=0 6s water2 w=1 m=0,d=

12、0 洗涤 漂洗图 1 全自动洗衣机控制器的状态转移图 。 一旦按下 rst 按钮, 那么电路复位到初始状态, 控制信号 m=0, w=0, d=0。 当按下 start_pause 启动/暂停按钮时,那么进入 water1 状态,w = 1,使进水阀门翻开,开始上水,并历时 7s。然 后转移到下一状态wash,w = 0,使进水阀门关闭;同时 m = 1,使电机开始运转,开始 洗衣过程,并历时 9s。再转移到下一状态drain1,直到当甩干结束后,整个洗衣过 程完成,扬声器发出持续 15 秒的急促的“嘀嘀音,提示用户洗衣结束,控制器又返回到 初始状态。 3单独执行某个洗衣程序 但有时候,人们可

13、能需要单独执行某个洗衣程序,如洗涤或脱水,这时可以在洗衣前通 过按动洗衣模式选择按钮来选择不同的洗衣程序。 在这种情况下, 洗衣机控制器的状态转移 图就会比图 1更复杂一些,下面加以详细说明。 首先在 idle 状态下,当按下启动/暂停按钮时,控制器要根据不同的洗衣模式跳转到不 同的状态:假设默认是全自动洗衣程序或选择浸泡程序,那么跳转到 water1;假设选择洗涤程序, 那么跳转到 wash;假设选择漂洗程序,那么跳转到 water2;假设选择甩干,那么跳转到 dry。而当洗衣机执行完相应的洗衣程序后,那么所有控制信号、计时器应清零,同时控制器应 返回初始状态。因此,在 water1 状态下

14、,当加好水时控制器不是直接跳转到 wash,而是要 先判断洗衣模式是否为浸泡程序,假设是,那么跳转到 idle;假设不是,才直接跳转到 wash。同 理,在 drain1 状态下,当排完水时控制器不是直接跳转到 water2,而是要先判断洗衣模式是 否为洗涤程序,假设是,那么跳转到 idle;假设不是,才直接跳转到 water2。在 drain2 状态下,当 排完水时控制器不是直接跳转到 dry,而是要先判断洗衣模式是否为漂洗程序,假设是,那么跳 转到 idle;假设不是,才直接跳转到 dry。4设计思路洗衣机控制器系统结构图如图 2所示,将整个设方案分为两个子模块:时钟分频子模 块和洗衣机状

15、态控制器子模块。 图2 洗衣机控制器系统结构图 1 将系统时钟 50MHz 分频为 1KHz, 再将 1KHz 分频为 1Hz, 以产生洗衣结束时的提示蜂 鸣音 speaker=clk_1Hz&clk_1KHz&alarm每间隔 1s 产生一个音频为 1KHz 的提示音 。 1Hz 的时钟信号还作为洗衣机状态控制器子模块的输入时钟信号,驱动洗衣定时器计 数。 设计时,首先应画出状态转移图并仔细分析,明确在每个状态下控制器要输出哪些控 制信号,计数器该怎样计数;当希望洗衣机暂停时,所有控制信号应都变为 0,计数器暂停 计数。当计数器正常计数到预定值时,应跳转到下一状态。然后用 case 语句、i

16、f-else 语句对 状态转移和输出进行描述。 信号定义: input clk_1KHz, clk_1Hz, rst, start_pause, mode, level, open_door; /* start_pause:启动/暂停按钮信号,高有效; mode:洗衣模式选择信号,高有效。不按时,默认全程 执行浸泡、洗涤、漂洗、甩干这 4 个程序;每按一下,单独选 择浸泡,或洗涤,或漂洗,或甩干程序。 level:水位控制信号负脉冲 ,每按一下,循环选择水 位高、中、低、少 ; open_door: 洗衣机盖翻开信号 负脉冲 第一次按是 , “开 盖 ,再按一次那么是合盖。 * */ outp

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

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

19、,蜂鸣时 alarm 为“1 ,平时为“0 整个模块包括 8 大局部: 5 / 用 parameter 常量定义状态机的状态,洗衣、漂洗、甩干和蜂鸣的时间长度 / 将启动/暂停脉冲信号转换为上下电平信号 always(posedge start_pause or posedge rst) / 洗衣模式选择对 modestate 赋值 always(posedge rst or posedge mode) / 水位控制对 waterlevel 赋值 always(posedge rst or negedge level) /复位时默认水位为“中 / open_door 信号控制 always(p

20、osedge rst or negedge open_door) / 根据水位选择控制加水时间和排水时间 always(posedge clk_1KHz) begin case(waterlevel) endcase end / 状态机输出及状态转移 always(posedge clk_1Hz or posedge rst) begin if(rst) /控制信号清零,计数器清零,状态机回到空闲状态 else begin case(nextstate) idle: /1空闲状态 /根据 modestate 的值判断应跳转到哪个状态 water1 : /2第一次加水 begin if(!sta

21、rt_pause_level) begin end /暂停操作 else begin if(timestimeadd-1) begin end /假设未加好水,那么一直加水 else begin end /否那么根据 modestate 是否为 4d1 判断应跳转到空闲态或下一个状态 end end wash: /3洗衣 6 drain1: /4第一次排水 /假设未排完水,那么一直排水 /否那么根据 modestate 是否为 4d2 判断应跳转到空闲态或下一个状态 water2: /5第二次加水 rinse: /6漂洗 drain2: /7第二次排水 /假设未排完水,那么一直排水 /否那么根

22、据 modestate 是否为 4d3 判断应跳转到空闲态或下一个状态 dry: /8甩干 beep: /9蜂鸣 endcase end end / speaker 信号输出 assign speaker=clk_1Hz&clk_1KHz&alarm;四、步骤及仿真图1在上面的代码提示 框架中完成核心子模块wash_ctrl.v的设计。 2对核心子模块 wash_ctrl.v 进行时序仿真。 仿真全程自动顺序执行浸泡、洗涤、漂洗、甩干这 4 个程序 当rst信号来到时,所有的信号置零;当start_pause信号有效时,进入加水状态;只要不 再按下start_pause按钮,洗衣机将按照预定的

23、时序自动完成洗衣的全过程。如图3所示。 图3 洗衣过程全部自动完成的仿真图 仿真人工干预洗衣过程 在洗衣过程全部自动完成后,再分别给rst和start_pause一个正脉冲,模拟一次新的洗衣 过程。在洗衣状态wash下,第二次按下start_pause按钮,那么M从“1变为“0 ,洗衣机 暂停操作;稍后第三次按下start_pause按钮时,那么M从“0变为“1 ,洗衣机继续操作。如 图4所示。 图4 人工干预洗衣过程的仿真图 仿真选择洗衣模式在人工干预洗衣过程结束后,再给rst一个正脉冲,模拟一次新的洗衣过程。当第一次 按下mode按钮时,洗衣机进入浸泡程序操作;第二次按下mode按钮时,洗

24、衣机进入洗涤程 序。当然,假设依次按下mode按钮时,洗衣时机依次进入漂洗、甩干程序后两个程序限于 篇幅不作图解 。如图 5所示。仔细观察modestate和nextstate的变化。 图5 选择洗衣模式的仿真图 仿真进行水位控制 在上述洗衣过程结束后,再给 rst 一个正脉冲,模拟一次新的洗衣过程。先给 level 一 个负脉冲,设置水位为低,再启动;到第二次加水期间,给 level 一个负脉冲,设置水位为 少。观察洗衣和漂洗过程中的加水时间和排水时间是否分别与设置的水位相一致。 图6 设置水位分别为低和少时的仿真图 仿真在甩干过程中,翻开洗衣机盖的现象 图7 在甩干过程中,先后翻开和合上洗

25、衣机盖时的仿真图3设计顶层图形文件如图 8所示 ,编译。 注意这里用未消抖按键 9、按键 10低有效 ,作为水位控制信号 level_n 与洗衣机盖打 开信号 open_door_n 的控制键,因此还需要增加按钮消抖模块。4进行引脚锁定。 输入信号: clkf=50MHz接 Pin28; rst 接键 1Pin233 ;start_pause 接键 4Pin236 ;mode 接键 7Pin239 ; level_n:水位控制信号,负脉冲有效,接键 9Pin132 ; open_door_n:洗衣机盖翻开信号,负脉冲有效,接键 10Pin128 。 输出信号: W 接发光二极管 D8Pin16

26、8 ;M 接 D7Pin167 接 D6Pin166 ;D ; times 3.0: 当前状态工作时间, 接数码管 1, 从高位到低位分别接 Pin16、 Pin15、 Pin14、 Pin13; nextstate3.0:当前工作状态,接数码管 2,从高位到低位分别接 Pin20、Pin19、Pin18、 Pin17; modestate3.0: 所选洗衣模式, 接数码管 7, 从高位到低位分别接 Pin140、 Pin139、 Pin138、 Pin137; 10 waterlevel3.0:当前水位档位,接数码管 8,从高位到低位分别接 Pin160、Pin159、 Pin158、Pin

27、141; speaker 接 Pin174。 五、 程序设计(1)时钟分频模块数码管显示3定时器电路 end4预置时间和编码电路5时序电路6译码器六、心得体会课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.从选题到定稿,从理论到实践,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以稳固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会效劳,从而提高自己的实际

温馨提示

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

评论

0/150

提交评论