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


von Jörg (Gast)


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

von Stefan H. (stefanhanke)


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

von Jörg (Gast)


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

von Stefan H. (stefanhanke)


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/schaltungsdesign_mit_VHDL/text_b1.pdf
1
Qualifizierte Ausdrücke ("qualified expression"):
2
sie dienen zur
3
expliziten Festlegung des Datentyps bei Operanden, die mehreren
4
Typen entsprechen können. Die Syntax hierfür lautet:
5
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

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.