martes, 26 de mayo de 2009

A/D y D/A de N bits, ¿proceso de N bits? (Contra la intuición: 3)

Ya hemos visto en otras ocasiones cómo la resolución efectiva de un convertidor A/D o D/A influye en la calidad del proceso. Aumentar el número de bits de un convertidor sin aumentar su resolución efectiva no mejora en nada la calidad.

Si se tiene una resolución dada en la salida digital del convertidor A/D ¿influirá en la calidad global de una SDR la resolución de los cálculos o no?. Es decir, si un valor de, pongamos, 16 bits se pasa a 32 bits para su proceso en 32 bits en lugar de 16, ¿mejorará el resultado final?. He visto que esta cuestión, que se ha tratado de refilón en alguna de las entradas no ha quedado claro, así que voy a intentar aclararlo definitivamente. Antes de seguir leyendo me gustaría que diese una respuesta.

Y ahora la solución: ¡Por supuesto que sí!. La cuestión no está en mirar si el valor de entrada está sobre 16 bits o 32 o 128. Si el valor procede de un convertidor de 13 bits útiles, en todos los casos será la misma. La cuestión está en los cálculos intermedios. Cada vez que se hace una operación matemática se puede precisar una mayor resolución para guardar el resultado. Si no se guarda así, se deberá comprimir el resultado para alojar el nuevo valor.
Veamos un ejemplo: Si tenemos un mutiplicador que admite dos entradas del 0 al 9 -la tabla de multiplicar de la escuela- su salida puede dar valores de dos dígitos, tal como 8*7=56. La entrada se puede representar en un dígito, pero la salida no.

Por este motivo, los multiplicadores de los procesadores de "coma fija" están diseñados para funcionar con valores entre 1 y -1. Así los resultados están acotados entre (1 y -1) -los paréntesis significan que los valores 1 y -1 no están incluidos-. Siguiendo con el ejemplo anterior podemos admitir entradas con resolución de un dígito entre -0,9 y 0,9. Si este dispositivo hace la multiplicación equivalente a la anterior el resultado será: 0,8*0,7=0,56. El resultado tiene dos dígitos significativos. Si queremos guardarlo en la misma resolución que la entrada -un dígito- guardaremos 0,5 o 0,6 con la consiguiente pérdida de precisión en los cálculos que sigan.

Los procesadores de coma fija de 16 bits suelen mantener resultados intermedios de los cálculos de 40 bits para mantener la precisión. Pero cuando se requiere este resultado para nuevos cálculos, se reduce de nuevo la precisión a 16 bits de modo que pueda procesarse adecuadamente. Los de 32 bits suelen tener 80 bits para resultados intermedios. Los procesadores de coma flotante obtienen resultados de operación en el mismo formato que los operandos, y no tienen porqué estar sujetos a valores entre -1 y 1.

No hay comentarios:

Publicar un comentario