Forum: FPGA, VHDL & Co. Modelsim asynchroner Process.


von Eisen H. (eisenhorn)


Lesenswert?

Hallo,

Ich versuche einen asynchronen Prozess (VHDL) in Modellsim zu 
simulieren. Dieser Prozess triggert auf kein Signal, soll also permanent 
laufen. Nun verfängt sich Modelsim jedoch in diesem Prozess in einer 
Endlosschleife. Auch mit einem wait statement und sehr kleinen Werten 
ändert sich das Verhalten nicht.

Also so ein Prozess

name: process


end process

Danke für jede Hilfe im Vorhinein.

Lg.

von Mathi (Gast)


Lesenswert?

Mario Grotschar schrieb:
> ieser Prozess triggert auf kein Signal, soll also permanent
> laufen. Nun verfängt sich Modelsim jedoch in diesem Prozess in einer
> Endlosschleife.

Bei einem Prozess ohne Sensitivitätsliste und ohne wait ist das kein 
Wunder. Das bedeutet, dass er zu jedem Zeitpunkt unendlich mal 
durchlaufen wird.

> Auch mit einem wait statement und sehr kleinen Werten
> ändert sich das Verhalten nicht.

Da ist das Problem, dass ein Modelsim, als event-basierter Simulator, 
nur mit endlicher Zeitauflösung simuliert. Die ist - glaube ich - 
standardmäßig auf 1ns eingestellt. D.h. das alle Zeiträume < 1 ns auf 0 
ns abgerundet werden, quasi sofot ablaufen. Die zeitliche Auflösung 
kannst Du allerdings beim starten der Simulation mit -t <auflösung> 
einstellen.
Z.B. vsim -t 1 ps

von Eisen H. (eisenhorn)


Lesenswert?

Hmm was wäre die Bestpractice für die Simulation eines Prozesses ohne 
Sensitivity list?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Mario Grotschar schrieb:
> Hmm was wäre die Bestpractice für die Simulation eines Prozesses ohne
> Sensitivity list?
Erst mal die Antwort auf die Frage: wozu brauchst du sowas?

von dave (Gast)


Lesenswert?

process ohne sensitivity list macht keinen sinn, das hat auch nix mit 
der simulationsauflösung zu tun. ein prozess beschreibt ein paar gatter, 
und der ausgang kann sich nunmal nur ändern, wenn sich ein eingang 
ändert...

von Christian R. (supachris)


Lesenswert?

Sowas hat doch nur zum Beispiel bei Takterzeugung für die Simulation 
Sinn:
1
Clock_100 : Process
2
  Begin
3
    CLK <= '0';
4
    wait for 5 ns;
5
    CLK <= '1';
6
    wait for 5 ns;
7
  End Process;

von dave (Gast)


Lesenswert?

ein process ohne wait und sensitivity list ist automatisch eine 
endlosschleife, irgendwann verrent sich der simulator in deltazykles...

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

dave schrieb:
> ein process ohne wait und sensitivity list ist automatisch eine
> endlosschleife, irgendwann verrent sich der simulator in deltazykles...
Und sogar eine Concurrent-Zuweisung hat eine (implizite) Sensitivliste: 
nur wenn sich eines der betroffenen Signale ändert, wird die Zuweisung 
neu berechnet.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.