2016-05-17 2 views
0

VHDLコードを合成しました。私がRTLビューアを見たとき、私は別の結果を期待していました。 VHDLコードで状態マシンを構築し(下記参照)、次の結果を得ました(画像参照)。私がここにいないもの:より広範なRTLビューアが必要です

  • 1'h0は何を意味していますか?
  • state~7の意味は?
  • ブロックが1つしかないのはなぜですかstate?他の州はどこですか?

VHDLコード:

ENTITY state_machine IS 
PORT ( clk: IN std_logic; 
     reset: IN std_logic; 
     X: IN BIT; 
     Z: OUT BIT); 
END state_machine; 

-- Present State Next State  Output 
--     X  !X 
--         Z 
-- S0    S0  S1  0 
-- S1    S0  S11  0 
-- S11    S110 S11  0 
-- S110   S0  S1101 0 
-- S1101   S0  S11  1 

ARCHITECTURE behaviour OF state_machine IS 
    TYPE states IS (S0, S1, S11, S110, S1101);  
    SIGNAL state : states;       
BEGIN 

next_state : PROCESS(reset, clk)  
BEGIN 
    IF reset='0' THEN 
     state <= S0; 
    ELSIF rising_edge(clk) THEN 
     CASE state IS 
      WHEN S0 => 
       IF X='0' THEN 
        state<=S1; 
       END IF; 
      WHEN S1 => 
       IF X='0' THEN 
        state<=S11; 
       ELSE 
        state<=S0; 
       END IF; 
      WHEN S11 => 
       IF X='0' THEN 
        state<=S11; 
       ELSE 
        state<=S110; 
       END IF; 
      WHEN S110 => 
       IF X='0' THEN 
        state<=S1101; 
       ELSE 
        state<=S0; 
       END IF; 
      WHEN S1101 => 
       IF X='0' THEN 
        state<=S11; 
       ELSE 
        state<=S0; 
       END IF; 
     END CASE; 
    END IF; 
END PROCESS; 

output:PROCESS(state) 
BEGIN 
    CASE state IS 
     WHEN S0 => Z<='0'; 
     WHEN S1 => Z<='0'; 
     WHEN S11 => Z<='0'; 
     WHEN S110 => Z<='0'; 
     WHEN S1101 => Z<='1'; 
    END CASE; 
END PROCESS; 
END behaviour; 

RTL回路図:

RTL Viewer

+0

いくつかの階層はありますか?論理合成者は状態機械について知っている。あなたのコードはあなたのコードをステートマシンとして認識していました。おそらく、黄色のボックスは内部にいくつかのより多くのロジックを持つより低いレベルでしょうか? –

+0

'1'h0'はおそらくVerilogです。これは、値が0の1ビット幅の16進リテラルを意味します。たとえば、 '4'hF'はVHDLの' X "F" 'または' "1111" 'になります。 –

+1

おそらく特定のベンダーのツールのタグがあります。追加されたタグは、Stackoverflowをリソースとして使用するユーザーに価値を追加する可能性があります。 – user1155120

答えて

2

視聴者は、定数のVerilog表記法を使用し、Verilogで1'h0はで'0'と同じですVHDL。

黄色のボックスの名前がstateのように、ORゲートの名前は単にstate~7です。したがって、ORゲートは単にインバータなので、stateブロックへのリセットは外部リセット入力の場合はnot resetです。

ステートマシンの残りのデザインはstateという名前の内部ブロックに配置されていますので、ダブルクリックすると拡張されます。 stateブロック上のS1101出力は、状態S1101にあるときにアサートされます。これは、Z出力であるためです。

関連する問題