Hallo, ich habe eine generelle Anfängerfrage, zu der ich keine Antwort finden kann. Und zwar wird in dieser Guideline auf Seite 35 empfohlen, Konstrukte mit WHEN oder WITH .. SELECT .. WHEN zu vermeiten und statt dessen IF .. THEN .. ELSE zu verwenden. http://wiki.ntb.ch/infoportal/_media/software/programmierrichtlinien/vhdl_guidelines.pdf Soweit mir bekannt, ist IF .. THEN .. ELSE aber nur innerhalb von Prozessen erlaubt, während WHEN (oder WITH .. SELECT ..WHEN) auch außerhalb verwendet werden darf. Also z.B. auch in rein kombinatorischem Code. Allerdings steht in dieser Guideline kein entsprechender Hinweis. Was ist denn nun richtig bzw. was falsch oder was soll man verwenden und was nicht? Soll man in Prozessen nur IF .. THEN .. ELSE verwenden und außerhalb WHEN Konstrukte? Bin momentan leicht verwirrt. Vielen Dank für Eure Hilfe. Gruß, Norbert
Die genaue Antwort dazu liefert das Kapitel 3.4 und später. Norbert schrieb: > Soweit mir bekannt, ist IF .. THEN .. ELSE aber nur innerhalb von > Prozessen erlaubt, während WHEN (oder WITH .. SELECT ..WHEN) auch > außerhalb verwendet werden darf. Also z.B. auch in rein kombinatorischem > Code. Ja, IF .. THEN .. ELSE kann nur innerhalb von Prozessen verwendet werden. WHEN kann nur ausserhalb von Prozessen verwendet werden (Es ist eine nebenläufige Anweisung). Eine rein kombinatorische Beschreibung kannst du mit beiden Varianten korrekt beschreiben. Logisch gibt es keinen Unterschied. Norbert schrieb: > Allerdings steht in dieser Guideline kein entsprechender Hinweis. Was > ist denn nun richtig bzw. was falsch oder was soll man verwenden und was > nicht? Soll man in Prozessen nur IF .. THEN .. ELSE verwenden und > außerhalb WHEN Konstrukte? Du sollst keine WHEN Konstrukte verwenden, weil du gemäss diesen Guidlines pro Architektur nur zwei Prozesse hast (einen getakteten und einen rein kombinatorischen) und ausserhalb dieser Prozesse gibt es nichts (darum kannst du keine WHEN verwenden). Längere Diskussionen zum Stil von Jiri Gaisler findest du z. B. hier: Beitrag "Gaisler-Religion?"
> Soweit mir bekannt, ist IF .. THEN .. ELSE aber nur innerhalb von > Prozessen erlaubt Richtig. Genau wie case-Konstrukte. > WHEN oder WITH .. SELECT .. WHEN zu vermeiten Spaetestens dann haette ich den Guide zugeklappt. > Was ist denn nun richtig bzw. was falsch Erlaubt ist alles was der Sprachstandard hergibt. Das ist mit WHEN oder WITH .. SELECT .. WHEN leider nicht viel. Vielleicht ruehrt daher der Rat die Beschreibung mit anderer Syntax vorzunehmen. Richtig ist, was von der Synthesesoftware richtig umgesetzt wird. Wenn eine (einfache) Kombinatorik damit richtig beschrieben werden kann, kann man es ohne Nachteile verwenden.
Christoph Z. schrieb: > Beitrag "Gaisler-Religion?" Super, vielen Dank für den Hinweis. Ich dachte mir schon, dass da zumindest ein wenig persönliche Ansicht dahinter steckt.
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.