Was bedeuted das ' Symbol?

#550472
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
Gast #550476
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
#550572
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren