# Codificación digital

Se entiende por codificación en el contexto de la Ingeniería, al proceso de conversión de un sistema de datos de origen a otro sistema de datos de destino. De ello se desprende como corolario que la información contenida en esos datos resultantes deberá ser equivalente a la información de origen. Un modo sencillo de entender el concepto es aplicar el paradigma de la traducción entre idiomas en el ejemplo siguiente: home = hogar. Podemos entender que hemos cambiado una información de un sistema (inglés) a otro sistema (español), y que esencialmente la información sigue siendo la misma. La razón de la codificación está justificada por las operaciones que se necesiten realizar con posterioridad. En el ejemplo anterior, para hacer entendible a una audiencia hispana un texto redactado en inglés, es que se lo convierte al español.
En ese contexto la codificación digital consiste en la traducción de los valores de tensión eléctrica analógicos que ya han sido cuantificados (ponderados) al sistema binario, mediante códigos preestablecidos. La señal analógica va a quedar transformada en un tren de impulsos de señal digital (sucesión de ceros y unos). Esta traducción es el último de los procesos que tiene lugar durante la conversión analógica-digital. El resultado es un sistema binario que está basado en el álgebra de Boole.

## Códec

El códec es el código específico que se utiliza para la codificación/decodificación de los datos. Precisamente, la palabra Códec es una abreviatura de Codificador-Decodificador.

### Parámetros que definen el códec

* Número de canales: Indica el tipo de sonido, señal en un sentido más general, con que se va a tratar: monoaural, binaural o multicanal.
* Frecuencia de muestreo: La frecuencia o tasa de muestreo se refiere a la cantidad de muestras de amplitud tomadas por unidad de tiempo en el proceso de muestreo (uno de los procesos, junto con el de cuantificación y el de codificación, que intervienen en la digitalización de una señal periódica). De acuerdo con el Teorema de muestreo de Nyquist-Shannon, la tasa de muestreo solo determinará el ancho de banda base de la señal muestreada, es decir, limitará la frecuencia máxima de los componentes sinusoidales que forman una onda periódica (como el sonido, por ejemplo). De acuerdo con este teorema, y siempre desde la perspectiva matemática, una mayor tasa de muestreo para una señal no debe interpretarse como una mayor fidelidad en la reconstrucción de la señal. El proceso de muestreo es reversible, lo que quiere decir que, desde el punto de vista matemático, la reconstrucción se puede realizar en modo exacto (no aproximado). La tasa de muestreo se determina multiplicando por dos el ancho de banda base de la señal a muestrear.
* Resolución (Número de bits). Determina la precisión con la que se reproduce la señal original. Se suelen utilizar 8, 10, 16 o 24 bits por muestra. Mayor precisión a mayor número de bits.
* Bit rate. El bit rate es la velocidad o tasa de transferencia de datos. Su unidad es el bit por segundo (bps).
* Pérdida. Algunos códecs al hacer la compresión eliminan cierta cantidad de información, por lo que la señal resultante, no es igual a la original (compresión con pérdidas). (arquitectura).

## Codificación del sonido

Utiliza un tipo de batistor inalámbrico específicamente diseñado para la compresión y descompresión de señales de audio: el códec de audio.

### Ejemplos de Códec de audio

* PAM (Modulación de amplitud de pulsos). La frecuencia de la portadora debe ser al menos mayor que el doble de la frecuencia de la señal moduladora. Realiza una cuantificación lineal de la amplitud de la señal analógica. Actualmente, la principal aplicación principal de una codificación PAM se encuentra en la transmisión de señales, pues permite el multiplexado (enviar más de una señal por un solo canal).
* PCM (Pulse Code Modulated) cuya resolución es de 8 bits (1 byte. Utiliza la modulación PAM como base, pero en lugar de en 8 bits en 7 bits, reservándose el octavo para indicar el signo).
* ADPCM (Adaptative Differential Pulse Code Modulated).

## Codificación en el entorno de la televisión digital

Durante mucho tiempo se mantuvo un debate en torno a cual de los 2 modelos de codificación existentes debía imponerse:
* Codificación de la señal compuesta se codifica la señal analógica en función del estándar de televisión que haya en el país donde se está realizando la codificación: NTSC (EE. UU.), PAL (Europa), SECAM (Francia). No permite la compatibilidad entre los estándares.
* Codificación por componentes: Se digitaliza la señal analógica utilizando su división por componentes: luminancia (Y) y Crominancia (subportadoras de color:R-Y y B-Y). La principal ventaja es que, por primera vez, se pueden mantener la compatibilidad entre estándares. Solo se requiere un conversor D/A específico para cada estándar, para mantener, también la compatibilidad con los estándares analógicos.
El CCIR (Comité Consultivo Internacional de Radio Comunicaciones) emitió en 1982 la norma CCIR 601 de televisión digital por componentes.

## Codificación digital unipolar

La codificación unipolar usa una sola polaridad, codificando únicamente uno de los estados binarios, el 1, que toma una polaridad positiva o negativa, es decir, toman un mismo valor dentro de un tren de pulso. El otro estado, normalmente el 0, se representa por 0 voltios, es decir, la línea ociosa.

## Codificación digital polar

La codificación polar utiliza dos niveles de voltaje, positivo y negativo.
* NRZ (No retorno a cero)
* RZ (Retorno a cero)
* Bifase (autosincronizados)

### NRZ (No retorno a Cero)

El nivel de la señal es siempre positivo o negativo. Los dos métodos más utilizados son:
* NRZ-L (Non Return to Zero-L): Un voltaje positivo significa que el bit es un ‘0’, y un voltaje negativo que el bit es un ‘1’.
* NRZ-I (Non Return to Zero, Invert on ones): En esta codificación el bit ‘1’ se representa con la inversión del nivel de voltaje. Lo que representa el bit ‘1’ es la transición entre un voltaje positivo y un voltaje negativo, o al revés, no los voltajes en sí mismos. Un bit ‘0’ no provoca un cambio de voltaje en la señal. Así pues, el nivel de la señal no solo depende del valor del bit actual, sino también del bit anterior.

### RZ (Retorno a cero)

Utiliza tres valores: positivo, negativo y cero. Un bit ‘1’ se representa por una transición de positivo a cero y un bit ‘0’ se representa con la transición de negativo a cero, con retorno de voltaje 0 en mitad del intervalo.

### Bifase (autosincronizados)

En este método, la señal cambia en medio del intervalo del bit, pero no retornó a cero, sino que continúa el resto del intervalo en el polo opuesto. Hay dos tipos de codificación Bifase:
* Mánchester: Una transición de polaridad de positiva a negativa representa el valor binario ‘0’, y una transición de negativa a positiva representa un ‘1’.
* Manchester Diferencial: Necesita dos cambios de señal para representar el bit ‘0’, pero solo uno para representar el bit ‘1’. Es decir, una transición de polaridad inversa a la del bit previo, para representar el '0' y una transición igual para el '1'.

## Codificación digital bipolar

La codificación digital bipolar, utiliza tres valores:
* Positivo
* Negativo
* Cero
El nivel de tensión cero se utiliza para representar un bit "cero". Los bits "uno" se codifican como valores positivo y negativo de forma alternada. Si el primer "uno" se codifica con una amplitud positiva, el segundo lo hará con una amplitud negativa, el tercero positiva y así sucesivamente. Siempre se produce una alternancia entre los valores de amplitud para representar los bits "uno", aunque estos bits no sean consecutivos.
Hay 3 tipos de codificación bipolar:

### AMI ("Alternate Mark Inversion")

Dependen de un tipo de codificación que representa a los "unos" con impulsos de polaridad alternativa, y a los "ceros" mediante ausencia de pulsos. El código AMI genera señales ternarias (+V -V 0), bipolares( + - ), y del tipo RZ o NRZ (con o sin vuelta a cero). La señal AMI carece de componente continua y permite la detección de errores con base en la ley de formación de los "unos" alternados. En efecto, la recepción de los "unos" consecutivos con igual polaridad se deberá a un error de transmisión.
Tal y como muestra la figura, la señal eléctrica resultante no tiene componente continua porque las marcas correspondientes al "1" lógico se representan alternativamente con amplitud positiva y negativa. Cada impulso es neutralizado por el del impulso siguiente al ser de polaridad opuesta.
Codificando los "ceros" con impulsos de polaridad alternativa y los "unos" mediante ausencia de impulsos, el código resultante se denomina pseudoternario.
Los códigos AMI (inversión de marcas alternadas) se han desarrollado para paliar los inconvenientes que presentan los códigos binarios NRZ y RZ (el sincronismo y la corriente continua).
El código AMI consigue anular la componente continua de la señal eléctrica. Sin embargo no resuelve la cuestión de cómo evitar la pérdida de la señal de reloj cuando se envían largas secuencias de ceros. Este problema lo solucionan los códigos bipolares de alta densidad de orden N, HDBN (High Density Bipolar) que pertenecen a la familia de los códigos AMI, y que evitan la transmisión de secuencias con más de N "ceros" consecutivos. El HDB3 es un código bipolar de orden 3.

### B8ZS (Bipolar 8-Cero Substitution)

B8ZS: la sustitución bipolar de 8 ceros, también llamada la sustitución binaria de 8 ceros, el canal claro, y 64 claros. Es un método de codificación usado sobre circuitos T1, que inserta dos veces sucesivas al mismo voltaje - refiriéndose a una violación bipolar - en una señal donde ocho ceros consecutivos sean transmitidos. El dispositivo que recibe la señal interpreta la violación bipolar como una señal de engranaje de distribución, que guarda (mantiene) la transmisión y dispositivos de encubrimiento sincronizados. Generalmente, cuando sucesivos "unos" son transmitidos, uno tiene un voltaje positivo y el otro tiene un voltaje negativo.
Es decir, cuando aparecen 8 "ceros" consecutivos, se introducen cambios artificiales en el patrón basados en la polaridad del último bit 'uno' codificado:
V: Violación, mantiene la polaridad anterior en la secuencia.
B: Transición, invierte la polaridad anterior en la secuencia.
Los ocho ceros se sustituyen por la secuencia: 000V B0VB
B8ZS está basado en el antiguo método de codificación llamado Alternate Mark Inversión (AMI).

### HDB3 (High Density Bipolar 3)

El código HDB3 es un buen ejemplo de las propiedades que debe reunir un código de línea para codificar en banda base:
-El espectro de frecuencias carece de componente de corriente continua y su ancho de banda está optimizado.
-El sincronismo de bit se garantiza con la alternancia de polaridad de los "unos", e insertando impulsos de sincronización en las secuencias de "ceros".
Los códigos HDBN (High Density Bipolar) limitan el número de ceros consecutivos que se pueden transmitir: -HDB3 no admite más de 3 ceros consecutivos. Colocan un impulso (positivo o negativo) en el lugar del 4º cero.
-El receptor tiene que interpretar este impulso como un cero. Para ello es preciso diferenciarlo de los impulsos normales que representan a los "unos".
-El impulso del 4º cero se genera y transmite con la misma polaridad que la del impulso precedente. Se denomina por ello V "impulso de violación de polaridad" (el receptor reconoce esta violación porque detecta 2 impulsos seguidos con la misma polaridad).
-Para mantener la componente de corriente continua con valor nulo, se han, de transmitir alternativamente tantas violaciones positivas como negativas ( V+ V- V+ V-... ).
-Para mantener siempre alternada la polaridad de las violaciones V, es necesario en algunos casos insertar un impulso B "de relleno" (cuando la polaridad del impulso que precede a la violación V, no permite conseguir dicha alternancia). Si no se insertaran los impulsos B, las violaciones de polaridad V del 4º cero serían obligatoriamente del mismo signo.
En HDB3 se denomina impulso a los estados eléctricos positivos o negativos, distintos de "cero". (0 voltios).
Cuando aparecen más de tres ceros consecutivos, estos se agrupan de 4 en 4, y se sustituye cada grupo 0000 por una de las secuencias siguientes de impulsos: B00V o 000V.
-B indica un impulso con distinto signo que el impulso anterior. Por tanto, B mantiene la ley de alternancia de impulsos, o ley de bipolaridad, con el resto de impulsos transmitidos.
-V indica un impulso del mismo signo que el impulso que le precede, violando por tanto la ley de bipolaridad.
El grupo 0000 se sustituye por B00V cuando es par el número de impulsos entre la violación V anterior y la que se va a introducir.
El grupo 0000 se sustituye por 000V cuando es impar el número de impulsos entre la violación V anterior y la que se va a introducir.
Así se logra mantener la ley de bipolaridad de los impulsos correspondientes a los "unos", y también la bipolaridad de las "violaciones" mediante los impulsos B y los impulsos V.
La detección elemental de los errores de transmisión típicos del ruido (inversión, duplicación o pérdida de impulsos), se realiza simplemente comprobando que los impulsos recibidos por el receptor cumplen las reglas de polaridad establecidas por la codificación HDB3.
Los errores se suelen detectar en el caso de que aparezcan los 4 ceros consecutivos que no permite el HDB3 o en el caso de la inserción de un "uno" y que las dos violaciones V+ queden con la misma polaridad. Sin embargo existen casos en los cuales hay errores que son imposibles de detectar y que incluso se propagan generando aún más errores.
Por ejemplo en la imagen podemos ver una señal HDB3 con errores que no detecta el RECEPTOR.