Frage

Wie kann man Bits in VHDL verketten? Ich versuche, den folgenden Code zu verwenden:

Case b0 & b1 b2 b3  ...

und es wirft einen Fehler

Danke

War es hilfreich?

Lösung

Der Verkettungsoperator ‚&‘ ist auf der rechten Seite des Signalzuweisungsoperators ‚<=‘ erlaubt, nur

Andere Tipps

Hier ist ein Beispiel für Verkettungsoperator:

architecture EXAMPLE of CONCATENATION is
   signal Z_BUS : bit_vector (3 downto 0);
   signal A_BIT, B_BIT, C_BIT, D_BIT : bit;
begin
   Z_BUS <= A_BIT & B_BIT & C_BIT & D_BIT;
end EXAMPLE;

Sie sind nicht zu verwenden, um den Verkettungsoperator mit der Case-Anweisung erlaubt. Eine mögliche Lösung ist eine Variable im Prozess zu verwenden:

process(b0,b1,b2,b3)
   variable bcat : std_logic_vector(0 to 3);
begin
   bcat := b0 & b1 & b2 & b3;
   case bcat is
      when "0000" => x <= 1;
      when others => x <= 2;
   end case;
end process;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top