mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP 16 oder 24 bit Gleitkommazahlen


Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

Ich brauch mal wieder etwas Hilfe, komme absolut nicht weiter.
Folgendes Problem: ein TAS3002 soll als Equalizer eingesetzt werden
(weiter unten in einem Thread schonmal beschrieben). Das Ding benötigt
24 bit Filterkoeffizienten in einem 4.20 Format... erstmal egal.

http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt
Hier habe ich (hoffentlich) passende Formeln für die Koeffizienten
gefunden, die dann ein PIC berechnen soll.

http://www.bknd.com/cc5x/math.shtml
Das sind Beschreibungen zu den Bibliotheken, die der freie C Compiler
verwendet. Hier der Auszug, den ich nicht nachvollziehen kann (16 Bit,
weils übersichtlicher ist):

16 bit floating point format:

  address  ID
   X       a.low8  : LSB, bit 0-6 of mantissa, bit 7: sign bit
   X+1     a.high8 : MSB, bit 0-7 of exponent, with bias 0x7F

   bit 7 of mantissa is a hidden bit, always equal to 1
   zero (0.0) :  a.high8 = 0 (mantissa & sign ignored)

  MSB LSB
   7F 00 : 1.0   =  1.0  * 2**(0x7F-0x7F) = 1.0 * 1
   7F 80 : -1.0  = -1.0  * 2**(0x7F-0x7F) = -1.0 * 1
   80 00 : 2.0   =  1.0  * 2**(0x80-0x7F) = 1.0 * 2
   80 40 : 3.0   =  1.5  * 2**(0x80-0x7F) = 1.5 * 2
   7E 60 : 0.875 =  1.75 * 2**(0x7E-0x7F) = 1.75 * 0.5
   7F 60 : 1.75  =  1.75 * 2**(0x7E-0x7F) = 1.75 * 1
   7F 7F : 1.9921875

Woher nehmen die da den Faktor 1.0 oder 1,75? Die Basis und den
Exponent kann man ja noch aus den beiden Bytes ablesen..
Ich wäre froh wenn mir hier jemand auf die Sprünge helfen könnte...

M f G
Sebastian

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das LSB bestimmt den Vorfaktor, 0x00 entspricht 1.0, 0x40 entspricht
1.0+0.5, 0x60 entspricht 1.0+0.5+0.25,
0x7f=1.0+0.5+0.5/2+0.5/4+0.5/8+0.15/16+0.5/32+0.5/64=1.9921875. Das
oberste Bit vom LSB macht das Vorzeichen i.e. 0x80=-1.0

Cheers
Detlef

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Detlef,

Vielen Dank für die Erklärung!

M f G
Sebastian

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.