wait anweisung probleme

Gast #202957
Lesenswert?

Hallo...

ich scheitere gerade daran zwei wait until anweisungen in einem Process
unterzubringen.
begin
process
  begin
    Data_out <= Data;
    valid <= '1';
    wait until accept='1';
    valid <= '0';
    wait until accept='0';
  end process;
end Behavioral;

Der Prozess wird doch nacheinander abgearbeitet. somit müsste er doch
valid = 1 setzen dannach auf accept = 1 warten. Wenn das geschehen ist
sollte valid =0 gesetzt werden und wieder auf accept=0 gewartet werden.
Leider gibt er mir aber folgende Fehlermeldung raus :
ERROR:Xst:842 - Same wait conditions expected in all Multiple Waits.

Wo ist mein Denkfehler???

Ich benutze WebPack:6.3.03

Danke euch
Gast #202958
Lesenswert?

Ist das der Code den du synthetisieren willst? Wo ist die
Sensitivitätsliste für den den Prozess? Wait-Statements sind in der
Verhaltensbeschreibung pfui, da sie nicht synthesierbar sind.

Für das Verhalten, das du willst, wirst du eine State Machine
brauchen.

Gruß Jörn
Gast #202959
Lesenswert?

Ok danke..
WebPack meckert aber wenn ich eine Sensitivityliste ian an den process
hänge, wenn ich gleichzeitig eine Waitanweisung in dem Prozess nutze.

Aber ich werde michab jetzt an das Pfui halten und die waitschleifen
verbannen :-)
Gast #202961
Lesenswert?

Nice Try :-(

Ne das war es auch nicht ... da gibt es die gleiche Fehlermeldung. Aber
ich hab es schon anders gelöst. Anscheinend mag er keine 2 wait
anweisungen in einem Process...
Man lernt nie aus ...
Gast #202963
Lesenswert?

Wenn man die wait Anweisung verwendet, darf man keine Sensitivty list
verwenden. versuch mal so:

process(accept, Data)
  begin
    If (accept='1') then
       Data_out <= Data;
       valid <= '1';
    else
       valid <= '0';
     end if;
  end process;

Ein Prozess wird nach der Synthese für gewöhnlich als Flip Flop
dargestellt. In VHDL kann man nicht wie in C programmieren
Gast #202964
Lesenswert?

:-)
Jupp genau so hab ich es jetzt auch gelöst. Aber danke.
Das bedeutet also das man die waitgeschichte ganz verbannen und
vergessen sollte oder? NA ich denke übung macht den Meister.

Aber danke euch allen. Habt mir sehr weiter geholfen!!!
Gast #202966
Lesenswert?

>>Anscheinend mag er keine 2 wait anweisungen in einem Process...

also ich nutze in der Testbench öfters sowas:

Clock <= '0';
wait for 32 ns;
Clock <= '1';
wait for 32 ns;

und das funktioniert auch innerhalb eines Processes -> ModelSim.

Gruß hagen
Gast #202967
Lesenswert?

ja, soetwas funktioniert auch, man muß sich aber beim programmieren in
VHDL oder allgemein in Hardwarebeschreibungssprachen bewußrt sein, daßß
mam kein c oder c++ oder java oder ähnliches programmiert sondern man
programmiert reale Hardware und da gibt es eineige Kriterien die man
beachten muß im gegensatz zu Software
Gast #202968
Lesenswert?

Das ist ja leider das problem :-). War ja auch erst mal ein stück
arbeit, sich daran zu gewöhnen, das die einzelnen Programmzeilen, die
nicht in einem Process sind parallel abgearbeitet werden :-)

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