8-Bit Audio mu-law expander

N

niels laugwitz

Guest
Hi Folks!

Ich moechte mit ein paar hier rumliegenden Flash-Eproms ein
Wiedergabesystem für 8-Bit-Audiodaten aufbauen. ISD-Chips sind mir zu
teuer und die eeproms hab ich hier in der Schublade.
Wenn ich mir die "ľ-Law-Kompression" so ansehe, muesste es doch
moeglich sein, mit einem R2R-Netzwerk und vielleicht etwas
zusätzlicher Digital-Logik den Dynamikumfang zu vergroessern.
Die "Dekompression" funktioniert nach meinem Verständnis mit mu-Law
(=ľ-Law) offenbar so:

Bei 8bit Daten ist das hoechstwertige Bit (Bit 7) ein Vorzeichenbit.
Die 4 niedrigsten Bits (0...3) bilden ganz normale Digitalwerte. Wird
bit 4 gesetzt, dann verdoppeln sich die Wertigkeiten der Bits 0..3.
Ist Bit 5 (und Bit 4 nicht) gesetzt, dann verdoppeln sich die
Wertigkeiten nochmal. Sind Bit 4 und 5 gesetzt, dann gibt es eine
weitere Verdoppelung der Wertigkeiten der Bits 0...3.

Irgendwie habe ich es aber noch nicht hingekriegt. Vielleicht muß ich
doch erst alles digital auf 14bit-Werte strecken und dann einen
mindestens 14bit DAC nehmen. Das waere dann doch etwas zu viel
Aufwand, da ich so etwas nicht in meiner Bastelkiste rumfliegen hab.

Wenn es denn ohne 14 bit DAC geht, dann ist auch die Frage, ob ich
effektiv (und nicht nur theoretisch) etwas von dem hoeheren
Dynamikumfang habe.

Irgendwelche Tips?

Danke niels.
[mailpostfachwirdnichtgeleertundquilltgradevonspammailsüber]
 
On 17 Dec 2003 13:21:16 -0800, laugwitz@web.de (niels laugwitz) wrote:

Hi!

Ich moechte mit ein paar hier rumliegenden Flash-Eproms ein
Wiedergabesystem für 8-Bit-Audiodaten aufbauen.
Du möchtest 8 Bit speichern, ja?

Wenn ich mir die "ľ-Law-Kompression" so ansehe,
Aber Du möchtest mehr als 8 Bit Dynamik.

muesste es doch
moeglich sein, mit einem R2R-Netzwerk und vielleicht etwas
zusätzlicher Digital-Logik den Dynamikumfang zu vergroessern.
Mehr als 8 Bit würde ich von einem R2R-Wandler nicht erwarten. Der
Wert eines LSB ist bei 8 Bit immerhin schon 1/256, also 0,4% des
Bereichs. Bin zu faul nachzuschauen, wie die Genauigkeit der
Widerstände im R2R-Netzwerk eingeht, aber das kannst Du sicher
herausfinden. Ich rate mal: 0,2% oder 0,4% oder 0,8% für 8Bit. Damit
werden 14Bit schon sehr, sehr teuer.

Die "Dekompression" funktioniert nach meinem Verständnis mit mu-Law
(=ľ-Law) offenbar so:

Bei 8bit Daten ist das hoechstwertige Bit (Bit 7) ein Vorzeichenbit.
Die 4 niedrigsten Bits (0...3) bilden ganz normale Digitalwerte. Wird
bit 4 gesetzt, dann verdoppeln sich die Wertigkeiten der Bits 0..3.
Ist Bit 5 (und Bit 4 nicht) gesetzt, dann verdoppeln sich die
Wertigkeiten nochmal. Sind Bit 4 und 5 gesetzt, dann gibt es eine
weitere Verdoppelung der Wertigkeiten der Bits 0...3.
Das klingt so wie die "13-Segment-Kennlinie" beim Telefon. Naja nicht
ganz, denn: die "linearen" Bits (die unteren vier) werden von den
"Verstärkungs-"Bits (die drei darüber) nicht einfach verdoppelt. Stell
Dir vor, die unteren wären Null, und Du verdoppelst das - wieder Null.
Damit schmeißt Du effektiv Bandbreite weg, da Du "Null" auf
verschiedenste Weise beschreiben kannst.

Bei der "13-Segment-Kennlinie" verdoppeln sich nicht mit den höheren
Bits die Ausgangswerte, sondern die _Steigung_ verdoppelt sich.


Irgendwie habe ich es aber noch nicht hingekriegt. Vielleicht muß ich
doch erst alles digital auf 14bit-Werte strecken und dann einen
mindestens 14bit DAC nehmen.
Ein linearer Wandler braucht dazu auf jeden Fall 14 Bit. Wolltest Du
die Kennlinie direkt in den Wandler bringen? Keine Ahnung ob das geht,
aber ich glaube kaum, daß eine R2R-ähnliche Struktur (mit anderen
Werten als R und 2R) sowas wie diese Kennlinie erzeugen kann.
Vielleicht gibts ja spezielle Wandler für Telefon.

Wenn es denn ohne 14 bit DAC geht, dann ist auch die Frage, ob ich
effektiv (und nicht nur theoretisch) etwas von dem hoeheren
Dynamikumfang habe.
Wie gesagt, ich kenne keinen 8Bit-13Segment-Wandler (das hat aber
nichts zu sagen). Sicher bin ich hingegen, daß Du Telefonqualität
bestimmt nicht gegen 8Bit linear eintauschen möchtest :)

Ob ich jetzt helfen konnte? Ach, gute Nacht.

Gruß,
Michael.
 
niels laugwitz <laugwitz@web.de> schrieb im Beitrag <bb11f49c.0312171321.6b094e11@posting.google.com>...
Bei 8bit Daten ist das hoechstwertige Bit (Bit 7) ein Vorzeichenbit.
Die 4 niedrigsten Bits (0...3) bilden ganz normale Digitalwerte. Wird
bit 4 gesetzt, dann verdoppeln sich die Wertigkeiten der Bits 0..3.
Ist Bit 5 (und Bit 4 nicht) gesetzt, dann verdoppeln sich die
Wertigkeiten nochmal. Sind Bit 4 und 5 gesetzt, dann gibt es eine
weitere Verdoppelung der Wertigkeiten der Bits 0...3.

So wie du es beschreibst musst du multiplizieren.
Es gibt 'multiplying DACs', allerdings meist mit 8 bit, wie AD7824.
Der erste DAC produziert (aus 4 bit) eine Spannung, die im zweiten
DAC mit den restlichen Bits multipliziert wird.
Du brauchst jeweils nur 4 bit, aber ich kenne keinen DAC mit nur 4 bit.
Baut man also wohl aus Widerstaenden und Analogschaltern zusammen.

Allerdings ist uLAW etwas komplexer:

http://www.mathworks.com/access/helpdesk/help/toolbox/commblks/ref/mulawexpander.shtml

Es gibt passende Chips Winbond W681511 oder Atelic und wohl auch von TI.
--
Manfred Winterhoff, reply-to invalid, use mawin at despammed.com
homepage: http://www.geocities.com/mwinterhoff/
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
 
14bit
Sowohl A-law als auch u-law machen auf ca. 12 Bit.

Rein per Widerstandsnetzwerk wäre mir keine Realisierung
bekannt.
Widerstands/Diodennetzwerk war Anfang 70er
Jahre üblich ( in Thermostat bei konstanter Temperatur
wegen der Dioden ) ehe es geeignete ICs gab.
Es gab historisch auch Variante Deltamodulator ( also
simpler 1 Bit A/D-Wandler ) auf A-law umzukodieren
( Ferranti ).
Die simpelste Lösung für Sprache wäre natürlich PCM-Codec
zu verwenden, das hat aber serielle Schnittstelle.
Und 300 - 3400 Hz Filter, sodaß es wirklich nur Sprache
macht.
Die simpelste Lösung für HiFi wäre 2 Speicher, also 16 Bit
mit 12 - 16 Bit Wandlern.

MfG JRD
 
Rafael Deliano schrieb:
14bit
Sowohl A-law als auch u-law machen auf ca. 12 Bit.

Rein per Widerstandsnetzwerk wäre mir keine Realisierung
bekannt.
Widerstands/Diodennetzwerk war Anfang 70er
Jahre üblich ( in Thermostat bei konstanter Temperatur
wegen der Dioden ) ehe es geeignete ICs gab.
Es gab historisch auch Variante Deltamodulator ( also
simpler 1 Bit A/D-Wandler ) auf A-law umzukodieren
( Ferranti ).
Die simpelste Lösung für Sprache wäre natürlich PCM-Codec
zu verwenden, das hat aber serielle Schnittstelle.
Und 300 - 3400 Hz Filter, sodaß es wirklich nur Sprache
macht.
Die simpelste Lösung für HiFi wäre 2 Speicher, also 16 Bit
mit 12 - 16 Bit Wandlern.

Man könnte auch mittels einer Tabelle (ROM) umcodieren.

Martin
 

Welcome to EDABoard.com

Sponsor

Back
Top