Seis decibeles por bit. Es la primera cuenta que se aprende de un conversor analógico-digital y la única que casi todo el mundo se acuerda de memoria: decibeles de relación señal a ruido, con los bits del conversor. A catorce bits promete 86,05 dB.
Con una entrada gaussiana, medida, da 51. Y de catorce a dieciséis bits no sube ni medio decibel más: la curva está apoyada contra un techo. La fórmula no se equivoca por un poco ni se degrada despacio — a partir de cierto punto deja de describir el aparato, y lo que queda debajo del número no es un cuantizador con ruido, es un recortador.
La razón está escondida en el enunciado y no en la cuenta. La fórmula no es del cuantizador: es de una senoidal que llena exacto la escala. Una gaussiana no llena nada exacto —no tiene máximo—, así que hay que elegir dónde poner el fondo de escala, y toda elección paga de un lado o del otro: si se pone lejos, el paso se agranda; si se pone cerca, las colas se salen. Con el fondo en cuatro desvíos, una muestra de cada 15.800 se sale, y el error de ésas no está acotado por el paso. A catorce bits, esa fracción minúscula es todo el error.
Lo que sigue tiene tres partes: de dónde sale la recta y de qué señal habla; qué le pasa cuando la entrada es ruido y no una senoidal; y el remate, que es que el cuantizador de un bit es el decisor de la nota del umbral, y que el modelo de «ruido de cuantización» no vale en ninguno de los dos extremos.
Un cuantizador uniforme de bits parte un fondo de escala en niveles igualmente espaciados. El paso es lo que hay entre dos niveles vecinos, y el modelo de la cátedra dice que el error de redondeo se reparte uniforme adentro de un paso:
Hasta acá no hay ninguna señal. La señal entra recién al escribir el numerador de la relación señal a ruido, y ahí es donde se cuela la hipótesis que nadie repite: se supone una senoidal de amplitud exactamente , o sea una que roza el fondo de escala por arriba y por abajo y no se sale nunca. Su potencia es , y entonces:
La se cancela, y ésa es justamente la trampa: como desaparece del resultado, la fórmula parece no depender de la señal. Pero se canceló porque se usó dos veces la misma amplitud —la de la señal y la del fondo de escala— y eso es una hipótesis, no una identidad. El dB del final es , y el sale de que una senoidal tiene factor de cresta . Toda la fórmula, salvo los seis decibeles por bit, es una propiedad de la senoidal.
Los seis decibeles por bit sí son del cuantizador: cada bit parte el paso al medio, la potencia del error baja cuatro veces, y cuatro veces son 6,02 dB. Esa mitad de la fórmula aguanta. La otra mitad hay que rehacerla para cada señal.
Cambiemos la entrada por la que le interesa a esta unidad: ruido gaussiano de media nula y desvío . Una gaussiana no tiene amplitud máxima, así que no hay ninguna que ponerle al fondo de escala: hay que elegirla. La elección se anota como un factor de carga, el fondo de escala medido en desvíos:
Con eso el paso pasa a ser , la potencia de la señal es , y repitiendo la misma cuenta de arriba con el mismo modelo uniforme sale la relación señal a ruido del tramo que sí cae adentro de la escala:
A eso se lo llama el error granular: el de las muestras que el cuantizador de verdad cuantiza. Restándole la recta de la sección anterior queda una diferencia que no depende de los bits:
Con el fondo de escala en cuatro desvíos, que es lo que pone cualquier hoja de datos razonable, eso da −9,03 dB: la curva granular corre paralela a la recta, nueve decibeles por debajo, para siempre. A ocho bits la recta promete 49,93 dB y el tramo granular da 40,89. Todavía son seis decibeles por bit; simplemente arrancan más abajo.
Y ahí aparece la pregunta que el factor de carga invita a hacer: si el problema es , se achica y listo. Igualando las dos fórmulas se ve exactamente cuánto habría que achicarlo:
O sea: para que una gaussiana alcance la recta habría que poner el fondo de escala en 1,41 σ. Y ahí se sale de escala el 15,7 % de las muestras. El deslizador del widget llega hasta 1,4, que es lo más cerca de que se puede poner —y ahí se salen 81.008 de las 500.000, el 16,2 %—, y lo que se ve es lo que hay que ver: la curva granular le pasa por arriba a la recta, y la SNR medida se queda clavada en unos 12 dB para cualquier cantidad de bits. La fórmula del párrafo anterior no está mal — está incompleta, porque sólo cuenta la mitad del error.
Cuando una muestra se sale del fondo de escala, el cuantizador no tiene ningún nivel que asignarle: le da el último, y el error es la distancia entera que sobró. No es , no está acotado por nada, y no se achica ni un poco al agregar bits — agregar bits achica el paso, no la escala. Esa es la única parte del error que no mejora, y por eso es la que termina mandando.
Cuánto pesa se sabe de antemano sin simular nada: es la probabilidad de que una gaussiana se salga de , que es la cola de las dos puntas de la nota del umbral, . Una muestra de cada 15.800. Medido sobre el registro del widget —medio millón de muestras gaussianas— salen 30, que es lo que la cola predice.
Con eso se puede separar la medición en dos: la relación señal a ruido que habría si sólo existiera el error granular, y la que habría si sólo existiera el de recorte. La que se mide es la de las dos juntas, y siempre queda por debajo de las dos. Sobre medio millón de muestras gaussianas, fondo de escala en 4 σ:
| bits | paso ÷ desvío | la recta | SNR medida | sólo granular | sólo recorte |
|---|---|---|---|---|---|
| 1 | 4 | 7,78 | −2,57 | −2,57 | 35,13 |
| 2 | 2 | 13,80 | 4,73 | 4,73 | 40,13 |
| 4 | 0,5 | 25,84 | 16,82 | 16,82 | 47,35 |
| 6 | 0,125 | 37,88 | 28,82 | 28,85 | 50,31 |
| 8 | 0,0313 | 49,93 | 40,50 | 40,89 | 51,13 |
| 10 | 0,0078 | 61,97 | 49,06 | 52,94 | 51,34 |
| 12 | 0,0020 | 74,01 | 51,21 | 64,97 | 51,40 |
| 14 | 0,0005 | 86,05 | 51,40 | 77,03 | 51,41 |
| 16 | 0,0001 | 98,09 | 51,41 | 89,06 | 51,41 |
Las dos últimas columnas se cruzan entre 8 y 10 bits, y ése es el punto donde el aparato cambia de naturaleza. A la izquierda del cruce manda el error granular, la medición sigue una recta de seis decibeles por bit y todo lo que dice el apunte funciona. A la derecha manda un error que el paso no acota: cada bit nuevo divide por cuatro la potencia de un error que ya no era el que pesaba, y la SNR medida no se mueve. A partir del cruce el cuantizador deja de ser un cuantizador y pasa a ser un recortador.
Vale decir qué clase de número es ese techo, porque es el lugar donde esta nota casi publica una cifra falsa. Los 51,4 dB de la última fila son un promedio sobre treinta muestras: las treinta que se salieron. Es un estimador de una cola, con toda la varianza que eso implica, y no se queda quieto. Sobre el mismo generador, cambiando nada más que cuántas muestras se tiran, el techo a catorce bits da 50,1 con doscientas mil, 51,4 con medio millón y 51,3 con cuatro millones; con otras semillas y cuatro millones se reparte entre 51,3 y 52,9. El techo es «unos 51 dB», no 51,40. Y hay una forma de saberlo exacto sin medirlo: integrando el error de las muestras que se salen —2[(1+t²)·Q(γ) + (γ−2t)·φ(γ)] con t = γ − a/2— el techo da 52,07 dB y no se mueve nunca. Esa cuenta está en decision.js justamente porque este párrafo la necesitaba: cuando lo que querés medir vive en una cola, la forma cerrada no es un lujo, es la única que da un número. Lo que sí es firme, porque no depende de la cola sino del cruce de dos curvas que están separadas por decibeles enteros, es dónde está el codo: entre 8 y 10 bits, con cualquier largo de registro y cualquier semilla.
Y lo que es absolutamente firme es la brecha. La recta promete 86,05 dB a catorce bits. La medición, en el mejor de los casos que vimos, llega a 52. Son más de treinta decibeles de diferencia, o sea un factor mil en potencia, sobre una fórmula que se usa para elegir conversores.
El widget arranca en cuatro bits, que es la posición donde no hay nada que ver: la medición es una recta, sube seis decibeles por bit igual que la fórmula, y todo el desacuerdo se puede leer como una constante. Subí el deslizador de bits despacio y mirá dos cosas. Arriba, dónde la curva azul se despega de la roja y se acuesta. Abajo, el histograma del error en unidades de paso: a cuatro bits es la caja plana que el modelo uniforme promete, y hay que llegar a los dos extremos del deslizador para verla romperse — de maneras distintas en cada extremo.
Los dos extremos del deslizador de bits rompen la caja del histograma de maneras opuestas, y ésa es la nota entera dibujada en un panel. A dieciséis bits la caja es perfecta —plana, del ancho exacto que el modelo pide— y aun así la SNR está 46,7 dB por debajo de la promesa: todo el error que importa se fue afuera del gráfico, a siete mil pasos de distancia, en treinta muestras que el histograma no puede ni dibujar. A un bit no hay nada afuera, y la caja se deforma: el error se amontona contra los dos bordes en vez de repartirse parejo. En los dos extremos el modelo uniforme miente, por motivos que no se parecen en nada.
El segundo deslizador es la salida obvia: si el problema son las colas, se agranda el fondo de escala hasta que dejen de salirse. Funciona, y funciona muchísimo. A catorce bits, pasar de cuatro desvíos a seis lleva la SNR medida de 51,40 a 73,50 dB — veintidós decibeles de un saque, sin tocar un solo bit. Es lo que hay que esperar de una cola gaussiana: no se degrada, se derrumba.
Lo que no hay que leer ahí es que el techo desapareció. Lo que desapareció es la capacidad de esta medición para verlo. Con el fondo en seis desvíos, la fracción de muestras que se sale es : una de cada quinientos millones. En medio millón de muestras no se sale ninguna, la potencia de recorte da cero exacto, y el widget deja de dibujar la curva roja porque no hay nada que dibujar. La curva medida vuelve a ser una recta impecable de seis decibeles por bit hasta los dieciséis. El techo sigue estando donde siempre; lo que pasa es que hace falta un registro decenas de miles de veces más largo para tropezárselo.
Y agrandar se paga en el acto, con el término de la sección 02: más escala es más paso, y más paso es más error granular. De cuatro desvíos a seis son decibeles regalados, y se ven: a catorce bits el tramo granular baja de 77,03 a 73,50. De seis a ocho desvíos se regalan otros 2,5 y la medición empeora — 71,01 dB —, esta vez sin ningún recorte de por medio. Los dos mecanismos tiran para lados opuestos, así que hay un óptimo.
El deslizador deja encontrarlo, y encontrarlo es lo interesante. Moviendo la carga de a dos décimas sobre el mismo registro, para cada cantidad de bits:
| bits | mejor carga | SNR máxima | la recta | cuánto falta | muestras recortadas ahí |
|---|---|---|---|---|---|
| 2 | 2,0 | 9,25 | 13,80 | 4,6 dB | 22.851 |
| 4 | 2,6 | 19,33 | 25,84 | 6,5 dB | 4.702 |
| 6 | 3,4 | 29,81 | 37,88 | 8,1 dB | 352 |
| 8 | 4,0 | 40,50 | 49,93 | 9,4 dB | 30 |
| 10 | 4,6 | 51,57 | 61,97 | 10,4 dB | 3 |
| 12 | 4,8 | 63,32 | 74,01 | 10,7 dB | 2 |
Tres cosas de esa tabla, y la tercera es la que la vuelve interesante. La primera: ni en el óptimo se alcanza la recta. Con ninguna carga, con ninguna cantidad de bits. La segunda: la brecha crece con los bits — 4,6 decibeles a dos bits, 9,4 a ocho —, que es exactamente al revés de lo que se espera de una aproximación, que debería mejorar cuando el paso se achica. La razón es que la carga óptima sube con la resolución, de dos desvíos a más de cuatro, y subirla cuesta los mismos de siempre.
La tercera es la última columna, y es un aviso sobre la medición y no sobre el cuantizador. En el óptimo de dos bits se recortan veintitrés mil muestras; en el de doce, dos. El equilibrio entre los dos mecanismos se corre hacia la cola más rápido de lo que ninguna simulación asequible puede seguir: para pesar el recorte en el óptimo de doce bits hacen falta dos muestras de medio millón, y con dos muestras no se estima nada. Las dos últimas filas de la tabla no están medidas: están adivinadas. Las cuatro primeras sí, y la tendencia que muestran —la brecha crece, la carga óptima sube— es lo que hay que llevarse. Y el tamaño del problema queda dicho por la misma columna: el número que decide cuánto rinde un conversor de doce bits lo ponen dos muestras de cada quinientas mil.
Bajá el deslizador de bits hasta el fondo. Con un bit, un cuantizador uniforme de fondo de escala tiene exactamente dos niveles, en y , y la única cuenta que hace para elegir entre ellos es mirar el signo de la entrada. Eso es el decisor de la nota del umbral, letra por letra: comparar contra cero y quedarse con el símbolo de ese lado. El bloque que la Unidad 2 dejó pendiente y el bloque con el que esta unidad viene lidiando desde la nota del canal binario son el mismo bloque, en los dos extremos de un mismo eje que tiene un número de bits como coordenada.
Y cuando se lo mide como cuantizador, el modelo de ruido uniforme falla del lado opuesto al de antes. El paso es , así que el modelo predice de potencia de error, que serían −1,25 dB de SNR. Pero el error de un slicer sobre una gaussiana se escribe entero y no hace falta simularlo: vale , y su potencia es
Eso son −2,57 dB, y es exactamente lo que la simulación devuelve: dos caminos que no comparten una sola línea —uno es una esperanza de una media normal doblada, el otro es contar medio millón de errores— y coinciden en la segunda decimal. El modelo uniforme se equivoca en 1,32 dB, y se equivoca para el lado optimista.
El histograma del widget dice por qué. Con un bit el error no se reparte parejo dentro del paso: se amontona contra los dos bordes y se hunde en el medio, porque el error vale y las muestras de una gaussiana se amontonan cerca de cero, o sea cerca del borde del error. Es una caja con forma de U, no una caja plana. Una densidad que en los bordes vale una vez y media lo que vale en el centro pesa más al elevarla al cuadrado, y de ahí sale el decibel y pico de más.
Así que el modelo de «ruido de cuantización» —el que dice que el error es uniforme en el paso, blanco, e independiente de la señal— no vale en ninguno de los dos extremos del eje. A muchos bits es uniforme y no alcanza, porque el error que importa está afuera de la escala. A un bit está todo adentro de la escala y no es uniforme, porque el error es una función determinista de la señal y de nada más. En el medio, entre cuatro y ocho bits, el modelo es excelente: la medición y la fórmula granular coinciden en menos de medio decibel. Un modelo con una zona de validez en el medio y dos fallas en las puntas es lo normal; lo que no es normal es usarlo sin saber dónde están las puntas.
Con esto cierra la unidad. El ruido dejó de ser una cosa que se promedia y pasó a ser una cosa que se decide: primero midiéndolo —la media de ensamble contra la de tiempo, la densidad espectral, la figura de ruido de la cadena—, después decidiendo contra él —el canal binario, el umbral, cuánto dura una simulación honesta— y al final digitalizándolo, que es decidir muchas veces seguidas. El conversor que la Unidad 2 dejó como una caja con un nombre resultó ser el mismo decisor de siempre, con más niveles y con una fórmula de bolsillo que hay que leer dos veces antes de creerle.