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

来源:互联网 发布:mac rstudio xcode 编辑:程序博客网 时间:2024/06/06 01:03

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

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

  • step one
    新建VHDL文档,右键选择Insert Template
    这里写图片描述
  • step two
    在列表中选择状态机,点击Insert。这里以Mearly型状态机为例
    这里写图片描述
  • 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;
3 0
原创粉丝点击