2016-06-27 4 views
0

Ich habe ein Paket, das ein Array hat.Array in VHDL auswählen

type reg_array_type is array (1 downto 0) of std_logic_vector(7 downto 0); 
    constant REG_ARRAY_C : reg_array_type := (
    x"00", 
    x"01"; 

Ich verwende dieses Paket in

data_write  <= REG_ARRAY_C(conv_integer(unsigned(index))); 

Was ich versuche, die Daten aus dem Paket zu tun zugreifen (x „00“, x „01“) einzeln und speichern Sie es zu data_write. In meiner Simulation wird jedoch nur x "01" gespeichert.

Wie greife ich auf x "00" aus dem Array, um es zuerst in data_write zu speichern, dann speichern x "01"?

Antwort

1

Wenn Sie das erste Byte zugreifen wollen, dann schreiben Sie müssen nur ...

data_write  <= REG_ARRAY_C(1); -- data_write is assigned x"00" 

... Und die zweite:

data_write  <= REG_ARRAY_C(0); -- data_write is assigned x"01" 

Wenn ich Ihnen einen Rat geben kann , Verwende ich lieber TO anstelle von DOWNTO bei der Deklaration eines Arrays, da es verständlicher ist: das erste Byte ist die 1, das letzte ist N wie:

type my_array is array (1 TO N) of std_logic_vector(7 downto 0); 

Natürlich ist das nur ein Vorschlag

+0

Vielen Dank! Das hat mein Problem gelöst. –