MXPA00000099A - Descodificacion iterativa de codigos producidos - Google Patents

Descodificacion iterativa de codigos producidos

Info

Publication number
MXPA00000099A
MXPA00000099A MXPA/A/2000/000099A MXPA00000099A MXPA00000099A MX PA00000099 A MXPA00000099 A MX PA00000099A MX PA00000099 A MXPA00000099 A MX PA00000099A MX PA00000099 A MXPA00000099 A MX PA00000099A
Authority
MX
Mexico
Prior art keywords
word
code
received
flexible
firm
Prior art date
Application number
MXPA/A/2000/000099A
Other languages
English (en)
Inventor
Fabien Buda
Juing Fang
Original Assignee
Alcatel Alsthom Compagnie Generale D'electricite
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alcatel Alsthom Compagnie Generale D'electricite filed Critical Alcatel Alsthom Compagnie Generale D'electricite
Publication of MXPA00000099A publication Critical patent/MXPA00000099A/es

Links

Abstract

La invención se refiere a un procedimiento de descodificación en la entrada flexible y en la salida flexible de una palabra (s) de un código lineal en bloque de dimensión k y de longitud n, recibida desde un canal de transmisión, que comprende las etapas de. - la generación de una lista de palabras firmes (ub) de código aproximado o parecido a la palabra de código recibida (s), codificando una lista de k-upletes obtenidos por aproximación firme de los componentes de la palabra recibida y por intercambio de los componentes menos confiables. - el cálculo del j-ésimo componente de la palabra flexible de salida por diferencia entre las métricas de una parte de la palabra de código generada más parecida, y por otra parte, de la palabra de código generada más parecida que tiene un j-ésimo componente opuesto, o por omisión de la palabra de código generada menos parecida. La invención se refiere también a un procedimiento de descodificación iterativo de una palabra de código producido, recibida sobre un canal de transmisión, utilizando un procedimiento de este tipo de descodificación en la entrada flexible y en la salida flexible.Ésta permite una descodificación rápida y eficaz de las palabras de un código producidas, incluso en ausencia del descodificador algebraico.

Description

DESCODIFICACION ITERATIVA DE CÓDIGOS PRODUCIDOS DESCRIPCIÓN DE LA INVENCIÓN La presente de invención tiene por objetivo un procedimiento de descodificación iterativa de códigos producidos. La invención se refiere también a un procedimiento de transmisión así como a un sistema de transmisión que pone en operación un procedimiento de descodificación de este tipo. La invención se refiere a la descodificación de códigos producidos, de códigos lineales en bloques. Ésta se aplica al dominio de las transmisiones, para la codificación de canal. Un canal de transmisión típico comprende una fuente binaria, un codificador, un modulador que emite en un canal, un desmodulador a la salida del canal, y un descodificador que proporciona la señal binaria. La codificación del canal tiene por objetivo reducir la potencia necesaria para alcanzar una tasa de error de bitios dada. La solicitud de patente francesa presentada el 09 de Octubre de 1997 bajo el número 9712594, bajo el título 'Procedimiento de codificación en bloque por código producido aplicable principalmente a la codificación de una celda ATM" REF.: 32223 dada una descripción de nociones de base de la transmisión y de la codificación del canal, a la cual se podrá reportar para más detalles. En la medida donde la invención se refiera a la descodificación del canal, los otros elementos del sistema de transmisión - tales como la codificación de la fuente y la modulación-desmodulación utilizada en función del medio de transmisión - no es el objetivo de explicaciones adicionales. Es clásico utilizar para la codificación los códigos redundantes y los códigos producidos. Se caracteriza en general un código Ci por un triplete (ni, ki, di) , donde ki es el número de bitios en la entrada del código, ni es el número de bitios en la salida del código y di es la distancia mínima d-e Haiaming del código. La aplicación de un código de este tipo para un k-uplete (xi,..., xk) proporciona un n-uplete (xi, ... , X?_, +i, • - • , x con n-k bitios de redundancia. Se llaman códigos producidos a la aplicación sucesiva de dos códigos Ci y C2, de la siguiente manera. Se considera ki . k2 bitios, bajo la forma de k2 palabras de x bitios. Se aplica a las k2 palabras de ki bitios un código C?(n?, ki, di) y se obtienen k2 palabras de nx bitios. Ordenadas bajo la forma de matriz, estas k2 palabras de nx bitios forman nx columnas, la j-ésima columna está formada de j-ésimos bitios de cada una de las k2 palabras. Se aplica a cada una de éstas i columnas de k2 bitios un código C2(n2, k2/ d2) para obtener nx palabras de n2 bitios. La aplicación de un código producido de este tipo permite pasar kx.k2 bitios a nx.n2 bitios, con nx.n2 -k?.k2 bitios de redundancia. Si los códigos son lineales, se obtiene el tipo n2 líneas de palabras del código Ci, o nx columnas de palabras de código de C2. El código producido es un código que presenta los parámetros (n?.n2; k?.k2; d?.d ) . El orden de codificación es indistinto, y se obtienen los mismos resultados codificando, primeramente las líneas, como se describe anteriormente, o codificando primerament-e las columnas. Tales códigos producidos son descritos en la literatura para la codificación de canal. La solicitud francesa anteriormente mencionada, o incluso la figura 2 de FR-A2 712 760 explican con detalle el principio de codificación por un código producido de este tipo. El problema con tales códigos producidos es la descodificación a la salida del desmodulador. Se obtienen en la salida del desmodulador los conjuntos de valores de bitios (en general modulados bajo la forma ± 1), contaminados por un ruido. Se llama valor flexible al valor recibido, contaminado con ruido, que es un valor real; se llama valor cerrado al valor ± 1, por ejemplo, al valor binario correspondiente, obtenido por una decisión solo por el valor recibido. Se llama en lo subsecuente palabra firme a una palabra binaria, y palabra flexible a una palabra efectivamente recibida, formada de valores reales. Al momento de una transmisión con codificación mediante un código producido, se obtiene a la salida del desmodulador un conjunto R = {ri;j} de n?.n2 valores reales (valores flexibles) . La descodificación consiste en determinar a cuál palabra del código producido C?~C2 corresponden estos valores flexibles, según un cierto criterio de funcionamiento. Si el ruido es un ruido aditivo blanco gaussiano, la solución óptima consiste en buscar la palabra del código producido que minimice la distancia euclidiana para la palabra flexible recibida R. Este criterio de máximo de verosimilitud es en la práctica imposible, desde luego que el producto k?.k2 sobrepasa actualmente algunas centenas .
Han sido pues propuestas diversas soluciones para asegurar la descodificación de los códigos producidos. La solución más inmediata consiste en tomar las decisiones firmes sobre cada uno de los bitios de la palabra flexible recibida, y en descodificar en decisión firme sucesivamente las líneas y luego las columnas, aplicando un descodificador del código C2 sobre las columnas, después un descodificador del código Ci sobre las líneas; esta solución es ampliamente subóptima, y no permite alcanzar la ganancia teórica de un código producido puesto que no utiliza cualquier información recibida del canal de transmisión. La patente francesa FR-A-2 712 760 propone un algoritmo de descodificación iterativo de códigos producidos C?.C2, en el cual se procede a varias tomas para la descodificación sucesiva de las diferentes columnas o líneas de la matriz formada a partir de la palabra del código producido recibido. Para cada columna o línea, por ejemplo para cada palabra del código C2 o Ci recibido afectado de un ruido (palabra flexible recibida) , este documento propone proceder a la descodificación con la ayuda de un algoritmo de Chase modificado, y más exactamente: generar un conjunto de palabras firmes de código C2 o Ci a priori, parecidas a la palabra flexible recibida sobre la línea o columna correspondiente; - calcular la distancia euclidiana entre estas diferentes palabras firmes y la palabra flexible recibida; y elegir como palabra de código recibida aquellas de las diferentes palabras firmes que presentan la distancia mínima para la palabra flexible efectivamente recibida. Para generar el conjunto de palabras firmes del código C2 (o Ci) a priori parecidas o cercanas a la palabra flexible recibida, este documento propone: - descubrir los p componentes meno-s confiables de la palabra flexible recibida; - construir q secuencias binarias de prueba a partir de estos p componentes menos confiables; - construir q palabras binarias para descodificar a partir de estas secuencias de pruebas binarias y de un valor de corriente binaria de la palabra descodificada; este valor de corriente binaria es inicializado a la salida por una aproximación binaria de cada uno de los bitios recibidos ; descodificar las q palabras binarias con un descodificador de Berkelamp (descodificador algebraico) para obtener q palabras de código, verificando, según el caso que las q' palabras obtenidas sean las palabras del código C2 (o Ci) . La construcción de q palabras binarias y su descsdificación de acuerdo a este algoritmo es una operación poco eficaz: las q palabras generadas son palabras de código C2 (o Ci) , pero no son forzosamente distintas. Se obtiene en la salida del descodificador un número q' de palabras de códigos distintos inferior al número q de palabras generadas. Además, este método no funciona más que para los códigos para los cuales existe un descodificador algebraico. La implementación de los descodificadores algebraicos necesita cálculos en los cuerpos de Gallois y una arquitectura compleja. Juing Fang, Descodificación ponderada de códigos binarios en bloques, Tesis de Doctorado en Ingeniería, NEST de París, 1986, describe un algoritmo de descodificación con entrada flexible de un código lineal en bloque. Este algoritmo es óptimo en el sentido del máximo de verosimilitud y no hace intervenir explícitamente la estructura algebraica del código. Éste permite proporcionar a la salida una palabra de código firme, de verosimilitud máxima. Este algoritmo es uno de los numerosos algoritmos de descodificación en la entrada flexible y en la salida firme; éste no sugiere la utilización de listas para generar una salida flexible. La invención propone una solución a la descodificación iterativa de los códigos producidos, que permite una descodificación más rápida y más eficaz, y que se aplica a todos los tipos de códigos y no solamente para aquellos para los cuales existe un descodificador algebraico. La descodificación de los códigos producidos no es un problema matemático, sino un problema técnico importante en el dominio de las transmisiones. Éste se aplica directamente en la descodificación de valores de bitios o de palabras de código producido, recibidos a la salida del desmodulador de un canal de transmisión. Más precisamente, la invención propone un procedimiento de descodificación a la entrada flexible y en la salida flexible de una palabra (s_) de un código lineal en bloque de dimensión k y de longitud n, recibido después de un canal de transmisión, que comprende las etapas de: la generación de una lista de palabras firmes (ub) de código, cercanas a la palabra del código recibido (s_) , codificando una lista de k-upletes más verosímiles; el calculo del j-ésimo componente de la palabra flexible de salida por diferencia entre las métricas de una parte de la palabra del código generado más cercano, y por otra parte, de la palabra de código generado más cercano que tiene un j-ésimo componente opuesto. En una modalidad de realización, los k-upletes más verosímiles son obtenidos mediante aproximación firme de los componentes de la palabra recibida y por intercambio de los componentes menos confiables . Ventajosamente, cada uno de los k-upletes de la lista de k-upletes es obtenida mediante: - clásicamente por orden de confiabilidad de los componentes de la palabra de código recibido, siguiendo una permutación (T); la verificación de que los k componentes más confiables de la palabra así obtenida permite generar los otros n-k; la elección de valores firmes para los m componentes menos confiables de los k componentes, siendo m un número entero inferior a k; la aproximación firme de los otros k-m componentes; la codificación de la palabra firme obtenida de este modo, por un código igual a la composición de dicho código por la inversa de dicha permutación . Se puede también prever que la verificación se efectúa mediante la aplicación a las columnas de la matriz de paridad del código de la permutación; la verificación del rango de la matriz formada de las n-k últimas columnas de la matriz de paridad así permutada. La etapa de verificación, cuando ésta es negativa, es seguida de una etapa de modificación de la permutación. En otra modalidad de realización, cada uno de los k-upletes de la lista de k-upletes es obtenida mediante: clásicamente por orden de confiabilidad de los k primeros componentes de la palabra de código recibido por una permutación ( T ) ; - la elección de valores firmes para los componentes más confiables, siendo m. un número entero inferior a k; - la aproximación firme de los otros k -componentes; la codificación de la palabra firme así obtenida, por un código igual a la composición de dicho código por el inverso de la permutación. De preferencia, el cálculo del j-ésimo componente de la palabra flexible de salida se efectúa, cuando no existe palabra de código generada más cercana que tenga un j-ésimo componente opuesto, por diferencia entre las métricas de una parte de la palabra de código generada más cercana, y por otra parte, de la palabra de código generada meno-s cercana . Es también posible prever que el cálculo del j-ésimo componente de la palabra flexible de salida se efectúa, cuando no existe palabra de código generada más parecida que tenga un j-ésimo componente opuesto, por adición al j-ésimo componente de la palabra recibida, por medio de un coeficiente de signo del j-ésimo componente de la palabra de código más cercana de la palabra recibida.
Ventajosamente, la palabra recibida es afectada de un ruido blanco aditivo y gaussiano. La invención tiene también por objetivo un procedimiento de descodificación en la entrada flexible y en la salida flexible de una palabra (s_) de un código lineal en bloque de dimensión k y de longitud n, recibida desde un canal de transmisión, que comprende las etapas de - la elección de la palabra de código más cercano a la palabra recibida en una lista de palabras firmes (Ub) del código, cercanas o parecidas a la palabra del código recibido (s_) , generadas codificando una lista de k-upletes más verosímiles, para cada componente de orden j de la palabra recibida, j varía de 1 a n : * el reemplazo del j-ésimo componente de la palabra recibida, por el inverso del j-ésimo componente de dicha palabra de código más parecida; * la elección de la palabra de código más parecido de la palabra obtenida en la etapa de reemplazo, en una lista de palabras firmes de código parecidas a la palabra de código obtenido en la etapa de reemplazo, generadas codificando una lista de k-upletes más verosímiles; * el cálculo del j-ésimo componente de la palabra flexible de salida, por diferencia entre las métricas por una parte de la palabra de código más parecido a la palabra recibida, y por otra parte, de la palabra de código más parecido de la palabra obtenida en la etapa de reemplazo. En una modalidad de realización, en la etapa de elección de la palabra de código más parecida de la palabra recibida, los k-upletes más verosímiles son obtenidos mediante aproximación firme de los componentes más confiables de la palabra recibida y por cambio de los componentes menos confiables. De preferencia, en la etapa de elección de la palabra de código más parecida de la palabra obtenida en la etapa de reemplazo, los k-upletes más verosímiles son obtenidos por aproximación firme de los componentes más confiables de la palabra obtenida en la etapa de reemplazo y por intercambio de los componentes menos confiables. En una modalidad de realización, la palabra recibida está afectada por un ruido blanco aditivo y gaussiano . La invención tiene incluso por objetivo un procedimiento de descodificación iterativo de una palabra (R_ de un código producido, recibido desde un canal de transmisión, que comprende para al menos una iteración, una descodificación en la entrada flexible y en la salida flexible de las líneas o de las columnas de dicha palabra de código producida de acuerdo a un procedimiento tal. Otras características y ventajas de la invención aparecerán a la lectura de la descripción siguiente de las modalidades de realización de la invención, dadas a manera de ejemplo y con referencia a los dibujos anexos que muestran: la figura 1 es un diagrama de flujo de una primera modalidad de realización de un procedimiento de descodificación con entrada flexible y con salida flexible, puesto en operación en la invención; la figura 2 es un diagrama de flujo de una segunda modalidad de realización de un procedimiento de descodificación con entrada flexible y con salida flexible puesta en operación en la invención; la figura 3 es un diagrama de flujo de una tercera modalidad de realización de un procedimiento de descodificación con entrada flexible y con salida flexible puesta en operación en la invención; la figura 4 es un diagrama de flujo de un algoritmo de descodificación iterativo de acuerdo a la invención; la figura 5 es un esquema de funcionamiento del descodificador de la invención para un número de iteraciones igual a 4; - las figuras 6 y 7 son representaciones gráficas de los resultados de los procedimientos de la invención. Para determinar en un algoritmo de descodificación con entrada flexible y con salida flexible, un conjunto de palabras de códigos a priori cercanos o parecidos a la palabra del código flexible recibido, la invención propone utilizar no una descodificación sino una codificación. La figura 1 muestra un diagrama de flujo de una primera modalidad de realización de un procedimiento de descodificación con entrada flexible y con salida flexible, puesto en operación en la invención; en la figura 1 se han representado las etapas necesarias para la descodificación con salida flexible de una palabra flexible recibida sobre una línea o una columna de palabra del código producido recibido .
Se nota en lo subsecuente de la descripción R = {ri 3} la palabra flexible del código producido, recibido desde el canal de transmisión, 1 < i < ni, 1 < j < n2 • Esta palabra flexible que corresponde a la transmisión sobre el canal de una palabra binaria o firme de código producido C2.C?, que llega al descodificador del canal contaminado de ruido. Se considera una representación de valores flexibles en el conjunto de los reales, los valores firmes correspondientes a ± 1. En una representación tal, el módulo del valor flexible recibido es indicador de la confiabilidad del valor, y su signo da el valor firme recibido. Se describe con referencia a la figura 1 la descodificación de una línea de esta palabra de código; el mismo, procedimiento se aplica mutatis mutandis a la descodificación de las columnas de esta palabra del código producido. Se considera pues la palabra flexible correspondiente a una línea dada s_ = {si, 1 < i < i}, con s± = ri t i , para j datos. Esta palabra es una versión contaminada con error de una palabra de código Ci (ni, ki, di) . Esta palabra contiene kx bitios proporcionados para el codificador de la fuente, y n?-k? bitios de redundancia generados por el código Ci . Para mayor simplicidad en la exposición, se ha considerado la forma sistemática del código, en la cual los i componentes de entrada se encuentran tal cual son en la palabra de código de salida. En una primera etapa 1, se escoge el conjunto de componentes recibido s± siguiendo el orden creciente de los módulos |s?|, por ejemplo, de acuerdo a la confiabilidad. Se anota T la permutación correspondiente. En una segunda etapa 2, se verifica que los ki últimos componentes de la imagen T(s?) de s± en la permutación permitan recuperar los n?-k? restantes; esto puede efectuarse aplicando la permutación T a las columnas de la matriz de paridad del código Ci, y verificando que las n?-k? últimas columnas de 1_ matriz permutada obtenida sean independientes. Si éstas no lo son, se modifica la permutación T, de tal suerte para obtener n?-k? últimas columnas independientes cuando se aplica la permutación a las columnas de la matriz de paridad. Esto puede efectuarse cambiando la j-ésima columna, j < [ni - ki + 1, ni], por ejemplo componiendo T con una permutación (p, n?-k?+j), donde p es un_ número entero inferior o igual a kx. En lo subsecuente del procedimiento, hasta la etapa 8, se trabaja en este espacio permutado, sobre las palabras de código permutadas . En una tercera etapa 3, se considera m, m<kx de los ki últimos componentes de la palabra recibida, permutada, por ejemplo, los componentes menos confiables, y se crean los m-upletes correspondientes, asignándoles valores binarios. Se puede generar de esta manera 2m m-upletes binarios, pero puede también ser más interesante generar únicamente algunos de éstos 2m m-upletes, por ejemplo, aquéllos que tienen la métrica más pequeña. En una cuarta etapa 4, se consideran los kx-m componentes restantes entre los kx últimos componentes. Se efectúa para cada uno de estos componentes una decisión firme, es decir, que se asigna a cada componente flexible un valor firme o binario. Se puede por ejemplo simplemente asignar a cada componente su signo. En la quinta etapa 5 se reconstituye, a partir de los resultados de la tercera y cuarta etapas, un conjunto de palabras binarias tb = {tx, 1 < i < ?}b, con b < 2m. En otros términos, cada palabra obtenida en la etapa 5 es un ensamblaje o una concatenación de m componentes creados en la etapa 3 y de los k?_m componentes obtenidos en la etapa 4. Se le aplica la codificación, que en el espacio de palabras permutadas, corresponde a la codificación Ci. Un método para hacer esta codificación es utilizar la matriz de paridad H del código Cx . La permutación T asociada a la selección o clasificación de los componentes será aplicada la matriz de paridad H de del código. Se aplica en seguida una reducción de Gauss a las (n?-k?) columnas más a la derecha de la matriz H permutada por la lista T con el fin de ponerla bajo la forma sistemática. Hay que hacer notar en general las (nx-k?) últimas columnas de la matriz H permutada no son independientes. En este caso, se puede modificar la permutación T con el fin de hacer a estas columnas independientes y de pode-r así sistematizar la matriz H permutada. La verificación propuesta en la etapa 2 puede hacerse al mismo tiempo que la sistematización de la matriz permutada. Se utiliza en seguida ventajosamente esta matriz de paridad hecha sistemática para la codificación en el espacio permutado. Se obtienen así directamente las palabras firmes permutadas Ub = { u¡_ , 1 < i < n?}b del código correspondiente, que a priori son parecidas a la versión permutada de la palabra que ha sido enviada sobre el canal del transmisión. Se puede enseguida en la sexta etapa 6, calcular para cada una de las palabras de código Ub obtenidas, la distancia euclidiana a la palabra de código flexible si es recibida. En esta etapa no se pueden conservar entre estas palabras de código más que las palabras más confiables, la medida de la confiabilidad se efectúa simplemente considerando la distancia euclidiana que acaba de ser calculada; el umbral utilizado para retener las palabras de códigos, incluso el número de palabras de código considerado, dependen del número total de palabras de código que se han generado en las etapas precedentes. En otros términos, entre más palabras de códigos se generen, más importante es el número de palabras de código que se pueden guardar. La elección del número de palabras de códigos retenidas resulta de un compromiso entre la complejidad provocada por la generación de un gran número de palabras de códigos, por una parte, y por otra parte de la ventaja de que la probabilidad de encontrar palabras de códigos muy confiables aumenta cuando crece el número total de palabras de códigos generados.
En la etapa 7, se procede a la descodificación flexible de la siguiente manera. Para un componente dado recibido s3 de orden j dado, se considera en el conjunto de las palabras de código Ub obtenidas, la palabra de código más parecida o cercana u-¡+ que presenta como componente de orden j un bitio de 1 y la palabra de código más parecido u-¡~ que presenta como componente de orden j un bitio a -1; se calcula luego el valor del j-ésimo componente de la palabra flexible descodificada como la diferencia, multiplicada por un factor de normalización de un cuarto entre la métrica Cj_ = |u-¡~ - sj de la palabra de código u_¡__ más parecido que presenta un bitio a -1 en la j-ésima posición y la métrica cj+ = |u_j+ - s| de la palabra de código Uj+ más parecida, que presenta un bitio a +1 en la j-ésima posición. En otros términos, para cada valor de j, se calcula la componente Vj de orden j de la palabra de código flexible (vi, 1 < i < ni} proporcionada por el descodificador como j = (Cj- - cj + ) /4 Es posible, en función del número de palabras generadas en la etapa 5 y retenidas en la etapa 6, que no se encuentra en el conjunto de palabras de códigos generadas más que dos palabras de código que presentan valores de bitios opuestos en la j-ésima posición; esto puede ser el caso si la componente de orden j es recibida con una gran confiabilidad. Este puede también ser el caso si se ha generado o se ha retenido un número confiable de palabras de códigos. Se puede luego tomar como valor flexible del j-ésimo componente, la diferencia entre la métrica más confiable - aquella de la palabra de la lista más parecida de la palabra de código recibida - y la métrica más fuerte - aquella de la palabra de la lista más alargada de palabra de código recibida. En este caso, se encuentra un valor preciso de una de las dos métricas; la otra métrica es aproximada o por lo menos se le considera un límite inferior, tomando la métrica de la palabra de código de la lista más alargada. Se podrá así, siempre en este caso, tomar como valor flexible del j-ésimo componente la suma del j-ésimo componente de la palabra recibida y de un factor b, asignado del signo de la decisión firme del j-ésimo componente de la palabra de código más parecido; en otros términos, se agrega el factor b si el j-ésimo componente de la palabra de código más parecido es positivo, y se agrega -b si el j-ésimo componente de la palabra de código más parecido es negativo; el valor de este factor puede variar en función de la iteración. Se puede en seguida repasar en el espacio las palabras recibidas, aplicando una permutación inversa a aquella de la etapa 2. Se encuentra luego la palabra de código más parecido de la palabra recibida más todos los coeficientes de confiabilidad de cada símbolo, por ejemplo, una salida ponderada. Se proporciona ahora una explicación del cálculo de la etapa 7. Se considera el caso de un ruido blanco gaussiano aditivo b, cuyos componentes bi son de media nula y de la misma varianza Se puede entonces anotar s_ = e_ + b con _s la palabra recibida, como se explica anteriormente, e_ = (ex = (e17 1 < i < ni) la palabra de código emitida con ex = ± 1, y b = (bi, 1 = i < nx) . En este caso, la medida de la confiabilidad asociada a cada símbolo cx de la palabra descodificada puede ser determinada a partir del logaritmo de la relación de verosimilitud definida por L(c_) = log[Pr(d = l/s)/Pr(Cl = -1/s)] En este caso, utilizando la regla de Bayes, y tomando en cuenta el hecho de que el ruido es blanco y gaussiano, se muestra que la relación de verosimilitud asociada al símbolo d es igual a: donde Si,-, y S-i,-, son los dos conjuntos de palabras de código donde el j-ésimo símbolo vale + 1 o -1 respectivamente, M(s,u.) es la métrica entre la palabra de código u encontrada por el algoritmo y la palabra recibida s_, métrica que en nuestro caso es la distancia euclidiana entre s_ y la palabra recibida y u una palabra de código, distancia euclidiana que puede ser finita en precisión. Esta métrica puede ser adaptada si es necesario al caso de los canales con desvanecimiento. Siendo el número de palabras de código en general, elevado, el cálculo de la relación de verosimilitud es relativamente complejo. Cuando la relación de señal a ruido es suficientemente grande, se puede simplificar esta expresión no conservando en el numerador y en el denominador más que el término más fuerte, la expresión del logaritmo de relación de verosimilitud se vuelve entonces: Ms iog Normalizando el logaritmo de la relación de sz verosimilitud por el factor la salida ponderada del j-ésimo símbolo Vj se expresa entonces de la siguiente manera: donde Sij representa el conjunto de palabras del código que tiene un símbolo igual a i (i = ± 1) en posición j . Tomando las anotaciones precedentes para c-¡- y cj +, se encuentra bien la expresión de la etapa 7 de la figura 1: VJ = 7 (?J- - CJ+ Las etapas descritas en referencia a la figura 1 permiten generar palabras de código, que son parecidas a la palabra flexible recibida en el canal de transmisión. El procedimiento de la figura 1 permite que se encuentre una lista de palabras de código, deduciendo un valor flexible de cada componente de palabra de código recibido. La complejidad del procedimiento depende del número de palabras de códigos generados en la etapa 4, dicho de otro modo el número de palabras de códigos parecidos generados. Entre más importante es el número, más funcional es el procedimiento, pero es más complejo de poner en operación; entre más pequeño es este número, es más funcional el procedimiento y es menos eficaz. La elección del número de palabras de código determina la relación funcionamiento/complejidad del procedimiento, y está adaptado en función de las circunstancias. En la práctica, son obtenidos resultados satisfactorios para un código BCH(31, 21) extendido conservando las 19 mejores palabras de código entre 50 palabras generadas. En la variante de la etapa 2, se pueden cambiar no los componentes menos confiables, sino los componentes, que en combinación, son los menos confiables: de este modo si se consideran por ejemplo los componentes siguientes, con los módulos correspondientes : se cambiará por ejemplo li, luego 12, luego 13, luego li y 12, luego 14, luego li y 13, luego 15, y así sucesivamente. Se llega así a preservar los componentes más débiles. La figura 2 muestra un diagrama de flujo de una segunda modalidad de realización de un procedimiento de descodificación en la entrada flexible y en la salida flexible, puesta en operación en la invención; nuevamente, no se ha considerado eñ la figura 2 más que el ejemplo de una línea. Nuevamente, se describe la invención con referencia a la forma sistemática del código. Se considera la palabra flexible correspondiente a una línea dada (si. 1 < i < nx) , con Si = rí f i , para j dada. Esta palabra es una versión contaminada de error de una palabra de código C?(n?, ki, di). Esta palabra contiene ki bitios proporcionados por el codificador de la fuente, y n?-k? bitios de redundancia generados por el código Ci .
En una primera etapa 11, se separan los k% primeros componentes recibidos Si siguiendo el orden creciente de los módulos |s?|, por ejemplo, de acuerdo a la confiabilidad. Se anota T como la permutación correspondiente. En una segunda etapa 12, se procede como en el algoritmo de Chase, y se crean vectores cerrados para los m, < kx componentes menos confiables. Se pueden generar de esta manera, 2m m-upletes, pero se puede, de manera más interesante, generar únicamente algunos de estos 2m m-upletes, por ejemplo, aquéllos que tienen la más pequeña métrica euclidiana. En el caso donde ki = 4 y m = 2, los vectores generados son por ejemplo 00, 10, 01, 11. En una segunda etapa 13, se consideran los ki - m componentes restantes y se efectúa para cada uno de estos componentes una decisión firme, es decir que se asigna a cada componente flexible un valor firme o binario. Se puede por ejemplo simplemente asignar al componente ?t de orden i el valor signo (Si) .
En la etapa 14 se reconstituye, a partir de los resultados de la etapa 12 y de la etapa 13, un conjunto de palabras binarias tb = {t±, 1 < i < k?}b, con b < 2m, mediante concatenación de m componentes obtenidos en la etapa 12, y de los ki- componentes obtenidos en la etapa 13. Se aplica a estas palabras firmes la codificación Ci.T"1, donde T_1 es el inverso de la permutación T de la etapa 1. Se obtiene de este modo directamente las palabras firmes ub = {ui, 1 < i < n?}b del código Ci, que a priori son parecidas a la palabra que ha sido enviada sobre el canal de transmisión.
Se puede en seguida en la etapa 15, calcular para cada una de las palabras del código ub obtenidas, la distancia euclidiana para la palabra de código flexible si es recibida, o la métrica de cada palabra de código ub con relación a la palabra de código s_ recibida. Se puede en esta etapa no conservar entre estas palabras de código más que las palabras más confiables, como se explica anteriormente con relación a la etapa 6 de la figura 1. En la etapa 16, se procede a la descodificación flexible, de la misma manera que en la etapa 7 de la figura 1. El procedimiento de la figura 2, con relación a aquel de la figura 1, permite evitar la etapa de verificación de la independencia de estas últimas columnas de la matriz de paridad. Éste presenta el inconveniente, con relación a este mismo procedimiento de la figura 1, de no modificar los componentes más que en los ki primeros, y no entre el conjunto de componentes de la palabra de código. En otros términos, el procedimiento de la figura 1, permite modificar los componentes de poca confiabilidad, que son elegidos no solamente entre las informaciones enviadas, sino también entre los valores de redundancia. Se llega así a cambiar los componentes menos confiables entre los ki más confiables de palabra de código en su conjunto, y no solamente entre los ki primeros componentes de esta palabra enviada. La figura 3 muestra un diagrama de flujo de una tercera modalidad de realización de la invención de un procedimiento de descodificación en la entrada flexible y en la salida flexible puesta en operación en la invención. Se procede en este modo de realización como en las cinco primeras etapas de la figura 1, para obtener una lista de palabras de códigos, y sus métricas; esto es simbolizado en la figura 3 por la etapa 20. Se considera en la etapa 21 la palabra de código más parecida c*, por ejemplo, aquélla que presenta la métrica más confiable, y se inicializa un valor actual o corriente j a l. En la etapa 22, se cambia el valor del j-ési o componente Sj de la palabra del código s^ recibida, para darle un valor opuesto a aquel del j-ési o componente de la palabra de código c* determinada en la etapa 21, y esto con una gran confiabilidad. En la etapa 23, se procede, como en las cinco primeras etapas de la figura 1 a una búsqueda de una lista de palabras de códigos parecidos a la palabra recibida modificada en su j-ésimo componente, y al cálculo de su métrica. En la etapa 24, se considera la palabra de código c_'* que presenta la métrica más confiable; el componente de orden j de c_'* es opuesto a aquel de la palabra de código c* determinado en la etapa 21; se calcula entonces el componente j de orden j de palabra flexible de la salida v como la diferencia de las métricas de las palabras c_* y c_'* de las etapas 21 y 24, multiplicado por el factor de normalización . En la etapa 25, se comparan j y n. Si j = n, se ha terminado la descodificación, etapa 26; si no en la etapa 27, se incrementa j de uno y se vuelve a pasar a la etapa 22.
Con relación a los procedimientos de las figuras 1 y 2, el procedimiento de la figura 3 da mejores resultados en la medida donde se encuentran necesariamente para cada componente dos palabras de códigos que tienen para este componente los valores de bitios opuestos. No obstante, este procedimiento es más completo, en la medida donde se deben calcular las listas de palabras parecidas ni + 1 veces y no una sola vez . Los procedimientos de las figuras 1 a la 3 proporcionan pues una salida flexible para cada línea o cada columna de palabra de código producido recibido desde el canal de transmisión. El procedimiento de descodificación de la invención utiliza esta . descodificación flexible para la descodificación iterativa, como se explica con referencia a la figura 4, que muestra una modalidad de realización de una descodificación iterativa de este tipo. En una iteración se utiliza el procedimiento de una de las figuras 1 a la 3, o una combinación de estos procedimientos para obtener a partir de las líneas, y respectivamente de las columnas, de la matriz actual, las líneas y respectivamente las columnas para la iteración siguiente.
En una primera etapa 30, se inicializa una matriz actual R_? al valor recibido del canal R, el valor del índice i es inicializado a 0. Se pasa en seguida a la etapa 32. En la etapa 32, se determinan los coeficientes ai para cada valor de i. Los coeficientes en cuestión forman una serie creciente (a±) de reales. Los valores de estos coeficientes son dados a manera de ejemplo para un código producido BCH(31, 21) extenso con referencia a la figura 6. Se pasa en seguida a la etapa 34. Una primera descodificación siguiendo las líneas de la matriz Ri utilizando uno u otro de los algoritmos de descodificación en la entrada flexible y en la salida flexible de las figuras 1 a la 3, permite determinar una nueva matriz Li donde cada línea es una palabra de código Ci. Se pasa en seguida a la etapa 36. En la etapa 36, se incrementa i en 1. Se extraen de la matriz Li_? una información extrínseca igual a (LÍ-I-RÍ-U que ponderada por el factor a± es agregada a la matriz R recibida. Se calcula una nueva matriz Ri = R + ax (LÍ_I-RÍ_I) antes de pasar a la etapa 38.
En la etapa 38, se prosigue descodificando las columnas de la matriz Ri utilizando uno u otro de los algoritmos de descodificación en la entrada flexible y en la salida flexible de las figuras 1 a la 3. Esta descodificación permite obtener una matriz L± donde cada línea es una palabra de código C2. Esta etapa 38 corresponde a aquella de las columnas en la etapa 34. Se pasa en seguida a la etapa 40. La etapa 40 corresponde a la etapa 36. Ésta consiste en incrementar i de 1 y en formar una nueva matriz Ri = R + a± (LÍ-I-RÍ-I) . En la etapa 42, se compara el número de iteraciones, igual a i/2, con el número de iteraciones deseadas. Hay que hacer notar que se llama iteración . al conjunto que comprende una descodificación de las líneas y una descodificación de las columnas. Si hay que proceder a una iteración suplementaria, se pasa a la etapa 34, y si no se pasa a la etapa 46. En la etapa 46, se toman las decisiones binarias sobre la matriz LÍ-I, obtenida por descodificación de las columnas en la etapa 38. Se supone que la matriz obtenida • de este modo corresponde a la palabra de código emitida, y es suficiente luego extraer la sub-matriz de información para recuperar los bitios de información. El esquema de la figura 5 ilustra el funcionamiento del descodificador para un número de iteraciones igual a 4. El procedimiento de la invención se aplica a todos los tipos de códigos en bloques lineales, tales como los códigos BCH, y comprende los códigos de Reed-Solomon, Reed-Muller , QR, los códigos cíclicos, etc., sin utilizar los descodificadores algebraicos y los cálculos complicados en los cuerpos finitos de Gallois . Las figuras 6 y 7 muestran los resultados de la descodificación de acuerdo a la invención. La figura 6 muestra los resultados de una descodificación del código producido BCH (31, 21) extendido, según el procedimiento descrito con referencia a la figura 4 y a la figura 1. Se ha colocado en las ordenadas en la figura la tasa de error sobre los bitios, y en las abscisas la relación de señal sobre ruido Eb/NO, en dB . En la figura se han representado los resultados obtenidos para el código convolutivo ?_ de longitud de constricción 7, y los resultados obtenidos después de una, dos, tres o cuatro iteraciones de la descodificación de acuerdo con la invención. Para la simulación de la figura 6, se ha calculado (etapa 5 de la figura 1), J = 50 palabras de código, donde se han retenido cada vez los Q = 19 mejores. Los coeficientes (ai) utilizados para las líneas y las columnas se dan en la tabla siguiente: Los coeficientes (bi) siguientes son utilizados en el caso donde no se han encontrado palabras de código concurrentes: La figura muestra una ganancia de codificación aproximadamente de 2 dB con relación al código , y esto desde un TEB de 10~6. La figura 7 muestra los resultados correspondientes, para un código producido BCH (30, 19) x BCH (30, 24) . El código BCH (30, 19) es un código abreviado de 2 obtenido a partir del código BCH (31, 21) extendido. El código BCH (30, 24) es un código abreviado de 2 obtenido a partir del código BCH (31, 26) extendido. Se encuentra una ganancia de codificación superior a 2dB, con relación al mismo código de referencia. En todas estas modalidades de realización, la descodificación iterativa de los códigos producidos de acuerdo a la invención proporciona los mejores funcionamientos con el mismo número de iteraciones que el algoritmo propuesto en FR-A-2,712,760. Por supuesto, la presente invención, no está limitada a los ejemplos y modalidades de realización descritos y representativos, sino que ésta es susceptible de numerosas variantes accesibles al experto en la técnica. De este modo, la invención ha sido descrita con referencia a un código producido C1.C2; ésta se aplica a los códigos de formas diferentes, como por ejemplo los códigos producidos de tres códigos en bloques o más; ésta se aplica también a los códigos producidos del tipo de aquéllos descritos en la solicitud de patente N° 9712594 anteriormente mencionada de la solicitante. Estos códigos producidos son de una aplicación particular a la codificación de paquetes en transmisión en modo de transferencia asincrónico (ATM) : se utiliza para la codificación de los encabezamientos o encabezados un código Ci diferente del código C2 utilizado para el cuerpo del paquete. Se aplica en seguida, a las columnas de la matriz donde las líneas son formadas en las palabras de códigos Cl y C2 un código C3. De igual modo, se pueden utilizar los procedimientos de las figuras 1 a la 3 para otros algoritmos de descodificación iterativa como aquélla de la figura 4. Es también claro que la formulación en términos de * líneas" y 'columnas" de la palabra de código producida, recibida, no es empleada más que para comodidad de expresión, y que los valores recibidos sobre el canal no están bajo la forma de una matriz. Se puede indistintamente comenzar a descodificar por las 'líneas" o por las 'columnas". La expresión 'palabra de un código producido recibido en la salida de un canal de transmisión" debe pues entenderse por uno de los valores sucesivos, o incluso de una serie de valores binarios contaminados por un ruido, que son recibidos en la salida de un canal de transmisión. Además, la invención ha sido descrita con referencia a los códigos en bloques sistemáticos. Ésta se aplica para lo que concierne a los métodos de la primera y tercera modalidades de realización a los códigos C (n, k, d) que no están bajo la forma sistemática, en la medida en donde éstos pueden fácilmente ser transformados en códigos bajo una forma sistemática, por producto de una matriz de rango k. Ésta ha sido descrita con referencia al ejemplo de códigos binarios, pero se aplica también a los códigos q-áreas, con q ? 2.
Se hace constar que con relación a esta fecha, el mejor método conocido por la solicitante para llevar a la práctica la citada invención es el que resulta claro de la presente descripción de la invención

Claims (14)

REIVINDICACIONES Habiéndose descrito la invención como antecede, se reclama como propiedad lo contenido en las siguientes reivindicaciones:
1. Un procedimiento de descodificación con entrada flexible y con salida flexible de una palabra (s_) de un código lineal en bloque de dimensión k y de longitud n, recibido desde un canal de transmisión, caracterizado el método porque comprende las etapas de: la generación de una lista de palabras firmes (ub) de código parecido a la palabra del código recibido (_s) codificando una lista de los k-upletes más verosímiles; el cálculo del j-ésimo componente de la palabra flexible de la salida por diferencia entre las métricas de una parte de la palabra de código generado más parecida, y por otra parte, y de la palabra de código generado más parecida, que tiene un j-ésimo componente opuesto.
2. El procedimiento de conformidad con la reivindicación 1, caracterizado porque los k-upletes más verosímiles, son obtenidos por aproximación firme de los componentes de la palabra recibida y por cambio de los componentes menos confiables.
3. El procedimiento de conformidad con la reivindicación 1 ó 2, caracterizado porque en éste cada uno de los k-upletes de la lista de k-upletes es obtenido mediante: clásicamente por orden de confiabilidad de los componentes de la palabra de código recibido, siguiendo una permutación (T) ; la verificación de que los k componentes ás confiables de la palabra obtenida así permiten generar los otros n - k; - la elección de valores firmes para los m componentes menos confiables de los k componentes, siendo m un número entero inferior a k; la aproximación firme de los k - m otros componentes ; - la codificación de la palabra firme obtenida así, mediante un código igual a la composición de dicho código por el inverso de la permutación.
4. El procedimiento de conformidad con la reivindicación 3, caracterizado porque la verificación se efectúa mediante: la aplicación a las columnas de la matriz de paridad, del código de la permutación; - la verificación del rango de la matriz formada en las n - k últimas columnas de la matriz de paridad permutada de este modo.
5. El procedimiento de conformidad con la reivindicación 3 ó 4, caracterizado porque la etapa de verificación, cuando ésta es negativa, es seguida de una etapa de modificación de la permutación.
6. El procedimiento de conformidad con la reivindicación 1 ó 2, caracterizado porque cada uno de los k-upletes de la lista de los k-upletes es obtenido mediante: clásicamente por orden de confiabilidad de los k primeros componentes de palabra de código recibido, por una permutación (T); la elección de los valores firmes para los m componentes menos confiables, siendo m un número entero inferior a k; la aproximación firme de los k - m otros componentes ; la codificación de la palabra firme obtenida así, mediante un código igual a la composición de dicho código por el inverso de la permutación .
7. El procedimiento de conformidad con cualquiera de las reivindicaciones 1 a la 6, caracterizado porque el cálculo del j-ésimo componente de la palabra flexible de la salida se efectúa, cuando no existe palabra de código generado más parecida," que tenga un j-ésimo componente opuesto, por diferencia entre las métricas de una parte de la palabra de código generado más parecido", y por otra parte, y de la palabra de código generado menos parecido.
8. El procedimiento de conformidad con cualquiera de las reivindicaciones 1 a la 6, caracterizado porque el cálculo del j-ésimo componente de la palabra flexible de la salida se efectúa, cuando no existe palabra de código generado más parecida, que tenga un j-ésimo componente opuesto, por adición del j-ésimo componente de la palabra recibida de un coeficiente afectado del signo de la decisión firme del j-ésimo componente de la palabra de código más parecido, recibida.
9. El procedimiento de conformidad con cualquiera de las reivindicaciones precedentes, caracterizado porque la palabra recibida es afectada con un ruido blanco aditivo y gaussiano.
10. El procedimiento de descodificación en la entrada flexible y en la salida flexible de una palabra (s_) de un código lineal en bloque de dimensión k y de longitud n, recibida desde un canal de transmisión, caracterizado el procedimiento porque comprende las etapas de: la elección de palabra de código más parecida de palabra recibida en una lista de palabras firmes (ub) del código de aproximaciones de palabras de código recibido (s_) , generadas codificando una lista de los k-upletes más verosímiles, para cada componente de orden j de palabra recibida, j varía de 1 a n; * el reemplazo del j-ésimo componente de la palabra recibida por el inverso del j-ésimo componente de la palabra de código más parecido; * la elección de la palabra de código más parecido de la palabra obtenida en la etapa de reemplazo en una lista de palabras firmes del código de aproximaciones a la palabra de código obtenido en la palabra obtenido en la etapa de reemplazo, generadas codificando una lista de k-upletes más verosímiles ; * el cálculo del j-ésimo componente de la palabra flexible de salida por diferencia entre las métricas de una parte de la palabra de código más parecida, de la palabra recibida, y por otra parte, y de la palabra de código más parecida de la palabra obtenida en la etapa de reemplazo.
11. El procedimiento de conformidad con 1_ reivindicación 10, caracterizado porque en la etapa de elección la palabra de código más parecida de la palabra recibida, los k-upletes más verosímiles son obtenidos por aproximación firme de los componentes más confiables de la palabra recibida, y por intercambio de los componentes más confiables.
12. El procedimiento de conformidad con la reivindicación 10 u 11, caracterizado porque en la etapa de elección la palabra de código más parecido de la palabra obtenida en la etapa de reemplazo, los k-upletes más verosímiles son obtenidos por aproximación firme de los componentes más confiables de la palabra obtenida en la etapa de reemplazo y por intercambio de los componentes menos confiables.
13. El procedimiento de conformidad con cualquiera de las reivindicaciones 10 a 12, caracterizado porque la palabra recibida es afectada con un ruido blanco aditivo y gaussiano.
14. Un procedimiento de descodificación iterativa de una palabra (R) de un código producido, recibido desde un canal de transmisión, que comprende para al menos una iteración, una descodificación en la entrada flexible y en la salida flexible de las líneas o de las columnas de dicha palabra de código producido, de acuerdo al procedimiento de conformidad con cualquiera de las reivindicaciones 1 a 13. RESUMEN DE LA INVENCIÓN La invención se refiere a un procedimiento de descodificación en la entrada flexible y en la salida flexible de una palabra (s_) de un código lineal en bloque de dimensión k y de longitud n, recibida desde un canal de transmisión, que comprende las etapas de la generación de una lista de palabras firmes (ub) de código aproximado o parecido a la palabra de código recibida (s_) , codificando una lista de k-upletes obtenidos por aproximación firme de los componentes de la palabra recibida y por intercambio de los componentes menos confiables, - el cálculo del j-ésimo componente de la palabra flexible de salida por diferencia entre las métricas de una parte de la palabra de código generada más parecida, y por otra parte, de la palabra de código generada más parecida que tiene un j-ésimo componente opuesto, o por omisión de la palabra de código generada menos parecida. La invención se refiere también a un procedimiento de descodificación iterativo de una palabra de código producido, recibida sobre un canal de transmisión, utilizando un procedimiento de este tipo de descodificación en la entrada flexible y en la salida flexible. Ésta permite una descodificación rápida y eficaz de las palabras de un código producidas, incluso en ausencia del descodificador algebraico .
MXPA/A/2000/000099A 1998-05-04 2000-01-03 Descodificacion iterativa de codigos producidos MXPA00000099A (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR98/05612 1998-05-04

Publications (1)

Publication Number Publication Date
MXPA00000099A true MXPA00000099A (es) 2001-03-05

Family

ID=

Similar Documents

Publication Publication Date Title
US6460162B1 (en) Product code iterative decoding
JP3791013B2 (ja) データ・ブロックの畳み込み符号化方法及び装置及び対応する復号方法及び装置
US6298463B1 (en) Parallel concatenated convolutional coding
US10541710B2 (en) Devices and methods implementing polar codes
CN1770639B (zh) 级联的迭代和代数译码
US6038696A (en) Digital transmission system and method comprising a product code combined with a multidimensional modulation
US20050210358A1 (en) Soft decoding of linear block codes
US6526539B1 (en) Turbo decoder
WO2004032336A1 (en) Reduced complexity turbo decoder using the principle of splitting the first siso device
Kurkoski et al. Exact probability of erasure and a decoding algorithm for convolutional codes on the binary erasure channel
JP2003527028A (ja) 誤り訂正符号化型デジタル伝送方法
Battail Coding for the gaussian channel: The promise of weighted‐output decoding
US20020094038A1 (en) Error-correcting code decoding method and error-correcting code decoding apparatus
Rowshan et al. Efficient partial rewind of successive cancellation-based decoders for polar codes
MXPA00000099A (es) Descodificacion iterativa de codigos producidos
Couleaud High gain coding schemes for space communications
CN108880569B (zh) 一种基于反馈分组马尔科夫叠加编码的速率兼容编码方法
US7489744B2 (en) Turbo decoding method and apparatus for wireless communications
Collins Exploiting the cannibalistic traits of Reed-Solomon codes
Dai et al. Performance and implementation of enhanced multi CRC-LSC polar codes
KR100317377B1 (ko) 변복조 시스템의 부호화 및 복호화 장치
Zepernick A forward‐only recursion algorithm for MAP decoding of linear block codes
Nandan et al. Low complex crypto based channel coding
Ivaniš et al. Trellis Decoding of Linear Block Codes, Turbo Codes
Liu Map decoding of linear block codes, iterative decoding of reed-solomon codes and interactive concatenated turbo coding systems