Audio estéreo de 8 bits R-2R DAC, ¿es esta la forma correcta de hacerlo?


8

Soy nuevo en ingeniería eléctrica y el primer proyecto que me gustaría hacer es hacer un convertidor de audio digital a analógico. Descubrí que una buena forma de hacerlo es utilizar una estructura R-2R para la conversión.

Me gustaría desafiarme y comenzar desde cero con la parte digital del circuito, además del hecho de que realmente no puedo encontrar ninguna solución en la web para ayudar a construirlo. Tengo un programa de simulación de circuitos y comencé a diseñar, mientras buscaba en la web todos los diferentes tipos de electrónica que podría usar para él.

Ahora creo que podría estar en algún lugar cercano al entendimiento del principio de un DAC, pero sería útil que alguien con experiencia pudiera ayudarme a verificar si realmente lo consigo. ¿Es este un lugar correcto para pedir eso?

Si es así, aquí está el circuito que he diseñado: Audio estéreo de 8 bits R-2R DAC

He utilizado un registro de desplazamiento con cierre de salida para cada canal y Q7S vinculado de uno a otro para alimentar los datos. ¿Es correcto que los archivos de audio alternen los canales izquierdo y derecho, o viceversa, en bloques? por ejemplo, en un archivo de 8 bits: 0010 0111 para la izquierda después de 0010 0110 para la derecha?

Los registros de desplazamiento que he usado aquí son 74HC595. Cuando se cambien los bits, ninguno de los pines estará (momentáneamente) activo. Cuando se activa el pestillo [pin STCP], los bits se transfieren del registro de desplazamiento al registro de almacenamiento, donde emitirán directamente su valor a los pines correspondientes y permanecerán activos hasta que se permitan los siguientes 16 bits.

Luego está el cristal, para el cual he usado una señal de onda cuadrada para imitar una con la frecuencia de oscilación correcta: 24,576MHz. Alimenta el contador en el que la frecuencia se divide para generar las frecuencias que necesita mi DAC. En este caso, la frecuencia de la muestra debe ser de 192.000 kHz y, por lo tanto, la frecuencia a la que se desplazan los datos debe ser de 3.02MHz (192.000 x 16 bits). La velocidad de reloj de 192.000 kHz se utiliza para activar STCP.

Lo siguiente que quiero hacer es descubrir cómo cargar datos de una fuente (Raspberry, por ejemplo) a través de I2C quizás en un búfer en el DAC y desde allí registrar los bits en el circuito que ves aquí.

Si cree que estoy o no estoy en el camino correcto, sería muy útil que me lo haga saber.

¡Gracias! Rogier

Por cierto, olvidé mencionar que el DAC que me gustaría construir es de al menos 24 bits por canal a 96kHZ. Solo ocupa mucho espacio en esta amenaza y no debería ser difícil agregarlos después. Es el mismo principio.


2
Buen proyecto difícil. No revisé todas tus matemáticas, pero un audio de 8 bits no va a sonar demasiado bien. Tendrás que sesgar el suministro a la mitad, lo que te deja con 7 bits en cada lado. Puede salirse con la suya en el habla comprimida, donde el rango dinámico está severamente limitado, pero los pasajes silenciosos del habla o la música tendrán una distorsión terrible debido al tamaño de paso grueso y la respuesta logarítmica del oído. Desde la memoria, la calidad del CD es de 14 bits.
Transistor

1
@transistor aunque no califica tiene alta fidelidad, el audio de 8 bits puede ser sorprendentemente audible si se hace correctamente, especialmente si la frecuencia de muestreo está fuera del rango audible, lo que parece ser en este caso (con una muestra lo suficientemente alta velocidad, incluso puede salirse con la salida de 1 bit ...). Una preocupación más seria es si los registros de desplazamiento propuestos están "doblemente almacenados", o si los bits aparecerán momentáneamente en las salidas incorrectas mientras se desplazan, algo que podría causar una distorsión sustancial.
Chris Stratton

44
En cuanto a tu comentario sobre 24 bits por canal: olvídalo, olvídalo ahora y no pierdas más tiempo pensando en ello. No voy a ir a las matemáticas por eso en este comentario, pero estoy seguro de que ha surgido aquí algún tiempo antes. Si no, esto es lo que wikipedia tiene que decir: en.wikipedia.org/wiki/…
canalización del

2
Usando resistencias de 1%, puede obtener una resolución precisa de 6 bits (LSB = MSB / 64, por lo tanto, 1% de error <valor de LSB / MSB), pero por encima de eso necesitaría cortar el posible error por resistencia a la mitad por cada adicional bit (0.25% para 8 bits) también evita que el error de resistencia posiblemente sobrepase los bits menos significativos.
Robherc KV5ROB

2
2-23Es un número pequeño horrible. como 1 sobre 8 millones. no podrá hacer un DAC, con una velocidad de conversión decente, que tenga una salida tan precisa como esa especificación. El número honesto de bits es el rango dinámico en dB (que es la relación S / N en dB sumado al número de dB de margen) dividido por 6.02 dB / bit. eso te dará la cantidad de bits honestos. Lo mejor que he visto en la industria sigue siendo unos 20 bits (o un rango dinámico de aproximadamente 120 dB).
Robert Bristow-Johnson

Respuestas:


7
  • Sí, este es exactamente el lugar correcto para hacer su pregunta.
  • Sí, la topografía R-2R es la forma más sencilla de diseñar (y creo que la mejor) para hacer un DAC casero (sin usar PWM).
  • En cuanto a desafiarte a ti mismo, me parece que puedes ser tan masoquista como yo (¡felicitaciones por tener las agallas!). Este es un proyecto realmente complicado para un principiante.
  • Sus cadenas de resistencia R-2R (y posiblemente los amplificadores operacionales adjuntos) en realidad SON sus DAC de 8 bits

Esto es lo que estoy pensando:
Escalera corregida

Desafortunadamente, la página de wikipedia sobre los DAC de escalera R-2R es incorrecta cuando dice que la escalera R-2R funciona como un divisor actual en esta aplicación. Si bien una escalera R-2R se puede usar como divisor de corriente, en realidad funciona aquí como un divisor de voltaje. Aquí hay un análisis detallado.

Considere solo el LSB de la escalera por sí mismo:

esquemático

simular este circuito : esquema creado con CircuitLab

Independientemente de la posición del interruptor, la resistencia de Thevenin de este simple divisor de voltaje es solo R. El valor de la fuente de voltaje de Thevenin es 0V o 1/2 × Vref.

Ahora, considere lo que sucede cuando agrega la siguiente etapa de la escalera R-2R:

esquemático

simular este circuito

Puede ver que este es el mismo tipo de divisor de voltaje que teníamos en el primer caso, excepto que la cantidad de combinaciones de voltaje ha aumentado. Sin embargo, la resistencia de Thevenin de este circuito sigue siendo solo R, y la fuente de voltaje de Thevenin ahora es 0/4, 1/4, 2/4 o 3/4 × Vref.

Por inducción, puede ver que puede agregar cualquier número de etapas a la escalera, y el único efecto es que el número de opciones para el valor de la fuente de voltaje de Thevenin se multiplica por 2 para cada etapa. La resistencia de la fuente permanece exactamente igual para cualquier número de etapas.

Si la impedancia de carga es infinita, el voltaje de salida de la escalera coincidirá exactamente con el voltaje de Thevenin. Pero si la carga tiene algún valor finito de resistencia, el único efecto será crear un divisor de voltaje con la resistencia de la fuente Thevenin, escalando el voltaje de salida en una relación fija, pero sin tener otro efecto en la precisión básica o linealidad del DAC.


Tenga en cuenta que en el circuito original de Rogier (el que está en la pregunta), los opamps están en una configuración invertida, lo que significa que la salida de la escalera R-2R está vinculada directamente a una tierra virtual. Esto significa que el valor de salida es realmente la corriente que fluye a través de Rth (que es solo R), y esta corriente también fluye a través de la resistencia de retroalimentación del opamp. El voltaje de salida del opamp es el voltaje que se requiere para igualar esas dos corrientes, y funciona a -Rfb / R × Vth. Como usa una resistencia de retroalimentación de 2R, la salida termina siendo -2 × Vth.


Parece haber cierta confusión sobre si la escalera R-2R se está utilizando como un divisor de voltaje o un divisor de corriente, así que aquí hay una ilustración de cómo puede funcionar este último, para mostrar las diferencias clave entre este y el circuito del OP.

esquemático

simular este circuito

Tenga en cuenta que las corrientes que fluyen hacia abajo a través de las resistencias 2R son ponderadas en binario. Esto funciona porque la resistencia efectiva mirando hacia la derecha desde cualquiera de las uniones triples también es exactamente 2R. Por lo tanto, la corriente que fluye desde la izquierda siempre se divide por igual entre la rama inferior y la rama derecha.

Tenga en cuenta que una suposición clave aquí es que todas las patas están atadas al mismo voltaje (cero, en este caso). También es interesante observar que los voltajes en los nodos de unión también están ponderados en binario.

Esto se puede usar para construir un DAC de salida de corriente de la siguiente manera:

esquemático

simular este circuito

Las corrientes en las resistencias en este circuito son exactamente las mismas que en el diagrama anterior, porque independientemente de la posición en que se encuentre cada uno de los interruptores, la resistencia correspondiente está conectada a una tierra real en el circuito. Yo fuera¯ autobús, o a un terreno virtual en el Yo fueraautobús. Las corrientes en los dos autobuses siempre se suman a Iref. Un opamp puede convertir la corriente de salida a un voltaje, y el rango de voltaje es simplemente -Iref × R7.


Para ser sincero, todavía no sé qué hace un opamp y por qué lo necesitaría aquí. Lo que hace (según el software de simulación) es hacer que la señal positiva que sale de la escalera R-2R sea negativa con un múltiplo de dos: ~ 5V de entrada, -9,96V de salida. ¿Porqué sería eso necesario?
Rogier Reerink

1
Los amplificadores operacionales aumentan la diferencia entre 2 voltajes de entrada. Por lo tanto, el software dice que tiene su MSB conectado a la entrada inversora (pin de signo menos) del amplificador operacional, lo que hace que la salida varíe como lo opuesto a la entrada. La relación entre el voltaje de la señal de salida y el voltaje de entrada está controlada por la resistencia de retroalimentación (usó 10K) desde la salida del amplificador operacional hasta la entrada inversora del amplificador operacional; cuanto mayor sea la resistencia, mayor será la ganancia (el cortocircuito a través de esa resistencia, luego mover la conexión MSB a la entrada del amplificador operacional + y la conexión LSB a tierra debería solucionar esto.
Robherc KV5ROB

Realmente no. En el diagrama del OP, las entradas no inversoras de los amplificadores operacionales están conectadas a tierra. Todo lo que está haciendo es cambiar a una configuración de seguidor de voltaje. No olvide incluir una resistencia de 5k en la ruta de retroalimentación de cada uno para equilibrar las compensaciones de corriente de polarización. Además, la resistencia más baja en cada una de sus escaleras R-2R debe ser 10K, no 5K. El OP también tenía este derecho.
Dave Tweed

Robherc, 1. Yo abandonaría los condensadores de acoplamiento. 2. si mantiene el circuito seguidor de voltaje no inversor que tiene, entonces necesita agregar una resistencia de 10K desde el terminal + de los amplificadores operacionales a tierra. y la resistencia de 5K en la parte inferior debe ser de 10 K. imagina la superposición y todos los bits apagados (o tierra). cuando estás sentado en cualquiera de esos nodos, debe ser 10K de resistencia al suelo en las 3 direcciones.
Robert Bristow-Johnson

Diagrama actualizado con conexión a tierra corregida. @ robertbristow-johnson, ¿por qué deshacerse de los condensadores que bloquean la CC y centrar su salida para proteger los tranducers en un circuito de audio?
Robherc KV5ROB
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.