www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Error: wait statem must contain condition clause with until


Autor: G. B. (geri)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen

Inzischen habe ich es geschaft ein erstes Programm, welches in VHDL 
geschrieben ist, zum Laufen zu bringen. Den Code und ein paar Tipps 
werde ich dann gelegentlich auf meiner Webseite platzieren.

Nun stehe ich aber wieder vor einem Problemchen: Der Titel sagt es 
schon. Ich habe folgenden Code:
library IEEE;
use IEEE.std_logic_1164.all;

entity clkstim is
  port (
    phi1: out STD_LOGIC;
    phi2: out STD_LOGIC;
    reset: out STD_LOGIC);
end clkstim;

architecture clkstim_arch of clkstim is
begin
  reset_process: reset <= '1', '0' after 10 ns;
  clock_process: process
  begin
    phi1 <= '1','0' after 10 ns;
    phi2 <= '0', '1' after 12 ns, '0' after 18 ns;
    wait for 20ns;
  end process clock_process;
end clkstim_arch;

und erhalte die Meldung:
"wait statement must contain condition clause with until"
Der Fehler tritt in der Zeile mit der Anweisung "wait for 20ns" auf.



Habt ihr vielleicht eine Ahnung, wie man dieses Problem lösen kann? Ich 
arbeitet mit Quartus II

Beste Grüsse und vielen Dank im Voraus
Geri

Autor: Rick Dangerus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach mal ein Leerzeichen zwischen "20" und "ns".

Rick

Autor: G. B. (geri)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Rick

nutzt auch nichts...

Geri

Autor: +++ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Prozess braucht entweder eine Sensitivity-Liste oder er muß eine 
wait-until-Abfrage haben. Ist beides nur für den Simulator, aber es ist 
eben gefordert.

Autor: fpgaküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe den source mit modelsim compiliert, funzt bestens. Entweder 
Quartus hat hier nen bug, oder er versucht den Code zu synthetisieren. 
Letzteres kann ja nicht klappen wegen der absoluten Verzögerungen. 
Synthese-VHDL ist nicht standarddisiert, da kocht jeder hersteller sein 
eigenes Süppchen. Da ist es gut möglich das ein "wait until " 
synthetisierbar ist.

Autor: G. B. (geri)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen

In diesem Fall wird es wohl an Quartus liegen. Ich habe diese 
Deklaration aus meinen Beispielunterlagen.


Beste Grüsss und vielen Dank
Geri

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dein VHDL Programm ist typisch für einen VHDL Simulator, Quartus ist 
aber ein Synthese Tool.
Bei der Synthese kannst Du keine Verzögerung angeben, dann müßte das 
FPGA ja einen  Oszillator, oder zumindest eine programmierbare 
Verzögerung enthalten.
Bei der Synthese kannst Du nur auf eine Takt-Flanke warten, also

wait until clock'event and clock = '1';

oder

wait until clock = '1';

Grüße
Klaus

Autor: G. B. (geri)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Klaus

Vielen Dank für Deine Info. Das kann ich nachvollziehen.

Mit obigem Programm wollte ich eigentlich auch nur einen Stimulus für 
den Simualtor erzeugen. Ich war bisher der Annahme, man könne einen 
Stimulus in VHDL codieren, ein weiteres Modul (z.B. die Archtiktur eines 
Zählers) einbinden, die Signale miteinander verknüfen und die 
Funktionalität (des Zählers) testen.

Beste Grüsse

Geri

Autor: Rick Dangerus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Gerhard

Das ist prinzipiell richtig. Ich kenne Quartus nicht. ISE von Xilinx 
bietet eine Funktion die Testbench automatisch in VHDL zu erzeugen. Aber 
die Testbenchs sind, wie schon gesagt wurde, nur für die Simulation, 
nicht für die Synthese.

Eventuell kannst Du Deinem Quartus irgenwo mitteilen, das Du Simulation 
machen möchtest (ISE bietet auch beides an.)? Oder Du verwendest 
ModelSim für die Simulation.

Rick

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.