www.mikrocontroller.net

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


Autor: Sebastian J. (Gast)
Datum:
Angehängte Dateien:
  • bsp.txt (283 Bytes, 119 Downloads)

Bewertung
0 lesenswert
nicht 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

Autor: mount /dev/hda9876 muellhauFen (Gast)
Datum:

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

Autor: T.M. (Gast)
Datum:

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

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: FPGAküchle (Gast)
Datum:
Angehängte Dateien:
  • bsp.txt (783 Bytes, 133 Downloads)

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian J. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
..ok, besten Dank. Dann werd ich mal weiter daran arbeiten :o)

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.