VHDL - Prozess - Variablen

Gast #3786879
Lesenswert?

Hallo,

angenommen ich verwende in einem Prozess eine Variable, die mehrmals in 
verschiedenen sequentiellen Schritten beschrieben und wieder gelesen 
wird.
Die Timing Analysis des implementierten Designs sagt mir dass das 
geforderte Timing für den Prozess eingehalten wird. Kann ich nun davon 
ausgehen dass ich auch wirklich IMMER den aktuellsten Wert der Variable 
lese? Oder gibt es irgendwelche Einschränkungen, die die per Definition 
"sofortige" Übernahme des neuen Wertes verhindern?
Gast #3786892
Lesenswert?

Simon schrieb:
> Kann ich nun davon
> ausgehen dass ich auch wirklich IMMER den aktuellsten Wert der Variable
> lese?
Ja.

> Oder gibt es irgendwelche Einschränkungen, die die per Definition
> "sofortige" Übernahme des neuen Wertes verhindern?
Nein. Es kann allerdings sein, das die Kombinatorik zu komplex (bzw. zu 
lang) wird und Dein Timing nicht mehr passt.

Daniel
Moderator (Firma: Titel) Persönliche Seite #3786929
Lesenswert?

Simon schrieb:
> Kann ich nun davon ausgehen dass ich auch wirklich IMMER den
> aktuellsten Wert der Variable lese?
Ja, aber der Synthesizer muss alle Zwischenschritte, die diese Variable 
macht, parallel und gleichzeitig ausrechnen. Es wird da dann auch 
nirgends etwas "gelesen", sondern es gibt nur ein "alles gleichzeitig 
ausrechnen"...
Gast #3786945
Lesenswert?

Dass das Timing einen Strich durch die Rechnung machen kann wusste ich, 
daher habe ich diesen Fall ausgeschlossen :)  Danke für eure Antworten, 
das war die Bestätigung nach der ich gesucht habe, da ich zu diesem 
Thema teilweise wage Aussagen gefunden habe.
Gast #3786964
Lesenswert?

>angenommen ich verwende in einem Prozess eine Variable, die mehrmals in
>verschiedenen sequentiellen Schritten beschrieben und wieder gelesen
>wird.

Soll dass jezt heissen Du  hast blocking assignments
verwendet?
Poste mal  lieber den Code.
Gast #3786969
Lesenswert?

Blocking assignment executes "in series" because a blocking assignment 
blocks execution of the next statement until it completes. Therefore the 
results of the next statement may depend on the first one being 
completed.

Non-blocking assignment executes in parallel because it describes 
assignments that all occur at the same time. The result of a statement 
on the 2nd line will not depend on the results of the statement on the 
1st line. Instead, the 2nd line will execute as if the 1st line had not 
happened yet
Gast #3808382
Lesenswert?

Vielleicht hilft Dir die Vorstellung, dass die Variablen nur während der 
Synthese verwendet werden, um beim Bauen zu helfen. Die haben also 
keinerlei "timing" welches für das Endprodukt relevant wäre.

Einzig ihre Art der Verwendung führt zu der einen oder anderen richtigen 
(oder auch falschen) Schaltungsfunktion. Wenn diese stimmt, passt es.

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