Ergebnis von Berechnung

Gast #1439766
Lesenswert?
• ▲
▼
Hi
Habe nur eine kurze Frage. Habe zwei werte in der Form eines 
std_logic_vectors.

wert1 : std_logic_vector(5 downto 0);
wert2 : std_logic_vector(5 downto 0);
erg   : std_logic_vector(6 downto 0);

erg <= std_logic_vector(unsigned(wert1) - unsigned(wert2));

Wenn nun wert2 kleiner ist als wert1 ist steht in erg die differenz aber 
was ist wenn nun wert2 größer ist als wert1 steht dann in erg ein 
negativer wert in 2er Kompliment darstellung oder sehe ich das falsch?

MFG Gast
Moderator (Firma: Titel) Persönliche Seite #1439805
Lesenswert?
• ▲
▼
> Kompliment
Mein Komplement  :-o

> steht dann in erg ein negativer wert in 2er Kompliment darstellung
Weil erg ein Vektor ist, kann da nur eine Bitfolge drinstehen. Wie 
die interpretiert wird, steht auf einem ganz anderen Blatt...
Das sagst du nämlich über unsigned() oder signed().
Wenn du das erg in als signed betrachten würdest, hättest du die 
entsprechende negative Zahl (in der Zweierkomplementdarstellung).

BTW:
das Ergebnis einer unsigned-Subtraktion ist kleiner oder bestenfalls 
gleich breit wie jeder der beteiligten Operanden. Du brauchst also nicht 
ein Bit mehr am Ausgang. Mit diesem Bit würde "nur" ein entsprechender 
Unterlauf signalisiert.

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