Forum: FPGA, VHDL & Co. Addition von zwei std_logic_vector's


von AL (Gast)


Lesenswert?

Hallo,

endlich habe ich es geschafft diese Addition kompilierbar zu machen:
1
RAM_WrAddr(0) <= std_logic_vector(to_unsigned(to_integer(unsigned(ValidData(33 downto 24))) + to_integer(unsigned(RAM_StartAddr)),10));

Gibt es eine kurzere Variante (Schreibweise)?

von daniel__m (Gast)


Lesenswert?

AL schrieb:
> RAM_WrAddr(0) <= std_logic_vector(to_unsigned(to_integer(unsigned(ValidData(33 
downto 24))) + to_integer(unsigned(RAM_StartAddr)),10));

grundsätzlich kannst du auch direkt mit unsigned rechnen:
1
use IEEE.NUMERIC_STD.all;
2
...
3
4
RAM_WrAddr(0) <= std_logic_vector(to_unsigned(ValidData(33 downto 24)) + unsigned(RAM_StartAddr));

von AL (Gast)


Lesenswert?

bei dieser Schreibweise:
1
RAM_WrAddr(0) <= std_logic_vector(to_unsigned(ValidData(33 downto 24)) + to_unsigned(RAM_StartAddr));

bekomme ich dann die Fehlermeldung (Diamond):
ERROR: (VHDL-1120) indexed name is not a natural

von Franz (Gast)


Lesenswert?

lass mal die to_ weg.

von AL (Gast)


Lesenswert?

Nee, es funktionniert doch.
Danke

von HeyHo (Gast)


Lesenswert?

VHDL-2008:

use ieee.numeric_std_unsigned.all;

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

HeyHo schrieb:
> use ieee.numeric_std_unsigned.all;
Wenns hilft.
Dann aber incl. aller Nebenwirkungen:
1
VHDL2008 adds the packages numeric_std_signed and numeric_std_unsigned 
2
which are just repackaged std_logic_signed/unsigned.
aus http://www.edaboard.com/thread212236.html#post897152

von HeyHo (Gast)


Lesenswert?

kürzer:
1
use ieee.numeric_std.all;
2
3
RAM_WrAddr(0) <= std_logic_vector( unsigned(ValidData(33 downto 24)) + unsigned(RAM_StartAddr) );

von Klaus (Gast)


Lesenswert?

HeyHo schrieb:
> kürzer

Wenn du zu faul bist, auch nur die erste Antwort zu lesen, solltest du 
dir vielleicht auch das schreiben sparen.

von HeyHo (Gast)


Lesenswert?

Na das hat mit Faulheit nichts zu tun ;-)

Habe es einfach überlesen.

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
Noch kein Account? Hier anmelden.