2016-05-04 11 views
-4

Ich habe den folgenden Code für einen VHDL NPN-Schalter codiert, aber aus irgendeinem Grund, obwohl die Syntax korrekt ist und es gut kompiliert, funktioniert die Ausgabe nicht auf Simulation.NPN simuliert nicht in VHDL

LIBRARY ieee; 
LIBRARY work; 
USE ieee.std_logic_1164.all; 

entity npn is port (
    p_In : in std_logic; 
    p_Gate: in std_logic; 
    p_Out : out std_logic  
); 
end; 

architecture Simple of npn is 
begin 
    process(p_In, p_Gate) 
     variable control: std_Logic; 
    begin 
     case p_Gate is 
      when '0' | 'L' => 
       p_Out <= '0'; 
      when '1' | 'H' => 
       p_Out <= p_In; 
      when others => 
       p_Out <= '0'; 
     end case; 
    end process; 
end; 

Ok, das Problem ist die Simulation zeigt, 0-Übergang unabhängig von den Eingängen I in der P_in und p_Gate verwenden. Was könnte das Problem sein? Es ist ein einfacher Code und jede Hilfe wird geschätzt. Danke.

+2

Könnten Sie sind, was genau sind Sie sehen, dass macht Sie glauben, der Ausgang ist falsch? Vielleicht ein Screenshot der Simulation? Vielleicht der Übergang, der scheitert? –

+1

Sollte dies ein NPN-Transistor oder ein MOSFET sein? –

+0

Ok, das Problem ist, dass die Simulation 0 Transition zeigt, unabhängig von den Eingängen, die ich in p_In und p_Gate verwende. Was könnte das Problem sein? – loumbut5

Antwort

-5

sollten Sie or anstelle von |

case p_Gate is 
    when '0' or 'L' => p_Out <= '0'; 
    when '1' or 'H' => p_Out <= p_In; 
    when others => p_Out <= '0'; 
end case; 
+2

Nein, Sie sollten 'oder' nicht verwenden. Ich fürchte, Sie irren sich. 'or' ist der Operator OR in VHDL; '|' wird für Alternativen für Fallanweisungen verwendet. '|' ist die korrekte Syntax; 'or' kompiliert nicht, weil ein solcher Ausdruck in einer 'case'-Anweisung ein _simple_Ausdruck_ sein muss. –