Forum: FPGA, VHDL & Co. Sensitivity List eines Prozesses


von DS (Gast)


Lesenswert?

Hallo zusammen, ich hab da mal ne Frage:

Ich arbeite mit VHDL. Wird eine Schleife in einem Prozess unterbrochen 
und der Prozess neu gestartet, wenn sich ein Wert in der Sensitivity 
List dieses Prozesses ändert? Oder wird der Prozess erst komplett 
abgearbeitet?

Gruß
DS

von Gast (Gast)


Lesenswert?

Der Prozess wird abgearbeitet, und das sofort ohne dass die Zeit 
fortschreitet. Es kann sich während des Abarbeitens nichts ändern. Mach 
dir am besten mal den Unterschied zwischen einer Programmiersprache und 
einer Hardware-Beschreibungssprache klar und überleg dir, was für eine 
Hardware aus deinem Prozess rauskommt.

von DS (Gast)


Lesenswert?

Wenn ich aber innerhalb eines Prozesses eine Schleife hab, werden die 
Schleifendurchläufe ja wohl kaum gleichzeitig abgearbeitet, oder?

von Falk B. (falk)


Lesenswert?

@ DS (Gast)

>Wenn ich aber innerhalb eines Prozesses eine Schleife hab, werden die
>Schleifendurchläufe ja wohl kaum gleichzeitig abgearbeitet, oder?

Und ob. Denn es sind KEINE sequentiellen Abläufe zur Laufzeit, wie in 
einer normalen Programmiersprache vorkommen, sondern der Compiler 
durchläuft alle Schleifen zur Compilezeit und berechnet daraus EINE 
parallel arbeitende Logik. Siehe VHDL.

MFG
Falk

von DS (Gast)


Lesenswert?

Stimmt, da habt ihr natürlich Recht!!! Denkfehler meinerseits...

Danke für den Schubs in die richtige Richtung.

Gruß

von Rolf Michaelsen (Gast)


Lesenswert?

Was VHDL angeht, muss man eben objektorientiert denken. Was an Schleifen 
exisitert, wird aus simulationstechnischer Sicht in getrennte Veriablen 
und damit in ein Array überführt. Praktisch existieren die Zustände also 
parallel.

von Da M. (damicha)


Lesenswert?

>>Wenn ich aber innerhalb eines Prozesses eine Schleife hab, werden die
>>Schleifendurchläufe ja wohl kaum gleichzeitig abgearbeitet, oder?
>
> Und ob. Denn es sind KEINE sequentiellen Abläufe zur Laufzeit, wie in
> einer normalen Programmiersprache vorkommen, sondern der Compiler
> durchläuft alle Schleifen zur Compilezeit und berechnet daraus EINE
> parallel arbeitende Logik. Siehe VHDL.
>

Hallo ich glaub, hier geht was durcheinander.

Im VHDL Code existieren, Prozesse, Sensitivlisten und z.B. Schliefen.
In der Simulation des VHDL Codes werden die Schleifen sequentiell 
durchlaufen; so wie in C auch. Das kann man beim Debuggen in Modelsim 
sehr gut sehen. Man sieht auch, dass der Prozess erst vollständig 
abgearbeitet wird bevor auf ein sich änderndes Signal in der 
Prozessliste reagiert wird und der Prozess neu aufgerufen wird.

Aber, in der Synthese wird die Schleife "ausgerollt" und zu einer 
Netzliste, deren Pfade parallel abgearbeitet werden. Ab hier sind dann 
die ursprünglichen Prozesse, Sensitivlisten und Schleifen nicht mehr 
vorhanden. Debuggen kann man das auch noch aber das macht keinen Spass 
;-).

Gruß DaMicha.

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.