mikrocontroller.net

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


Autor: Daniel -------- (root)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
if byte_value and "1111" & "0000" then 
   ... 
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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

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

> 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.

Autor: JensM (Gast)
Datum:

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

Autor: der mechatroniker (Gast)
Datum:

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

Autor: Daniel -------- (root)
Datum:

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

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.