VHDL: eigene Attribute mit Parameter

Gast #4295289
Lesenswert?
• ▲
▼
Hallo,

ich beschäftige mich zur Zeit mit den attributes von VHDL und würde 
gerne wissen, ob es möglich ist eigene Attribute mit Parameter zu 
definieren. Bei den pre-defined attributes gibt es ja einige, z.B. 
character'pos('A') ergibt 65.

Ich hab schon versucht das Attribut ähnlich einer Funktion zu 
definieren:

type arrayOfInt is array(natural range <>) of integer;
constant myList: arrayOfInt(0 to 7) := (3, 1, 4, 1, 5, 9, 2, 7);
attribute myAttribute(myParameter: integer): integer;
attribute myAttribute of myList: constant is myList(myParameter);

aber Vivado stört sich bereits an der Klammer.


Kann mir jemand helfen?
Vielen Dank!!

PS: (Ich weiß, dass dieses Beispiel sinnlos ist. Ich möchte einfach nur 
wissen, ob es überhaupt möglich ist. Eine konkrete Anwendung habe ich 
nicht.)
Gast #4298427
Lesenswert?
• ▲
▼
Von Attributen mit Parametern habe ich noch nix gehört.
Xilinx verwendet Attribute z.B. so:
1
    signal state,nextstate : StType;
2
   
3
    attribute fsm_encoding : string;
4
    attribute fsm_encoding of state : signal is "gray";
5
    attribute fsm_encoding of nextstate : signal is "gray";

Oder so:
1
    signal adc_dco            : std_ulogic;
2

3
    attribute keep : string;
4
    attribute keep of adc_dco : signal is "true";

Duke
Gast #4299338
Lesenswert?
• ▲
▼
Die Parametrisierung von Attributen zielt ja
auf das Überschreiben der Typen hinaus, also
das was in C++ als Template bezeichnet wird.
Das gibt's in VHDL nicht (auch Vergleichbares
in Verilog nicht.). Dafür muss je Typ ein
Attribute definiert werden.

Ausserdem gehört ja das Attribute zu einem
Objekt bzw. zu derem Objekt-Typ (beschreibt
z.B. die Länge eines Vektors etc.) und damit
müsste ja auch in diesem Objekt-Typ der
entsprechende Teiltyp überschrieben werden
usw. Also viel zu kompliziert...

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.