web-dev-qa-db-fra.com

Concaténation de bits en VHDL

Comment concaténer des bits en VHDL? J'essaie d'utiliser le code suivant:

Le cas B0 & B1 & B2 & B3 est ...

et il jette une erreur

Merci

15
Zain Rizvi

L'opérateur de concaténation "&" est autorisé sur le côté droit de l'opérateur d'attribution de signal "<=", uniquement

25
user21246

Voici un exemple d'opérateur de concaténation:

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;
12
user21246

Vous n'êtes pas autorisé à utiliser l'opérateur de concaténation avec l'instruction case. Une solution possible consiste à utiliser une variable dans le processus:

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;
12
Justin