unsigned char Feld[8] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};
Das ist in VHDL allerdings schon ein zweidimensionales Feld, weil bereits der Schritt vom Bit zum Vektor eine Dimension ist. Erst wird ein std_logic_vector() gebildet, dann mehrere dieser Vektoren mit array() hintereinandergereiht:
type FeldTyp is array (0 to 7) of std_logic_vector(3 downto 0);
signal Feld : FeldTyp := (x"0",x"1",x"2",x"3",x"4",x"5",x"6",x"7");
signal cnt : integer range 0 to 7 := 0;
begin
process (clk) begin
if rising_edge (clk) then
if(cnt<7) then cnt <=cnt+1;
else cnt <=0;
end if;
end if;
end process;
output <= Feld(cnt);
end Behavioral;
Der Index auf ein Feldelement (hier cnt) muß ein Integer sein. Wie Felder in der Hardware implementiert werden, hängt von der Beschreibung ab. Ein überschaubar kleines Feld wie das obige wird in Logik aufgelöst, der nächste Schritt wäre dann z.B. bei Xilinx ein Distributed RAM. Wird dann die Lese-Adresse noch registriert, ergibt sich ein BRAM.