signed

Gast #251972
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
Gast #251973
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

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