Forum: FPGA, VHDL & Co. signed vs fixed point


von Guest (Gast)


Lesenswert?

Frage 1:
Gibt es eingentlich irgendeinen Nachteil von signed gegenüber fixed 
point?

Signed Arithmetik hat ja zumindest bei FPGA den Vorteil das es 
einwandfrei funktionierende Bibliotheken für VHDL gibt.
Bei fixed point ist das ja noch nicht der fall (ja ich kenn signed_pkg).
Was muss ich bei Fixed Point Berechnungen beachten die ich in Signed 
Berechnungen darstellen will?
Zumindest bei einer Erhöhung der Stellen Zahl macht es doch einen 
Unterschied ob ich die Resizebits zwischen signed bit und Rest Anfüge
oder hinten

also a) SRRBBBBB (S: Signb.,R: Resizeb., B.: normale Bits )
oder b) SBBBBBRR

a) signed   b) fixed point.

Mein Problem ist jetzt: bei einen Filter kann ich ja die 
Eingangswerte(kommen von einen AD-Wandler) als fixedpoint oder aber 
signed behandeln.
Also Werte zw. -1 und 1-LSB  bei fp oder eben je nach bitbreite bei 
sign.

Jetzt kommt der Punkt bei dem ich gerade am Schlauch stehe:
wenn ich jetzt sage eigentlich hätte ich bei fixedpoint
eingang: S,xxxx (irgendwas zw. -1 und 1-LSB) und koeffizient: S,xxxx 
irgendwas zw. -1 und 1-LSB)

Frage 2:
Man kann doch einfach beides mal einen Faktor nehmen so das sich der 
Dezimalpunkt verschiebt => ich mache nichts und tue so als währen die 
Werte signed?

Frage 3:
Aber wie kommmt dann der Unterschied bei der Bitbreiten änderung 
zustande?
=> Was muss man bei welchen Fall beachten?

von Guest (Gast)


Lesenswert?

1. Ja, du musst etwas mehr tippen. Dem FPGA ist es "wurscht".

2. und 3. Das sollte für den Anfang reichen: 
http://www.digitalsignallabs.com/papers.htm

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


Lesenswert?

> a) SRRBBBBB (S: Signb.,R: Resizeb., B.: normale Bits )
signed ist einfach ein Vektor, der als vorzeichenbehaftet angesehen wird 
(Zweierkomplement). fixed hat keine "Resizebits". Bits, die angeben, 
welche Wertigkeit die nachfolgenden Bits haben findet man in der float 
Darstellung (als Exponent). Fixed-Point heißt nur, dass irgendwo mitten 
in den "Zahlenbits" ein Komma hineingedacht wird. Es wird also ein 
virtuelles fixes Komma eingefügt (Nomen est Omen).

Am einfachsten ist es, anzunehmen, man hätte einen Darstellungsbereich 
von 0...1 (unsigned) oder -1...+1. Denn dann wandert das Komma von 
hinter dem letzten Bit einfach vor das erste Bit.
Bei 8 bit wäre das dann so (unsigned):
    10101010 =   10101010.0 = 170
bzw 10101010 = 0.10101010   = 0.6640625
oder (signed)
    10101010 =   10101010.0 = -86
bzw 10101010 = 0.10101010   = -0.3359375
Allerdings sollten die vielen dezmalen Nachkommastellen nicht täuschen. 
Denn die Auflösung ist trotzdem nur 1/256

Das hatten wir schon mal im 
Beitrag "Re: Anfängerfrage"

von amplatzsitzender (Gast)


Lesenswert?

Lothar Miller schrieb:
>> a) SRRBBBBB (S: Signb.,R: Resizeb., B.: normale Bits )
> signed ist einfach ein Vektor, der als vorzeichenbehaftet angesehen wird
> (Zweierkomplement). fixed hat keine "Resizebits". Bits, die angeben,
> welche Wertigkeit die nachfolgenden Bits haben findet man in der float
> Darstellung (als Exponent). Fixed-Point heißt nur, dass irgendwo mitten
> in den "Zahlenbits" ein Komma hineingedacht wird. Es wird also ein
> virtuelles fixes Komma eingefügt (Nomen est Omen).
>
> Am einfachsten ist es, anzunehmen, man hätte einen Darstellungsbereich
> von 0...1 (unsigned) oder -1...+1. Denn dann wandert das Komma von
> hinter dem letzten Bit einfach vor das erste Bit.
> Bei 8 bit wäre das dann so (unsigned):
>     10101010 =   10101010.0 = 170
> bzw 10101010 = 0.10101010   = 0.6640625
> oder (signed)
>     10101010 =   10101010.0 = -86
> bzw 10101010 = 0.10101010   = -0.3359375
> Allerdings sollten die vielen dezmalen Nachkommastellen nicht täuschen.
> Denn die Auflösung ist trotzdem nur 1/256
>
> Das hatten wir schon mal im
> Beitrag "Re: Anfängerfrage"

hallo zusammen, hallo Lothar Miller

bei IQ-Format multiplikation hat man:

z.b. I2Q30 = I1Q15 * I1Q15

Meine frage ist, wie sieht das aus bei Division?

vielen Dank im Vorraus für alle Anregungen!

von Thomas R. (Firma: abaxor engineering) (abaxor)


Lesenswert?

Guest schrieb:
> Frage 1:
> Gibt es eingentlich irgendeinen Nachteil von signed gegenüber fixed
> point?

In meinen Augen gibt es einen wesentlichen Nachteil von Fixed-Point 
gegenüber signed/unsigned. Der Logic Analyzer (sei es das Gerät auf dem 
Tisch, ChipScope, Reveal, ..) können nur signed/unsigned. Da man aber 
seine Zahlen aus der Simulation auch im LA wieder finden will, sind alle 
anderen Einstellung nachteilig. Darum verwende ich auch 
Matlab-fixedPoint mit Null Nachkommastellen.

Tom

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


Lesenswert?

amplatzsitzender schrieb:
> Meine frage ist, wie sieht das aus bei Division?
Das kommt auf die Implementierung an...
Aber ich würde erwarten:  I2Q30 / I1Q15 = I1Q15 R I1Q15

von Michael O. (Gast)


Lesenswert?

>Darum verwende ich auch
>Matlab-fixedPoint mit Null Nachkommastellen.
Und was, wenn Du aussen etwas anderes brauchst?

Für die Testvektoren skalieren?

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.