mikrocontroller.net

Forum: FPGA, VHDL & Co. VHDL Signalarithmetik


Autor: Christoph Lauer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe folgendes Problem:

ich mochte ein einfachen statechart in vhdl-gießen und habe dazu eine
zustandsvariable in form eines signals.

type states is (out_of_synch, in_synch, manipulating);
signal state: states := out_of_synch;

falls mein automat nun in einem bestimmten zustand ist soll eine
prozessvariable manipuliert werden:

when manipulating =>
if i = "11" then
state := in_synch;
mja_offset := scodeword(24 downto 17) + offset_reg(0 to 7);
scodeword(24 downto 17) := mja_offset;
ostream <= scodeword(31 downto 24);
end if;

dabei sind i, scodeward und offset_reg jeweils signale.
in der simulation erscheint es nun so, als ob die if-anweisung nicht
ausgeführt würde. ersetze ich die anweisungen durch eine einfach
konstantenzuweisung:

scodeword(24 downto 17) := X"ff";

verhält sich die simulation ganz wie erwartet.

ist da ein timing problem? ich habe auch schon versucht die signale
durch shared variables zu ersetzen. was mache ich falsch?

danke

Autor: Henrik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"mja_offset := scodeword(24 downto 17) + offset_reg(0 to 7);"
Willst du wirklich eine Addition machen, oder möchtest du die Vektoren
zusammenfügen? Wenn letzteres, dann muss das so aussehen:
mja_offset := scodeword(24 downto 17) & offset_reg(0 to 7);

Bei Automaten sollten die Zustandsänderungen, Abfragen und Zuweisungen
bei einem Taktsignal erfolgen.
Am besten mal den ganzen Code posten, aus den paar Zeilen kann man
(zumindest ich) nicht soviel ablesen.

Gruss Henrik

P.S.: Du bist hier leider im flaschen Unterforum.

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.