ich erhalte diesen Fehler in diesem Code: ter.vhd (31): Kann nicht indizierte (Art ieee.std_logic_1164.STD_ULOGIC) als Typ std.STANDARD.BOOLEAN lösen. irgendeine Idee, wie man es repariert? ich sincerly nicht bekommen, was falsch ist, versucht mit einer Websuche, aber nichts. danke im voraus!VHDL indexiert Name Ausgabe
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY inverter IS
GENERIC(size: integer);
PORT (
a : IN std_ulogic_vector(size-1 DOWNTO 0);
b : OUT std_ulogic_vector(size-1 DOWNTO 0);
carry : OUT std_ulogic;
mode : IN std_ulogic
);
END ENTITY inverter;
ARCHITECTURE behavioral OF inverter IS
COMPONENT alu IS
GENERIC(size: integer);
Port (X : in std_ulogic_VECTOR (size-1 downto 0);
Y : in std_ulogic_VECTOR (size-1 downto 0);
SUM : out std_ulogic_VECTOR (size-1 downto 0);
CARRY : out std_ulogic);
end COMPONENT;
SIGNAL z, c : std_ulogic_VECTOR(size-1 downto 0);
BEGIN
start: process(a,mode)
begin
z <= (others => '0');
IF a(size-1) THEN
c <= not a;
z(0) <= '1';
ELSIF (mode = '1') THEN
c <= not a;
z(0) <= '1';
ELSE
c <= a;
END IF;
end process;
alu1: alu
generic map(size)
PORT MAP(x => c, y => z, sum => b, carry => carry);
END ARCHITECTURE behavioral;
Deklarieren 'a' als ein Array von booleans ein Weg sein würde, damit es funktioniert, aber man müßte auch einige andere Sachen zu beheben. Oder erfahren Sie, wie std_ulogic-Werte normalerweise getestet werden. Tatsächlich haben Sie bereits ein Beispiel dafür im selben Prozess. –
@BrianDrummond Die Anweisung ** WENN a (Größe-1) THEN ** richtig ist? So etwas habe ich noch nie erlebt. Bedeutet dies, dass "wenn ein (Größe-1) WAHR ist"? Außerdem sollte die Größenvariable nicht initialisiert worden sein. – Arkoudinos
'wenn dann 'ist in Ordnung. Also, "WENN a (Größe-1) DANN" ist richtig, wenn "a" ist ein Array von Boolean, was es sein könnte, aber derzeit nicht ist. Es ist auch richtig, wenn Sie die implizite Konvertierung Operatoren in VHDL-2008 verwenden, die ich persönlich nicht mögen, weil sie den Unterschied zwischen physischen Ebenen '‚0'' und '‘ 1'' und logische Ebenen 'true' und' false' Unschärfe B. wenn Sie negative Logik haben. –