Un código convolucional es un código de corrección de errores en el que
Un código convolucional es un caso especial de los códigos de árbol y Trellis .
En 1955, L. M. Fink , quien en ese momento era el jefe del departamento de la Academia de Comunicaciones de Leningrado, propuso el primer código recurrente.
En 1959, el especialista occidental Hegelberger ( Hegelbeger ), que no tenía idea del trabajo de los científicos soviéticos en el campo de la codificación, "redescubrió" el código recurrente y lo nombró en su honor.
El propio Fink en su monografía “La teoría de la transmisión de mensajes discretos” [1] escribió: “En este código, la secuencia de símbolos de código no se divide en combinaciones de código separadas. Los símbolos de corrección se incluyen en el flujo de símbolos de información de manera que se coloca un símbolo de corrección entre cada dos símbolos de información. Denotando caracteres informativos mediante , y correctivos mediante , obtenemos la siguiente secuencia de caracteres:
Los símbolos de información están determinados por el mensaje transmitido, y los símbolos correctivos se forman de acuerdo con la siguiente regla:
(1.1)
donde es un entero arbitrario llamado paso de código ( ). Obviamente, si se recibe por error algún símbolo correctivo bi , la relación (1.1) en la secuencia recibida no se cumplirá para . En el caso de recepción errónea del símbolo de información, la relación (1.1) no se cumplirá para dos valores de , a saber, para y para . A partir de aquí es fácil derivar una regla de corrección de errores de decodificación. En la secuencia de código aceptada , se comprueba la relación (1.1) para cada uno . Si no se conforma con dos valores ( y ), y al mismo tiempo
(1.2)
entonces el elemento de información debe invertirse.
Obviamente, la redundancia de código es . Te permite corregir todos los caracteres recibidos erróneamente, excepto algunas malas combinaciones. Entonces, si , proporciona una decodificación correcta cuando hay al menos tres (y en algunos casos dos) símbolos recibidos correctamente entre dos símbolos recibidos erróneamente (se tienen en cuenta tanto los símbolos de información como los de prueba).
El diagrama del codificador de un código convolucional no recursivo se muestra en la Fig . 1 . Consiste en registros de desplazamiento -ary con longitudes . Algunas (quizás todas) las entradas y salidas de registro de algunas celdas de memoria están conectadas a varios módulos sumadores . El número de sumadores es mayor que el número de registros de desplazamiento:
En cada ciclo de reloj del codificador, los símbolos de información se envían a su entrada, ellos, junto con los símbolos almacenados en los registros de desplazamiento, se envían a las entradas de aquellos sumadores con los que existe una conexión. El resultado de la suma son símbolos de código listos para la transmisión. Luego se produce un desplazamiento en cada registro de desplazamiento: todas las celdas se desplazan un bit hacia la derecha, mientras que las celdas más a la izquierda se llenan con caracteres de entrada y las celdas más a la derecha se borran. Después de eso, se repite el ritmo. El estado inicial de los registros se conoce de antemano (normalmente cero).
Para mayor claridad de presentación, describiremos la codificación convolucional según la acción del dispositivo de codificación correspondiente.
Un codificador convolucional es un dispositivo que generalmente recibe k símbolos de información de entrada en cada ciclo de operación y emite n símbolos de salida en la salida de cada ciclo. El número se denomina tasa de código relativa. k es el número de símbolos de información, n es el número de símbolos transmitidos al canal de comunicación en un ciclo de llegada al codificador del símbolo de información. Los símbolos de salida del ciclo bajo consideración dependen de m símbolos de información que llegan a este ciclo y a los anteriores, es decir, los símbolos de salida del código convolucional están determinados únicamente por sus símbolos de entrada y el estado, que depende de m - k símbolos de información anteriores . Los elementos principales del código convolucional son: registro de desplazamiento, sumador módulo 2, conmutador.
El registro de desplazamiento es un dispositivo de almacenamiento dinámico que almacena los caracteres binarios 0 y 1. La memoria de código determina el número de celdas de activación m en el registro de desplazamiento. Cuando llega un nuevo carácter de información a la entrada del registro de desplazamiento, el carácter almacenado en el bit más a la derecha se elimina del registro y se reinicia. Los caracteres restantes se mueven un dígito a la derecha y, por lo tanto, se libera el dígito más a la izquierda, donde llegará el nuevo carácter de información.
El sumador módulo 2 suma los símbolos que llegan a él 1 y 0. La regla de la suma módulo 2 es la siguiente: la suma de los símbolos binarios es 0 si el número de unos entre los símbolos que entran en las entradas es par, y es igual a 1 si este número es impar.
El interruptor lee secuencialmente los símbolos que llegan a sus entradas y establece la secuencia de símbolos de código en el canal de comunicación en la salida. Por analogía con los códigos de bloque, los códigos convolucionales se pueden clasificar en sistemáticos y no sistemáticos.
Un código convolucional sistemático es un código que contiene en su secuencia de salida de símbolos de código la secuencia de símbolos de información que lo generó. De lo contrario, el código se llama no sistemático.
Con la codificación convolucional, la transformación de secuencias de información en secuencias de código y de salida se produce de forma continua. El codificador convolucional binario contiene un registro de desplazamiento de m bits y sumadores de módulo 2 para generar símbolos de código en la secuencia de salida. Las entradas de los sumadores están conectadas a ciertos bits del registro. El interruptor de salida determina el orden en que los símbolos de código se envían al canal de comunicación. Entonces la estructura del código está determinada por las siguientes características.
¡Pero! Esta definición es válida para códigos de bloque que tienen una longitud constante. Los códigos convolucionales son continuos y se caracterizan por muchas distancias mínimas determinadas por las longitudes de los segmentos iniciales de las secuencias de código, entre las cuales se toma la distancia mínima. El número de símbolos en la longitud de segmento L recibidos para procesamiento determina, en el lado receptor, el número de celdas en el decodificador.
Deje que el registro de desplazamiento contenga m celdas, es decir, la memoria del código es igual a m, el interruptor realiza un ciclo de sondeo, pasando los valores de los símbolos de información, donde m es un múltiplo de k , mientras que en un ciclo sondea n 2 salidas de codificador. El número de símbolos de código de salida afectados por un cambio en un símbolo de información de entrada es . El valor I all se denomina longitud total de la restricción de código .
Dado que las propiedades correctivas de un código convolucional particular están determinadas por la longitud de la restricción del código y la elección de los enlaces del registro de desplazamiento al sumador de módulo 2 ( XOR ), entonces para especificar la estructura del codificador convolucional , es necesario especificar qué bits del registro de desplazamiento están asociados con cada uno de los sumadores de módulo 2 ( XOR ).
La conexión del j-ésimo sumador módulo 2 se describe mediante la j-ésima secuencia generadora:
gj =( gj0 , gj1 , gj2 ,…, gjm -1 ), (4.1)donde (4.2)
Parámetros típicos de códigos convolucionales: k, n= 1,2,…,8; R=k/n=1/4,…,7/8; m=2,…,10.
Es conveniente especificar un código convolucional usando polinomios generadores, los cuales están determinados por la forma de la fórmula (4.1) por analogía con cómo se hace esto para los códigos cíclicos de bloques lineales . [2]
El polinomio generador define completamente la estructura del codificador binario del código convolucional. A diferencia de los códigos de bloque , cada uno de los cuales se describe mediante un solo polinomio generador , un código convolucional se describe mediante varios polinomios generadores. El número de polinomios que describen el código convolucional está determinado por el número de símbolos de salida n . Representemos la secuencia de símbolos de información que llegan a la entrada del codificador como un polinomio
donde X i es el símbolo del operador de retardo para i ciclos del registro de desplazamiento, e i = {0, 1} son símbolos binarios informativos. Los polinomios que describen n secuencias de símbolos de código que ingresan a la entrada del interruptor del codificador y luego al canal de comunicación tienen la forma
donde están los símbolos de código binario en la j -ésima entrada del interruptor del codificador.
El j -ésimo polinomio generador del código convolucional tiene la forma Además, debido a la linealidad del código convolucional y la notación aceptada, obtenemos .
Usando la representación de un código convolucional usando polinomios generadores, se puede especificar un código convolucional por medio de secuencias de coeficientes de polinomios generadores escritos en forma binaria u octal. La notación octal es más compacta y se usa cuando el registro de desplazamiento del codificador es largo.
En el caso general, la secuencia de coeficientes del polinomio generador j-ésimo tendrá la forma y coincide con la secuencia generadora de código (4.1). Entonces, si es una secuencia de símbolos codificados, y es una secuencia de símbolos de código en la j -ésima entrada del interruptor codificador, entonces para cualquiera de ellos que aparezca en la -ésima vez ( ), podemos escribir
Así, cada símbolo de código de la secuencia de salida del codificador del código convolucional está determinado por la convolución de la información codificada y la secuencia generadora, que determina el nombre de los códigos convolucionales. Los códigos convolucionales son un caso especial de códigos iterativos o recurrentes.
Los códigos convolucionales se utilizan para la transmisión confiable de datos: video, comunicaciones móviles, comunicaciones por satélite. Se utilizan junto con el código Reed-Solomon y otros códigos similares. Antes de la invención de los códigos turbo , estos diseños eran los más eficientes y satisfacían el límite de Shannon. Además, la codificación convolucional se utiliza en el protocolo 802.11a en la capa MAC física para lograr una distribución uniforme de 0 y 1 después de que la señal pasa por el codificador , como resultado de lo cual se duplica el número de símbolos transmitidos y, por lo tanto, puede lograr una recepción favorable en el dispositivo receptor.
![]() |
---|