Forum: FPGA, VHDL & Co. if innerhalb case?


von Sebastian J. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

kann man innerhalb einer CASE ANWEISUNG eine IF ANWEISUNG verwenden,
auch mit größeren Konstrukten als im Beispiel erläutert?

Müsste ja eigentlich funktionieren, da nach dem Testausdruck eine
sequentielle Anweisung folgt ... und if ... ist doch eine, oder?

Kann es irgend welche Nachteiel bringen oder gibt es bei solch einem
Konstrukt etwas zu beachten?

Bin sehr dankbar für Hinweise!

Gruß Sebastian

von mount /dev/hda9876 muellhauFen (Gast)


Lesenswert?

Was spricht dagegen, es zu kompilieren? Wenn es keine Fehlermeldung
gibt, scheint es wohl zu klappen. In C geht es auf jeden Fall.

von T.M. (Gast)


Lesenswert?

Klar geht das, in jeder Statemachine, die je nach Eingangssignalen in
andere Zustände wechselt wird es ja genauso gemacht. Einfach mal
probieren

von FPGAküchle (Gast)


Lesenswert?

<Was spricht dagegen, es zu kompilieren? Wenn es keine Fehlermeldung
<gibt, scheint es wohl zu klappen. In C geht es auf jeden Fall.

Rat am Rande: nie eine Programmiersprache wie C oder PASCAL
heranziehen, wenn man eine Hardwarebeschreibungssprache verstehen
will!

 Oder gar Hardware so beschreiben, wie man programmieren würde. Für
Simulationsmodelle ist das vielleicht noch OK, aber fast nie für
synthetisierbaren Code. Beispiel Case, in C wird jeder Casezweig
getestet, in VHDL nach dem ersten Test der true werden die folgenden
Case zweige nicht abgearbeitet.
Deshalb gibt es in C auch das break am ende eines casezweiges.

Case in vhdl entspricht dagegen einen if then,elsif then,.. end if.
Konstrukt.

Die Verschachtelung von If in Case ist korrekt und wird für state
machiens genutzt.
Man kann auch Case in einem Casezweig schachteln.

von FPGAküchle (Gast)


Angehängte Dateien:

Lesenswert?

Wenn dein Codeschnipsel in einem Process geht, klappt das mit dem Case.
Ich habe noch 2 Varianten drangehangen, die erste ist nur nach üblichen
Gepflogenheiten unformatiert, die zweite nutzt aus, das bei Signalen die
letzte Zuweisung übernohmen wird. Da meistens '0' zugeweisen wird,
habe ich das
als default vor das case geschrieben. Dann muss nur angegeben werden
wann
ein anderer Wert, z.B '1' gesetzt werden soll. Je nach synthesetool
kann die zweite
Variante die kleinere Sein, da nur Set und Reset von FF genutzt wird,
in der Ürsprunglichen wird das Tool wohl CE und Logik an Dateneingang
nutzen, was in der Regel größer ist.

von Sebastian J. (Gast)


Lesenswert?

..ok, besten Dank. Dann werd ich mal weiter daran arbeiten :o)

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.