洗衣机控制系统 VHDL语言 状态机实现

本文详细介绍了使用VHDL设计洗衣机控制系统的任务、需求分析、设计方案,包括状态机的Moore型和Mealy型实现。设计中包含了输入模块、控制模块和输出模块,实现了不同工作模式的切换、计时器以及状态指示。最后,通过实例展示了设计的计时器和控制模块代码,并指出在状态转换中存在的问题。
摘要由CSDN通过智能技术生成

题目要求如下:

一、设计任务

洗衣机有注水、洗涤、排水、脱水和漂洗等功能,每个功能均有对应的显示灯,运行在某种工作状态时,其对应显示灯一直亮,直到此功能工作结束。其中,注水功能提供低,中,高三个水位等级供用户选择;洗涤功能有弱洗,普通,强洗三个洗涤等级可供选择。注水,洗涤,排水,脱水,漂洗状态的转变分别由各自的使能端控制。

系统有六个工作模式。其中,模式1=洗涤+漂洗+脱水,模式2=洗涤+漂洗,模式3=漂洗+脱水,模式4=洗涤,模式5=漂洗,模式6=脱水。

二、需求分析

(1)系统所有操作均有统一的时钟信号,统一的复位端。

(2)系统设有暂停端,当处于某一工作状态时,若按下暂停端,则停在此工作状态。

(3)在当前的运行状态时,有数码显示当前剩余时间;

(4)所有操作完成之后,有响铃提示。

三、设计方案

该系统由输入模块、控制模块和输出模块构成。输入模块完成洗涤时间的预置与编码,控制模块完成洗涤时间计时以及对电机运行状态的控制,输出模块完成电机运行状态的指示。

四、必须用状态机实现(为后续课程组原做准备),经典状态机代码如下:

1. Moore型状态机:

library ieee;

use ieee.std_logic_1164.all;

 

entity Moore is

port(

     Reset:in std_logic;

     Clock:in std_logic; 

     DIN:in std_logic;

     DOUT:out std_logic_vector(2 downto 0)

    );

end Moore;

 

architecture Mooremachine of Moore is

type State_type is(S0,S1,S2,S3);

signal PresenState:State_type;     

signal NextnState:State_type;      

begin

 

State_Reg:                

   process(Reset,Clock)      

   begin

      if Reset='1'then

         PresenState<=S0;

      elsif rising_edge(Clock)then

         PresenState<=NextnState;

      end if;

   end process;

 

Change_State:      

   process(PresenState,DIN)

   begin

      case PresenState is

         when S0=>

            if DIN='1'then

               NextnState<=S1;

            else

               NextnState<=S0;

            end if;

            DOUT<="001";

         when S1=>

            if DIN='1'then

               NextnState<=S2;

            else

               NextnState<=S1;

            end if;

            DOUT<="011";

         when S2=>

            if DIN='1'then

               NextnState<=S3;

            else

               NextnState<=S2;

            end if;

            DOUT<="101";

         when S3=>

            if DIN='1'then

               NextnState<=S0;

            else

               NextnState<=S1;

            end if;

            DOUT<="111";

      end case;

   end process;

end Mooremachine;


2. Mealy型状态机:

library ieee;

use ieee.std_logic_1164.all;

 

entity Mealy is

port(

     Reset:in std_logic;                     

     Clock:in std_logic;                     

     DIN:in std_logic;                       

     DOUT:out std_logic_vector(2 downto 0)   

    );

end Mealy;

 

architecture Statemachine of Mealy is

type State_type is(S0,S1,S2,S3);           

signal State:State_type;

 

begin

 

Change_State:                              

   process(State,DIN)

   begin

      if Reset='1'then

         State<=S0;

      elsif rising_edge(Clock)then           

         case State is

            when S0=>

               if DIN='1' then

                  State<=S1;

               end if;

            when S1=>

               if

  • 9
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值