Forum: FPGA, VHDL & Co. signed


von Mäxi (Gast)


Lesenswert?

Hallo VHDL-Experten

Wie wandle ich einen 10 bit breiten signed Vektor so um, daß er z.B.
bei einem Wert von -427 => +427 macht und bei einem Wert von +427,
diesen auch beibehält?

Habe einen Vektor:
vektor_signed : signed(9 downto 0);

Jetzt möchte ich so einen Vektor:
vektor : std_logic_vector(9 downto 0);

Kurz: Dieser soll jetzt einfach nur noch den Betrag von vektor_signed
darstellen.

Das Ganze soll auch synthesefähig sein.

Am Einfachsten wäre es natürlich, auf's MSB zuschauen.
Ist dort eine Null - dann ist 427 = 427.
Ist dort eine Eins - dann muss man doch MSB-1 downto 0 invertieren und
1 addiren.
Korrekt?

Mäxi

von FPGA-User (Gast)


Lesenswert?

Hallo Mäxi,

was Du beschreibst ist eine Betrags-Funktion.

Im Prinzip ist der Ansatz richtig, aber etwas
umständlich.
Einfacher wäre :

vektor <= abs(vektor_signed);

-> Fazit : Arbeit dem Synthesetool überlassen

von Mäxi (Gast)


Lesenswert?

Dank' Dir!!

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.