Zwei wait-Anweisung in einem Process

Gast #3687468
Lesenswert?

Guten Tag Zusammen,
es steht viel darüber geschrieben, aber um ehrlich zu sein verstehe ich 
es nicht so ganz. Darum bitte ich an Hand meines Bsp. um Untersützung.

Syntax sieht wie folgt aus:

P1: process
variable PAR: boolean;
begin
      wait until (CLK='1' and CLK'event);
      if STARTBIT then
        PAR:= false;
        while not STOPBIT loop
          D_OUT <= D_IN;
          if D_IN = '1' then
                 par:=not PAR;
                                end if;
          wait until (CLK='1' and CLK'event);
        end loop;
      end if;
      if PAR then
          D_OUT <= '1';
      else
          D_OUT <= '0';
      end if;
end process P1;


Erhalte folgende Fehlermeldung:
Error (10398): VHDL Process Statement error at PARITSER.vhd(22): Process 
Statement must contain only one Wait Statement (bezieht sich auf die 
zweite wait-Anweisung)


Habe die Syntax aus einem Lehrbuch, daher macht es mich etwas stutzig 
und hoffe auf die Hilfe von Experten ;-)

Vielen Dank,
Bastian
#3687525
Lesenswert?

Bastian Czichon schrieb:
> Habe die Syntax aus einem Lehrbuch, daher macht es mich etwas stutzig

Die Syntax stimmt schon, aber es gibt synthetisierbares VHDL und nicht 
synthetisierbar.

Synthetisierbar heißt, dass man die VHDL Beschreibung in Hardware 
umsetzen kann.
Das wäre bei Dir eventuell auch noch möglich, aber der Compiler ist 
"dumm" und erkennt/erlaubt nur bestimmte Konstrukte.
Zwar werden die Compiler immer besser, aber es gibt Standards, wie man 
synthetisierbares VHDL schreiben sollte, und dabei ist nur ein wait 
Statement erlaubt.

Du solltest das Handbuch deines Compilers lesen, und/oder Dir andere 
Beispiele mit nur einem Wait pro Prozess suchen.
#3687642
Lesenswert?

Klaus Falser schrieb:
> Bastian Czichon schrieb:
>> Habe die Syntax aus einem Lehrbuch, daher macht es mich etwas stutzig
>
> Die Syntax stimmt schon, aber es gibt synthetisierbares VHDL und nicht
> synthetisierbar.

Sehe das auch so wie Klaus.

Dein Beispiel Code würde in einem VHDL Simulator wunderbar 
funktionieren.

Klaus Falser schrieb:
> Synthetisierbar heißt, dass man die VHDL Beschreibung in Hardware
> umsetzen kann.
> Das wäre bei Dir eventuell auch noch möglich,

@Klaus:
Ich bin beim Lesen als erstes über die "while not STOPBIT loop" Schlaufe 
gestolpert. Denkst du die könnte der Synthesizer umsetzen? Ich hätte 
gesagt nein, aber ich lerne gerne dazu.
Moderator (Firma: Titel) Persönliche Seite #3687795
Lesenswert?

Bastian Czichon schrieb:
> Habe die Syntax aus einem Lehrbuch
Das dürfte das Beispiel aus Reichardt&Schwarz sein, von den behauptet 
wird, das wäre gerade noch synthetisierbar. Die Wahrheit ist: es ist 
nicht synthetisierbar.

Zum Thema "mehrere wait im Prozess" siehe dort:
http://www.lothar-miller.de/s9y/archives/47-wait-im-Prozess.html

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren