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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.