www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Was bedeuted das ' Symbol?


Autor: Jörg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hab hier folgende Programmzeile gefunden:

    (a, b, c) <= t2'("000");

a,b,c sind Std_logic t2 ist ein subtype vom typ std_logic_vector.
Welchen Sinn hat aber bei der Zuweisung das '  ?

Gruß und Danke

Autor: Stefan Hanke (stefanhanke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jörg wrote:
>     (a, b, c) <= t2'("000");
> a,b,c sind Std_logic t2 ist ein subtype vom typ std_logic_vector.
> Welchen Sinn hat aber bei der Zuweisung das '  ?

Interessantes Konstrukt.

Mit ' wird lesend auf Attribute zugegriffen (CLK'EVENT etc.). Ich bin 
unsicher, ob die VHDL Syntax sowas zuläßt; jedenfalls fand ich nur 
Beispiele, bei denen der Attributname ein Bezeichner ist.

Dummerweise kann man ' auch nicht überladen, jedenfalls ist es nicht 
durch den Syntax Check der ISE gekommen. Eventuell steht noch was bei 
der Subtype-Deklaration?

Ich kann mir gerade auch nicht vorstellen, welche Semantik das haben 
soll ;-)

 -- stefan

Autor: Jörg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Erstmal danke für die Antwort. Die Subtypendekleration lautet

  subtype t2 is std_logic_vector(1 to 3);

Das ganze tritt innerhalb einer Testbench auf. Soll also nicht 
synthetisiert werden.

Ich hab bezgl des ' mir hier noch irgendwo "Qualified expression" 
aufgeschrieben. Kann da jemand was mit anfangen?

Gruß

Jörg

Autor: Stefan Hanke (stefanhanke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jörg wrote:
> Ich hab bezgl des ' mir hier noch irgendwo "Qualified expression"
> aufgeschrieben. Kann da jemand was mit anfangen?

Du hast dir damit die Antwort selbst gegeben. :)

z.B. aus 
http://www.emmelmann.org/Library/Tutorials/docs/sc...
Qualifizierte Ausdrücke ("qualified expression"):
sie dienen zur
expliziten Festlegung des Datentyps bei Operanden, die mehreren
Typen entsprechen können. Die Syntax hierfür lautet:
type_name'(ambiguous_operand_expr)

VHDL ist streng und statisch "getypt". Das Literal "001" kann im 
verwendeten Kontext allerdings mehrere Typen annehmen. Theoretisch 
könnte sich ein Compiler aus der linken Seite den Typ herleiten (nämlich 
std_logic_vector), aber VHDL scheint das nicht zu machen -- das muss 
also irgendwo in der Sprachdefinition stehen.

Da es nur eine Typkonversion ist, ändert das Konstrukt nichts an der 
Synthesefähigkeit des übrigen VHDL-Codes.

 -- stefan

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.