Ich habe diesen Code für einen seriellen Addierer in VHDL. Ich versuche es zur Arbeit zu kommen, aber ich halte auf einen Fehler erhalten, die sagt:VHDL-Codefehler
Fehler in VHDL Datei gefunden -
Line: 17 Fehler: Index-Einschränkung in der Subtyp Anzeige erwartet
Dieser Fehler bezieht sich auf die Zeile:
Ich bin mir nicht sicher, warum das passiert. Irgendeine Hilfe? Bitte finden Sie den vollständigen Code unten.
library ieee;
use ieee.std_logic_1164.all;
entity adder is
port(
start : in std_logic;
clk : in std_logic;
a_out : out std_logic_vector(3 downto 0)
);
end adder;
architecture behave of adder is
signal a, b : std_logic_vector(3 downto 0);
signal shift : std_logic;
signal Cin, Cout : std_logic;
signal sum_in : std_logic;
signal state, next_state : integer range 0 to 3;
begin
sum_in <= a(0) xor b(0) xor Cin;
Cout <= (Cin and a(0))or(Cin and b(0))or(a(0) and b(0));
a_out <= a;
process(state, start)
begin
case state is
when 0 =>
if start = '1' then shift <= '1'; next_state <= 1;
else shift <= '0'; next_state <= 2; end if;
when 1 => shift <= '1'; next_state <= 2;
when 2 => shift <= '1'; next_state <= 3;
when 3 => shift <= '1'; next_state <= 0;
end case;
end process;
process(clk)
begin
if clk'event and clk = '0' then
state <= next_state;
if shift = '1' then
a <= sum_in & a(3 downto 1);
b <= b(0) & b(3 downto 1);
Cin <= Cout;
end if;
end if;
end process;
end behave;
verwenden, das Tool verwenden Sie? Ihr Code analysiert gut mit ModelSim, und auch mit Quartus 13.1 wird gut analysiert und synthetisiert. –
In welchem Kontext (was tool0? Ihr Code ist gültig VHDL und analysiert. Sie scheinen eine Werkzeugeinschränkung zu begegnen. Beachten Sie, dass ohne Initialisierung a und b nichts interessantes während der Simulation tun. – user1155120
Ich benutze Edwinxp. Es hat eine Funktion, die VHDL zu Schematic Conversion erlaubt.Ich versuche es zu nutzen, aber ohne Erfolg .. – user3026388