VHDL学习:利用Quartus自带库3步快速完成状态机

Quartus自带库里面有各种编程语言的模板,供开发者参考。
初学者利用VHDL实现状态机比较生疏的情况下,可以调出该模板,适当修改即可。
本文将描述如何利用Quartus自带库调出状态机模板,并适当修改完成状态机。

=========================================================

  • step one
    新建VHDL文档,右键选择Insert Template
    VHDL学习:利用Quartus自带库3步快速完成状态机_第1张图片
  • step two
    在列表中选择状态机,点击Insert。这里以Mearly型状态机为例
    VHDL学习:利用Quartus自带库3步快速完成状态机_第2张图片
  • step three
    修改具体代码。
    生成的代码如下:
library ieee;
use ieee.std_logic_1164.all;

-- 在这里修改器件名称/输入输出
entity four_state_mealy_state_machine is

    port
    (
        clk      : in   std_logic;
        input    : in   std_logic;
        reset    : in   std_logic;
        output   : out  std_logic_vector(1 downto 0)
    );

end entity;

architecture rtl of four_state_mealy_state_machine is

    -- 在这里修改状态名称 可以直接利用replace进行替换
    type state_type is (s0, s1, s2, s3);
    signal state : state_type;

begin

    -- 在clk的边沿跟新状态机的状态
    -- 在这里修改跳转条件
    process (clk, reset)
    begin

        if reset = '1' then
            state <= s0;

        elsif (rising_edge(clk)) then

            -- state为现在的状态,下面的list为现态分别为s0,s1,s2,s3跳转到其他状态的条件
            case state is
                when s0=>
                    -- 当现态为s0,跳转到其他状态的条件
                    -- 列出s0所有可能出现的状态转移,在这里用if语句描述即可
                    -- 其他状态类似
                    if input = '1' then
                        state <= s1;
                    else
                        state <= s0;
                    end if;
                    ......
            end case;

        end if;
    end process;

    -- 由于我们选的是Mearly型状态机,根据现态输出
    -- 在这里修改不同的状态的输出
    process (state, input)
    begin
            case state is
                -- 若现在状态为s0 且输入为1 则输出00
                -- 这里可以修改为其他的条件,描述现态为s0时需要处理的内容
                -- 其他状态类似
                when s0=>
                    if input = '1' then
                        output <= "00";
                    else
                        output <= "01";
                    end if;
                    ......
            end case;
    end process;

end rtl;

转载于:https://www.cnblogs.com/he11o-liu/p/7503251.html

你可能感兴趣的:(VHDL学习:利用Quartus自带库3步快速完成状态机)