Está en la página 1de 10

ESCUELA POLITÉCNICA NACIONAL

COMUNICACIÓN DIGITAL
ESCUELA POLITÉCNICA NACIONAL
COMUNICACIÓN DIGITAL

CODIGOS CICLICOS

Los códigos cíclicos son una subclase de códigos de grupo y presenta las siguientes
ventajas:

- Estructura matemática permite ordenes de corrección de errores mayores


- Fácil de implementar en hardware mediante el uso del desplazamiento de
registros y compuertas XOR.
- Los miembros de un código cíclico están desplazados lateralmente o
cíclicamente entre ellos.
- Pueden ser representados como polinomios y así pueden ser derivados

El desplazamiento lateral o cíclico se expresa de la siguiente manera:

𝐶 = (𝐼1 , 𝐼2 , 𝐼3 , … , 𝐼𝑛 )

Donde:

𝐶𝑖 = (𝐼𝑖+1 , … , 𝐼𝑛 , 𝐼1 , 𝐼2 , … 𝐼𝑖 )

Donde: 𝐶𝑖 es un bit de desplazamiento cíclico de C representando así la paridad y la


información.

EJEMPLO:

101101

110110

011011

Los códigos cíclicos no sistemáticos son resultado de multiplicar el vector de datos por
un polinomio generador con algún modulo aritmético. Son generados en a partir de la
matriz de control de paridad cuyas filas están cíclicamente relacionadas.

Los códigos cíclicos abarcan tanto los códigos BCH y reed-Solomon(RS). Los RS se
componen de símbolos de m bits de longitud siendo m cualquier valor dependiendo de
la aplicación; estos funcionan con el principio de símbolo por multibit.

Su poder de autocorrección es:


𝑛−𝑘
𝑡=
2
Dónde: 𝑛 y 𝑘 se relacionan los símbolos codificados.

Generador de polinomio de palabra código

Los códigos de comprobación de redundancia cíclica sistemática son usados para la


detección mas no corrección de errores en canales seriales de bit.

Se operan considerándolo como un sistema algebraico donde 0 y 1 son los únicos valores
y la adición y sustracción no tienen carry.

Si se tiene un mensaje de tamaño k [bits] con bits: 𝑚𝑘−1 , … , 𝑚1 , 𝑚0 a ser transmitido en


el canal, este puede ser considerado como un polinomio de orden k-1.
ESCUELA POLITÉCNICA NACIONAL
COMUNICACIÓN DIGITAL

𝑀(𝑥) = 𝑚𝑘−1 𝑥 𝑘−1 + ⋯ + 𝑚1 𝑥 + 𝑚0

El mensaje 𝑀(𝑥) es modificado por el polinomio generador 𝑃(𝑥) para formar el canal de
versión 𝑀(𝑥) codificado o 𝑘𝑀(𝑥), esto se obtiene de multiplicar 𝑀(𝑥) por el orden de
𝑃(𝑥), es decir: k.

Al dividir el 𝑘𝑀(𝑥) 𝑝𝑜𝑟 𝑃(𝑥) se obtiene un residuo el cual se añade a 𝑀(𝑥) en reemplazo
de los ceros en los cuales se añadieron los bits del desplazamiento.

EJEMPLO:

Generar una palabra código polinomial de la secuencia 1100 donde el primer bit de cada
palabra código representa el 1er bit a entrar en el codificador para el generador
polinomial: 𝑥 3 + 𝑥 + 1.

Tenemos que:

𝑀(𝑥) = 𝑥 3 + 𝑥 2 Ξ 1100

K=3;

𝑃(𝑥) = 1011
Por tanto:

𝑘𝑀(𝑥) = 1100000
Dividimos:
𝑘𝑀(𝑥)
:
𝑃(𝑥)
1100000/1011=1000

Con residuo: 010

El residuo se reemplaza en los ceros añadidos al final de 𝑘𝑀(𝑥):

𝑘𝑀(𝑥) = 1100010

Siendo esta la palabra código a ser transmitirse.

 El proceso se puede representar en un diagrama de bloques así:


ESCUELA POLITÉCNICA NACIONAL
COMUNICACIÓN DIGITAL

Figura 1. Diagrama de bloques

El receptor toma el valor que le llega y lo divide para el mismo polinomio generador, si
el residuo es cero quiere decir que no se introdujeron errores. Mediante una tabla de
Síndrome se puede detectar la posición de los bits errados y corregirlos.

El generador de grado k permite encontrar todos los errores de ráfaga que afectan hasta
los k bits consecutivos.

Intercalado:

Consiste en dividir la información en bloques y luego separar los bloques e intercalarlos,


resultado de esto, las ráfagas de errores solo afectan una parte de cada bloque. Con este
método se pueden corregir largas cadenas de errores, pero a costo de retardo en el
entrelazado.

CODIFICACIÓN DE CÓDIGOS CONVOLUCIONALES

Un código convolucional a diferencia de los códigos bloque es un código que también


trabaja como corrector de errores, básicamente utiliza registros de desplazamiento
interconectados a un codificador, para el caso de la figura compuertas XOR que entran
a un sumador de modulo dos debido a los dos codificadores cuyas salidas van al
sumador. El código se genera al pasar por los registros de desplazamiento, que pueden
ser dos o mas, la salida del codificador se obtiene por la convolución de la secuencia de
entrada con la respuesta al impulso del codificador. En la figura la convolución se realiza
con variaciones de las multiplicaciones, debido al uso de las compuertas XOR, además
se puede observar que la convolución puede ser definida por dos polinomios
generadores.

De acuerdo al numero de codificadores se restringe la longitud, de manera de que en


este caso tendremos un codificador de tres estados, y una restricción de n=3. La
corrección de errores de potencia esta relacionado con la limitación de longitud, de
manera aumentara para longitudes grandes de registros de desplazamientos.

En la figura se desarrolla la estructura del codificador, también mostrando una idea


acerca del diagrama de árbol o el diagrama de Trellis. Cabe aclarar que en un diseño real
los registros de desplazamiento serian mas largos y los generadores polinomiales serian
mas elaborados.

Figura 2. Ejemplo de codificador convolucional de variación ½


ESCUELA POLITÉCNICA NACIONAL
COMUNICACIÓN DIGITAL

En el ejemplo se muestra una cadena de información de bits 1101, a la cual se le


agregaron bits de valor 0, es de proporción ½ debido a que tiene dos salidas digitales
por cada entrada digital, es de tipo no sistemático debido a que la información no esta
explícitamente en la secuencia de salida, además de que cada salida se obtiene con un de
los estados del interruptor.

A estos codificadores se los puede considerar como maquinas de estados finitas, con
estados de memoria que son producto del uso de registros de desplazamientos, en
nuestro ejemplo tenemos dos estados de memoria, que implican que haya cuatro estados
binarios posibles. De manera general para n estados de memoria existirá 2^(n-1) estados
posibles, entonces para n=3 tenemos los siguientes estados 11 10 01 00.

Representación del diagrama de árbol

La siguiente figura 5 es una representación por diagrama del árbol para el ejemplo de la
figura 4, donde se asume que los valores iniciales son una cadena de ceros 0 y se ubican
en el nodo A del árbol. Esta dibujado de manera que una entrada cero 0 termine en la
parte de arriba mientras que el ingreso de un uno 1 termine en la parte inferior. Si
asumimos una entrada de valor cero 0 significa que ira al nodo B y su salida será 00. Las
diferentes salidas se encuentran en cada rama, entonces si el estado se encuentra en el
nodo A, y la entrada es un 1 la salida será la del nodo C de valor 11. En la figura se
observa que hay 8 estados, lo cual no implica que se haya cambiado la regla anterior
donde teníamos 4 estados de salida, sino que los mismo cuatro estados se encuentran
duplicados.

De manera que se ve un incremento exponencial de los estados, pero si observamos


que esto se produce debido a los bits iniciales repetidos que se introducen lo que al
final nos dan estados de valores semejantes, como el fin del camino H y h que tienen
valor 00. Para corregir esto primero se realiza la detección y la superposición de los
valores repetitivos lo cual se representa en un diagrama de Trellis.

Figura 3. Diagrama del árbol correspondiente al codificador de la figura 4

Diagrama de Trellis

El diagrama de Trellis esta representado en el eje horizontal por el tiempo, y en el eje


vertical por todos los posibles estados, con el ingreso de un nuevo bit el diagrama se
ESCUELA POLITÉCNICA NACIONAL
COMUNICACIÓN DIGITAL

extiende a la derecha. Se puede observar que al final también tendremos los cuatro
estados pero es evidente que tiene dos caminos posibles para llegar a los mismos
estados, de manera que sigue existiendo repetición de estados de llegada como son los
que terminan en H y L en el gráfico de la figura 6, el cual alcanza ese estado yendo por
distintos caminos.

El rendimiento del código convolucional depende de las diferentes distancia posibles


de Haming que podamos escoger en el diagrama de Trellis, que como siguiente paso es
reducir el gráfico de Trellis a un diagrama de estados.

Figura 4. Diagrama de Trellis correspondiente al codificador de la figura 4

Diagrama de transición de estados

En esta diagrama encontramos cada estado de entrada en su respectiva rama, y la


salida esta entre paréntesis, como se observa en la figura 7, de manera que si
iniciáramos en el estado a y se ingresara un 0, habría una realimentación obtenido así
una salida 00, mientras que el ingreso de un bit 1 daría como resultado la transición de
a hacia b con una salida 11.

Figura 5. Diagrama de transición de estados correspondiente al codificador de la figura 4

DECODIFICACION VITERBI DE CÓDIGOS CONVOLUCIONALES

Existen tres tipos de decodificadores, los cuales utilizan técnicas de decodificación


secuenciales, threshold y Viterbi; siendo la técnica Viterbi la más popular.

Los decodificadores modernos dividen la información codificada en bloques, donde n <


255, los mensajes con codificación convolucional típicamente utilizan 500 o más de
10000 bis. Esto hace que la decodificación de códigos convolucionales sea muy
ESCUELA POLITÉCNICA NACIONAL
COMUNICACIÓN DIGITAL

complicada debido a que los requerimientos de memoria aumenten junto con el tamaño
del mensaje.

El algoritmo decodificador Viterbi implementa la estrategia de decodificación del vecino


más cercano, en la cual se escoge la trayectoria mediante la decodificación de enrejado,
con lo cual se asume el menor número de errores.

Ejemplo de Decodificación Trellis por Construcción

Asumiendo que se tiene la secuencia 1010001010. Identifique los errores y encuentre la


secuencia de datos correspondiente.

De los diez dígitos binarios transmitidos, solo cinco son de información. Se asume que
de estos cinco los tres primeros son de información desconocida y que los dos restantes
son ceros.

La decodificación empieza por la construcción del enrejado correspondiente empezando


en el estado A como se muestra en la figura 1.

Figura 6. Primera etapa de la decodificación.

Se asume que el primer valor de a la entrada es cero. La referencia al enrejado de


codificación indica que al entrar un cero con el codificador completamente descargado
se emitiría 00, pero se ha recibido 10. Esto significa que la secuencia recibida es una
distancia de Hamming de 1 de la posible secuencia transmitida (con un error en el primer
bit de salida). Esto se observa a lo largo de la rama superior de A a B.

Luego se evalúa la posibilidad de que los datos de entrada hayan sido uno. De nuevo, la
referencia al enrejado de codificación indica que, si se introduce uno en el codificador en
el estado A, el codificador emitirá 11 y seguirá la trayectoria inferior hasta el estado C.
De hecho, se recibió 10, de nuevo, la secuencia recibida real es una distancia de Hamming
de 1 (error en el segundo bit). La distancia se anota como 1 a lo largo de la rama de A a
C.

Ahora volvemos al estado B y suponemos que la entrada fue cero seguido de otro cero.
Si este fuera el caso, el codificador habría pasado del estado B al estado D y la salida sería
00 (Figura 2). Sin embargo, los terceros y cuartos dígitos recibidos fueron 10 y
nuevamente hay una distancia de Hamming de 1 entre la secuencia recibida y esta
posible secuencia transmitida. Esto se evidencia en la rama B a D y se realiza una
operación similar en la rama B a E, donde la distancia es también 1. A continuación
consideramos un cero a la entrada del estado C. Esto crearía 01 mientras que, de hecho,
10 fue recibido. La distancia de Hamming aquí es 2. Si en el estado C entra un uno tendría
ESCUELA POLITÉCNICA NACIONAL
COMUNICACIÓN DIGITAL

a la salida 10 y, de hecho, 10 fue recibida, por lo que al final hay un par de dígitos que
no implica ningún error.

Figura 7. Primera y segunda etapa de decodificación.

Como se muestra en la figura 3, cada uno de los cuatro estados tiene dos vías de entrada
y dos de salida. Convencionalmente al llegar a un estado como J, con dos trayectorias de
entrada, se muestra primero la distancia acumulativa de Hamming o la métrica de
trayectoria de la ruta superior (ABEJ) y la distancia acumulativa de Hamming para la
trayectoria inferior (ACGJ). El verdadero poder del algoritmo de Viterbi radica en el
rechazo de una de estas trayectorias, reteniendo un camino que se conoce como el
"sobreviviente". Si las dos trayectorias tienen distancias de Hamming diferentes, se
rechaza la trayectoria con la mayor distancia de Hamming y la trayectoria con la menor
distancia de es el sobreviviente.

Figura 8. Secuencia con errores incorregibles.

En el caso ilustrado en la figura 3, las distancias son idénticas y el decodificador debe


marcar una secuencia de error no corregible, si se utiliza descodificación incompleta. Si
se utiliza una decodificación completa, se hace una elección aleatoria entre los dos
trayectos. Afortunadamente, esta situación es rara en la práctica.

Hay dos caminos para el estado H con métricas de [2,4] (Figura 4). La trayectoria de
distancia 4 puede ser rechazada como siendo menos probable que la trayectoria de
distancia 2. Para el estado I hay también dos trayectorias de la misma longitud [4,4]. En
la etapa final, el estado P se ha marcado como el punto final del proceso de
decodificación ya que en este ejemplo sólo se transmiten tres dígitos de datos
desconocidos seguidos por 00 para descargar el codificador y devolver el decodificador
al estado a.
ESCUELA POLITÉCNICA NACIONAL
COMUNICACIÓN DIGITAL

Figura 9. Decodificación de enrejado completa

Para decodificar, necesitamos retroceder a través del enrejado desde el estado P para
recuperar la trayectoria que contribuye con la menor distancia de Hamming (2).
Obsérvese que aunque el estado O también tiene distancias de 2, no podemos ir de O a
P para completar la decodificación. El rastreo a lo largo de la trayectoria más probable
proporciona la secuencia decodificada correspondiente (11100) y los datos recibidos
correctos 1110001110.

Ventana de Decodificación

Existe una restricción en la longitud de los datos que se pueden retener en la memoria
del decodificador. La limitación práctica se conoce como la ventana de decodificación.
En un decodificador práctico, las nuevas métricas de distancia se añaden a las métricas
de trayecto anteriores para obtener métricas de trayecto actualizadas. Los detalles de las
trayectorias, que corresponden a estas diversas distancias, se llevan adelante en el
proceso de decodificación.

Cuando la longitud de la ventana está restringida a 4, a la llegada del par de bits de


recepción final, ya no es posible continuar examinando el bit de inicio ya que esto se
habría propagado fuera de la longitud restringida de la ventana de decodificación. La
longitud de la ventana debe ser lo suficientemente larga como para cubrir todas las
ráfagas de errores de decodificación, pero como las longitudes más largas implican más
cálculo, se debe hacer un compromiso y se verifica el rendimiento del decodificador
mediante simulación.

Decodificación Secuencial

El algoritmo de Viterbi requiere que todas las secuencias supervivientes sean seguidas a
lo largo del proceso de decodificación y conduce a requerimientos de memoria excesivos
para longitudes de restricción largas. La complejidad puede reducirse mediante
decodificación secuencial, que construye directamente la secuencia de estados
realizando una medida de distancia en cada paso. La decodificación secuencial continúa
hacia adelante hasta que se completa la decodificación o la distancia acumulada excede
un umbral predeterminado. Cuando esto ocurre, el algoritmo retrocede y selecciona una
ruta alternativa hasta que se mantiene una distancia satisfactoria. Esto funciona bien a
bajas tasas de error pero, cuando la tasa de error es alta, el número de pasos hacia atrás
puede llegar a ser muy grande.
ESCUELA POLITÉCNICA NACIONAL
COMUNICACIÓN DIGITAL

El decodificador de Viterbi tiene tres componentes principales, Figura 5. La primera es


la unidad de cálculo del valor métrico de la rama que encuentra las distancias de
Hamming para cada nueva rama en el enrejado. La unidad de añadir-comparar-
seleccionar es la segunda que calcula y actualiza el historial de trayectoria global o los
valores de métrica de trayecto para cada trayecto que llega a cada nodo en el enrejado.
En el tercer componente, la unidad de determinación de salida, sólo se conservan las
rutas de supervivencia, siendo descartadas las rutas con distancias más grandes. La
decodificación en trellis no está restringida a códigos convolucionales ya que también se
utiliza para la decodificación de decisión blanda de códigos de bloque.

Figura 10. Decodificador Viterbi.

También podría gustarte