Ich versuche tun, um eine Art erklären im Hafen zu benutzen, aber ich bin mit einem Problem wenn ich wie folgt vorgehen ich eine Fehlermeldung erhalten, dass std_logic_vector nichtVHDL-Paket und std_logic_vector
erklärtlibrary IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.numeric_std.all;
-- Custom types --
package Common is
type Mem_in is array (2**6 to 0) of STD_LOGIC_VECTOR (11 downto 0);
type DinDout is range 11 downto 0;
end package Common ;
-- Use Custom Type
use work.Common.all;
entity MUX is
Port (
D : in Mem_in;
Q : out DinDout;
SEL : in STD_LOGIC_VECTOR (11 downto 0)
);
end MUX;
Warum kann ich STD_LOGIC_VECTOR nicht verwenden? Wenn ich es zu DinDout ändere, bekomme ich ein anderes Problem in der Architektur: to_integer wird nicht deklariert; Der indizierte Name ist kein Dindout.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.numeric_std.all;
-- Custom types --
package Common is
type Mem_in is array (2**6 to 0) of STD_LOGIC_VECTOR (11 downto 0);
type DinDout is range 11 downto 0;
end package Common ;
Und das Unternehmen mit Paket Häufig:
-- Use Custom Type
use work.Common.all;
entity MUX is
Port (
D : in Mem_in;
Q : out DinDout;
SEL : in DinDout
);
end MUX;
architecture Arc of MUX is
begin
Q <= D(to_integer(unsigned(SEL)));
end Arc;
wie kann ich std_logic_vector meinem Paket hinzufügen oder lösen diese zwei Fehler: to_integer wird nicht erklärt; indizierter Name ist kein Dindout?
dank
Zusätzlich zu der MUX Entitätsdeklaration fehlende Kontexteinträge in der vorhergehenden Kontextklausel hat Ihr 'Mem_in' Array Typ 2 \ * \ * 6 + 1 (2 \ * \ * 6 ** downto ** 0) Elemente Gehen Sie die gleiche Anzahl von verschiedenen Indizes nicht 2 \ * \ * DinDout'length verursacht eine Einschränkung Einschränkungen für einige Werte von SEL. Ihre Speichergröße sollte eine Potenz von 2 sein, die der Länge von SEL entspricht. Es scheint ungewöhnlich, einen Port mit so vielen "Bits" (2 \ * \ * 6 + 1 * 12 - die Länge eines Speicherelements oder 780) zu versehen. Dieser Speicher liest MUX, der sich wahrscheinlich mit dem tatsächlichen für D besonders befinden sollte – user1155120
Typ DinDout ist ein abstrakter numerischer Typ mit einem Wertebereich von 11 downto 0, während D (to_integer (unsigned (SEL))) ein indiziertes Element von D ist, das ein Array von std_logic_vectors mit einem Indexbereich von 11 downto ist 0. Sie sind verschiedene Arten. Beachten Sie, dass Ihre angenommene Antwort nicht adressiert * ... ODER diese zwei Fehler beheben: ... indizierter Name ist kein Dindout? * Sie haben mehrere Fehler. – user1155120