2017-05-31 6 views
0

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 
+2

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

+0

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

Antwort

2

ich Ihre Fehler nicht reproduzieren können (wie etwa eine MCVE Einreichung), aber diese

type t11 is array (323 downto 0,0 downto 19) of unsigned(7 downto 0); 

diese

sollte
type t11 is array (323 downto 0,0 to 19) of unsigned(7 downto 0); 
--        ^
--         | 
+0

Vielen Dank für Ihre Anfrage, während der Simulation meines Programms erhalte ich diesen Fehler" indizierter Name Präfix Typ t11 erwartet 2 Dimensionen "in diesem Linientyp t11 ist Array (323 downto 0,0 bis 19) von unsigned (7 downto 0); Ich habe versucht, "zu" anstelle von Downto zu tun, aber ich finde den gleichen Fehler – rola

+0

Nun @ rola, wie ich nichts anderes falsch mit dieser Linie sehen kann, kann ich Ihnen nicht helfen, es sei denn Sie einen MCVE konstruieren. Wie wäre es mit EDA Playground? –

+0

Diese Zeile ist gültig VHDL. 0 bis 19 ist ein Nullbereich. Deine Antwort ist wirklich ein Kommentar, nichts anderes ist möglich ohne MCVE und vollständige und spezifische Fehlermeldungen (vermutlich aus der Synthese). 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 .... "Die Designspezifikation scheint keine funktionalen und überladenen Typdeklarationen zu sein, da die deklarativen Elemente der Architektur selbst bei gleicher Dimensionalität und Elementart nicht identisch sind. – user1155120

Verwandte Themen