美文网首页
简单有限状态机的VHDL

简单有限状态机的VHDL

作者: 莞工米兔 | 来源:发表于2019-06-18 19:09 被阅读0次

    按状态机输出来分,可分为moore型和mealy型,moore型输入仅与当前的状态有关,mealy型输出不仅与当前的状态有关还与输入信号有关。换言之,有限状态机的输出(input)必定与现状(cs)有关,图中明显一个状态对应两种输出,明显输出与输入信号有关,所以是mealy型。

    VHDL部分

    library IEEE;

    use ieee.std_logic_1164.all;

    entity FSM is

    port( clk,rst,input : in std_logic;

            y : out integer range 0 to 4)

    end entity;

    architecture bhv of fsm is

    type fsm_st is (s0,s1,s2,s3);   --定义新的数据类型

    signal cs :fsm_st;  --说明部分(两句话),一般放在结构体的architecture和begin之间

    begin

    p1:process(clk,rst)  --clk,rst信号敏感进程(时序进程)

    begin

        if rst='0' then cs<=s0; --异步复位信号

        elsif clk'event and clk='1' then  --FSM是以同步时序方式工作的

            case cs is

            when s0 => if input='0' then cs<=s0;  else cs<=s1; end if;

            when s1 => if input='0' then cs<=s1; else cs<=s2;end if;

            when s2 => if input='0' then cs<=s2; else cs<=s3; end if;

            when s3 => if input='0' then cs<=s3;else cs<=s0;end if;

            end case;

    end process;

    p2:process(input,cs) --组合进程

    begin

    case cs  is

            when s0=>if input='0' then y<=4; else y<='1';end if;

            when s1=>if input='0' then y<=4; else y<='1'; end if;

            when s2=>if input='0' then y<=4; else y<='1'; end if;

            when s3=>if input='0' then y<=4; else y<='1'; end if;

    end case;

    end process;

    end bhv;

    相关文章

      网友评论

          本文标题:简单有限状态机的VHDL

          本文链接:https://www.haomeiwen.com/subject/tmqqqctx.html