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.