Hallo, ich versuche grade vergebens ein ganz einfaches Programm mit ModelSim zu simulieren. Xilinx ISE kann das Programm ohne probleme kompilieren. ModelSim meint das es keine std_logic kennt, ich habe noch ein so kleines Programm, in dem nur mit bit und integer gearbeitet wird. Das wird sowohl von ISE als auch Modelsim gefressen. Hier mal die Fehlermesdungen: # Model Technology ModelSim XE vcom 5.5e_p1 Compiler 2001.11 Nov 16 2001 # -- Loading package standard # -- Loading package std_logic_1164 # -- Loading package numeric_std # -- Compiling entity oszi # -- Compiling architecture behavioral of oszi # -- Compiling entity test # -- Compiling architecture tb1 of test # ERROR: C:/oszi1.vhd(38): Unknown identifier: std_logic_vector # ERROR: C:/oszi1.vhd(39): Unknown identifier: std_logic_vector # ERROR: C:/oszi1.vhd(40): Unknown identifier: std_logic # ERROR: C:/oszi1.vhd(43): Unknown identifier: std_logic_vector # ERROR: C:/oszi1.vhd(44): Unknown identifier: std_logic_vector # ERROR: C:/oszi1.vhd(45): Unknown identifier: std_logic und hier mal das ganze Programm library IEEE; use IEEE.STD_LOGIC_1164.ALL; use ieee.numeric_std.all; --use IEEE.STD_LOGIC_ARITH.ALL; --use IEEE.STD_LOGIC_UNSIGNED.ALL; --******************************************************** entity oszi is Port ( outbus:out std_logic_vector(7 downto 0); --Adressbus inbus:in std_logic_vector(7 downto 0); --Datenbus clk_in:in std_logic -- Clock Input ); end oszi; --******************************************************** architecture Behavioral of oszi is begin process(clk_in) begin if rising_edge(clk_in) then outbus <= inbus; end if; end process; end Behavioral; --******************************************************** entity test is end test; --******************************************************** architecture tb1 of test is component oszi port( outbus:out std_logic_vector(7 downto 0); --Adressbus inbus:in std_logic_vector(7 downto 0); --Datenbus clk_in:in std_logic); -- Clock Input end component; signal toutbus : std_logic_vector(7 downto 0); --Adressbus signal tinbus : std_logic_vector(7 downto 0); --Datenbus signal tclk_in : std_logic; -- Clock Input begin DUT: oszi port map (toutbus,tinbus,tclk_in); STIMULUS: process begin tclk_in <= '0'; wait for 1 ps; tclk_in <= '1'; wait for 1 ps; -- and so on ... end process STIMULUS; STIMULUS2: process begin tinbus <= "00000000"; wait for 10 ps; tinbus <= "11111111"; wait for 10 ps; -- and so on ... end process STIMULUS2; end tb1;
Du hast nach der component declaration irgendwo bei Zeile 35-37 das "is" vergessen. Es muß heisen : component oszi is port (... ) Du solltest aber besser für jede Einheiten jeweils eine eigene Dateien schreiben. Grüße Klaus
Und es muß natürlich "Es muß heißen : " heißen. (Trotz Rechtschreibreform !) Klaus
Hallo, schon mal vielen Dank für Hilfe. Die Fehler das Modelsim die std_logic nicht kennt sind schon mal weg, nachdem ich in der besagten Zeile 36 ein is eingefügt habe. Es steht dort jetzt also: component oszi is --Zeile 36 port( outbus:out std_logic_vector(7 downto 0); --Adressbus inbus:in std_logic_vector(7 downto 0); --Datenbus clk_in:in std_logic); -- Clock Input end component; Jedoch meckert Modelsim diese Zeile 36 jetzt folgendermaßen an: # Model Technology ModelSim XE vcom 5.5e_p1 Compiler 2001.11 Nov 16 2001 # -- Loading package standard # -- Loading package std_logic_1164 # -- Loading package numeric_std # -- Compiling entity oszi # -- Compiling architecture behavioral of oszi # -- Compiling entity test # -- Compiling architecture tb1 of test # ERROR: C:/oszitest/oszi1.vhd(36): near "is": expecting: END Ich weis nicht wo da ein end fehlen soll, eventuell bin ich ja mitlerweile blind und sehe den Wald vor lauter Bäumen nicht mehr. mfg Stefan
Du musst vor der zweiten entity, d.h. vor "entity test is end test;" nochmal die Bibiliotheken einbinden, also das hier schreiben: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use ieee.numeric_std.all;
Hallo, jetzt funktioniert es. Ich habe wie Xenu sagte die Bibliotheken vor der entity test nochmals eingebunden. Wenn man schreibt component oszi is --Zeile 36 port( outbus:out std_logic_vector(7 downto 0); --Adressbus inbus:in std_logic_vector(7 downto 0); --Datenbus clk_in:in std_logic); -- Clock Input end component; bekommt man trotzdem einen Fehler, wie oben beschrieben. Das "is" darf da nicht stehen. Es muss so heißen: component oszi --Zeile 36 port( outbus:out std_logic_vector(7 downto 0); --Adressbus inbus:in std_logic_vector(7 downto 0); --Datenbus clk_in:in std_logic); -- Clock Input end component; Vielen Dank, jetzt kann ich endlich weitermachen :-) mfg Stefan
>Das "is" darf da nicht stehen. O doch, das darf es schon. Ich habe hier den IEEE-1076-Standard, also die VHDL-Spezifikation, die 2000er und 2002er-Ausgabe, und da steht folgendes: component_declaration ::= component identifier [ is ] [ local_generic_clause ] [ local_port_clause ] end component [ component_simple_name ] ; Das "is" ist unnötig, aber nicht verboten. Dein Modelsim irrt.
#>Das "is" darf da nicht stehen. #O doch, das darf es schon. Ich habe hier den IEEE-1076-Standard, also #die VHDL-Spezifikation, die 2000er und 2002er-Ausgabe, und da steht #folgendes: Man kann dem modelsim sagen nach welchen standard (VHDL-87 (?) VHDL-93 oder VHDL-2002) es compilieren soll. IMHO ist das "is" ab -93 drin, vorher nicht. Schau also das die compileroptionen nicht auf 87 Standard stehen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.