Hallo - ich habe folgendes Problem: datain ist in einem package als std_logic_vector deklariert. Die Länge von datain kann somit also im package geändert werden. bisher war datain ein 16bit vector und ich konnte getrost folgendes abfragen: if datain = (x"FFFF") then wie schreibe ich das allgemein hin, um ebend nicht auf 16bit festgelegt zu sein, sondern ebend die Länges des datain auf F überprüft wird?
So
1 | if datain = (others=>'1') then |
oder so
1 | if datain = (datain'range=>'1') then |
Allerdings werden die Bits nicht auf x"F" geprüft, sondern auf '1'
Ich hätte noch eine weitere Frage was Deklarationen im package anbelangt: Folgendes: Ich habe folgende subtypes: subtype tmp is std_logic_vector(15 downto 0); subtype tmp2 is std_logic_vector(15 downto 0); Ja nachdem wie groß tmp bzw. tmp1 gewählt werden (also 15 downto 0 oder 7 downto 0 etc..) soll ein subtype realisiert werden, der abhängig von den bit-breiten von tmp und tmp1 ist.. Bsp: subtype tmp is std_logic_vector(15 downto 0); subtype tmp2 is std_logic_vector(15 downto 0); subtype ergebnis is std_logic_vector(31 downto 0); oder: subtype tmp is std_logic_vector(7 downto 0); subtype tmp2 is std_logic_vector(7 downto 0); subtype ergebnis is std_logic_vector(15 downto 0); wie kann ich für den subtype Ergebnis die Vectorlänge in Abhängigkeit von den Vectorlängen tmp und tmp1 angeben? Grüße, tOM
Das geht mit attributen : subtype ergebnis is std_logic_vector((tmp'length*2)-1 downto 0);
Tschuldige.. Und wie fülle ich den Rest eines Vectors mit Nullen auf, wenn der Vector ein subtype ist? subtype tmp is std_logic_vector(7 downto 0); später im code: signal a : std_logic_vector(10 downto 0); .. a <= ('0' + tmp + "00"); die "00" muesste ich auch abhängig von der Vectorlänge von tmp machen..
a(10) <= '0'; a(9 downto 2) <= tmp; a(1 downto 0) <= (others => '0'); Auch hier lassen sich die Indizes berechnen, z.B.: a(9 downto 10-tmp'length) <= tmp; a(9-tmp'length downto 0) <= (others => '0');
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.