Es posible combinar dos DAC de 8 bits juntos para crear un DAC de 16 bits, se enviará un byte de la palabra de 16 bits a cada uno de ellos

17

Para dos DAC, uno se envía D0-D7 y el otro se envía D8-D15, con una fuente de alimentación de 5V, si se agregan 5V a la salida del 2do DAC y luego se suman las dos salidas DAC, debería resultar en una DAC de 16 bits compuesto por dos DAC de 8 bits.

El único problema es que si el segundo DAC tiene una entrada de 0x00, la adición de 5V debe cancelarse, lo cual no estoy seguro de cómo hacerlo. La suma se puede hacer sumando el amplificador. El circuito solo necesita funcionar hasta unos pocos 10s de kHz.

¿Hay algo fundamentalmente incorrecto con esta idea?

    
pregunta quantum231

7 respuestas

29

Es posible, pero no funcionará bien.

En primer lugar, existe el problema de combinar las dos salidas, con una escalada exactamente a 1/256 de la otra. (Ya sea que atenúe uno por 1/256, amplifique el otro por 256, o algún otro arreglo, * 16 y / 16 por ejemplo, no importa).

Sin embargo, el gran problema es que es probable que un DAC de 8 bits tenga una precisión superior a 8 bits: puede tener una especificación "DNL" de 1/4 LSB y una especificación "INL" de 1 / 2LSB. Estas son las especificaciones de no linealidad "Diferencial" e "Integral", y son una medida de cuán grande es realmente cada paso entre códigos adyacentes. (DNL proporciona una garantía entre dos códigos adyacentes, INL entre dos códigos en toda la gama del DAC).

Idealmente, cada paso sería exactamente 1/256 del valor de escala completo; pero una especificación de DNL de 1 / 4LSB indica que los pasos adyacentes pueden diferir de ese ideal en un 25%, lo que normalmente es un comportamiento aceptable en un DAC.

¡El problema es que un error de 0.25 LSB en tu MSB DAC contribuye con un error de 64 LSB (1/4 de todo el rango) en tu LSB DAC!

En otras palabras, su DAC de 16 bits tiene la linealidad y la distorsión de un DAC de 10 bits, que para la mayoría de las aplicaciones de un DAC de 16 bits, es inaceptable.

Ahora, si puede encontrar un DAC de 8 bits que garantice una precisión de 16 bits (INL y DNL mejor que 1/256 LSB), siga adelante: sin embargo, no son económicos de hacer, por lo que es la única forma de obtener uno. es comenzar con un DAC de 16 bits!

Otra respuesta sugiere "compensación de software" ... trazar los errores exactos en su DAC de MSB y compensarlos agregando el error inverso al DAC de LSB: algo que los ingenieros de audio consideraron durante mucho tiempo en los días en que los DAC de 16 bits eran caros ...

En resumen, se puede hacer que funcione hasta cierto punto, pero si el DAC de 8 bits cambia con la temperatura o la edad (probablemente no fue diseñado para ser ultra estable), la compensación ya no es lo suficientemente precisa como para Vale la pena la complejidad y el gasto.

    
respondido por el Brian Drummond
19

Un DAC de 8 bits puede generar \ $ 2 ^ 8 = 256 \ $ valores diferentes.

Un DAC de 16 bits puede generar \ $ 2 ^ {16} = 65536 \ $ valores diferentes.

Observe cómo se multiplica, no es una adición (como sucedería cuando suma las salidas de dos DAC de 8 bits).

Si tomara dos DAC de 8 bits y sumara sus salidas, ¿cuáles son los valores posibles?

Respuesta: 0, 1, 2, ..., 256, 257, 258, .... 511, 512 y eso es todo!

Un DAC de 16 bits puede hacer 0,1,2 ..., 65535, 65536 ¡eso es mucho más!

Teóricamente es posible, pero luego deberá multiplicar la salida de uno de los DAC de 8 bits por exactamente 256 y conectar el Los bits LSB al 1x DAC y los bits MSB al 256x DAC. ¡Pero no se sorprenda si la precisión y la linealidad sufren!

    
respondido por el Bimpelrekkie
6

La técnica es viable si el voltaje de escala total del DAC "interno" es mayor que el tamaño de paso del DAC externo, y uno tiene un medio para medir con precisión (aunque no necesariamente de manera rápida) los voltajes de salida generados por diferentes salidas. Códigos y aplicación de ajustes de linealidad adecuados en el software. Si el voltaje a gran escala del DAC interno puede ser menor que el tamaño de pasos en el peor de los casos entre dos voltajes en el DAC externo (teniendo en cuenta que los pasos rara vez son absolutamente uniformes), puede haber voltajes que no se pueden obtener con ningún Combinación de valores DAC internos y externos. Sin embargo, si se asegura que hay una superposición en los rangos, el uso de la corrección de linealidad del software puede permitir buenos resultados.

Por cierto, el viejo diseño del chip PSOC de Cypress (no sé de los más nuevos) emula un DAC de nueve bits que utiliza dos DAC de seis bits que se escalan entre sí. No utiliza la corrección de linealidad del software, pero solo intenta agregar tres bits de precisión a un DAC de seis bits. Tratar de agregar más de 3-4 bits de precisión a cualquier tipo de DAC sin usar la compensación de software probablemente no funcione muy bien.

    
respondido por el supercat
4

Hace 21 años, cuando era un estudiante universitario pobre (y solo podía pagar DAC de 8 bits), utilicé esta técnica para combinar dos DAC de 8 bits en un DAC de bits más alto, sabiendo que no obtendría 16 bits exactitud, debido a la integral no linealidad (INL) y no linealidad diferencial (DNL) . DNL en el DAC de byte más significativo es el asesino en este caso; Si tiene INL, la salida está distorsionada pero sigue siendo suave. DNL determina el tamaño de un paso de DAC a otro, y si varía lo suficiente, verá discontinuidades o inversiones cuando cruce los límites de 8 bits: 0x07ff < - > 0x0800, por ejemplo, a medida que MSB DAC cambia de 0x07 < - > 0x08, puede cambiar no por los 256 conteos ideales del LSB DAC, sino por 384 conteos o 128 conteos (& pm; 1/2 de su propio bit menos significativo). Un buen DAC tendrá solo 1/2 LSB DNL, un mediocre DAC tendrá peor DNL, aunque se hace más difícil cuanto mayor sea la resolución, por lo que debería ser bastante fácil encontrar 1/2 LSB DNL en un DAC de 8 bits pero no en un DAC de 16 bits.

No recuerdo cuál fue la resolución efectiva en mi caso, quizás 12 o 13 bits, y tuve que ajustar la ganancia de la segunda etapa manualmente con un potenciómetro.

    
respondido por el Jason S
2

He visto esto en la práctica en un Detector UV de HPLC para aumentar el rango dinámico. Uno de los DAC está compensado por la cantidad necesaria. Supongamos que las manijas del 1er DAC de 0 a 10 V y las manijas del 2do de 10 a 20 voltios.

    
respondido por el purza
1

Es posible y se ha hecho antes. Vea esta excelente implementación en EDN.com enlace

    
respondido por el Peter
0

Tengo una versión diferente ... Sólo use un DAC de 8 bits. Usted mencionó que solo necesita trabajar hasta unos 10s de Hz, por lo que podría usar solo un DAC (que probablemente puede funcionar hasta 100 kHz), y usarlo como un modulador. La idea básica es generar 256 ciclos del valor de MSB más el indicador de desbordamiento / acarreo de un bit desde un acumulador de 8 bits al que se agrega el LSB en cada ciclo. Obtienes solo 254 como el MSB máximo debido al "bit de modulación" adicional del LSB, pero esto no reduce mucho el rango.

Ejemplo: si ejecuta el ciclo a 30 kHz, los 256 ciclos se repiten a 117 Hz, por lo que podría colocar un filtro de paso bajo de 50 Hz en la salida para obtener una señal bastante suave y precisa que pueda funcionar a la velocidad que necesita.

La precisión de este método depende en gran medida del tamaño de los pasos de bits, pero no más que cualquier otro método. Lo he usado para generar voltaje de referencia en el pasado, y funciona sorprendentemente bien.

    
respondido por el Simon Tillson

Lea otras preguntas en las etiquetas