Ich möchte die Multiplikation von 2 Matrix, und ich versuche, ein Array von Std_logic_vectors in VHDL zu machen.mehrdimensionale Arrays in VHDL
package matrice is
type t11 is array (32 downto 0,0 downto 19) of unsigned(7 downto 0);<
type t1 is array (0 downto 19) of t11;
type t2 is array (0 downto 194) of unsigned(7 downto 0);
entity matrice_test is
Port (clk : in STD_LOGIC;a : in t1;b : in t2;multi :out t2);
end matrice_test;
architecture Behavioral of matrice_test is
type t11 is array (M_MAX-1 downto 0,0 downto O_MAX-1) of unsigned(N-1 downto 0);
type t1 is array (0 downto O_MAX-1) of t11;
type t2 is array (0 downto N_MAX-1) of unsigned(N-1 downto 0);
Der Fehler, ich erhalte:
indexed name prefix type t11 expects 2 dimensions
Dies scheint eine Synthese zu sein sis Fehler (FEHLER: HDLCompiler: 540). Stellen Sie ein [minimales, vollständiges und überprüfbares Beispiel] (https://stackoverflow.com/help/mcve) bereit. Beachten Sie außerdem, dass die überladenen Typdeklarationsnamen t11, t1 und t2 in der deklarativen Region der Architektur nicht mit den in der Paketmatrix gefundenen (und vermutlich für die Ports a und b fehlenden), die keine Kontextklausel enthalten, kompatibel sind und diese ausblenden. Jede Deklaration in VHDL ist eindeutig, sie sind nicht vom selben Typ. Überlegen Sie, ob Sie zuerst Ihr Design simulieren. Zeigen Sie vollständige Fehlermeldungen an. – user1155120
Siehe IEEE Std 1076-2008 5.3.2.2 Indexbeschränkungen und diskrete Bereiche, Absatz 4 "... Wenn einer der diskreten Bereiche einen Nullbereich definiert, ist jedes so beschränkte Array ein * Null-Array *, das keine Elemente enthält ... . " – user1155120