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

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.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.