mikrocontroller.net

Forum: FPGA, VHDL & Co. VHDL und Modelsim, bit geht -- std_logic nicht


Autor: Stefan G. (stefan8051)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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;

Autor: Stefan G. (stefan8051)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mfg
Stefan (vergessen)

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und es muß natürlich
"Es muß heißen : "
heißen. (Trotz Rechtschreibreform !)

Klaus

Autor: Stefan G. (stefan8051)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Xenu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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;

Autor: Stefan G. (stefan8051)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Xenu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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.

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#>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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.