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
"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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.