2016-05-17 13 views
0

Ich synthetisierte meine VHDL-Code. Als ich den RTL-Viewer sah, erwartete ich ein weiteres Ergebnis. Ich habe einen State-Machine-Build mit VHDL-Code (siehe unten) und habe das folgende Ergebnis (siehe Bild). Einige Dinge, die ich hier nicht bekomme:Erwartete eine umfangreichere RTL Viewer

  • Was bedeutet 1'h0?
  • Was bedeutet state~7?
  • Warum gibt es nur einen Block state? Wo sind die anderen Staaten?

VHDL-Code:

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 Bauplan:

RTL Viewer

+0

Gibt es eine Hierarchie? Logic-Synthesizer kennen State-Maschinen. Sie hätten Ihren Code als eine Zustandsmaschine erkannt. Ist die gelbe Box vielleicht eine niedrigere Ebene mit etwas mehr Logik darin? –

+0

'1'h0' ist wahrscheinlich Verilog. Es bedeutet ein 1-Bit breites hexadezimales Literal mit dem Wert 0. So wäre zum Beispiel '4'hF'' X "F" 'oder' "1111" 'in VHDL. –

+1

Es gibt wahrscheinlich ein Tag für das Tool des jeweiligen Anbieters. Das hinzugefügte Tag könnte einen Mehrwert für diejenigen ergeben, die Stackoverflow als Ressource verwenden. – user1155120

Antwort

2

Der Betrachter verwendet Verilog-Notation für Konstanten und 1'h0 in Verilog ist die gleiche wie '0' in VHDL.

Das OR-Gatter heißt einfach state~7, genauso wie die gelbe Box state heißt. Daher ist das ODER-Gatter einfach ein Inverter, so dass das Zurücksetzen auf state Block not reset für den externen Reset-Eingang ist.

Der Rest des Entwurfs mit der Zustandsmaschine wird in einen internen Block mit dem Namen state gelegt, wenn Sie also auf diesen doppelklicken, wird er wahrscheinlich erweitert. Der S1101-Ausgang am state-Block wird im Zustand S1101 aktiviert, da nur dann der Z-Ausgang '1' ausgegeben wird.