Ich überlege gerade, welche Bitbreite ein ADC bräuchte, wenn ich damit Audiosignale mit einer Auflösung von besser als 1dB messen will. Aber irgendwie stehe ich auf dem Schlauch, wie rechnet man das?
Mein Ansatz war: 20 log(1/2^n) - 20 log(1/(2^n-1)) mit n = Bitbreite. Aber das ergäbe für einen 8bit-ADC eine Auflösung von 0,03dB, das kann doch nicht sein, oder?
Dass man wegen Rauschen, Nichtlinearitäten, usw. die letzten Bits nicht gebrauchen kann, ist klar. Mir geht es erstmal nur um die Theorie.
Ich vermute du hast einen Denkfehler darin, was ein dB aussagt. Es ist ja letztlich ein Verhältnis, muß sich also auf irgendetwas beziehen. Da stellt sich dann die Frage, "1dB" von was?
Diesen Rechenweg kann ich nicht nachvollziehen. Du setzt hier den Pegel das niedrigstwertigen Bit ins Verhältnis zum nächsthöheren. Das ist nun mal immer genau Faktor 2 und damit 6dB. IMHO bedeutet diese Formel nichts sinnvolles, bzw etwas sehr triviales.
Wenn du die Auflösung in dB angeben willst, mußt du die niedrigst darstellbare Spannung ins Verhältnis zur höchsten setzen. Da das ein Verhältnis ist, kürzen sich gemeinsame Verstärkungsfaktoren heraus und ich kann z.B. einfach die Integer-Werte nehmen:
V0=2^n V1=1
Auslösung A = 20 log_10 (1/2^n) = -48 dB bei 8 Bit
Und das ist nun mal genau der Kehrwert der Dynamik, bzw in dB ausgedrückt das Negative. Siehe dazu das andere Posting von Dieter Wiedmann (eben reingekommen)
Das wäre dann aber die maximal mögliche Dynamik. Was macht man, wenn die gar nicht interessant ist, sondern man nur eine garantierte Auflösung braucht?
Beispiel: Man will Lautsprecher paarweise selektieren und betrachtet dafür nur den akustisch wichtigen Mitteltonbereich. Der Frequenzgang verlaufe in dem Bereich auf +/-5dB genau (bezogen auf 1kHz), die LS sollen nun auf +/-1dB relative Abweichung zueinander gepaart werden.
Die Dynamikbandbreite würde mir in so einem Fall doch nichts nützen, oder verstehe ich irgendetwas grundsätzlich falsch?
Was dB bedeutet, weiß ich schon, aber dass ich irgendwo einen Denkfehler begehe, denke ich auch.
Nehmen wir das Beispiel aus meiner Antwort auf Dieter.
Ich denke, Du meinst hier etwas anderes, nämlich dass sich der Dynamikumfang eines ADC mit jedem Bit um 6dB erhöht. Ich meine etwas anderes, nämlich den kleinstmöglichen Dynamikunterschied, den ich mit einer bestimmten Bitbreite messen kann.
Nochmal am Beispiel des 8bit-Wandlers: die theoretisch kleinste Auflösung beträgt 1/256tel der Referenzspannung, bei 5V also 0,02V. Das muss man doch auch in dB angeben können, wenn man annimmt, dass der Wandler tatsächlich maximal ausgesteuert wird. Dass sich diese Auflösung verringert, wenn man ihn geringer aussteuert, ist klar.
Da gibt es eine Faustformel: 6dB pro bit. Beispielsweise hat ein CD-Player mit 16 bit dann 96 dB Signal zu Rauschabstand. Mit Rauschen ist in dem Fall der Quantisierungsfehler gemeint.
siehe auch:
chris
Mart> Ich überlege gerade, welche Bitbreite ein ADC bräuchte, wenn ich damit
Du mußt dir halt erst mal darüber klar werden, bezüglich was du die dB messen willst. Wenn du die kleinste meßbare Spannung bezüglich deiner Referenzspannung meinst, bleibt es dabei: das Verhältnis ist bei 8 Bit:
20 * log_10 (0,02/5) = -48dB
D.h. wenn umgekehrt deinen Referenzpegel mit 48dB bezeichnest, ist deine kleinste Spannung 1dB. Aber das wäre auch 1dB, bei 16Bit; nur wäre da der Referenzpegel eben 96dB. Wie Dieter sagte: es ist einfach nicht sinnvoll, die Auflösung in dB anzugeben. Auflösungen gibt man in absoluten Pegeln an und diesen kann man dann wieder ins Verhältnis zum Rauschpegel setzen und erhält so den Signal/Rausch-Abstand. Ebenso kann man diesen absoluten Pegel ins Verhältnis zu einem definierten Pegel wie dBm setzen. Aber das ist dann auch nur eine andere Schreibweise für den Wert.
Aber es führt kein Weg daran vorbei: Ohne Bezugspunkt machen die Verhältnisse in dB keinen Sinn.
Nö, ich meinte nicht die kleinste messbare Spannung, bezogen auf die Referenzspannung, sondern den kleinsten messbaren Spannungsunterschied in dB bei einer bestimmten Referenzspannung und Bitbreite.
Ich habe einen Artikel in groups.google gefunden, da hat jemand so einen Wert für einen 16bit-Wandler angegeben:
| Message-ID: | From: "Michael R. Kesti" | Newsgroups: rec.audio.pro | Subject: Re: QUESTION: 16-Bit vs. 24-Bit | Date: Tue, 24 Aug 2004 09:21:48 -0700 | | Second, a 16-bit system provides 16-bits of resolution regardless | of the level to which it is driven. Resolution is the ability of a | system's ability to accurately measure its input signal. A 16-bit | system can measure its input single with an accuracy of one part in | 65,536 or about 0.01038 dB. A 16-bit converter therefore resolves | the difference between -11.98962 dBfs and -12.00000 dBfs as well as | it measures the difference between -0.01038 dBfs and 0.00000 dBfs.
So etwas meinte ich, und ich würde gerne wissen, wie man auf diese
0,01038dB kommt, oder ist es Quatsch, was dieser Autor schreibt?
Angenommen ein 8 Bit-Wandler misst 200 bei 1 V und das wären 0dB. Wenn der Wandler 100 mißt, wären das -6 dB. Wenn der Wandler 20 mißt, wären das -20 dB Wenn der Wandler 2 mißt, wären das -40 dB
Das funktioniert deshalb so nicht, weil jedes dB Änderung einen anderen absoluten Spannungspegel bedeutet. Dein ADC misst aber absolute Werte und keine dB.
Mal konkret gerechnet:
Referenzpegel 0dB=1V
das eine Chassis liegt bei -4dB = 0,63V das andere bei -5dB = 0,56V
du möchtest nun einen ADC, der diese beiden Spannungen als "innerhalb der Toleranz" erkennt. Wenn er das nun mindestens mit zwei signifikanten Stellen Genauigkeit können soll, muß er also 0,01V Auflösung haben. In dB ausgedrückt:
20 * log_10 (1/0,01) = 40 dB
Ein 8Bit-Wandler reicht also aus.
Wenn Du die gleiche Rechung mal bei -15dB machst, brauchst du schon 2 signifikante Stellen und der 8Bit-Wandler reicht nicht mehr.
Es gibt also zwei Gründe, warum sich das schlecht "straight forward" mit einer Formel ausrechnen läßt: Zum einen mußt Du vorgeben, welche Differenzen du betrachten willst und mit welcher Genauigkeit du die Einhaltung der Grenzen erkennen willst.
Wenn man annimmt, dass du dich wirklich nah beim Referenzpegel misst und eine Genauigkeit von Faktor 10 reicht (also quasi eine Nachkommastelle):
(1 - (-1dB))/10 = 1/(2^n)
n = log_2 (10/ (1- 10^(-1/20))) = 6,5
Das besagt, dass ein Zehntel der Differenz vom Referenzpegel zu -1dB von "6,5 Bit" mit einem Digit aufgelöst wird.
Die Bezugsysteme passen nicht gut zueinander. Der A/D-Wandler ist linear, die dB sind log. Es gibt wenig Wandler die log-Kennlinie haben ( und wenn dann nur in Näherung ): die Telecom-Codecs und obsolete Exoten von Analog Devices. Wenn es mehr davon gäbe, gäbe es eventuell auch Controller die logarithmische Zahlensysteme unterstützen würden.
Wenn ein 8 Bit A/D-Wandler "40dB Dynamik" hat müsste der Sinus voll ausgesteuert sein, damit noisefloor bei ca. -40dB liegt. Wenn man per AGC oder PGA sicherstellen kann daß das Signal ca. 50% ausgesteuert ist, verliert man schon ein Bit ( also 7 Bit ) ist aber für Anwendung realistisch machbar.
Wenn das Signal 0dB Dynamik hat, also z.B. Sinus Dauerton kann man den Abstand zum Quantisierungsrauschen leicht halten.
Wenn man z.B. Sprache hat die selbst 40dB variiert, werden leise Abschnitte keinen Abstand zum Quantisierungsrauschen haben. Ein Sinus der mit 1 Bit als Rechteck quantisiert wird hat offensichtlich ein Problem. Da diese Abschnitte der Sprache aber selbst nur moduliertes Rauschen sind, wird das bei z.B. Sprachspeichersystemen subjektiv hörbar nicht sehr stören.
Sicher, angeben kann man vieles, ob sinnvoll oder nicht: U_max / U_max-1 = 255/254 = 1,0039 = 0,034 dB.
Darum ist es auch witzlos, eine Auflösung in dB anzugeben, denn wer steuert seinen Wandler schon immer 100% aus? Was machst Du, wenn Du Lautsprecher zwar paarweise auf 1dB selektieren willst, im Lager aber
100 Lautsprecher mit insgesamt 6dB Toleranz liegen? Immer nur paarweise prüfen und jedesmal den Vorverstärker anpassen? Dann doch lieber etwas mehr Auflösung und genug "Luft" nach oben, denn schon der nächste Lautsprecher könnte doppelt so laut sein.
Eine Amplitudenauflösung von allen möglichen Frequenzen ohne bezug auf Rauschen und Abtastfrequenz macht wenig Sinn. Stichwort Oversampling: Theoretisch kannst du auch mit 4 und weniger Bits, zugesetztem Rauschen und nachträglichem Mitteln fast beliebig große Genauigkeiten erreichen. Dabei kann man mehrere Messungen bei ADclock=maxf*2 oder eine Messung bei ADclock=maxf*2*oversampling machen. Praktisch will man nur einmal messen und dabei einen gewissen Spielraum nach oben haben (Übersteuerung vermeiden). Da schnelle 12 Bit Wandler heutzutage nicht viel kosten, hat man damit genug Spielraum und braucht sich nachher nicht ärgern. Dann kann man auch Impulsmessungen genau durchführen.
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.