if innerhalb case?

Gast #298266
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
Angehängte Dateien:
Gast #298269
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.
Gast #298270
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.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren