Forum: FPGA, VHDL & Co. Vorrangsregeln für Operatoren


von Daniel -. (root)


Lesenswert?

Hallo,
1
if byte_value and "1111" & "0000" then 
2
   ... 
3
end if;

sind die Vorrangsregeln klar bei VHDL geregelt oder je nach
Synthesewerkzeug anders?

Die künstliche Trennung in der Konstante x"F0" mache ich
um die einzelnen logischen Bestandteile besser zur Schau zur bringen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Google?
Mit "vhdl operator priorität" findest du als die ersten beiden Links 
z.B.
http://webpages.eng.wayne.edu/cadence/ECE7530/doc/ch5.pdf
und
http://www.et.fh-trier.de/etechhomepage/team/schindel/downloadbereich/Vorlesungen/VhdlEasy/Kap4/k45.html

> Die künstliche Trennung in der Konstante x"F0" mache ich
> um die einzelnen logischen Bestandteile besser zur Schau zur bringen.
Und bringst dich dadurch selber ins Grübeln?

Aus x"F0" erkenne (zumindest) ich den Wert der Konstante schneller, 
als aus "1111" & "0000". Und wenn ich dann noch über Prioritäten 
nachdenken muß, ist es Essig mit der besseren Lesbarkeit.

von JensM (Gast)


Lesenswert?

Ich kenne mich zwar mit VHDL nicht aus, kann aber behaupten,
dass es für die Lesbarkeit von Programmen immer schlecht ist wenn man
sich auf die Vorrangsregeln bezieht.

Wenn man entsprechende Klammerung setzt ist es besser und ohne 
Missverständnisse lesbar.
Für einen Kompiler sollte es keinen Unterschied machen, ob man etwas 
Klammert oder nicht. Der Binaercode sollte derselbe sein.

Gruss JensM.

von der mechatroniker (Gast)


Lesenswert?

Andererseits sind in jeder Programmiersprache die Vorrangregeln klar 
definiert; und sauberen Code zu schreiben heißt nicht, daß den Code auch 
jemand lesen kann, der die betreffende Programmiersprache gar nicht 
kennt.

Ansonsten müßte man so etwas befürworten:
1
i++;   // i um eins erhöhen

Bei Fällen, mit denen ein Programmierer nicht täglich zu tun hat (wie 
verhalten sich in C jetzt nochmal <<, &, ^, && zueinander?) macht es 
aber in der Tat Sinn, ausdrücklich zu klammern. Nur so ganz allgemein 
kann man es nicht stehen lassen.

Was an der künstlichen Trennung übersichtlicher sein soll, versteh ich 
aber auch nicht.

von Daniel -. (root)


Lesenswert?

>Bei Fällen, mit denen ein Programmierer nicht täglich zu tun hat (wie
>verhalten sich in C jetzt nochmal <<, &, ^, && zueinander?) macht es
>aber in der Tat Sinn, ausdrücklich zu klammern. Nur so ganz allgemein
>kann man es nicht stehen lassen.

eben ganz meine Meinung.
Wenn man viel damit zu tun hat, muss man die Prioritäten wissen, egal
ob man nun tatsächlich klammert oder nicht.
Ausserdem finde ich die "klammere-mal-vorsichtshalber-alles" Mentalität
an den Stellen
1
return (0);
gelinde gesagt foobar :) Verleitet es doch manche zur falschen
Annahme es handele sich um eine return Funktion :)

>Was an der künstlichen Trennung übersichtlicher sein soll, versteh ich
>aber auch nicht.

ganz simpel eigentlich. Es handelt sich um Bitflaggruppen, diese
werden zur besseren Lesbarkeit auch getrennt geschrieben
1
control_reg <= "1" & "111" & "0000";

wenn man selber der Schreiber ist, dann weiss man zB, dass
die erste "1" enable-flag ist, und so weiter.

Grüsse, Daniel

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.