Forum: FPGA, VHDL & Co. VHDL: Variableninitialisierung mit Eingangssignal


von Florian R. (flo0815)


Lesenswert?

Hallo VHDL-Gemeinde,

ich bitte in einer schweren Stunde als VHDL/FPGA Lehrling um Hilfe:

In einem Prozess - einer FSM - will ich einer Variablen einen Startwert 
zuweisen. Dieser Startwert ist gegeben durch einen Eingangsport der 
Entity. Wenn ich nun bei der Variablendeklaration den Port zuweise, also 
etwa so:
1
 variable Variablenname : UNSIGNED(31 downto 0):=Portname;

dann bleibt Variablenname in der Simulation auf U. Ist so eine 
Variableninitialisierung grundsätzlich nicht möglich, oder mache ich da 
was falsch?

Vielen Dank.

Gruß
Flo

von Rick Dangerus (Gast)


Lesenswert?

Versuch mal als Lehrling auf die Variable zu verzichten. Warum verwendst 
DU das Eingangssignal vom Port nicht direkt?

Rick

von Florian R. (flo0815)


Lesenswert?

Da sich der Variablenwert im Laufe der Zeit ändert. Das ist so eine Art 
adaptiver Regler, der Variablenwert ist der Reglerparameter. Der 
Startwert soll vorgegeben werden können, da die Adaption nur optional 
verwendet werden soll. Der Reglerparameter wird iterativ verändert und 
konvergiert (hoffentlich) gegen einen Grenzwert.

Gruß
Flo

von user (Gast)


Lesenswert?

also normalerweise verwendet man um hardware zu beschreiben keine 
variable sondern signal

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


Lesenswert?

>> Ist so eine Variableninitialisierung grundsätzlich nicht möglich,
Nicht aus einem Port. Bestenfalls aus einem Generic.

>> oder mache ich da was falsch?
Nicht unbedingt. Du hast (so mein Verdacht) nur noch nicht so ganz 
begriffen, was du machst: Du willst deine Hardware hinterher als 
Flip-Flops und Kombinatorik in ein FPGA abbilden.
Soll die Variable speichernd sein? Dann besteht sie aus Flip-Flops (nur 
die können speichern). Und so ein Flip-Flop wird beim Power-Up des FPGAs 
initialisiert. Genau das ist der Wert, den du dort angeben kannst:
1
variable Variablenname : UNSIGNED(31 downto 0):= x"12345678";
Deshalb muß er schon bei der Synthese bekannt und statisch sein.
Und der Zustand eines Ports ist zum Synthesezeitpunkt nicht bekannt und 
kann deshalb kann auch nicht als Defaultwert zugewiesen werden...


> also normalerweise verwendet man um hardware zu beschreiben keine
> variable sondern signal
Variablen sind durchaus sinnvoll, aber man sollte genau wissen wozu sie 
gut sind. Siehe den Beitrag "Variable vs Signal"

von Florian R. (flo0815)


Lesenswert?

Danke für die Antworten.
Die Variable soll speichernd sein. Habe das ganze jetzt mittels eines 
Initialisierungs-Zustands in der FSM gelöst.

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.