Cómo funciona un descodificador de TDT

La TDT (Televisión Digital Terrestre) es un sistema de transmisión digital de televisión utilizando señales de radio transmitidas cerca de la superficie de la Tierra (en lugar de usar cable o satélites, que usan sistemas diferentes). En el sistema de televisión tradicional (analógico), las señales de radio representaban directamente las imágenes y sonidos transmitidos, mientras que en el sistema digital las señales de radio representan dígitos binarios que componen un "stream" digital de vídeo y audio. No os preocupéis por todas estas palabras raras, que ahora mismo os lo explico todo.

Diagrama de bloques de un descodificador de TDT.

El dibujo de la izquierda es un diagrama de bloques que explica las distintas partes de un descodificador de TDT. A la izquierda de todo está la antena, que recibe señales de radio. La antena está conectada al sintonizador, que selecciona una determinada frecuencia de radio y extrae dos señales llamadas I y Q. A la salida de cada una de las dos señales hay un conversor de analógico a digital (ADC), que muestrea y digitaliza las señales. Estas señales de radio digitalizadas van al demodulador, que las interpreta para extraer los dígitos binarios transmitidos por la emisora de televisión. Estos dígitos binarios pasan al descodificador, que los interpreta como un stream MPEG-2, descodifica este stream y produce todas las imágenes y sonidos del programa de televisión.

Fácil, ¿no?

Diagrama de un sintonizador.

Vamos a explicar todo esto con un poco más de detalle. A la derecha hay un diagrama del sintonizador. En el corazón del sistema está un oscilador de frecuencia variable (VFO), que es un cacharrito que se puede programar para que oscile con una frecuencia [$\omega_c$] y genera dos señales eléctricas senoidales de esa frecuencia, una con la fórmula [$\cos(\omega_c t)$] y la otra [$-\sin(\omega_c t)$]. Estas dos senoidales van a un par de circuitos que "multiplican" cada senoidal por la señal [$g(t)$] que procede de la antena (a la izquierda del circuito). El resultado son dos señales, I y Q, que corresponden, respectivamente, al resultado de las fórmulas [$g(t)\cos(\omega_c t)$] y [$-g(t)\sin(\omega_c t)$].

Es completamente natural preguntarse de dónde vienen y qué significan todas estas fórmulas. La explicación es bien sencilla: este sintonizador es una máquina para multiplicar la señal de la antena por la onda compleja [$e^{-i \omega_c t}$].

Si recordáis lo que escribí en los artículos anteriores, si multiplicamos una señal cualquiera por la onda compleja [$e^{-i \omega_c t}$], el resultado es la señal original, pero con todos los componentes en frecuencia desplazados [$\omega_c$] radianes/segundo a la izquierda. Es decir: lo que en la señal original aparecía en la frecuencia [$\omega_c$] ahora aparece en la frecuencia 0, lo que aparecía en [$\omega_c + 20$] ahora aparece en 20, y lo que aparecía en [$\omega_c - 15$] ahora aparece en -15. La onda [$e^{-i \omega_c t}$] también se puede representar en forma cartesiana, [$\cos(-\omega_c t) + i\sin(-\omega_c t) = \cos(\omega_c t) - i\sin(\omega_c t)$]. Multiplicando esto por [$g(t)$], la señal procedente de la antena, nos da [$g(t)\cos(\omega_c t) - ig(t)\sin(\omega_c t)$].

Por otro lado, si echamos otro vistazo al diagrama del sintonizador, observamos que I es [$g(t)\cos(\omega_c t)$] y Q es [$-g(t)\sin(\omega_c t)$], que son, respectivamente, las partes real e imaginaria del resultado de la multiplicación anterior. Por lo tanto, I es la parte real de la señal sintonizada, y Q es la parte imaginaria. Los telecos, que son muy suyos, llaman a I "señal en fase" y a Q "señal en cuadratura".

(Llegados a este punto voy a mencionar otra cosa que también hacen los telecos, junto con los informáticos, los físicos y otras gentes de mal vivir: en lugar de utilizar [$i$] para representar la unidad imaginaria utilizan [$j$]. Por lo tanto, si váis a buscar fórmulas como las de arriba en Wikipedia, seguramente las veréis escritas como [$e^{j \omega_c t}$] en lugar de [$e^{i \omega_c t}$]. El resultado es exactamente el mismo y, como he estado utilizando [$i$] durante cuatro artículos y medio, va a ser mejor seguir usándolo para evitar confusiones. Pero, al menos, si ahora queréis buscar más información sobre el tema y véis un montón de jotas y ninguna i minúscula, ya sabéis por qué es).

Diagrama de un conversor analógico-digital.

La siguiente etapa es la conversión de analógico a digital. Cada conversor se compone de un filtro paso bajo, un muestreador y un cuantizador. El filtro paso bajo es un circuito que deja pasar señales de frecuencia baja y bloquea señales de alta frecuencia. Esto sirve para evitar pasarle al muestreador señales de frecuencia superior a la frecuencia máxima que el muestreador puede capturar. Si no se utilizase un filtro se produciría un efecto llamado "aliasing" que distorsiona enormemente la señal.

El muestreador toma muestras de la señal a intervalos periódicos (el número de muestras por segundo se llama "frecuencia de muestreo"). Estas muestras pasan al cuantizador, que las mide individualmente y produce una lista de números que representan la magnitud de la señal en cada muestra (en el diagrama se representan como una ristra de puntos). Estos números son una representación digital del espectro de radio alrededor de la frecuencia sintonizada [$\omega_c$].

El siguiente eslabón de la cadena es el demodulador, que toma este espectro de radio digitalizado y lo analiza para extraer la información binaria transmitida por la emisora de televisión. En particular, el demodulador toma una muestra de I y una muestra de Q, las interpreta como la parte real e imaginaria de un número complejo, y mide su amplitud y fase para determinar a qué valores binarios corresponden. Éste es un proceso complicado, así que si tenéis curiosidad sobre el asunto podéis buscar información sobre modulación de amplitud en cuadratura (QAM) y modulación por desplazamiento de fase (QPSK).

Finalmente, después de que el demodulador haya extraido los datos binarios transportados en la onda de radio, estos datos binarios pasan a un descodificador, que los interpreta como un stream MPEG-2 y extrae el programa de televisión, con sus imágenes, sonido estéreo, datos digitales, etc. MPEG-2 que es un tema complicado, así que no voy a decir nada más sobre el asunto.

Hace años habría hecho falta montar un gran tinglado electrónico para realizar todos estos procesos; hoy en día todo esto se puede hacer con dos o tres chips, así que los descodificadores de TDT pueden ser muy baratos. De hecho, hoy en día se puede comprar por menos de 15 euros un descodificador de TDT como el de la foto, que se conecta a un ordenador.

Foto de un descodificador de TDT para el ordenador sin su carcasa.

A la derecha podéis ver un descodificador de TDT USB sin su carcasa protectora. Por el tamaño del enchufe USB podéis ver que es pequeño (2x4 cm) y tiene muy pocos componentes. A la izquierda de todo, la pieza metálica dorada es el enchufe de la antena. A su derecha está el receptor del mando a distancia, que deja medio tapado un chip cuadrado que es el sintonizador. A su derecha, asomando por debajo del enchufe USB hay otro chip cuadrado, que contiene los ADC y el demodulador. Este chip se llama RTL2832U y es muy común, porque es barato y es capaz de realizar muchas funciones. Los datos binarios procedentes del demodulador salen por el enchufe USB hacia el ordenador, que es el que hace la descodificación MPEG-2 del programa de TV.

Hace tiempo alguien descubrió que el chip RTL2832U tiene una función oculta que hace que los datos binarios procedentes de los ADC, en lugar de ir al demodulador, vayan por el puerto USB hasta el ordenador. Esto hace posible sintonizar el descodificador a una frecuencia de radio y recibir en el ordenador una representación digital del espectro de radio que rodea a esa frecuencia. Se puede entonces utilizar un programa de ordenador para demodular la señal de radio y escuchar las transmisiones. Es decir: se puede utilizar un descodificador de TDT de menos de 15 euros para convertir cualquier ordenador en un receptor de radio.

Por supuesto, bastante gente se lanzó a hacer programas que sirven para escuchar radio FM, emisoras de radio aficionado, comunicaciones marítimas o aéreas, o incluso señales procedentes de satélites. Yo también fui uno de ellos, e hice una aplicación para poder escuchar la radio en el navegador Chrome. La gracia del asunto es que esta aplicación está totalmente escrita en JavaScript y tiene que hacer todo el proceso de demodulación de una señal FM en el navegador y en tiempo real. Otro día os explicaré cómo funciona, pero entre tanto, si estáis interesados en saber cómo funciona, podéis ver el código fuente en GitHub. O, si queréis ver otros programas que utilizan el descodificador de TDT para recibir otros tipos de señales de radio, podéis echar un vistazo en rtl-sdr.com.

(Para poner comentarios, id a la historia en Google+).