Forum: FPGA, VHDL & Co. Was ist der Unterschied zwischen Process und Guarded Block in VHDL?


von KIKOKA (Gast)


Lesenswert?

Hi,

meinen Kenntnissen nach:

Process:
-Wird ausgeführt sobald sich etwas in der "sensitivity list" ändert.
-Ist Synthetisierbar

Block:
-Wird immer ausgeführt.
-Signalen mit dem Schlüsselwort "GUARDED" werden nur dann Werte 
zugewiesen, wenn die Blockabfrage TRUE liefert.
-Ist nicht immer Synthetisierbar.


Lieg ich damit richtig, bzw. hab ich das richtig verstanden oder gibts 
da weitere Unterschiede die ich nicht aufgelistet habe und wichtig sind?

Lg

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


Lesenswert?

KIKOKA schrieb:
> Process:
> -Wird ausgeführt sobald sich etwas in der "sensitivity list" ändert.
Er wird nicht "ausgeführt". Sondern ein Prozess wird vom Simulator "neu 
berechnet", wenn sich eines der Signale in der Sensitivliste ändert.

Den Synthesizer interessiert die Sensitivliste nicht die kleinste Bohne. 
Mit ein wenig Glück sagt er nur, dass sie unvollständig ist und deshalb 
die Simulation nicht zur Hardware passen wird...

> Process:
> -Ist Synthetisierbar
Naja. Wenn ich ein einziges "wait for 10ns;" in den Prozess schreibe, 
dann legt es den Synthesizer sauber auf den Boden...

von Klaus F. (kfalser)


Lesenswert?

Noch ein Unterschied:
- Guarded Blocks verwendet und braucht heutzutage niemand mehr.
Sie stammen aus der Urzeit von VHDL und dienten dazu, tristate Busse zu 
simulieren.
Das macht man heute mit resolved Signaltypen wie std_logic.

=> vergiss Guarded Blocks !!

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.