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));
Du musst auch noch angeben, wohin sin(9 downto 2) geschrieben werden soll. Ungetestet, ich habe an dieser Stelle noch nie ranges verwendet, immer nur einzelne Bits: tmp.cos:= ((7 downto 0) => value.sin(9 downto 2),others => value.sin'high);
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.
das geht tmp.cos :=(value.cos(1),others=>'0'); das geht nicht mehr tmp.cos :=(value.cos(1 downto 0),others=>'0'); Das hätte ich aber erwartet, das es richtig formeliert ist. Gibt es Unterschiede in der VHDL Version für diesen Ausdruck?
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?
Schreib es doch in 2 Zeilen: tmp.cos:= (others=>value.sin(sin'high)); tmp.cos(9 downto 3) := value.sin(9 downto 3);
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.