有限状態マシンであることをコンパイラに知らせずに、有限状態マシンを設計するVHDLコードを実装するにはどうすればよいですか? 与えられたコードでは、クラス内でFSMをどのように実装したかを見ることができますが、RTLビューアには状態図が示されています。 さらに私の教授は、コンパイラがFSMを認識しないと、設計がより高速になると言いました。VHDL有限状態マシン
library IEEE;
use IEEE.std_logic_1164.all;
entity fsm is
port (clk, reset, x1 : IN std_logic;
outp : OUT std_logic);
end entity;
architecture beh1 of fsm is
type state_type is (s1,s2,s3,s4);
signal state, next_state: state_type ;
begin
process1: process (clk,reset)
begin
if (reset ='1') then
state <=s1;
elsif (clk='1' and clk'Event) then
state <= next_state;
end if;
end process process1;
process2 : process (state, x1)
begin
case state is
when s1 => if x1='1' then
next_state <= s2;
else
next_state <= s3;
end if;
when s2 => next_state <= s4;
when s3 => next_state <= s4;
when s4 => next_state <= s1;
end case;
end process process2;
process3 : process (state)
begin
case state is
when s1 => outp <= '1';
when s2 => outp <= '1';
when s3 => outp <= '0';
when s4 => outp <= '0';
end case;
end process process3;
end beh1;
なぜコンパイラがコード構造をFSMとして認識できるのか? –
なぜ誰かがこれをしたいですか?ヒント1:多くのツールが、使用された信号によってFSMを認識します。したがって、あなたの状態に列挙型を使用しないでください。ヒント2:ほとんどのツールでFSM抽出を無効にすることができます。 Hint3:FSMはパターンマッチングによって認識されます。したがって、サポートされていないパターンを使用するか、2/3プロセス形式を使用しないでください。状態図ではなくRTLビューアでFSMのRTLビューを表示するという目標はありますか? – Paebbels
私の教授は、コンパイラの用量がFSM – user3159792