www.mikrocontroller.net

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


Autor: Florian Rems (flo0815)
Datum:

Bewertung
0 lesenswert
nicht 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:
 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

Autor: Rick Dangerus (Gast)
Datum:

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

Rick

Autor: Florian Rems (flo0815)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: user (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also normalerweise verwendet man um hardware zu beschreiben keine 
variable sondern signal

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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:
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"

Autor: Florian Rems (flo0815)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.