mikrocontroller.net

Forum: FPGA, VHDL & Co. Probleme: Erstes Programm mit Quartus II


Autor: He (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe mit die Web Edition von Quartus II installiert. Nun möchte ich 
ein kleines Beispiel VHDL Programm zum laufen bringen. Ich möchte das 
ganze nur simulieren. Harware besitze ich nicht. Wenn ich Start 
Compilation drücke erscheinen folgende Fehlermeldungen:

Info: 
*******************************************************************
Info: Running Quartus II Analysis & Synthesis
  Info: Version 10.1 Build 197 01/19/2011 Service Pack 1 SJ Web Edition
  Info: Processing started: Fri Feb 18 16:51:07 2011
Info: Command: quartus_map --read_settings_files=on 
--write_settings_files=off Adder -c Adder
Info: Found 2 design units, including 1 entities, in source file 
adder.vhd
  Info: Found design unit 1: test_add-rtl
  Info: Found entity 1: test_add
Error: Top-level design entity "Adder" is undefined
Error: Quartus II Analysis & Synthesis was unsuccessful. 1 error, 0 
warnings
  Error: Peak virtual memory: 222 megabytes
  Error: Processing ended: Fri Feb 18 16:51:09 2011
  Error: Elapsed time: 00:00:02
  Error: Total CPU time (on all processors): 00:00:02
Error: Quartus II Full Compilation was unsuccessful. 3 errors, 0 
warnings

Wahrscheinlich liegt es auch daran, dass ich noch keine Pins zugewiesen 
habe. Wie mache ich dies mit Qurtus II ?

Autor: zachso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi!

also erstmal: was du willst ist simulation, da bist du bei synthese 
eigentlich ganz falsch erstmal (es gibt da zwar sowas wie post-synthese 
simulation, aber das ist eigentlich nicht was du willst).
du brauchst auch keine pins, aber wenn du uns mal deinen code posten 
koenntest kann man dir weiterhelfen und das ganze zum simuliern bringen.
ob und wie man mit quartus simuliert weiss ich nicht, ich benutz fast 
nur xilinxzeug, aber von altera gibts das ebenfalls kostenlose modelsim:
http://www.altera.com/products/software/quartus-ii...
das reicht fuer deine zwecke wahrscheinlich vollkommen. damit kannst du 
das dann simulieren.

Autor: He (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi zachso, danke für deine Hilfe. Im Anhang befindet sich der VHDL-Code. 
Es handelt sich dabei um einen einfachen Zähler. Wie könnte man sowas 
mit Quartus II simulieren (Signalverläufe anschauen)? Ist dies 
überhaupt, mit Quartus II zu simulieren ?

Autor: Christoph S. (mixer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
He schrieb:
> Error: Top-level design entity "Adder" is undefined

Was hast du "Adder" genannt?
Das Projekt? Die VHDL-Datei?

Bei Quartus solltest du immer gleiche Namen für Projekt, top-level Datei 
usw. verwenden, das erspart dir n haufen Ärger!

MFG Mixer

Autor: He (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, habe falsche Datei angegeben. Im Anhang befindet sich die 
richtige Datei. Für eine reine Simulation reicht ModelSim von Altera 
Quartus II vollkommen aus ?

Autor: Christoph S. (mixer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann nenn doch die entity "test_add" in "Adder" um und probiers nochmal!

Übrigens schreibt man meistens die Namen in VHDL in GROSSBUCHSTABEN, 
obwohl das funktionell egal ist.

MFG Mixer

Autor: He (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok das habe nun gemacht und nochmals Start Compilation ausgeführt. Es 
erscheinen nur ein paar Warnungen. Wie kann ich jetzt mir nun die 
zeitlichen Signalverläufe anschauen ? Was müsste ich da noch 
konfigurieren ?

Autor: He (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab mir nun mal ModelSim für Altera Quartus II heruntergeladen und 
installiert. Wenn ich ModelSim ausführem, erscheint eine Fehlermeldung.
Irgendwas stimmt mit der Lizens nicht. Dies ist aber eine kostenlose 
Version.

Autor: berndl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christoph S. schrieb:
> Übrigens schreibt man meistens die Namen in VHDL in GROSSBUCHSTABEN,

...im Zeitalter von Syntaxhighlighting bei Editoren nicht mehr. 
GROSSSCHRIFT ist schlechter lesbar als z.B. GrossSchrift oder auch 
gross_schrift...

Autor: He (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe nochmals Start Compilation ausgeführt. Es
erscheinen nur ein paar Warnungen. Wie kann ich jetzt die
zeitlichen Signalverläufe anschauen ? Was müsste ich da noch
konfigurieren in Quartus II?

Autor: He (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich "Start SignalProbe Comoilation" starte erscheinen einige 
Fehlermeldungen:

Error: Can't perform ECO Fit -- no Fitter ECOs to apply
Error: Quartus II Fitter was unsuccessful. 1 error, 0 warnings
  Error: Peak virtual memory: 189 megabytes
  Error: Processing ended: Fri Feb 18 18:27:55 2011
  Error: Elapsed time: 00:00:01
  Error: Total CPU time (on all processors): 00:00:01
Error: Current flow ECO Fitting ended unexpectedly

Autor: He (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei mir gibt es auch keine Möglichkeit ein Vector Waveform File zu 
erzeugen.Die Auswahl gibt es gar nicht.

Autor: Harald Flügel (hfl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo He,

ich hab diese Thread eben erstmals gesehen und von oben bis unten 
durchgelesen. Ich habe das Gefühl bekommen, Du liest die Antworten nicht 
richtig. Vergiss bitte Quartus. Für die Simulation benutzt man Quartus 
nicht. Hör auf zu kompilieren, schließe alle Fenster bis du den Desktop 
sehen kannst. Dann schau in die Taskleiste ob da noch ein Quartus 
rumliegt. Wenn ja, schließen. Bei Bedarf boote den Rechner neu. Und lass 
die Finger von Quartus.

Das Programm deiner Wahl heißt "ModelSim-Altera Starter Edition". Kann 
sein, dass Du aus versehen "ModelSim-Altera" installiert hast. Wenn ja, 
dann weg damit und die Starter-Edition installiert. Und dann das 
Tutorial über ModelSim lesen, dann sollte die Richtung stimmen.

Viel Erfolg,
Harald

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Harald Flügel schrieb:
> Ich habe das Gefühl bekommen, Du liest die Antworten nicht richtig.
Da bin ich mal gespannt, ob er deine Antwort liest... ;-)

Mal von solchen kleinen Software-Hackeleien abgesehen ein paar Worte zum 
VHDL-Code...
Das mit der Vektorbreite width ist hier maximal misslungen:
  generic ( width : integer := 17 );   -- Die landläufige Denkweise: Width = Breite = Anzahl Bits....
  port ( clk        : in  std_ulogic;
         :
         inp1, inp2 : in  std_logic_vector ( width downto 0);  -- Pech, schon die Eingangsvektoren sind ein Bit breiter als witdh
         sum        : out std_logic_vector ( (width + 1) downto 0) ); -- und logischerweise der Ausgangsverktor gleich 2 Bits...
end test_add;

architecture rtl of test_add is

  constant terminal_count     : integer := 2**( sum'high + 1 ) - 1; -- hier hätte man auch mit width weiterrechnen können....
  subtype  adder_range is integer range 0 to terminal_count;  
  signal   sumx, inp1x, inp2x : adder_range;

begin  --  rtl 
  sum   <= std_logic_vector( to_unsigned ( sumx, width + 2 )); -- und hier ist der Zielvektor 2 Bits breiter als width...

Das Ganze hätte so abgekürzt werden können:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity test_add is
  generic ( width : integer := 18 );
  port ( clk        : in  std_ulogic;
         reset      : in  std_ulogic;
         enable     : in  std_ulogic;
         inp1, inp2 : in  std_logic_vector (width-1 downto 0);
         sum        : out std_logic_vector (width downto 0);
end test_add;

architecture rtl of test_add is
begin  
  process ( clk, reset )
  begin
    if reset = '0' then
      sumx <= (others=>'0');
    elsif rising_edge (clk) then
      if enable = '1' then
        std_logic_vector(to_unsigned( to_integer(unsigned(inp1)) + to_integer(unsigned(inp2)), sum'length));
      end if;
    end if;
  end process adder;
end rtl;

Autor: He (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke erstmal für eure Unterstützung. Ich habe mir nun "ModelSim-Altera 
6.6c (Quartus II 10.1) Starter Edition" heruntergeladen und folglich 
auch installiert. Das mit dem zeitlichen SIgnalverlauf anzeigen lassen 
funktioniert nicht. Was müsste ich da zuvor noch in ModelSim 
konfigurieren?

Autor: berndl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> Das Ganze hätte so abgekürzt werden können:

nee, nich wirklich. Beim drueberschauen fallen mir sofort 3 Fehler auf 
:o)
Ausserdem sehe ich: Du verwendest, entgegen deiner heiligsten 
Ueberzeugungen, sogar einen asynchronen Reset... Huiiiii :o)

Nochwas an den TO: Du schreibst oben, du willst simulieren. Dazu 
brauchst du wie schon mehrfach erwaehnt einen VHDL Simulator. Das kann 
ModelSim sein, oder auch ISIM falls du Xilinx ISE verwendest, aber auch 
z.B. GHDL. Wenn du z.B. einen Debian/Ubuntu Rechner hast, dann einfach 
ueber die Paketverwaltung GHDL und GTKWAVE installiert, hier im Forum 
mal nach 'ghdl' gesucht, da findest du alles notwendige.

Ausserdem brauchst du noch eine sog. Testbench (auch mal hier die SuFu 
benutzen).

Autor: He (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab nun mal einen ganz einfachen addierer gebastelt. Der Code lässt 
sich auch ohne Fehler mit ModelSim übersetzen. Ich kann nur nicht den 
zeitlichen Verlauf darstellen.

Autor: zachso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du brauchst eine testbench, die findest du hier als beispiel:
http://www.quicknet.se/hdc/hdl/ha_fa/index.htm

die testbench integrierst du dann in dein modelsim-projekt und dann 
kanns los gehn

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
berndl schrieb:
> nee, nich wirklich. Beim drueberschauen fallen mir sofort 3 Fehler auf
> :o)
Naja, schnell hingekritzelt eben. BTW: es sind 4 Fehler...  ;-)

> Ausserdem sehe ich: Du verwendest, entgegen deiner heiligsten
> Ueberzeugungen, sogar einen asynchronen Reset... Huiiiii :o)
Da wollte ich nicht schon zu Anfang zuviel Verwirrung stiften...

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.