Einfache Frage zu variable

Gast #664681
Lesenswert?

Hallo,

eine Variable benutzt man ja innerhalb eines Prozesses wenn man direkt 
auf den im Prozess geänderten Wert zurückgreifen will.

Ich habe gelesen das dieser Wert nur bis zum nächsten Prozessdurchlauf 
gespeichert wird.

Was genau bedeutet das?

Was passiert mit der Variable am Ende des Prozesses?

Bsp.:

conversion : process(RESET, CLK)
variable v_start_conv : std_logic := '0';
begin
...
end process;

Welchen Wert hat die Variable beim erneuten Ausführen des Prozesses (in 
dem Fall bei der nächsten Clockflanke)?

Danke

Tom
#664756
Lesenswert?

Genau das, was auch in C mit einer lokalen Variable passiert: Sie ist 
einfach nicht mehr vorhanden, bzw steht wieder auf deinem 
Initialisierungswert von 0.

Eine Variable in VHDL ist kein "physisch vorhandenes" Signal, sondern 
nur ein Konstrukt, um die Programmierarbeit zu vereinfachen.
Gast #664771
Lesenswert?

So hatte ich mir das auch gedacht aber bei der Simulation bleibt die 
variable auch über das Verlassen des Prozesses hinaus vorhanden und 
behält auch ihren Wert. Das finde ich komisch da es nicht dem entspricht 
was ich erwartet hätte bzw dem was Du gerade beschrieben hast.
#664785
Lesenswert?

Ja richtig, du hast Recht. Die Variable behaelt ihren Wert bei. War mir 
bisher noch nicht aufgefallen, da ich Variablen, wenn ich sie denn mal 
benutze, immer am Anfang explizit durch eine Zuweisung initialisiere.

Falls dein Code synthetisiert werden soll, musst du aber ueberpruefen, 
ob du dir damit nicht ein Latch und kein Flipflop erzeugst.
Gast #664895
Lesenswert?

"Falls dein Code synthetisiert werden soll, musst du aber ueberpruefen,
ob du dir damit nicht ein Latch und kein Flipflop erzeugst."

Genau dazu passt der 2. Teil von Andreas' Antwort!

Wer also clever ist:
- verwendet so wenige Variablen wie möglich
- schreibt die Variablen-Zuweisungen gleich am Anfang der 
Prozess-Beschreibung
- verwendet keine Variablen, wenn er nichtmal deren Verhalten richtig 
kennt (Jan M. - sorry)

@Tom
... Variable ...
"Ich habe gelesen das dieser Wert nur bis zum nächsten Prozessdurchlauf
gespeichert wird."
VHDL ist eine Hardware-Beschreibungssprache. Man kann damit im Prinzip 
auch Programme schreiben, die z.B. Files einlesen, manipulieren und 
wieder rausschreiben aber das war nicht das Hauptziel bei VHDL.
Woraus kann sich also der Wert einer Variablen im FPGA bestimmen?
- Input-Ports
- Signale (also Register / FFs)
- Konstanten, also feste Verdrahtung
- andere Variablen bzw. die Variable selber
mehr fällt mir nicht ein. Die genannten Quellen können sich durch einen 
'Prozeßdurchlauf' zwar ändern, aber die Variable wird trotzdem immer den 
Wert haben der ihr zugewiesen wird und nicht z.B. auf 0 gehen.
Gast #666158
Lesenswert?

Was ich immernoch nicht ganz verstehe ist folgendes:

Ich weise der Variablen am Anfang (also bim Starten des Prozesses) einen 
Wert zu (und zwar 0).

Das heisst doch das egal welchen Wert die Variable beim verlassen des 
Prozesses und auch darüber hinaus hat, Sie müsste beim erneuten 
ausführen des Prozesses wieder 0 gestezt werden. Oder??

Genau das kann ich in der Simulation nämlich nicht erkennen. Die 
Variable wird von mir irgendwann im Prozess auf 1 gesetzt und danach 
müsste sie bei der nächsten positiven Taktflanke (also wenn der Prozess 
zum nächsten mal ausgeführt wird) wieder 0 gesetzt werden weil die 
Initialisierung wieder stattfindet. Wird sie aber nicht....

Warum?

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