Betrag eines 2er-Komplements in VHDL

Gast #754036
Lesenswert?
• ▲
▼
Hallo,
ich versuche gerade den Ausgangs-Bitvektor eines Digitalfilters 
(2er-Komplement) testweise auf 16 LEDs anzuzeigen.
Dazu möchte ich vorher den Betrag bilden.

abs_sig <= conv_std_logic_vector(conv_unsigned(abs(signed(fir_out_sig(37 
downto 22))),16),16);

scheint mir etwas zu kompliziert zu sein. Und das Ergebnis scheint 
invertiert zu sein..

Wenn ich

abs(signed(fir_out_sig(37 downto 22)));

nehme, gibt er mir doch eine SIGNED-Zahl zurück, was beim Betrag ja 
nicht nötig ist und somit das MSB "verschwendet" wird.


Wenn jemand eine einfache Lösung weiß, würde ich mich freuen.

M.K.
Gast #755454
Lesenswert?
• ▲
▼
Das stimmt nicht. Schau dir nochmal genau das 2er Komplement an.
Unter dem Strich ist es egal, wie man das löst. Die abs() Funktion macht 
wahrscheinlich auch nichts anderes. Da der Zahlenraum unsymmetrisch ist, 
muss man sich für 100..000 halt was einfallen lassen.

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