attribute in VHDL

OP (Firma: www.dossmatik.de) #1402150
Lesenswert?

Wie heißt die Zuweisung richtig?
Ich will bestimmte Bits einer Variablen einer anderen Variablen zuweisen 
und die nicht benutzten Bits mit dem Bitwert des höchsten Bit füllen.

Für die nicht zugewissen Bits kann man mit "other=>    "zuweisen.
Ich habe mehere Schreibweisen ausprobiert.

Die Fehlermeldungen sind immer von dem Typ.
The type of the element in aggregate does not correspond to any array 
type.

type vec is record
cos:  signed (9 downto 0);
sin:  signed (9 downto 0);
end record;

variable value,tmp: vec;



  tmp.cos:=  (7 downto 0) =>(value.sin(9 downto 2), 
others=>value.sin'high);

auch verschiedene Klammerungen schlugen fehl.
 tmp.cos:=  (value.sin(9 downto 3),others=>value.(sin'high));
OP (Firma: www.dossmatik.de) #1402394
Lesenswert?

tmp.cos:=  ((7 downto 0)=>value.sin(9 downto 
2),others=>(value.sin'high));

ergibt Fehlermeldung:
Line 57. parse error, unexpected CLOSEPAR, expecting PIPE or ROW

Die Klammern stimmen und ich weiss nicht, was er mit Pipe oder ROW 
meinen könnte.
Gast #1402718
Lesenswert?

Einzelne Bits kann man einem Bereich zuweisen.
Das geht:
  tmp.cos :=(1 downto 0=>'1',others=>'0');

Das geht nicht auch verständlich, weil er keinen Arraytyp erwartet.
tmp.cos :=(1 downto 0=>value.sin(1 downto 0),others=>'0');

Doch wie schreibt man so etwas?

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