Einführung SigProz

Werbung
Zahlenformate
SigProc-4-Zahlenformate
1
Einfluss der Zahlendarstellung
• Auf Genauigkeit und ImplementierungsAufwand (HW-Kosten)
• Einfache Formate  einfach in HW zu
implementieren aber begrenzter
Zahlenbereich und komplizierte
Arithmetik
• Aufwendige Formate  großer HWAufwand, aber großer Zahlenbereich
und immuner in der Arithmetik
SigProc-4-Zahlenformate
2
X = (b− A , , b−1 , b0 , b1 , , bB ) r
B
−i
b
r
∑ i ,
i= − A
0 ≤ bi ≤ ( r − 1)
bi
Ziffer
r
A
B
Zahlenbasis, Radix
Zahl der ganzzahligen Stellen
Zahl der Kommastellen
(123.456)10 = 1 × 102 + 2 × 101 + 3 × 100 + 4 × 10−1 + 5 × 10−2 + 6 × 10−3
SigProc-4-Zahlenformate
3
Binäre Festkommaformate
• Dezimalpunkt  Binärpunkt
(3.3125)10 ⇒ 11B 0101
−1
−2
−3
=1⋅ 2 + 1⋅ 2 + 0 ⋅ 2 + 1⋅ 2 + 0 ⋅ 2 + 0 ⋅ 2
1
1
=2 + 1
+0
+
+0
+
4
16
1
0
−4
Durch den Binärpunkt ist der Zahlenbereich festgelegt.
SigProc-4-Zahlenformate
4
Für 0 B 111111
 ist der Wertebereich
b
−b
−b
1 − 2 (größteZahl) und 2 (kleinste Zahl)
0.984375D
und 0.015625D
SigProc-4-Zahlenformate
5
Negative Zahlen
Ein Bit wird für das Vorzeichen spendiert
X
1.b b  b für X ≤ 1
• Sign-Magnitude=
X =
1.b b  b + 00 01 für X ≤ 1
• Two‘s Compliment
• Offset Binary
=
X
1.b b  b für X ≤ 1
• One‘s Compliment
1 2
SM
2C
1C
SigProc-4-Zahlenformate
1 2
1 2
B
B
B
6
Decimal
Sign-magnitude
2’s complement
Offset binary
1’s compliment
7
0111
0111
1111
0111
6
0110
0110
1110
0110
5
0101
0101
1101
0101
4
0100
0100
1100
0100
3
0011
0011
1011
0011
2
0010
0010
1010
0010
1
0001
0001
1001
0001
0
0000
0000
1000
0000
-0
1000
-
-
1111
-1
1001
1111
0111
1110
-2
1010
1110
0110
1101
-3
1011
1101
0101
1100
-4
1100
1100
0100
1011
-5
1101
1011
0011
1010
-6
1110
1010
0010
1001
-7
1111
1001
0001
1000
-8
-
1000
0000
-
SigProc-4-Zahlenformate
7
Sign-magnitude
• Einfache Erzeugung negativer Zahlen,
schlecht geeignet zum Rechnen, nur in
speziellen HW-Implementierungen
verwendet, zwei Nullen.
• In DSPs wird meistens 2‘s compliment
verwendet.
SigProc-4-Zahlenformate
8
Offset-binary
• Findet Verwendung bei A/D-Wandlern.
• Umwandlung in 2‘s compliment durch
Inversion des MSB
SigProc-4-Zahlenformate
9
2‘s compliment
• Negative Zahlen durch Inversion der
positiven Zahl und addieren von 1
3D = 0011  1100 +0001 1101 = -3D
• Addition und Subtraktion können mit
derselben HW ausgeführt werden
SigProc-4-Zahlenformate
10
Unterschiedliche Wortlänge:
Aufpassen beim Überlauf!
+15
00001111
+3
0011
――――――――――
+18
00010010
aber
+15
00001111
-3
1101
――――――――――
+28
00011100
SigProc-4-Zahlenformate
Ungleiche Wortlänge
11
Lösung: Sign-extended operation
+15
0 0 0 0 1111
-3
1 1 1 1 1101
――――――――――
+12
1 0 0 0 01100
weggelassen,
von Hardware unterstützt
SigProc-4-Zahlenformate
12
Auswirkungen der endlichen Wortlänge
•
•
•
•
Werte nur mit endlicher Genauigkeit dargestellt
Erhöhung des Grundrauschen der Signale
Erzeugt nichtideale Antworten der digitalen Filter
Führt zu zusätzlichem Rauschen bei der A/DWandlung
• Kann zu ungenauen arithmetische Ergebnissen führen
Die Probleme werden bei kleiner Wortlänge größer.
SigProc-4-Zahlenformate
13
A/D-Wandler Quantisierungsfehler
Beispiel: 8-bit Wandler
Signalbereich von − 1 bis + 1 Volt
2U p 2 Volt
7.8125 mV
LSB
= =
=
8
b
2
2
 Quantisierungsfehler
SigProc-4-Zahlenformate
14
Sign-magnitude
Format
SigProc-4-Zahlenformate
Quantisierungsfehler
LSB
±
=
±3.905 15mV
2
Quantisierungsfehler
im Frequenzbereich
Rauschen
SigProc-4-Zahlenformate
16
Quantifizierung des Rauschens
 Signal-to-noise ratio
Signalpower
SNR =
Noisepower
SigProc-4-Zahlenformate
17
Ein wenig Statistik
x[1] + x[2] +  + x[ N ]
1 N
=
x =
x
n
[
]
Mittelwert
∑
N n =1
N
1 N
2
σ
=
−
x
n
x
n
[
]
[
]
{
} Varianz
∑
N − 1 n =1
2
1
σ
=
N
2
N
∑{x[n] − x [n]}
2
für große N
n =1
SigProc-4-Zahlenformate
18
σ2 ist Amplitude zum Quadrat, also Leistung der
Abweichung vom Mittelwert.
Für ein Zufallssignal x[n] ist σ2 die Leistung des
fluktuierenden Anteils des Signals.
Bei Wechselgrößen ist der Effektivwert eines Signal
identisch mit der Standardabweichung:
=
σ x=
eff
1
N
N
∑ x[n]
2
n =1
SigProc-4-Zahlenformate
19
Quantisierungsrauschen ist ein Zufallssignal und wir können
daher die Rauschleistung durch die Varianz ausdrücken:
Signalpower
=
SNR =
Noisepower
2
 σ Signal

= 10log  2

 σ A/D-Rauschen 
SigProc-4-Zahlenformate
20
Die Quantisierungsfehler liegen zwischen –q/2 und q/2 und
treten mit gleicher Wahrscheinlichkeit auf.
Wahrscheinlichkeitsdichtefunktion des A/D-Fehlers
Bei gleichwahrscheinlichen Signalamplituden ist die
mittlere Leistung des Fehlersignals (Rauschen)
2U p
1 q/2 2
q2
e p (e)de =
e de =
; q
σ= ∫ =
∫
q
−q / 2
−
/
2
q
12
2b
2
A/D-Rauschen
q/2
2
2
U
2
U
(
p)
2
p
σ A/D-Rauschen
= =
2b
b 2
3
2
⋅
SigProc-4-Zahlenformate
12 ( 2 )
2
21
Zur Berechnung der SNR haben wir jetzt die
Rauschleistung, es fehlt aber noch die Signalleistung.
Über das Signal wissen wir nicht viel, wir können aber den
Effektivwert ermittlen.
Für die weitere Beschreibung führen wir den Lastfaktor LF
ein:
Effektivwert
LF =
Es ist auch der Crest factor
CF = 1/LF gebräuchlich.
Spitzenwert
Aussteuerung des A/D-Wandlers
Signalleistung
SigProc-4-Zahlenformate
22
LF = 1
LF=
LF
=
LF
=
= 0.71
1
2
SigProc-4-Zahlenformate
2
=
0.58
12
= 0.33  0.25
1
34
23
Ein Sinussignal hat einen LF von 1/√2 = 0,71 (-3 dB unter Up).
Eine regulär laufende Maschine hat ein LF von 0,66. Bei
Auftreten von Störungen (z.B. Lagerabnützungen) treten
Signalspitzen (mit geringer Energie) auf, die den LF
verkleinern.
SigProc-4-Zahlenformate
24
Effektivwert σ Signal
=
LF =
Spitzenwert
Up
⇒
σ
2
Signal
= ( LF ) U p2
2
 ( LF ) U p2 
2
2b 

SNR 10log
LF
=
⋅
10log
3
2
 2
(
)
(
)
2b 


U p / 3 ⋅ 2 
2
= 4.77 + 6.02 × b + 20log LF
SNR
SigProc-4-Zahlenformate
25
Eingangssignal = Sinus
SNRA / =
4.77 + 6.02 ⋅ b + 20log LF
D
SigProc-4-Zahlenformate
26
Der LF ist nie größer als – 3 dB (Vollaussteuerung des
A/D-Wandlers mit Sinusschwingung) und wir erhalten für
maximale Sinusausteuerung
(
SNRA/Dmax= 4.77 + 6.02 ⋅ b + 20log 1 / 2
)
= 1.76 + 6.02 × b
SigProc-4-Zahlenformate
27
Zusammenfassung A/D (1)
• Ein ideal A/D-gewandeltes Signal kann kein
besseres S/N-Verhältnis als
4.77 + 6.02 × b + 20log LF
SNRA/=
D
haben.
• Ein 8-bit A/D-Wandler hat im besten Fall ein
SNR von 49.9 dB.
Ein kontinuierliches Signal mit besserem
SNR wird auf die 49.9 dB verschlechtert oder
es muss ein A/D-Wandler mit höherer
Auflösung eingesetzt werden.
SigProc-4-Zahlenformate
28
Zusammenfassung A/D (2)
• Reale A/D-Wandler reduzieren das ideale
SNR um 3 – 6 dB.
• Es ist unvorsichtig einen A/D-Wandler voll
auszusteuern, da sonst die Gefahr der
Übersteuerung besteht.
Es muss der Effektivwert gesucht werden, der
den A/D-Wandler nicht (selten) übersteuert!
Aber der Signalverlauf ist statistisch!
• Es ist unzweckmäßig einen A/D-Wandler
einzusetzen, der ein deutlich besseres SNR
hat als das kontinuierliche Signal.
SigProc-4-Zahlenformate
29
Zusammenfassung A/D (3)
• Es wurde angenommen, dass die
Quantisierungsfehler einem stationären (nicht
zeitabhängigem) Zufallsprozess entsprechen.
• Die Wahrscheinlichkeitsdichte ist
gleichverteilt, was nur bei hochwertigen A/DWandlern erreicht werden kann (keine
Codeaussetzer beim Wandler).
• Die Quantisierungsfehler sind nicht mit dem
Eingangssignal korreliert, was in der Praxis
bei Signalen mit reichem Spektralinhalt
gegeben ist (Sprache, Musik, Messwerte).
SigProc-4-Zahlenformate
30
OVERFLOW
SigProc-4-Zahlenformate
31
Overflow (ohne Vorzeichen)
Übertrag
1 1 1
1 0 1 0 1 0
+ 1 0 0 1 1 1
1 0 1 0 0 0 1
+42
+39
+81
Overflow error
Für die Summe von m b-bit Zahlen werden
b + log 2 ( m )
Stellen benötigt.
SigProc-4-Zahlenformate
32
Overflow bei 2er Complement
• Unter bestimmten Bedingungen
erzeugt ein Overflow beim Addieren von
zwei Zahlen keinen Fehler.
• Beim Addieren mehrere Zahlen
entstehende Überläufe in der
Zwischensumme, erzeugen aber keinen
Fehler in der Endsumme, wenn die
Summe kleiner als 2b-1 ist.
SigProc-4-Zahlenformate
33
4-bit 2‘sSigProc-4-Zahlenformate
compliment
34
Overflow (2er Komplement)
Übertrag
0 1 0
1 0 1 1
+ 0 0 1 0
0 1 1 0 1
1
1
+ 0
1 0
1
1
1
1
0
1 0
1 0
0 0
-5
+2
-3
-2
+6
+4
SigProc-4-Zahlenformate
Kein Overflow
Mit Overflow, aber
gültiges positives
Ergebnis
35
Overflow (2er Kompliment)
0
1
+ 1
1 0
1
0
+ 0
0 1
0
0
0
0
1
1
1
1
0
0 1
1 0
1 1
1
1 1
1 1
1 0
-7
-6
+3
+7
+7
-2
Mit Overflow,
ungültiges positives Ergebnis
Ohne Overflow,
ungültiges negatives Ergebnis
SigProc-4-Zahlenformate
36
Wenn das Übertragsbit in das Vorzeichenbit dem
Vorzeichenbit entspricht, kann das Überlaufbit
ignoriert werden und das Ergebnis ist gültig.
Wenn das Übertragsbit in das Vorzeichenbit
unterschiedlich vom Vorzeichenbit ist,
ist das Ergebnis ist ungültig.
SigProc-4-Zahlenformate
37
=
1
1
+ 0
1 0
1
1
1
1
0
1 0
1 0
0 0
Übertrag
-2
+6
+4
Mit Overflow, aber
gültiges positives
Ergebnis
SigProc-4-Zahlenformate
38
≠
≠
0
1
+ 1
1 0
1
0
+ 0
0 1
0
0
0
0
1
1
1
1
0
0 1
1 0
1 1
1
1 1
1 1
1 0
Übertrag
-7
-6
+3
Mit Overflow,
ungültiges
positives Ergebnis
Übertrag
+7
+7
-2
SigProc-4-Zahlenformate
Ohne Overflow,
ungültiges
negatives Ergebnis39
Zwei Additionen
≠
≠
1
0
+ 0
0 1
1
1
1
1
0
1 1
1 0
0 1
Übertrag
+7
+6
 Overflow Fehler
-3
beim Zwischenergebnis
0
1
+ 1
1 0
0
1
0
1
1
0 1
0 1
1 0
Übertrag
-3
Der Betrag der Summe der 4-bit Zahlen (7 + 6 – 7 = 6)
und ist kleiner als 2 = 8.
-7
+6
Gültiges positives
Ergebnis
4-1
Eine Folge von b-Bit Additionen liefert auch bei Zwischenfehlern ein
richtiges Gesamtergebnis, wenn
der Betrag des Ergebnisses kleiner
SigProc-4-Zahlenformate
als 2b-1 ist.
40
Eine Folge von b-Bit Additionen liefert auch bei Zwischenfehlern ein
richtiges Gesamtergebnis, wenn der Betrag des Ergebnisses kleiner
als 2b-1 ist.
+
0
0
1
0
0
1
1
1
1
1
1
0
0
1
1
0
1
0
1
0
1
1
0
+7
+6
-3
-5
-8
 Overflow Fehler
beim Zwischenergebnis
 Ungültiges
negatives Ergebnis
Der Betrag der Summe der 4-bit Zahlen (7 + 6 – 5 = 8)
und ist nicht kleiner als 24-1 = 8.
SigProc-4-Zahlenformate
41
Behandlung des Overflows
SigProc-4-Zahlenformate
42
Durch Abschneiden
Beim Abschneiden
wird der Datenwert auf
einen Wert gesetzt der
≤ dem Datenwert ist,
z.B. 1.7  1
q
xTrunc = −
2
2
q
2
σ Trunc =
12
SigProc-4-Zahlenformate
43
Rundungsfehler bei der Division durch 2T
durch Verschieben
31/16: 1 1 1 1 1
0 0 0 0 1
= 1
31/16 = 1.937
richtiger Quotient − tunc. Quotient
Fehler [ % ]
⋅ 100
richtiger Quotient
1.937 − 1
=
= 48%
1.937
SigProc-4-Zahlenformate
44
1 − 2−T
=
⋅ 100
Errtruncmax [%]
−T
N + (1 − 2 )
Maximaler Fehler
Der größte Fehler tritt auf, wenn alle abgeschnittenen Bits
gleich 1 sind  b1 1 1 1  1 – 2-T
Der Fehler ist Null wenn alle abgeschnittenen Bits Null sind.
/2
/4
/256
SigProc-4-Zahlenformate
Wortlänge
45
Rundung
−0.5 ≤ x < 0.5
0.5 ≤ x < 1.5
⇒ 0
⇒ 1
xTrunc = 0
σ 2Trunc
SigProc-4-Zahlenformate
q2
=
12
46
Festkomma Zahlenauflösung
• Gleichbleibende Auflösung
X max − X min
∆=
2b − 1
• Intervall steigt mit dem Wertebereich
SigProc-4-Zahlenformate
47
Qm.n-Formate
SigProc-4-Zahlenformate
48
16-bit
Dynamikbereich
SigProc-4-Zahlenformate
Genauigkeit
49
16-bit
Skalierung
Dynamikbereich
SigProc-4-Zahlenformate
50
Die meisten DSPs unterstützen Bruchzahlen im Qm.n-Format.
Assembler kennt nur Ganzzahlen, der Programmierer muss
entsprechende Normierung vornehmen:
1. Normalisieren in den Bereich des gewünschten Q-Formats
2. Multiplizieren mit 2n, n ist die Zahl der Nachkomma-Bits
3. Runden auf die nächste Ganzzahl
z.B.: 1.18 im Q.15-Format
1. Normalisieren, damit die Zahl im Bereich -1 bis + 1 liegt
1.18/2 = 0.59
2. Multiplizieren mit 215  0.59 x 32768 =19333.12
3. Runden auf 19333  4B85h
SigProc-4-Zahlenformate
51
Fixed  floating point DSPs
SigProc-4-Zahlenformate
52
Anwendungen
SigProc-4-Zahlenformate
53
Floating Point Binärformate
x= m ⋅ 2
e
Exponent
Mantisse
32-bit floating point Formate verwenden typisch
24 bit für die Mantisse
8 bit für den Exponenten
( ! In der Mathematik ist Mantisse die Bezeichnung für die Nachkommastellen!)
SigProc-4-Zahlenformate
54
Auflösung sinkt bei größeren Zahlen:
Abstand zwischen benachbarten FP-Zahlen wird größer
wenn die Zahlen größer werden.
Festkomma
Gleitkomma
•
Gleichmäßige Auflösung
über den gesamten
Zahlenbereich
•
•
Kleiner Dynamikbereich
•
Feinere Auflösung für
kleine Zahlen, gröbere
Auflösung für große
Zahlen.
Größerer Dynamikberich
SigProc-4-Zahlenformate
55
Festkomma 231-1  2x109  2 G
Beispiel 32 bit :
Gleitkomma
(Vorzeichen) 23 Mantisse (Vorzeichen) 7 Exponent:
0.100 0 ⋅ 211111111 =12 × 2 −127 ≈ 0.3 × 10−38
0.1111 ⋅ 201111111 =(1 − 2 −23 ) × 2 −127 ≈ 1.7 × 1038
Dynamikbereich ca. 1076 , unterschiedliche Auflösung
SigProc-4-Zahlenformate
56
Um die Null darzustellen muss nur die Mantisse Null sein,
der Exponent kann beliebig sein.
Die Wahl von Mantisse und Exponent, die Darstellung
der Null und die Behandlung des Overflows führen zu
unterschiedlichen Gleitkommadarstellungen,
z.B. IEEE 754 Format
SigProc-4-Zahlenformate
57
Formate
•
•
•
•
Single
Double
Single extended
Double extended
SigProc-4-Zahlenformate
32 (23 +8)
64 (52 +11)
>42 (>30 + >10)
>78 (>62 + >14)
58
IEEE 32-bit floating-point format
0
S
1
…
E
8
9
…
M
31
Exponent 8-bit length, coded in biased (non-negative) form as E - 127
Mantissa 23-bit length, 0 ≤ M < 1
( 1) S ⋅ 2 E −127 ( M )
X =−
2r − 1 − 1
r number of bits of E
Conventions:
0
; ∞-∞
0
1
1
2. If E =255 (max.) and M=0, than X =−
( 1) s ⋅ ∞
⇒ ∞;
⇒ −∞
0
−0
( 1) s ⋅ 2 E −127 (1.M )
normalized
3. If 0 < E < 255, than X =−
1. If E
255 (max.) and M ≠ 0, than X is not a number (NaN)
4. If E =0 and M ≠ 0, than X =−
( 1) s ⋅ 2 −126 (0.M ) denormalized (fixed point)
5. If E =0 and M =0, than X =−
( 1) s ⋅ 0
where 1.M is a number with one integer bit and 23 fractional bits and
SigProc-4-Zahlenformate
0.M is a fraction.
59
Beispiel :
010000
0101010
00

 
 
S
E
M
130−127
X =−1 × 2
0
13
× 1010 00 =
2 × =
13
8
3
The range of 32-bit floating point numbers in this format is from
2 −23 × 2 −126 = 2 −149 = 1.4013 × 10−45 to
128
38
−24
−
×
1
2
2
3.4028
10
=
×
(
)
Zehn Hoch (Powers of Ten): Quark (10−16 ) ⇔ Grenze des Alls (1025 )
SigProc-4-Zahlenformate
60
S EEEEEEEE MMMMMMMMMMMMMMMMMMMMMMM
0 1
8 9
3
1
E = 255 M ≠ 0
0 11111111 00000000010000000000000
1 11111111 00001000000100000010000
= NaN
= NaN
E = 255 M = 0
0 11111111 000000000O0000000000000
1 11111111 00000000000000000000000
=
∞
= - ∞
E = 0
M = 0
0 00000000 000000000O0000000000000
1 00000000 00000000000000000000000
=
0
= - 0
SigProc-4-Zahlenformate
61
Exponent biased by 28 − 1 − 1 = 127
 Exponenten von −126 bis +127 darstellbar. (0 und 255 reserviert)
Grund leichtere Vergleichbarkeit von Zahlen in diesem Format.
0 < E < 255 ⇒ V =−
( 1) S ⋅ 2 E −127 ⋅ (1.M )
0 10000000 00000000000000000000000 = +1•2(128-127)•1.0 =
2
6.5
0 10000001 10100000000000000000000 = +1•2(129-127)•1.101 =
1 10000001 10100000000000000000000 = -1•2(129-127)•1.101 = -6.5
0 00000001 00000000000000000000000 = +1•2(1-127)•1.0 = 2-126
0 00000000 10000000000000000000000 = +1•2(-126)•0.1 =
2-127
1 00000000 00000000000000000000001 = -1•2(-126)•0.0…1 = -2-149
Kleinste
neg. Zahl
E=
000, M ≠ 0 ⇒ V =−
( 1) S ⋅ 2 −126 ⋅ (0.M )
SigProc-4-Zahlenformate
62
http://www.h-schmidt.net/FloatApplet/IEEE754de.html
SigProc-4-Zahlenformate
63
IEEE 754 not only a format …
• Rounding algorithms
• Arithmetic operations (add, subtract,
multiply, divide, square root, fusedmultiply-add, remainder, etc.)
• Conversions (between formats, to and
from strings, etc.)
• Exception handling
Invalid (√-1), /0, over/under-flow
http://754r.ucbtest.org/standards/754.pdf
(ANSI/IEEE Std 754–1985)
64
Herunterladen