記事 ID: 000080719 コンテンツタイプ: トラブルシューティング 最終改訂日: 2021/08/27

ステート・マシンの電源投入時の初期状態は?

環境

BUILT IN - ARTICLE INTRO SECOND COMPONENT
詳細 Altera® デバイス用のステートマシン 合成する場合、ステートマシンが適切にリセットされていることを確認する必要があります。Not-Gate-Push-Back を使用するか、またはパワーアップ・ハイ・オプションがレジスターに設定されていない限り、Alteraデバイスのすべてのレジスターは低い状態でパワーアップします。すべてのAlteraデバイスは Not-Gate-Push-Back に対応しています。

リセット状態で 1 つ以上の状態ビットが 0 でない状態になるようにステートマシンが定義されている場合、リセット信号を使用してステートマシンを明示的にリセットする必要があります (以下を参照)。この場合、ステートマシンが明示的にリセットされない場合、ステートマシンは未定義の状態にパワーアップする可能性があり、PLUS® IIMAX次のメッセージが表示されます。

情報: 状態マシンの「<>」をリセットして適切な動作を保証する必要があります

この問題を解決するには、ステートマシンを明示的にリセットする必要があります。AHDL、VHDL、Verilog HDL デザインエントリー・フォーマットの例を以下に示します。

AHDL の場合、リセット信号を宣言して表明する必要があります。

SUBDESIGN statemachine

(

  clk, reset, ena, d : INPUT;

  q         : OUTPUT;

)



VARIABLE

  ss: MACHINE WITH STATES (s0=1, s1=0); -- reset state is s0, state register is non-zero



BEGIN



  ss.reset = reset; -- assert this signal to properly reset the state machine



VHDL の場合、初期状態は IF ステートメントとリセット信号によって定義されます。

ENTITY statemachine IS

PORT( clk : IN STD_LOGIC;

input : IN STD_LOGIC;

reset : IN STD_LOGIC;

output : OUT STD_LOGIC);

END statemachine;



ARCHITECTURE a OF statemachine IS

  TYPE STATE_TYPE IS (s1, s2); -- reset state is s1

  ATTRIBUTE ENUM_ENCODING : STRING;

  ATTRIBUTE ENUM_ENCODING OF STATE_TYPE : TYPE IS "1 0"; -- state register for s1 is non-zero

  SIGNAL state : STATE_TYPE;

BEGIN

  PROCESS (clk)

    BEGIN

     IF reset = '1' THEN state <= s2; -- causes state machine to power up in state s2

       IF (clk'EVENT AND clk = '1') THEN

         CASE state IS







Verilog HDL の場合、初期状態はステートメントと a で定義する必要があります IF 。 リセット信号、すなわち。

module statemachine (clk, in, reset, out);

  input  clk, in, reset;

  output out;     

  reg   out;

  reg   state;

      

  parameter s1 = 1, s2 = 0;

  always @ (state) begin

   case (state) -- define outputs

     s1: out = 0;



  always @ (posedge clk or posedge reset) begin

   if (reset) state = s1; -- causes state machine to power up in state s1

   else case (state) -- define state transitions

      s1: if (in) state = s2;



すべての HDL フォーマットで、ステートマシンの初期状態をすべてゼロに定義しない場合、ステートマシンは明示的にリセットされます。 電源が低くなります。

MAX PLUS II ヘルプの AHDL、VHDL、Verilog HDL の各セクションを参照してください。 MAX PLUS II のステートマシンの実装に関する完全な情報。

関連製品

本記事の適用対象: 1 製品

インテル® プログラマブル・デバイス

このページのコンテンツは、元の英語のコンテンツを人力翻訳および機械翻訳したものが混在しています。この内容は参考情報および一般的な情報を提供するためものであり、情報の正確さと完全性を保証するものではありません。インテルは不正確な翻訳があった場合でもいかなる責任を負いません。このページの英語版と翻訳の間に矛盾がある場合は、英語版に準拠します。 このページの英語版をご覧ください。