Cyclic trellis coded modulation.
Abstract
A universal method of trellis encoding signals mapped according to any signal constellation format involves constructing an encoder output table and a state transition table. The encoder output table defines the output symbol of an encoder given the input symbol and the present state of the encoder, while the state transition table defines the next state of the encoder given the present state of the encoder and the input applied to the encoder. The output table and the next state table are constructed with the objective of providing maximal distances between the branches of the trellis diagram without any regards for the shift register implementation of the code. Cyclic trellis-coded modulation is an example of such codes without feed-forward or feed-back shift register implementations, and with equal or better performance than "optimal" shift register trellis coded with 16 states or less. The cyclic trellis codes for both AWGN and Rayleigh fading applications can be constructed for any signal constellation without resorting to exhaustive searches.

Term
Term ended
Expired 22 November 2015, 10.8 years ago.
- Priority
- Filed
- Granted
- Expired
- Today
39 claims: 19 independent, 20 dependent
- 1CLAIMS REIVINDICACIONES 1.- A method for forward error correction coding for a data signal plotted according to a 1.- Un método para la codificación de corrección delantera de errores para una señal de datos trazada de acuerdo con una 5 given signal constellation, said method comprises the steps of:5 constelación de señal dada, dicho método comprende los pasos de: define a family of convolutional codes, said family of convolutional codes being characterized in that the family of codes are not capable of being generated through an implementation of the change register of the front feed or the feedback, said step of defining also includes the steps of : definir una familia de códigos convolucionales, dicha familia de códigos convolucionales estando caracterizada porque la familia de códigos no son capaces de ser generados a través de una implementación de registro de cambio de alimentación delantera o lo retroalimentación, dicho paso de definir comprende además los pasos de: establecer un valor de estado siguiente que corresponde a cada par de estado presente/valor de entrada;setting a next status value that corresponds to each present status / input value pair;establecer un valor de salida que corresponde a cada par 15 de estado presente/valor de entrada;setting an output value corresponding to each present state / input value pair 15;receive an input data symbol that corresponds to an input value;recibir un símbolo de datos de entrada que corresponde a un valor de entrada;proveer un valor de salida en respuesta a la recepción de dicho valor de entrada, en donde dicho valor de salida es determinado por providing an output value in response to receiving said input value, wherein said output value is determined by 20 el valor de entrada y el valor de estado presente, dicho valor de estado presente es determinado por el valor de estado siguiente previo;twenty the input value and the present state value, said present state value is determined by the previous next state value;generar un símbolo de datos de salida, en donde dicho símbolo de salida es determinado por dicho valor de salida;y generating an output data symbol, wherein said output symbol is determined by said output value;and 25 encode a data signal to correspond to that symbol 25 codificar una señal de datos para corresponder a dicho símbolo -65 • IX, ÍJ1. -65•IX ,ÍJ1. de salida según se determina a través de un esquema de trazado de señal. output as determined through a signal layout scheme.
- 3- A method to encode errors according to the 3.- Un método para codificar errores de acuerdo con la 5 Claim 1 wherein said input data signal is to be traced according to a predetermined modulation scheme having an associated signal constellation, said signal constellation having defined coordinate points corresponding to phase and symbol amplitude characteristics output of a 5 reivindicación 1 en donde dicha señal de datos de entrada va a ser trazada de acuerdo con un esquema de modulación predeterminado que tiene una constelación de señal asociada, dicha constelación de señal teniendo puntos de coordenada definidos que corresponden a características de fase y de amplitud de símbolos de salida de un 10 encoder, said encoder receiving n inputs, corresponding to possible input values 2, and emitting n + 1 outputs corresponding to possible output values 2n + 1, said encoder also having possible states 2k, and where:10 codificador, dicho codificador recibiendo n entradas, que corresponden a posibles valores de entrada 2, y emitiendo salidas n + 1 que corresponden a posibles valores de salida 2n + 1, dicho codificador además teniendo estados posibles 2k, y en donde: dicho paso de establecer un valor de salida comprende definir said step of setting an output value involves defining 15 una tabla de salida que tiene filas de estado presente 2k y columnas de símbolo de entrada 2, en donde los símbolos de salida del codificador son determinados como una función de símbolos de entrada hacia dicho codificador y un estado presente del codificador, definiendo la tabla de salida, que comprende además los pasos de: fifteen an output table that has status rows present 2k and input symbol 2 columns, where the encoder output symbols are determined as a function of input symbols towards said encoder and a present state of the encoder, defining the output table, further comprising the steps of: 20 asignar valores a dichos puntos de la constelación de señal, dichos valores correspondiendo a los símbolos de salida;twenty assigning values to said points of the signal constellation, said values corresponding to the output symbols;dividing said signal constellation into a first subgroup of output symbols 2 and a second subgroup of output symbols 2;dividir dicha constelación de señal en un primer subgrupo de símbolos de salida 2 y un segundo subgrupo de símbolos de salida 2;25 load the pairs of those present status rows with 25 cargar las pares de dichas filas de estado presente con -68i.l.l.L. -68i.llL valores que corresponden a símbolos del primer subgrupo;y cargar las impares de dichas filas de estado presente con valores que corresponden a símbolos de salida del segundo subgrupo;y en donde, values that correspond to symbols of the first subgroup;and loading the odd numbers of said present status rows with values corresponding to the output symbols of the second subgroup;and where, 5 said step of setting a next state value comprises defining a next state table of a plurality of next states, said next state table having present state rows 2k and input symbol columns 2, where the next state of the encoder is determined as a function of 5 dicho paso de establecer un valor de estado siguiente comprende definir una tabla de estado siguiente de una pluralidad de estados siguientes, dicha tabla de estado siguiente teniendo filas de estado presente 2k y columnas de símbolo de entrada 2, en donde el estado siguiente del codificador es determinado como una función de 10 the input symbols for said encoder and the present status of the encoder, defining the following status table, which further comprises the steps of: 10 los símbolos de entrada para dicho codificador y el estado presente del codificador, definiendo la tabla de estado siguiente, que comprende además los pasos de: divide these following states into subgroups 2k', where each subgroup has following states 2n;and dividir dichos estados siguientes en subgrupos 2k', en donde cada subgrupo tiene estados siguientes 2n;y 15 cargar una primera de las filas de estado presente con estados siguientes de el primer subgrupo, una segunda de las filas de estado presente con los estados siguientes del segundo subgrupo, y continuar dicha carga hasta que la fila de estado presente 2a.k’n esté cargada con los estados siguientes del 2o.k‘n de los subgrupos;y en fifteen load a first of the present state rows with subsequent states of the first subgroup, a second of the present state rows with subsequent states of the second subgroup, and continue said loading until the present state row 2a.k’n is loaded with the following states of the 2nd.k‘n of the subgroups;and in 20 donde, dicho paso de proveer un valor de salida comprende implementar dichas tablas de salida y de estado siguiente con el codificador, de manera que los símbolos de salida del codificador son determinados como una función de símbolos de entrada al twenty wherein, said step of providing an output value comprises implementing said output and next status tables with the encoder, such that the encoder output symbols are determined as a function of input symbols to the 25 encoder and the present state of said encoder according to 25 codificador y el estado presente de dicho codificador de acuerdo con -69U ... U. . -69U...U . . :111: :111: la tabla de salida, y las transiciones del estado presente de dicho codificador al estado siguiente de dicho codificador están de acuerdo con la tabla de estado siguiente;y en donde, dicho paso de codificar una señal de datos comprende trazar dichos símbolos de salida del codificador a señales que tienen características de fase y de amplitud que corresponden a puntos de símbolos de salida respectivos sobre la constelación de señal. the output table, and the transitions from the present state of said encoder to the next state of said encoder are in accordance with the following state table;and wherein, said step of encoding a data signal comprises mapping said encoder output symbols to signals having phase and amplitude characteristics corresponding to respective output symbol points on the signal constellation.
- 4- Un codificador de datos para utilizarse en aplicaciones de comunicación de datos, en donde una pluralidad de valores de datos de entrada se codifican, mediante codificación de enrejado, para formar datos de salida, dicho codificador de datos comprende:Four. - A data encoder for use in data communication applications, wherein a plurality of input data values are encoded, using lattice encoding, to form output data, said data encoder comprising: an entry;una entrada;an encoder circuit coupled to said input, said encoder circuit having a plurality of states present, and responding to the plurality of input data values at the input to pass to the next state, the following states corresponding to each input being cyclically changed by those different from the present states;un circuito de codificador acoplado a dicha entrada, dicho circuito de codificador teniendo una pluralidad de estados presentes, y que responden a la pluralidad de valores de datos de entrada en la entrada para pasar al estado siguiente, los estados siguientes correspondiendo a cada entrada siendo cíclicamente cambiados por aquellos diferentes de los estados presentes;an output coupled to the encoder circuit, said output responds to the encoder circuit to generate output data. una salida acoplada al circuito codificador, dicha salida responde al circuito codificador para generar datos de salida.
- 55 - A method for cyclic lattice coding of a data sequence within an encoder, where a data sequence is to be traced according to a predetermined modulation scheme that has an associated signal constellation, said constellation of signal bearing points 5, - Un método para la codificación cíclica de enrejado de una secuencia de datos dentro de un codificador, en donde una secuencia de datos va a ser trazada de acuerdo con un esquema de modulación predeterminado que tiene una constelación de señal asociada, dicha constelación de señal teniendo puntos de -70U. ;, il. . -70U. ;,il. . coordenada definidos que corresponden a características de fase y de amplitud que corresponden a símbolos de salida de dicho codificador, el método comprendiendo los pasos de:defined coordinate that correspond to phase and amplitude characteristics that correspond to output symbols of said encoder, the method comprising the steps of: defining an output symbol output table, the output table having input status rows and input symbol columns, where the output symbols are determined as a function of input of symbols to the encoder and a present status of the encoder, defining said output table, which also includes the steps of: definir una tabla de salida de símbolos de salida, la tabla de salida teniendo filas de estado presente y columnas de símbolo de entrada, en donde los símbolos de salida son determinados como una función de entrada de símbolos al codificador y un estado presente del codificador, definiendo dicha tabla de salida, que comprende además los pasos de: asignar cada uno de los símbolos de salida a los puntos de la constelación de señal a un primer subgrupo de símbolos de salida y un segundo subgrupo de símbolos de salida;assigning each of the output symbols to the points of the signal constellation to a first subgroup of output symbols and a second subgroup of output symbols;cargar las pares de las filas de estado presente con símbolos de salida del primer subgrupo;y cargar las impares de las filas de estado presente con símbolos de salida del segundo subgrupo;load pairs of present status rows with output symbols from the first subgroup;and load the odd ones from the present status rows with output symbols from the second subgroup;define a next state table of next states for that encoder, the next state table having next state rows and input symbol columns, where the following states are defined as a function of symbols entering the encoder, and a state encoder present, defining the table for the following status query, which also includes the steps of: definir una tabla de estado siguiente de estados siguientes para dicho codificador, la tabla de estado siguiente teniendo filas de estado siguiente y columnas de símbolo de entrada, en donde los estados siguientes son definidos como una función de símbolos que entran al codificador, y un estado presente del codificador, definiendo la tabla para consulta de estado siguiente, que comprende además los pasos de: cargar fas primeras de las filas de estado presente con estados siguientes del codificador hasta que por lo menos una de las load the first few of the present status rows with subsequent encoder states until at least one of the -7114 ,iJL -7114, iJL Jl.L first rows of present status are populated, and all next status values have been used;and loading the other present state rows with subsequent states that are cyclically changed from the following states in each of the first of the present state rows until all present state rows are filled;Jl.L primeras filas de estado presente se llene, y se hayan utilizado todos los valores de estado siguiente;y cargar las otras filas de estado presente con estados siguientes que son cíclicamente cambiadas de los estados siguientes en cada una de las primeras de las filas de estado presente hasta que se llenan todas las filas de estado presente;implementar dichas tablas de salida y de estado siguiente dentro del codificador, de manera que los símbolos de salida del codificador son determinados por símbolos de entrada a dicho codificador, y el estado presente del codificador de acuerdo con dicha tabla de salida, y se llevan a cabo transiciones del estado presente del codificador hacia el estado siguiente del codificador de acuerdo con dicha tabla de estado siguiente;y trazar los símbolos de salida a señales que tienen características de fase y de amplitud que corresponden a puntos sobre dicha constelación de señal. implementing said output and next status tables within the encoder, so that the encoder output symbols are determined by input symbols to said encoder, and the present state of the encoder according to said output table, and are carried to transitions from the present state of the encoder to the next state of the encoder according to said next state table;and mapping the output symbols to signals having phase and amplitude characteristics that correspond to points on said signal constellation.
- 8- A method of cyclic lattice coding of an input data stream with an encoder, where the input data stream is to be plotted according to a 8.- Un método de codificación cíclica de enrejado de una secuencia de datos de entrada con un codificador, en donde la secuencia de datos de entrada va a ser trazada de acuerdo con un 5 predetermined modulation scheme having an associated signal constellation, said signal constellation having defined coordinate points corresponding to phase and amplitude characteristics of output symbols of the encoder, said encoder receiving n inputs, corresponding to possible values of 5 esquema de modulación predeterminado que tiene una constelación de señal asociada, dicha constelación de señal teniendo puntos de coordenada definidos que corresponden a características de fase y de amplitud de símbolos de salida del codificador, dicho codificador recibiendo n entradas, que corresponden a posibles valores de 10 input 2n, and emitting outputs m + 1 that correspond to possible values of output 2n + 1, said encoder also having possible states 2k, said method comprising the steps of:10 entrada 2n, y emitiendo salidas m+1 que corresponden a posibles valores de salida 2n+1, dicho codificador teniendo además posibles estados 2k, dicho método comprendiendo los pasos de: define an output table that has status rows present 2k and input symbol columns 2, where the symbols of definir una tabla de salida que tiene filas de estado presente 2k y columnas de símbolo de entrada 2, en donde los símbolos de 15 salida del codificador son determinados como una función de símbolos de entrada al codificador y un estado presente del codificador, definiendo dicha tabla de salida, que comprende además los pasos de: fifteen encoder output are determined as a function of input symbols to the encoder and a present state of the encoder, defining said output table, which further comprises the steps of: asignar valores a los puntos de la constelación de señal, assign values to the points of the signal constellation, 20 dichos valores correspondiendo a los símbolos de salida;twenty said values corresponding to the output symbols;divide the signal constellation into a first subgroup of output symbols 2 and a second subgroup of output symbols 2n;dividir la constelación de señal en un primer subgrupo de símbolos de salida 2 y un segundo subgrupo de símbolos de salida 2n;cargar las pares de las filas de estado presente con load the pairs of the present status rows with 25 values that correspond to output symbols of the first subgroup;25 valores que corresponden a símbolos de salida del primer subgrupo;-7373 and -7373 y cargar las impares de las filas de estado presente con valores que corresponden a símbolos de salida del segundo subgrupo;load the odd numbers of the present status rows with values corresponding to the output symbols of the second subgroup;5 define a next state table of a plurality of next states, said next state table having present state rows 2k and input symbol columns 2n, where the next state of the encoder is determined as a function of the input symbols for said encoder and the present state of the encoder, defining the following state table, which further comprises the steps of;5 definir una tabla de estado siguiente de una pluralidad de estados siguientes, dicha tabla de estado siguiente teniendo filas de estado presente 2k y columnas de símbolo de entrada 2n, en donde el estado siguiente del codificador es determinado como una función de los símbolos de entrada para dicho codificador y el estado presente lo del codificador, definiendo la tabla de estado siguiente, que comprende además los pasos de;divide the following states into subgroups 2k'n where each subgroup has following states 2;and load a first of the present state rows with t5 states following the first of said subgroups, a second of the present state rows with the following states from the second of said subgroups, and continue this loading until the 2nd.k‘n present status row is loaded with following states from 2nd.k‘n of said subgroups;dividir los estados siguientes en subgrupos 2k'n en donde cada subgrupo tiene estados siguientes 2;y cargar una primera de (as filas de estado presente con t5 estados siguientes del primero de dichos subgrupos, una segunda de las filas de estado presente con los estados siguientes a partir del segundo de dichos subgrupos, y continuar esta carga hasta que la 2a.k‘n fila de estado presente esté cargada con estados siguientes del 2o.k‘n de dichos subgrupos;20 implementar dichas tablas de salida y de estado siguiente dentro del codificador, de manera que los símbolos de salida del codificador son determinados como una función de símbolos de entrada al codificador y el estado presente del codificador de acuerdo con la tabla de salida, y las transiciones del estado presente twenty implement said output and next state tables within the encoder, so that the encoder output symbols are determined as a function of input symbols to the encoder and the present state of the encoder according to the output table, and the transitions of the present state 25 from the encoder to the next state of that encoder, they are 25 del codificador al estado siguiente de dicho codificador, están de -7474 according to the following status table;and plotting the encoder output symbols on signals having phase and amplitude characteristics that correspond to respective output symbol points on the signal constellation. -7474 acuerdo con la tabla de estado siguiente;y trazar los símbolos de salida del codificador en señales que tienen características de fase y de amplitud que corresponden a puntos de símbolo de salida respectivos sobre la constelación de señal.
- 11- Un codificador de enrejado, el cual codifica, mediante codificación de enrejado, señales de datos de entrada, en donde dichas señales de datos de entrada son trazadas de acuerdo con un esquema de modulación, de manera que una constelación de señal definida por dicho esquema de modulación no puede ser dividida, de manera que cada nivel de división de grupo da como resultado una distancia mínima Euclideana substancialmente incrementada entre puntos de la constelación de señal. eleven. - A lattice encoder, which encodes, by lattice encoding, input data signals, wherein said input data signals are plotted according to a modulation scheme, such that a signal constellation defined by said scheme modulation cannot be divided, so each level of group division results in a substantially increased Euclidean minimum distance between points of the signal constellation.
- 12- A transmitter for a multi-level modulation communication system, encoded through encoding 12. - Un transmisor para un sistema de comunicación de modulación de niveles múltiples, codificado a través de codificación -7575 de enrejado, que comprende:-7575 trellis, comprising: a lattice cyclic encoder receiving a sequence of data input symbols and a sequence of encoded output symbol outputs, said cyclic lattice encoder having a group of present states divided into subgroups, said encoder comprising: un codificador cíclico de enrejado que recibe una secuencia de símbolos de entrada de datos y una secuencia de salidas de símbolos de salida codificados, dicho codificador cíclico de enrejado teniendo un grupo de estados presentes divididos en subgrupos, dicho codificador comprendiendo: a state transition table containing a plurality of next state values for said encoder, where the next state values are defined based on the present state of the encoder and the input symbol, where the next state values are assigned to each of the present status subgroups, such that (the following state values for any present state subgroup are cyclically changed for successive members of any present state subgroup;una tabla de transición de estado que contiene una pluralidad de valores de estado siguiente para dicho codificador, en donde los valores de estado siguiente se definen con base en el estado presente del codificador y el símbolo de entrad, en donde los valores de estado siguiente son asignados a cada uno de lo subgrupos de estado presente, de manera que (os valores de estado siguiente para cualquier subgrupo de estado presente son cambiados cíclicamente para miembros sucesivos de cualquier subgrupo de estado presente;a present state memory element that connects to the table for state transition query and temporarily stores a next state value output through the table for state transition query;and a table for encoder output query connected to the present state memory element, which selects an output symbol based on said encoder present state and one of the currently received input symbols, and wherein said present states are divided into two subgroups and the outputs are divided into two subgroups, so un elemento de memoria de estado presente que se conecta a la tabla para consulta de transición de estado y que almacena temporalmente una salida de valor de estado siguiente a través de la tabla para consulta de transición de estado;y una tabla para consulta de salida de codificador conectada al elemento de memoria de estado presente, el cual selecciona un símbolo de salida con base en dicho estado presente del codificador y uno de los símbolos de entrada actualmente recibidos, y en donde dichos estados presentes son divididos en dos subgrupos y las salidas son divididas en dos subgrupos, de manera -76J.I ι. -76J.I ι. que la tabla para consulta de salida emite un símbolo, el cual pertenece a un primer subgrupo de salida cuando está en uno de los subgrupos de estado presente, y emite un símbolo, el cual pertenece a un segundo subgrupo de salida cuando está en el otro de los subgrupos de estado presente;that the table for output query emits a symbol, which belongs to a first output subgroup when it is in one of the present status subgroups, and emits a symbol, which belongs to a second output subgroup when it is in the other of the subgroups of present state;a signal tracer that connects to the table for output query, and maps outputs from the table for encoder output query to encoded output signals of the two symmetric signal constellations;and a transmitter circuit for transmitting the encoded output signals over a communication medium. un trazador de señal que se conecta a la tabla para consulta de salida, y que traza salidas de la tabla para consulta de salida de codificador hacia señales de salida codificadas de las dos constelaciones de señal simétricas;y un circuito transmisor para transmitir las señales de salida codificadas sobre un medio de comunicaciones.
- 15- Un receptor para un sistema de comunicación de modulación de niveles múltiples, codificado mediante codificación de enrejado, que comprende:fifteen. - A receiver for a multilevel modulation communication system, encoded by lattice encoding, comprising: a lattice decoder, which receives a baseband signal, said lattice decoder comprising: un des codificador de enrejado, el cual recibe una señal de banda de base, dicho descodificador de enrejado comprendiendo: means for reconstructing a lattice structure defined by a state transition lookup table, where a group of present states is divided into subgroups having medios para reconstruir una estructura de enrejado definida por una tabla de consulta de transición de estado, en donde un grupo de estados presente se divide en subgrupos que tienen -77: ι.ϊ ι. -77:ι.ϊ ι. miembros sucesivos, y los valores de estado siguiente asignados a cada uno de los subgrupos de estado presente son cambiados cíclicamente para miembros sucesivos del subgrupo de estado presente;successive members, and the following state values assigned to each of the present state subgroups are cyclically changed for successive members of the present state subgroup;5 means for determining input and output symbols associated with branches of said trellis structure as defined by a table for encoder output query, where the present states are divided into two subgroups and the outputs are divided into two subgroups, of so the table for the output query outputs a symbol that belongs to a first subgroup, when it is in one of the present state subgroups and emits a symbol that belongs to a second output subgroup, when it is in the other of the present state subgroups;5 medios para determinar símbolos de entrada y de salida asociados con ramificaciones de dicha estructura de enrejado como se define por una tabla para consulta de salida de codificador, en donde los estados presentes se dividen en dos subgrupos y las salidas se dividen en dos subgrupos, de manera que la tabla para io consulta de salida emite un símbolo que pertenece a un primer subgrupo, cuando está en uno de los subgrupos de estado presente y emite un símbolo que pertenece a un segundo subgrupo de salida, cuando está en el otro de los subgrupos de estado presente;a calculation circuit that determines the distances un circuito de cálculo que determina las distancias 15 Euclideanas entre puntos en un sistema de coordenadas de fase/amplitud, que corresponde a las señales recibidas y puntos de una constelación de señal de fase/amplitud que corresponde a señales asociadas con ramificaciones sobre dicha estructura de enrejado;y fifteen Euclidean between points in a phase / amplitude coordinate system, which corresponds to the received signals and points of a phase / amplitude signal constellation that corresponds to signals associated with branches on said lattice structure;and 20 circuitos comparador y selector para seleccionar la trayectoria más probable de la señal recibida en la estructura de enrejado con base en las distancias Euclideanas determinadas. twenty comparator and selector circuits to select the most probable path of the received signal in the lattice structure based on the determined Euclidean distances.
- 16- A method to encode signals traced according to any signal constellation format comprising the 16.- Un método para codificar señales trazadas de acuerdo con cualquier formato de constelación de señal que comprende los 25 Steps of:25 pasos de: -781..1.1.. -781..1.1.. divide the signal constellation points into two symmetric groups of symbol points, and encode, through cyclic lattice encoding, the data that will be plotted according to the signal constellation. dividir los puntos de constelación de señal en dos grupos simétricos de puntos de símbolo, y codificar, a través de codificación cíclica de enrejado, los datos que serán trazados de acuerdo con la constelación de señal. 5 5
- 17- A data encoder that includes:17.- Un codificador de datos que comprende: a lattice cyclic encoder;and a transmitter coupled to said lattice cyclic encoder. un codificador cíclico de enrejado;y un transmisor acoplado a dicho codificador cíclico enrejado.
- 18- A lattice encoder that can be implemented as a state machine or table memory for query or 18. - Un codificador de enrejado que puede ser implementado como una máquina de estado o una memoria de tabla para consulta o 10 in programs (software), but which cannot be implemented as a change register. 10 en programas (software), pero el cual no puede ser implementado como un registro de cambio.
- 2020 trazados para constelaciones de señal, que pueden ser divididos de tal manera que cada nivel de división de grupo da como resultado una distancia mínima Euclideana substancialmente incrementada entre puntos de dicha constelación de señal, y la cual puede ser también adaptada para codificar datos que serán trazados para twenty traces for signal constellations, which can be divided in such a way that each level of group division results in a substantially increased Euclidean minimum distance between points of said signal constellation, and which can also be adapted to encode data to be traced for 25 signal constellations that cannot be divided into groups, of 25 constelaciones de señal que no pueden ser divididas en grupos, de -79j 11. -79j 11. manera que cada nivel de división de grupo da como resultado una distancia mínima Euclideana substancialmente incrementada entre puntos de dicha constelación de señal. so that each group division level results in a substantially increased Euclidean minimum distance between points of said signal constellation.
- 2122. - A method for lattice coding, which is applicable to all signal constellations that have an even number of constellation points, and where all paths that are interspersed outside a state and within the same state, are defined in order to provide a maximum or almost maximum space between the outputs on said state transition paths for signal constellations selected from the group consisting of 8-PSK, 16 star QAM, 16 QAM and 16-PSK. 22. - Un método para la codificación de enrejado, el cual es aplicable a todas las constelaciones de señal que tienen un número par de puntos de constelación, y en donde todas las trayectorias que se intercalan fuera de un estado y dentro de un mismo estado, son definidas con el fin de proveer un espacio máximo o casi máximo entre las salidas sobre dichas trayectorias de transición de estado para constelaciones de señal seleccionadas del grupo que consiste de 8-PSK, 16 QAM de estrella, 16 QAM y 16-PSK.
- 2324. - A state machine encoder with limited state transition paths, wherein said state transition paths are defined to provide the minimum number of two branching state transition paths out of all possible state transition paths between the same state. 24. - Un codificador de máquina de estado con trayectorias de transición de estado limitadas, en donde dichas trayectorias de transición de estado son definidas para proveer el número mínimo de dos trayectorias de transición de estado de ramificación fuera de todas las trayectorias posibles de transición de estado entre el mismo estado.
- 2425. - A state machine encoder with limited transition paths, said paths defined by a table of 25. - Un codificador de máquina de estado con trayectorias de transición limitadas, dichas trayectorias definidas por una tabla de -80J.tk estado siguiente que tiene una serie de filas y columnas, los contenidos de tales filas y columnas formados por una secuencia de enteros consecutivos, dicha tabla incluyendo dos filas en donde cada fila contiene los enteros idénticos y en donde por lo menos un entero en una de las filas es el primer entero en la otra fila, mientras que de otra manera se mantiene la secuencia de enteros en cada una de las filas. -80J.tk next state having a series of rows and columns, the contents of such rows and columns consisting of a sequence of consecutive integers, said table including two rows where each row contains the identical integers and where at least one integer in one of the rows is the first integer in the other row, while otherwise the sequence of integers in each of the rows is maintained.
- 2526.- A receiver for a multilevel modulation communication system, encoded through lattice encoding, comprising:26.- Un receptor para un sistema de comunicación de modulación de niveles múltiples, codificado a través de codificación de enrejado, que comprende: a decoder that receives a band signal, said lattice decoder comprises: un descodificador que recibe una señal de banda, dicho descodificador de enrejado comprende: a first signal processing circuit to reconstruct a lattice structure defined by a state transition input / output table, where a group of present states is divided into subgroups having successive numbers, and assigned next state values for each one of the present state subgroups are cyclically changed for successive members of said present state subgroup;un primer circuito de procesamiento de señal para reconstruir una estructura de enrejado definida por una tabla de entrada/salida de transición de estado, en donde un grupo de estados presente se divide en subgrupos que tienen números sucesivos, y valores de estado siguiente asignados para cada uno de los subgrupos ¡le estado presente son cambiados cíclicamente para miembros sucesivos de dicho subgrupo de estado presente;a second signal processing circuit to determine output input symbols associated with lattice structure branches as defined by an encoder input / output table, where said present states are divided into two subgroups and the outputs are divided into two subgroups so that the input / output table output un segundo circuito de procesamiento de señal para determinar símbolos de entrada de salida asociados con ramificaciones de estructura de enrejado como se define por una tabla de entrada/salida de codificador, en donde dichos estados presentes son divididos en dos subgrupos y las salidas son divididas en dos subgrupos de manera que la tabla de entrada/salida de salida -8181 de codificador emite un símbolo que pertenece a un primer subgrupo de salida cuando está en uno de los subgrupos de estado presente, y emite un símbolo que pertenece a un segundo subgrupo de salida cuando está en el otro de los subgrupos de estado presente;Encoder -8181 emits a symbol that belongs to a first output subgroup when it is in one of the present state subgroups, and emits a symbol that belongs to a second output subgroup when it is in the other one of the present state subgroups;5 a calculation circuit that determines distances between points on a phase / amplitude coordinate system that corresponds to the received signals and points of a phase / amplitude signal constellation that corresponds to signals associated with branches on said lattice structure;5 un circuito de calculo que determina distancias entre puntos sobre un sistema de coordenadas de fase/amplitud que corresponde a las señales recibidas y puntos de una constelación de señal de fase/amplitud que corresponde a señales asociadas con ramificaciones sobre dicha estructura de enrejado;10 comparator and selector circuits to select the most probable path of the received signal on the lattice structure based on the determined distances. 10 circuitos comparador y selector para seleccionar la trayectoria más probable de la señal recibida sobre la estructura de enrejado con base en las distancias determinadas.
- 2829. - A receiver for a multilevel modulation communication system encoded through lattice encoding, comprising:29. - Un receptor para un sistema de comunicación de modulación, de niveles múltiples, codificado a través e codificación de enrejado, que comprende: a lattice decoder receiving a baseband signal 25, said lattice decoder comprising: un descodificador de enrejado que recibe una señal de banda 25 de base, dicho descodificador de enrejado comprendiendo: -8282 a first table for consultation for the reconstruction of signal constellation points divided into two symmetric groups of symbol points;and a second query table for cyclic lattice decoding of data plotted according to said signal constellation. -8282 una primera tabla para consulta para la reconstrucción de puntos de constelación de señal divididos en dos grupos simétricos de puntos de símbolo;y una segunda tabla para consulta para la descodificación 5 cíclica de enrejado de datos trazados de acuerdo con dicha constelación de señal.
- 3132,- Un método de codificación de corrección delantera de errores para una señal de datos trazada de acuerdo con una constelación de señal dada, dicho método comprende los pasos de:32.- A forward error correction coding method for a data signal plotted according to a given signal constellation, said method comprises the steps of: define a group of convolutional codes using an output table and a following state table, said output table defined according to the following steps: definir un grupo de códigos convolucionales utilizando una tabla de salida y una tabla de estado siguiente, dicha tabla de salida definida de acuerdo con los siguientes pasos: proveer filas de estado presente 2k y columnas de símbolo de entrada 2 en la tabla de salida;provide present status rows 2k and input symbol columns 2 in the output table;asignar valores a los puntos de dicha constelación de señal, dichos valores correspondiendo a los símbolos de salida, en donde assign values to the points of said signal constellation, said values corresponding to the output symbols, where -84¿rn: -84¿rn: los símbolos de salida son determinados como una función de símbolos de entrada y un valor de estado presente;the output symbols are determined as a function of input symbols and a present status value;divide the signal constellation into a first subgroup of output symbols 2n and a second subgroup of output symbols 2n;dividir la constelación de señal en un primer subgrupo de símbolos de salida 2n y un segundo subgrupo de símbolos de salida 2n;cargar las filas pares de dichas filas de estado presente con valores que corresponden a símbolos de salida del primer subgrupo, y loading the even rows of said present status rows with values corresponding to the output symbols of the first subgroup, and cargar las filas impares de dichas filas de estado presente con valores que corresponden a símbolos de salida del segundo subgrupo;loading the odd rows of said present status rows with values corresponding to output symbols of the second subgroup;and where said next state table is defined according to the following steps: y en donde dicha tabla de estado siguiente se define de acuerdo con los siguientes pasos: proveer filas de estado presente 2k y columnas de símbolo de entrada 2;provide present status rows 2k and input symbol columns 2;divide the following states into subgroups 2k’n, where each subgroup has following states 2n;and load a first of the present state rows with subsequent states of a second subgroup, and continue this load until the 2nd.k'n current status row is loaded with following states from 2nd.k‘n of the subgroups;dividir los estados siguientes en subgrupos 2k’n, en donde cada subgrupo tiene estados siguientes 2n;y cargar una primera de las filas de estado presente con estados siguientes de un segundo subgrupo, y continuar esta carga hasta que la 2a.k'n fila de estado presente sea cargado con estados siguientes del 2o.k‘n de los subgrupos;« implementar dichas tablas de salida y de estado siguiente dentro de un codificador, de manera que los símbolos de salida de dicho codificador son determinados con una función de símbolos de entrada a dicho codificador y el estado presente del codificador de «Implement said output and next status tables within an encoder, so that the output symbols of said encoder are determined with a function of input symbols to said encoder and the present status of the encoder. -85II ,ΕΙΙ i 1.ILW.. -85II, ΕΙΙ i 1.ILW .. according to the output table, and the transitions from the present state of the encoder to the next state of the encoder are in accordance with the following state table;and mapping said encoder output symbols to signals that acuerdo con la tabla de salida, y las transiciones del estado presente dei codificador al estado siguiente del codificador están de acuerdo con la tabla de estado siguiente;y trazar dichos símbolos de salida del codificador a señales que 5 they have phase and amplitude characteristics that correspond to respective output symbol points on the signal constellation. 5 tienen características de fase y de amplitud que corresponden a puntos de símbolo de salida respectivos sobre la constelación de señal.
- 3435. - A method for forward error correction encoding for a data signal plotted according to a 35. - Un método para la codificación de corrección delantera de errores para una señal de datos trazada de acuerdo con una 20 constelación de señal dada, dicho método comprende los pasos de:twenty given signal constellation, said method comprises the steps of: define an output symbol output table, said output table having status rows present and input symbol columns, where the output symbols are determined as a function of input symbols to an encoder and a state definir una tabla de salida de símbolos de salida, dicha tabla de salida teniendo filas de estado presente y columnas de símbolo de entrada, en donde los símbolos de salida son determinados como una función de símbolos de entrada a un codificador y un estado 25 present of said encoder, defining said output table that 25 presente de dicho codificador, definiendo dicha tabla de salida que -86J.LI.L, además comprende los pasos de. -86J.LI.L, also understands the steps of. asignar cada uno de los símbolos de salida a dichos puntos de la constelación de señal;assign each of the output symbols to said points of the signal constellation;dividing said points of the signal constellation into a first 5 subgroup of output symbols and a second subgroup of output symbols;dividir dichos puntos de la constelación de señal en un primer 5 subgrupo de símbolos de salida y un segundo subgrupo de símbolos de salida;cargar las filas pares de dichas filas de estado presente con símbolos de salida del primer subgrupo;y cargar las filas impares de dichas filas de estado presente con to símbolos de salida del segundo subgrupo;loading the even rows of said present status rows with output symbols from the first subgroup;and loading the odd rows of said present status rows with to output symbols from the second subgroup;define a next state table of next states for said encoder, said next state table having present state rows and input symbol columns, where the present states are defined as an input function of definir una tabla de estado siguiente de estados siguientes para dicho codificador, dicha tabla de estado siguiente teniendo filas de estado presente y columnas de símbolo de entrada, en donde los estados presentes son definidos como una función de entrada de 15 símbolos a dicho codificador y un estado presente del codificador, definiendo dicha tabla para consulta de estado siguiente que comprende además los pasos de: fifteen symbols to said encoder and a present status of the encoder, defining said table for the following status query, which also includes the steps of: cargar las primeras filas de dichas filas de estado presente con estados siguientes de dicho codificador, hasta que se llene una de load the first rows of said present status rows with subsequent states of that encoder, until one of 20 las primeras filas de estado y se hayan utilizado todos los valores de estado siguiente;y cargar las otras filas de dichas filas de estado presente con estados siguientes que son cíclicamente cambiados de dichos estados siguientes en cada una de las primeras filas de estado twenty the first status rows and all subsequent status values have been used;and loading the other rows of said present state rows with following states that are cyclically changed from said following states in each of the first state rows 25 present until all present status rows are filled;25 presente hasta que se llenan todas las filas de estado presente;-87ίΙ, Ι, Ι. -87ίΙ,Ι,Ι. implementar dichas tablas de salida y de estado siguiente dentro del codificador, de manera que los símbolos de salida del codificador son determinados por símbolos de entrada a dicho codificador y el estado presente del codificador de acuerdo con la implementing said output and next status tables within the encoder, so that the encoder output symbols are determined by input symbols to that encoder and the present status of the encoder according to the 5 output table, and transitions from the present state of said encoder to the next state of the encoder are made according to the following state table, and plotting the output symbols on signals having phase and amplitude characteristics corresponding to points on 5 tabla de salida, y se realizan las transiciones del estado presente de dicho codificador al estado siguiente del codificador de acuerdo con la tabla de estado siguiente, y trazar los símbolos de salida en señales que tienen características de fase y amplitud que corresponden a puntos sobre 10 said signal constellation. 10 dicha constelación de señal.
Independent claims19
226 paragraphs in 38 sections, as filed
(54) Tltle: CYCLIC TRELUS CODED MODULATION (57) Abetract
A universal method of trellis encoding sigáis mapped accoiding to any signal constellatíon fonrut involves constructing an encoder output table and a State transition table. The encoder output table defines the output symbol of an encoder given the input symbol and the present State of the encoder, while the State transition table defines the next State of the encoder given the present State of the encoder and the input applied to the encoder. The output table and the next State table are built with the objective of providing max! distanees between the branches of the trellis diagnun without any regards for the thift registe: ¡mptanentation of the code. Cyclic trellis-coóed modulation is an example of such codes wlthout feed-forward or feed-back thift register Implementatíons, and with equal or bel · ter performance than optimaT shift register trellis coded with 16 stares or leas. The cyclic trellis codes for both AWGN and Rayldgh fading applicatíons can be conitructed for any signa! constellation without resorting to exhaustive seaiches.
<img file="MX9703831A_D0001.tif" />
SUBSET TO SUBSET 8
OUTPUT TABLE SET PART1T10MNC FOR AWGN
-1111,1
CYCLIC CODED GRID MODULATION
FIELD OF THE INVENTION
The present invention relates to digital communication systems, and, in particular, forward error correction through coded lattice modulation.
BRIEF DESCRIPTION OF THE RELATED TECHNIQUE
In recent years, much of the search and development in the communication industry has been concentrated in the area of digital signal transmission. As is well known in the art, digital signal transmission typically involves data transmission with a carrier frequency. The carrier frequency is modulated through data, so that the width of the frequency band is occupied by the transmitted signal. The increasing demand for access to data and communication services has presented a significant characteristic regarding the available bandwidth. Furthermore, there is an ever increasing demand for increased data communication speeds in order to reduce data transmission time. An increase in the data rate typically results in an increased bandwidth requirement, placing an additional feature on the bandwidth.
-2111.1 available for signal transmission.
In an effort to increase data rates without sacrificing available bandwidth, a number of highly sophisticated coded modulation schemes have been developed. For example, Quadrature Amplitude Modulation (QAM) employs both amplitude and phase modulation in order to encode more data within a width of the frequency band. Another modulation technique involves multiple phase shift manipulation (MPSK) to increase data capacity within a given bandwidth. These high-level modulation schemes are very sensitive to channel damage. That is, information encoded through such techniques is usually lost during transmission due to noise, Rayleigh signal fading, and other factors, which are introduced into the communication medium.
In order to compensate for the increased sensitivity of these high-level modulation schemes, various forward error correction coding techniques are employed. One such error coding technique is lattice coded modulation. Lattice coded modulation is desirable as it combines modulation and error coding operations to provide effective error control coding without sacrificing power and bandwidth efficiency. Furthermore, lattice coding modulation schemes have been shown to work significantly better than their non-counterpart equivalents.
-31] 1.1 encoded with the same power and bandwidth efficiency. Lattice codes have been developed for many of the high-level, high-speed modulation schemes, including well-known 8-PSK modulation (16-square QAW modulation). However, older system designers have not considered the provision of a lattice coding technique, which applies to any phase and / or amplitude modulation scheme, as well as codes having various restriction lengths, while provides optimal or near optimal error performance.
Typically, a new group of "optimal" lattice codes must be found individually for each modulation scheme. "Optimum" lattice codes are typically found through algorithms that search for all possible lattice code structures that have simple feedback from forward feed change register implementations. Even a small change in the system parameters, such as the code constraint length, requires searching for an entirely new set of lattice codes.
SUMMARY OF THE INVENTION
The present invention provides a system and method for encoded lattice modulation and demodulation of phase and / or amplitude modulated signals, according to the constellations
-41J 1.1 ..
of signal and variable constraint lengths, while producing optimal or near-optimal error performance. The cyclic lattice coding method of the present invention can generate a family of lattice codes, the performance of which is better than or equal to the so-called "optimal codes" generated by other techniques. Generally, cyclic lattice codes do not have a forward feed or feedback change register implementation.
A method for cyclic lattice encoding of a data stream within an encoder is described. The data stream is to be traced according to a predetermined modulation scheme that has an associated signal constellation. The signal constellation has defined coordinate points that correspond to the phase and amplitude characteristics. The method comprises the step of defining an output symbol output table. The output table has status rows present and input symbol columns. The output symbols are determined as a function of symbol input to the encoder and an encoder present state. The method of the present invention further comprises the step of defining the output table, further comprising the substeps of assigning each of the output symbols to the points of the signal constellation; dividing the points of the signal constellation to a first subgroup of output symbols and a second subgroup of output symbols; load the even state rows with the output symbols of the first subgroup; and
-5lili load odd numbers from present state with exit symbols from second subgroup. The method further comprises the step of defining a next state table of the next states of the encoder. The following state table has present state rows and input symbol columns, where the following states are defined as a function of input of symbols to the encoder and a present state of the encoder. The method further comprises the step of defining the table for next state query, further comprising the substeps of loading the first of the present state rows with subsequent encoder states until at least a first present state row is full and all following status values have been used; and loading other present state rows with subsequent states that are cyclically changed from the following states in each of the first present state rows until all present state rows are filled. The method of the present invention further comprises the step of implementing the output and next status tables within the encoder, such that the encoder output symbols are determined by input symbols to the encoder and the encoder present state according With the output table, the transitions from the present state of the encoder to the next state of the encoder are performed according to the following state table. Finally, the method comprises the step of plotting the output symbols on signals that have phase and amplitude characteristics that
-6111.1. I correspond to points on the signal constellation.
In a preferred embodiment of the present invention, the coordinate points of the signal constellation are output symbols assigned according to natural tracing techniques when the predominant channel interference is Additive Gaussian Noise
White.
In another preferred embodiment, the coordinate points of the signal constellation are assigned to output symbols according to Gray's coding techniques when the predominant channel interference is a Rayleigh signal fading.
In another embodiment of the present invention, a method for cyclic lattice encoding of an input data stream with an encoder is described. The input data stream is to be traced according to a predetermined modulation scheme, which has an associated signal constellation. The signal constellation has defined coordinate points, which correspond to phase and amplitude characteristics of encoder output symbols. The encoder receives n inputs, corresponding to input values 2, and outputs n + 1, corresponding to output values 2<sup>n + 1</sup>. Encoder has possible states 2<sup>k</sup>. The method of the present invention comprises the steps of defining an output table that has status rows present 2<sup>k</sup> and input symbol columns 2<sup>n</sup>, where the encoder output symbols are determined as a function of symbols of
-7un. , ι encoder input and an encoder present state; define the output table that also includes the substeps of assigning values to the points of the signal constellation, where the values correspond to the output symbols; divide the signal constellation into a first subgroup of output symbols 2 and a second subgroup of output symbols 2<sup>n</sup>, where the first subgroup and the second subgroup are symmetric; load those that are pairs of the present status rows with values that correspond to the output symbols of the first subgroup; and load the odd ones from the present status rows with values that correspond to output symbols from the second subgroup. The method of the present invention further comprises the step of defining a next state table of a plurality of next states, wherein the next state table has present state rows
2<sup>k</sup> and input symbol columns 2<sup>n</sup>. The next state of the encoder is determined as a function of the encoder input symbols and the present state of the encoder. The step of defining the following state table further comprises the sub-steps of dividing the following states into subgroups 2<sup>k</sup>'<sup>n</sup>, where each subgroup has following states 2<sup>n</sup>; and load a first of the present state rows with subsequent states of a first of the subgroups, and a second of the present state rows with subsequent states of a second of the subgroups, and continue this loading until the status row present 2a.<sup>k</sup>‘<sup>n</sup> is loaded with the following states of the 2nd.<sup>k</sup>'<sup>n</sup>
-8a from one of the subgroups. The method of the present invention further comprises the steps of implementing the output and next status tables within the encoder, so that output symbols are determined from the encoder as a function of input symbols to the encoder and the present status of the encoder. encoder according to the data table, and transitions from the present state of the encoder to the next state of the encoder are according to the following state table; and plotting the encoder output symbols on signals that have phase and amplitude characteristics that correspond to respective output symbol points on the signal constellation.
In a preferred embodiment of the present invention, the coordinate points of the signal constellation are output symbols assigned according to natural tracing techniques when the predominant channel interference is Additive Gaussian Noise
White.
In another preferred embodiment of the invention, the coordinate points of the signal constellation are assigned to output symbols according to Gray coding techniques when the predominant channel interference is a Rayleigh signal fading.
Another embodiment of the present invention requires a transmitter for a trellis coded, multilevel modulation communication system. The transmitter comprises a lattice cyclic encoder, which receives a sequence of
-9II11 data input symbols and outputs a sequence of encoded output symbols. The lattice cyclic encoder has a group of present states divided into subgroups. The encoder comprises a state transition table containing a plurality of following status values for the encoder. The following status values are defined based on the present status of the encoder and the input symbol. The next state values are assigned to each of the present state subgroups, so that the next state values for any present state subgroups are cyclically changed for successive members of any present state subgroups. A present state memory element connects to the table for state transition query and temporarily stores a next state value output through the table for state transition query. An encoder output query table connects to the present state memory element, which selects an output symbol based on the present state of the encoder and the currently received state of the input symbols. The present states and the output values are divided into two subgroups, so that the table for the output query produces a symbol that belongs to a first output subgroup, when it is in one of the present state subgroups, and produces a symbol it belongs to a second output subgroup when it is in the other of the present state subgroups. A signal tracer connects to the board to
-10II 1.1 output query, and trace table outputs for encoder output query to encoded output signals from the two symmetric signal constellations. Finally, a transmitter circuit transmits the encoded output signals over a communication medium.
In a preferred embodiment, the signal tracer maps, according to Gray's coding techniques. In another preferred embodiment, the signal tracer traces according to natural tracing techniques.
In another aspect, the apparatus of the present invention comprises a receiver for a lattice, coded, multilevel modulation communication system. The receiver comprises a lattice decoder, which receives a baseband signal. The lattice decoder comprises means for reconstructing a lattice structure defined by a table for state transition query, where a group of present states is divided into subgroups having successive members, and the following state values assigned to each of the present state subgroups, they are cyclically changed for successive members of the present state subgroup. The lattice decoder further comprises means for determining the input and output symbols associated with branches of the lattice structure as defined by a table for encoder output query. The present states and the output values are divided into two subgroups, so that
-11111.1.
the table for output query produces a symbol, which belongs to a first output subgroup when it is in one of the present status subgroups, and produces a symbol, which belongs to a second output subgroup when it is in e! another of the subgroups of present state. The decoder also includes a calculation circuit that determines the Euclidean distances between points on a phase / amplitude coordinate system that corresponds to received signals and points of a phase / amplitude signal constellation that corresponds to signals associated with branches in the structure. trellis. Finally, the lattice encoder comprises a comparator circuit, which selects the most likely path of the received signal in the lattice structure based on the determined Euclidean distances.
In a further embodiment of the present invention, a forward error correction coding method is described for a data signal plotted according to a given signal constellation. The method involves the steps of defining a family of convolutional codes. The convolutional code family is characterized in that the code family is not capable of being generated through an implementation of forward or feedback feed change register. The define step further comprises the substeps of establishing a next status value that corresponds to each present status / input value pair; set an output value that corresponds to each pair
-1211 1,1..
present status / input value; receive an input data symbol that corresponds to an input value; provide a value of *
output in response to receiving input heat, where the output heat is determined by the input value and the present state value, and the present state value is determined by the previous next state value; generate an output data symbol, where the output symbol is determined by the output value; and encoding a data signal to correspond to the output symbol as determined by a signal tracing scheme.
In accordance with a further aspect of the present invention, a method of encoding traced signals according to any signal constellation format comprises the steps of dividing the signal constellation points into two symmetric groups of symbol points, and data from cyclic lattice encoding to be plotted according to the signal constellation.
In a further aspect, the present invention comprises a data encoder, the data encoder comprises a lattice cyclic encoder and a transmitter coupled to the lattice cyclic encoder.
In yet another aspect, the present invention comprises a lattice encoder that can be implemented as a state machine or table memory for query or in programs (software), but which cannot be implemented as a change register. In one embodiment, the lattice cyclic encoder is such that it does not allow an implementation of
-13III. I change front feed. According to a further aspect, the lattice cyclic encoder is such that it does not allow an implementation of feedback shift register.
In a further embodiment, the present invention is a data encoder 5 for use in the data communication application, wherein a plurality of input data values are encoded, in lattice form, to form output data. The data encoder comprises an input and encoder circuit coupled to the input. The encoder circuit has a plurality of states present, and responds to the plurality of input data values at the input for transition to a next state. The following states correspond to each input which is cyclically changed by different ones of the present states. The encoder further comprises an output coupled to the encoder circuit. The output responds to the encoder circuit to generate output data.
A lattice encoder constructed in accordance with the teachings of the present invention, can be adapted so that lattice encoded data is plotted for signal constellations. The signal constellations can be established divided, so that each established division level results in a substantially increased minimum Euclidean distance between the points of the signal constellation. The lattice encoder can also be adapted to lattice encoded data to be plotted for constellations
-14111.1.
signals, which cannot be established, divided, so that each level of division established results in a substantially increased minimum Euclidean distance from three points in the signal constellation.
BRIEF DESCRIPTION OF THE DRAWINGS
Figures 1A and 1B are graphical representations of signal constellations corresponding to 16 square QAM signals and 16 star QAM signals, respectively.
Figure 2A is an illustrative convolutional encoder circuit.
Figure 2B is a state table describing the operation of the convolutional encoder of Figure 2A.
Figure 3 is a lattice state transition diagram representing the operation of the convolutional encoder circuit of Figure 2A.
Figures 4A-4C are 4-PSK signal constellations, which illustrate the method used to determine lattice path probabilities, according to Euclidean distances along a lattice diagram depicted in Figure 4D.
Figure 5 is a trellis fixing partition tree for a 4-PSK signal constellation.
Figure 6 is a schematic representation of a lattice coding tree, which graphically represents the space
-15mi: signal constellation t for a 16 QAM square signal constellation, conventionally encoded, at each lattice encoding level.
Figure 7 is a schematic representation of a lattice coding tree, which graphically represents the signal constellation space for a 16 QAM star constellation, conventionally encoded, at each lattice encoding level according to the method of the present invention.
Figure 8 is a simplified block diagram of a wireless communication system, which employs cyclic lattice error coding.
Figure 9 depicts an individual level setting division of an 8-PSK signal constellation encoded through natural encoding techniques.
Figure 10 depicts a 16 state 2/3 rate encoder output query table for any 8 level modulation scheme in an AWGN environment, which defines the encoder output value giving the present status of the encoder and the input applied to the encoder.
Figure 11 depicts an individual level binding split of an 8-PSK signal constellation encoded by Gray's encoding techniques.
Figure 12 depicts a 16-state 2/3 rate encoder output query table for any 8-level modulation scheme in a fading environment.
-16lili.
Rayleigh signal, which defines the encoder output value giving the present state of the encoder and the input applied to the encoder.
Figure 13 depicts a 16 state transition table for any 8 level modulation scheme, which defines the next state of the encoder by giving the present state of the encoder and the input to the encoder.
Figure 14 depicts an individual level setting division of a star encoded 16 QAM signal constellation through natural encoding.
Figure 15 depicts a 16 state 3/4 speed encoder output query table for any 16 level modulation scheme in an AWGN environment, which defines the encoder output value giving the present status of the encoder and the input applied to the encoder.
Figure 16 depicts an individual level setting division of a star QAM 16 signal constellation encoded using Gray encoding techniques.
Figure 17 depicts a table for encoder output query for any 16-level modulation scheme in a Rayleigh signal fading environment, which defines the encoder output value giving the present status of the encoder and the input applied to the encoder. .
Figure 18 represents a state transition table for any 16-level modulation scheme, which defines the
-17 a next state of the encoder giving the present state of the encoder and the input to the encoder.
Figure 19 represents a table for encoder output query in generalized form, which defines the encoder output value giving the present status of the encoder and the input applied to the encoder for any signal constellation and any code constraint length, for applications in an AWGN environment.
Figures 20A-20C represent a state transition table in general form, which defines the next state of the encoder by giving the present state of the encoder and the input to the encoder for any signal constellation and any code constraint length.
Figure 21 is a schematic block diagram showing the main structural and functional elements of a cyclic lattice encoder constructed in accordance with the teachings of the present invention.
Figure 22 represents a state transition table for any 8-level modulation scheme, which can be used to avoid catastrophic codes.
DETAILED DESCRIPTION OF THE INVENTION
Figures 1A and 1B graphically represent signal constellations for a 16 QAM square scheme and a 16 QAM scheme.
-18uiii
Star QAM, respectively. The signal constellations illustrated in Figures 1A and 1B are merely for illustration purposes to show different signal constellation formats such as can be commonly used in the art. The signal constellations illustrated in Figures 1A and 1B are represented in the form of a polar coordinate, where each point of the signal constellations represents the determined phase and amplitude of an information symbol. For example, a point marked “Q” in Figure 1B corresponds to a signal that has an amplitude defined as 1 and a phase of 45 °, while a point marked “P in Figure 1B corresponds to a signal that has an amplitude defined as 2, which has a phase of 90 °. For this particular 16-QAM constellation, the inner ring of signal points are amplitude points of value 1 and the outer ring of signal points are amplitude points of value 2.
Signal constellations are a convenient way to graphically illustrate encoded Binary data through various amplitude and phase modulation schemes. For example, as shown in Figures 1A and 1B, there is a binary 4-digit binary word (“symbol”) associated with each point in the 16-point signal constellations. This means that a detector is configured to assign a specific data word for a detected signal that has a given amplitude and phase. Thus, for example, in the 16-star QAM constellation of Figure 1B, when a detector (or decoder) detects a
-19l.IIl ..
signal that has an amplitude very close to 1, and which has a phase very close to 45 °, the detector will assign data word 0011 (decimal 3) to that signal. Similarly, when a detector detects a signal that has an amplitude very close to 2, and which has a phase very close to 90 °, the detector will assign data word 0101 (decimal 5) to that signal. The data assignments in Figures 1A and 1B are merely illustrative. Other assignments are possible, as will be evident from the following description.
To minimize the effects of Additive Gaussian Noise
Blank (AWGN) as well as the effects of Rayleigh signal fading and other calan imperfections, one or more error coding techniques are used in order to provide accurate data transmission and detection, especially when modulation schemes are employed of a very high standard.
CODED GRID MODULATION
Lattice Coding Modulation is a forward error correction coding technique, which is also well known in the art. Lattice codes are convolutional codes that are designed and refined according to a specific modulation scheme. A convolutional encoder encodes information symbols based on the input symbol present and the status of the encoder. The present state of the encoder is determined by the symbols previously entered
-20II 1.1 to encoder. That is, the encoded symbol is a function of the present input symbol and also of symbols that enter the encoder before the present input symbol. In this way, a vocoding encoder has memory.
Convolutional codes are typically implemented by registers and change points. The following state and encoder output are functions of the current state of the record or table for query (that is, the value of the binary digits currently stored within the record or table memory for query), and the input to the record to table for query.
Figure 2A and accompanying table 230, shown in Figure 2B, illustrate an illustrative embodiment of a convolutional encoder.
200 implemented through change registers, and the corresponding state table, encoder 200 is shown here simply to illustrate the operation and implementation of a convolutional encoder, and is not constructed as an implementation of the lattice encoder used accordingly with the present invention. Encoder 200 includes shift register memory units 205, 210, 215, as well as points 220, 225. An input of one binary digit is encoded to an output of two binary digits to provide a rate 1/2 encoding.
Assuming an initial state of 000 (i.e., register units 205, 210, 215 contain binary digit values of 0, 0, 0, respectively), and an input value of 0, the next state of encoder 200 is 000 (zero bit heat changes,
-2121 while zero value changes are output). Consequently, the value of the two binary digits in the output is 00. This is represented on the first line of status table 230 in Figure 2B. However, note that the present and next status columns only indicate two-digit binary values, since the last status binary digit is always changed and is not significant in determining the next status. Thus, when moving from state to state, encoder 200 can be considered to have four possible io states present and four possible following states, each with two-digit binary values. As another example, encoder 200 is assumed to be in the present state 10 (that is, the first two registers contain 1, 0). An input of 1 will move encoder 200 to a next state of 11 (that is, the first two registers contain 1, 1) and generate an output of 01 (decimal 1). This procedure is repeated as each successive binary digit enters encoder 200, so that a state diagram can be constructed, showing the possible state transitions of encoder 200 with the accompanying input and output values corresponding to those transitions.
Figure 3 is a state transition diagram indicating the possible state transitions of the encoder 200 of Figure 2, together with the input and output values corresponding to the possible transitions. Since the state transition diagram resembles a lattice, such diagrams usually
-22II.IJ, are called lattice diagrams, hence the name "lattice coding * '. Each point on the lattice diagram of Figure 3 represents a state of the encoder 200. The points on the same horizontal row correspond to the same state at different times. Points in the same vertical column represent different states at the same time (that is, within the duration of the same symbol). The ramifications between the points represent possible state transition paths. Thus, for example, there is a branch between state 01 lo and state 00, indicating that, given the appropriate input, encoder 200 can go from state 01 to state 00. Since there is no branching between states 01 and 11, nor is there any branching between states 01 and 01, it is not possible for encoder 200 to go from state 01 to either state 11 or
01 within a symbol duration.
The number of pairs along each of the branches illustrated in Figure 3 indicates the values (input, output) that correspond to a given branch. The first number represents the input that causes the transition, while the second number represents the output value that results from this transition.
As seen from the lattice diagram in Figure 3, the possible state transitions for encoder 200 are the same for each successive symbol. In this way, the same pattern is repeated over and over for the duration of each symbol.
-23lili
As an example, it is assumed that encoder 200 starts in state 0 (binary 00), represented by a point 300 in Figure 3. After application of an input value 1 to encoder 200, encoder 200 goes from state 0 to state 2 (binary 10), represented by a point 320, via a path 310. At the end of the transition, encoder 200 outputs a value 3 (binary 11). If the value of the next binary digit, applied to the input, is 0, then encoder 200 moves from state 2 to state 1, represented by a point 340, via path 330, while the output of encoder 200 assumes a value of 2. Finally, after applying an input binary digit of 0, encoder 200 moves from state 1 to state 0, represented by a point 360, via path 350. After entering state *
0, encoder 200 outputs a value of 3. Thus, in the example above, input binary digits 1-0-0 are encoded by encoder 200 to output binary digits 11-1011, or 3-2 -3 in decimal. At the same time, encoder 200 has been moved from state 0 to state 2, to state 1, and back to state
0.
VITERBI DECODIFICATION OF MAXIMUM PROBABILITY
As explained later, convocational encoding (and Viterbi decoding) is provided for a reduced number of errors detected at the receiver. Consider again the lattice diagram in Figure 3. For example, assume that a current of
-2411.1.1...
Three-digit binary data is appropriately encoded as 1110-11 by encoder 200, as described above. Also assume that the receiver wrongly detects the transmitted signal, such as 11-11-11. In order to determine what the original transmitted data is, the decoder makes a maximum probability decision based on the possible state transition paths, which the encoder 200 can take. Since the encoder is typically set to state 0 at initialization, the decoder assumes that the detected sequence of binary data digits started in state 0. The decoder then examines all paths that started in state 0 and ends in a status of three symbols after, as illustrated in Figure 3 for illustration purposes. For example, for an endpoint in state 0, at point 360, there are two possible paths, which the encoder could have taken: path 310, 330, 350, or path 370, 380, 390. Of course, all other three symbol duration paths were also examined to determine the probability that the detected sequence of binary digits followed these possible paths, but for simplicity, only paths from state 0 to state 0 are considered here,
In order to identify the most likely path, the decoder determines the probability that the detected data sequence was produced by the first path (eg, path 310, 330, 250), the probability that the data sequence
-2525 detected was generated by the second path (eg, path 370, 380, 390), and so on, until a probability was calculated for each possible path. The path that has the highest probability is then selected as the actual path according to either the hard or soft decision method described in detail below.
Typically, lattice decoding techniques calculate path probabilities based on Hamming or Euclidean distances between the detected signal and the signals generated by possible lattice paths. In accordance with the teachings of the present invention, Euclidean distances are used as the measurement of trajectory probability, as discussed in detail below. However, in order to provide a clearer understanding of the method of determining the probability of a possible lattice path, a brief discussion of the Hamming distance is also provided.
HAMMING DISTANCE (HARD DECISION DECODING)
Hamming distance is defined as the number of binary digits, by which two binary sequences differ. For example, the Hamming distance between binary words 110 and 101 is two, while the Hamming distance between binary words 101 and 011 is one, etc. based on a Hamming distance assessment of possible paths, the probability that a given path has generated a data sequence
-26II 1.J.
detected, can be determined as follows. Assuming that, as stated above, the sequence of detected data is 11-11-11 (with an appropriate sequence of 11-10-11), the possible paths are paths 310, 330, 350, and 370, 380,
390, the Hamming distance between the detected signal 11-11-11 and path 310, 330, 350 is 1. That is, since path 310 generates an output of 3 (11) path 330 generates an output of 2 (10), and path 350 generates an output of 3 (11), the binary sequence generated by path 310, 330, 350 is 11-10-11.
This sequence differs from the detected sequence 11-11-11 by a Hamming distance of 1. The Hamming distance between the detected signal 11-11-11 and the signal generated by path 370, 380, 390, is 6, since path 370, 380, 390 results in a binary output sequence of 00-00-00. Thus, it is much more likely that the detected sequence 11-11-11 was generated by path 310, 330, 350, than by path 370, 380, 390. Therefore, the sequence of input binary digits is more likely to be 1-0-0.
EUCLIDEAN DISTANCE (SOFT DECISION DECODING)
Another measure of the probability that a given path has generated a binary sequence is based on the Euclidean distance. Euclidean distance is the length of a straight line between points on a signal constellation, generally probability measurements based on Euclidean distances
-27II 1.1 ..
exhibit better accuracy than probability measurements based on Hamming distances.This is because probability measurements based on Euclidean distance take into account the phase information and amplitude of the received signal, which is discarded when uses a Hamming distance as a probability metric. For example, Figures 4A-4D illustrate a simple 4-PSK modulation signal constellation, having four defined points 400, 410, 420, 430, equidistant from the origin and corresponding to output values 00, 01, 10 and 11, io respectively. Suppose that a sequence of received data symbols are detected to have amplitude and phase values, which are represented by vectors r1-r3 in Figures 4A-4C. Using conventional Hamming decoding techniques, vectors r 1 - r3 could simply be approximated as data points 00, 10, and 00, respectively, so that valuable amplitude and phase information is lost around the sequence signal actually detected. According to Euclidean techniques, however, the phase and amplitude of the received signal are factored in determining the probability of trajectory.
As shown in Figure 4D, the probability that the signal detected by the lattice path represented by the faded line 450 has been generated is a function of reducing the sum of the squares of the Euclidean distances d01, d02, and d03 (represented in Figures 4A-4C), while the
-28u i; The probability that the detected signal was generated by the lattice path represented by the faded / dotted line 470 is a function of the sum of the squares of the Euclidean distances d31, d22, d33. The larger the sum of the squares of the Euclidean distances along a given path, the less likely that the path is one that generated the detected signal sequence. In this way, a more accurate estimate of the transmitted data sequence can be obtained.
It should be understood, of course, that as the number of points in the signal constellation (i.e. the number of possible output values) and the number of states in the lattice encoder increase, the number of possible paths trellis increases as well. In this way, for example, a 3/4 speed lattice encoder, which operates in conjunction with a 16-point constellation, will have 8 possible ramifications merging and drifting out of each state (represented by a point) in the transition diagram. trellis status. In these systems, the probability associated with each path that emerges at a state point is determined. Once these possibilities have been compared, the path with the highest probability is determined and the corresponding data bits in that path are selected as the decoded sequences.
-29III, I.
BLOCK AND SYMBOL DECODING METHODS BY
SYMBOL
Selection of a given path can be made according to block decision methods or symbol by symbol. In the case of a block decision, a predetermined number of received signals, which form a group (eg, 1,000 symbols) are fed into the decoder. The decoder then starts with the first signal and builds a lattice with associated metrics and path histories for the entire group of 1,000 symbols. The lattice transition path, which is very likely, is then selected as the path that generates the detected symbols. The data input, which has generated this path, is then determined as the sequence of decoded data. In the absence of uncorrected errors, this data stream must correspond to the data stream fed to the encoder on the transmitter side of the communication system. Then the procedure is repeated with the next block of symbols, and so on.
For symbol-by-symbol decisions, a predetermined number of received signals are fed to the decoder. For example, assume that 25 signals are fed to the decoder. Once symbol 25 enters, the lattice decoder determines which path was most likely. The input symbol, which generated the first branch of the most likely path, is then selected as the output
-30ll.IL from the decoder. The next received signal (eg, 26) is then fed to the decoder and another determination of the most likely path is made for the last 25 symbols (ie, excluding the first symbol). The input symbol, which generated the first branch of the most likely path (i.e. the path for the 25 most recently detected symbols), is then selected as the next decoder output. This procedure is performed symbol by symbol in real time, so that one symbol at a time is decoded for output as opposed to a full block of data at once.
MAXIMUM EUCLIDEAN DISTANCE IN GRID CODING
Gottfried Ungerboeck, in a document entitled “Channei Coding with Multilevel / Phase Signáis”, published in January 1982 in IEEE TRANSACTIONS ON INFORMATION THEORY, Vol. IT-28, No. 1 , and incorporated here by reference, argues that convolutional code error performance can be improved by designing maximum Euclidean distances between lattice paths, which arise within and outside the same state. This is accomplished by designing the convolutional coding scheme for the signal constellation of a given modulation technique, so that the coding and error modulation operations are essentially combined.
-3111 1,1.
Take as a simple example a 4PSK signal constellation, as shown in Figure 5. The possible outputs of the lattice encoder on the transmitter side are represented as four points, which are phase shifted between them through differences in 90 ° phase. In any lattice coding scheme, both the possible output values are considered, as represented in the signal constellation, as well as the lattice decoder states. In order to provide the maximum distinction between encoded signals, to allow for more accurate decoding, it is advantageous to ensure that transmissions to and from the same state differ greatly in their output values (in terms of their Euclidean distances). For example, the lattice diagram of Figure 3, which can, for example, describe state transitions of the 4-PSK signal constellation of Figure 5, has branches 370, 310 leaving the same state point 300. Note that the output value for the state transition branch 310 is 3, and the output value for the state transition branch 370 is 0. According to Ungerboeck's teaching, these two output values differ by the maximum Euclidean distance (that is, an Euclidean distance of Δ = 2 as depicted in Figure 5). In a similar way, state transitions that result from the same output values are assigned as transitions between two different states. Note, for example, that transition path 310, fa which results in a
-32Jl 11.
output value of 3 advances from state 00 to state 10, while a transition path 395, which also results in an output value of 3, advances from state 01 to state 00.
The Ungerboeck method in this way ensures good discrimination between encoded data signals.
The most common lattice coding method, according to Ungerboeck's teachings, is fixation division, of which a simple example is shown in Figure 5. By dividing the original 4-PSK signal into two groups of diametrically ίο opposite 2-PSK signals, based on the state of the lattice encoder, the Euclidean distance can be maintained between the outputs emerging towards or deviating out of the same state. Such fixation division diagrams are commonly referred to as lattice coding trees.
Figure 6 graphically depicts a lattice coding tree for fixing partitioning a more complicated 16 QAM square signal constellation by the Ungerboeck method, which is well known in the art. As shown in Figure 6, a complex signal constellation is divided into subgroups. It is a requirement of the Ungerboeck fixation division method that the Euclidean minimum distances measured between any of the points on the subgroup constellations exceed the Euclidean minimum distance between points on the constellation from which the subgroups are derived. In this way, for example, as shown in Figure 6, the minimum Euclidean distance between
-33II 11, any one of two points in the original constellation at the top of the trellis coding tree, is less than the Euclidean minimum distance between any of the constellation points shown in subgroups B<sub>or</sub> or B<sub>v</sub> In a similar way, the Euclidean minimum distances between any two points in the constellation subgroups Co and C2 is greater than the Euclidean minimum distance between any two points in the subgroup B<sub>or</sub> and so on. As detailed above, an increased Euclidean minimum distance between any two points in the signal constellation ensures that the probability of errors in similar encoder output sequences is minimized. The error performance of the coding scheme is a function of the minimum Euclidean distance between any of the two given paths. To reduce the probability of errors, the minimum Euclidean distance should be increased.
DIFFICULTY OF DIVISION OF SETTING OF CERTAIN
SIGNAL CONSTELLATIONS
Unlike the 16 square QAM signal constellation, the 16 star QAM signal constellation does not allow division into subgroups, so the minimum Euclidean distance between points is significantly increased for each division level. Figure 7 illustrates the difficulty of fixation-dividing the 16-star QAM signal constellation. For the first level of fixation division there is no difficulty; the constellation splits
-3411.1.1.
symmetrically, and the minimum Euclidean distance between the point on the first subgroup is considerably greater than the minimum Euclidean distance between the points on the original constellation. However, at the second level of fixation division, the minimum Euclidean distances are substantially equal to those of the first level of fixation division. Due to this feature of the 16-star QAM signal constellation, it has been thought that effective lattice encoding of a 16-star QAM signal is not possible using conventional Ungerboeck encoding techniques.
The present invention includes a specially designed lattice encoder / decoder within a transmit / receive communications system, which solves the problems associated with fixation division of the constellation of
16 Star QAM. The encoder / decoder is built to encode, in accordance with an inventive method called lattice cyclic encoding, which has been found to work advantageously for signal constellations such as a 16-star QAM signal constellation or any arbitrary signal constellation . The cyclic lattice coding is described below.
CYCLIC GRID CODING
Cyclic lattice coding according to the present invention involves an error coding method, which
-35¿11 I.
It can be adapted to the 16 star QAM signal constellation. Furthermore, cyclic lattice coding according to the present invention can be applied to modulation schemes with any signal constellation that can be divided into two symmetric subgroups. Additionally, it has been verified that an error performance of a system using cyclic lattice coding, along with a 16-level modulation scheme, is as good as or better than systems employing previously used Ungerboeck codes for lattice encoders. that have up to 16 states.
The main criterion for the design of cyclic lattice codes is to maximize the distance between the output signals on the branches of a lattice emerging into or out of the same state, and to have a regular coding structure, so that they can be Construct variable modulation and restriction length codes without extensive searching. Cyclic lattice codes have very predictable and regular distance profiles. Cyclic lattice codes are also systematic codes. That is, the first n of binary digits of the coded output symbol η + 1-binary digit, are identical to the corresponding n-binary symbol input to the encoder.
-36lili
CYCLE CODING COMMUNICATION SYSTEM,
SIMPLIFIED, GRILLED
Figure 8 depicts a simplified block diagram showing the main functional elements of a communication system 800, which employs cyclic lattice coding in accordance with the teachings of the present invention. As will be appreciated by those skilled in the art, the system 800 depicted in Figure 8 is highly simplified and does not show block interleaving elements, timing insert and detection elements, filtering elements, and other elements that are typically associated with digital communication systems. System 800 includes a lattice encoder 810, which mates with a transmitter 830. Transmitter 830 transmits radio frequency (RF) signals over an 840 antenna. The signals
RF are received via a communication channel through antenna 850, which passes the signals to a receiver 860. The receiver is connected to a cyclic lattice decoder 830.
During operation, the lattice cyclic coding system 800 receives data that is to be encoder. The data is then cyclically encoded within encoder 810 according to the method described with reference to Figures 1315, below. Once the data has been encoded, encoder 810 then plots the encoded data in the appropriate signal constellation by introducing the appropriate amplitude and phase variations in the signal, to encode the signal.
-3737 according to a particular modulation scheme (eg, 8-PSK, 16 QAM star, etc.). Once the signal is traced, the signal is communicated to transmitter 830, which transmits the signal over the communication channel via antenna 840. Antenna 850 receives the signal; receiver 860 detects the signal on the carrier and outputs the detected signal at the baseband level. Finally, the cyclic lattice decoder 8Z0 decodes the received baseband signal and outputs data that corresponds to the data input on the transmitter side.
CYCLIC GRID CODING METHOD
For cyclic lattice coding of a signal according to the present invention, the signal constellation is first divided into two groups. This is the same as dividing the possible encoder outputs into two groups of output values. The groups into which the output symbols are divided depend on the particular layout scheme. The layout design, which is used, depends on the particular application of the communication system. For applications involving mobile radio communications characterized by a Rician or Rayleigh signal fading, signal tracing, and therefore group division, is performed according to Gray coding. For cable applications, or any other application, where the primary channel damage is that of AWGN, the signal trace, and therefore group division, is performed according to a trace
-38111.1 natural.
The possible states of the encoder are also divided into a number of groups. The output and state division is easily represented in table form. Since a lattice code is completely determined by five factors (i.e., input, present state, next state, output, and signal trace), a lattice code can be fully represented by two tables, and a signal tracer. The first table represents the encoder output as a function of the encoder present state and the output applied to the encoder. The second table represents the next state of the encoder as a function of the present state of the encoder and the input applied to the encoder. The signal tracer determines the coordinates of the output symbols in the signal constellation. For clarity, since the lattice cyclic coding method is somewhat universal, the following description inductively continues with the presentation of specific examples followed by a summary of the universal method of the present invention.
CYCLE CODING PE GRILLE OF 16 STATES FOR
8-PSK SIGNALS ON AWGN
Figure 9 depicts a single-level, naturally plotted 8-PSK split signal constellation for AWGN applications. As stated above, applications where AWGN is the primary channel damage require that the output table be
-3939 defined according to a naturally traced signal constellation. In natural tracing, a reference point is chosen over the signal constellation and the signal constellation is assigned the symbol 0. The remaining signals are then numbered consecutively around the constellation.
The tables shown in Figures 10 and 13 define the 2/3 rate 16-state lattice cycle code for
8-PSK at AWGN. A generalized version of said encoder is shown below, and it is described in detail with reference to Figure 21. Figure 10 illustrates a table for encoder output query, which defines the encoder output value giving the present status of the encoder and input applied to the encoder. Figure 13 illustrates a table for next state query, which defines the next state of the encoder by giving the present state of the encoder and the input applied to the encoder. Since, in the present example, the encoder is a 2/3 rate encoder, there are two input binary digits and three output binary digits that correspond to four possible input values and 8 possible output values, as illustrated in Figure 10. Thus, for example, when an input of 2 (binary 10) is applied to a lattice cyclic encoder currently in state 9 (binary 1001), the encoder outputs a value of 5 (binary 101). That is, the encoder encodes the output symbol, so that the symbol is plotted on the point that has a value of 5 on the
-4011.1,1.
natural encoded 8-PSK signal constellation. Once the symbol corresponding to a value of 5 leaves the encoder, the encoder moves from state 9 to state 4, as represented in the table in Figure 13.
As stated above, the lattice cyclic coding method of the present invention is used to encode signals defined by the tables shown in Figures 10 and 13. First, the possible encoder output values are divided into two groups, in where the first group comprises all the output values of subgroup A (see Figure 9), and the second group comprises all the output values of subgroup B (Figure 9). In this way, according to natural tracing, the first group comprises all even output values and the second group comprises all odd output values. For each even present state value, an even output value is generated after the application of an input value, so that the input values in ascending order (i.e. 0, 1, 2, 3) generate values of pairs output in ascending order (i.e. 0, 2, 4, 6). In a similar way, for each odd present state value, an odd output value is generated after the application of an input value, so that the input values are in ascending order (i.e. 0, 1, 2, 3) generate odd output values in ascending order (i.e. 1, 3, 5, 7). This shape is carried through each of the present state values, as represented in Figure 10.
-4111.11,
16 STATE CYCLIC GRID CODING FOR
8-PSK SIGNALS IN RAYLEIGH SIGNAL FADING
Figure 11 depicts a single-level, split 8-PSK signal constellation with Gray-coded tracing for Rayleigh signal fading applications. As stated above, for wireless communications applications, the layout scheme is that of Gray's encoding. As is well known in the art, Gray coding is a method by which signal constellation points are assigned binary data values such as Euclidean distances between points in adjacent signal constellations that correspond to a distance of Hamming of one.
The tables shown in Figures 12 and 13 define the 16-state lattice cyclic coding, rate 2/3, for 8-PSK signals in Rayleigh signal fading. Figure 12 illustrates a table for encoder output query, which defines the encoder output value giving the present status of the encoder and the input applied to the encoder. Since, in the present example, the encoder is a 2/3 rate encoder, there are two input binary digits and three output binary digits that correspond to four possible input values and eight possible output values, as illustrated in Figure 12. Thus, for example, when an input of 2 (binary 10) is applied to a lattice cyclic encoder currently in state 9 (binary 1001), the encoder outputs a value of 4.
-4242 (binary 100). That is, the encoder encodes the output symbol, so that the symbol is plotted on the point that has a value of 4 on the 8-PSK signal constellation encoded by
Gray. Once the symbol corresponding to a value of 4 leaves the encoder, the encoder moves from state θ to state 4, as represented in the table in Figure 13.
As stated above, the lattice cyclic coding method of the present invention is used to encode signals as defined by the tables shown in Figures 12 and 13. First, the possible encoder output values are divided into two groups , where the first group comprises all the output values of subgroup A (see Figure 11), and the second group comprises all the output values of subgroup B (Figure 11). In this way, for even present states (that is, 0, 2, 4, ... 14), according to the path coded by Gray, an output value is generated after the application of an input value, of so that the input values in ascending order (i.e. 0, 1, 2, 3) generate the output values of subgroup A in ascending order (i.e. 0, 3, 5, 6). In a similar way, for each odd present state value, an output value is generated after the application of an input value, so that the input values are in ascending order (i.e. 0, 1, 2, 3 ) generate subgroup B output values in ascending order (i.e. 1, 2, 4, 7).
When the output value is generated by the encoder like
-4311.1,1..
defined by the table for output query from either of Figures 10 or 12 (as named by the specific application), the encoder goes to the next state as defined by the state transition, or the table for next state query from Figure 13. Although the shape of the table for output query depends on the specific application (i.e., either AWGN or Rayleigh signal fading applications), the following state query table in Figure 13 does not depend on the prevailing channel damage. The table in Figure 13 is defined by filling the rows in the next status table in ascending order until the last next status value is placed. Thus, in the table in Figure 13, the first row is filled from 0 to 3, the second row is filled from 4 to 7, the third row is filled from 8 to 11, and the fourth row is filled from 12 to 15. Then the whole pattern is repeated with one modification: each row is cyclically changed by one place, so that the last value in the row becomes the first, and the other values retain their order but are shifted to the right for a space. Once the 16 states have been used (i.e., the next four rows have been filled), the pattern repeats again, so that the last value is taken from the second group of four rows and placed in the first position , while each of the other values is changed by a place. This procedure is repeated until all the present status value rows have been defined. Once the table has been defined for the following status query, the table can be implemented
-44II.IJ ..
within an encoder, as described in detail below, through table read-only memories (ROMs) for consultation, programs (software), or other means requested by the particular application.
16 STATE CYCLIC GRID CODING FOR
16 QAM STAR SIGNALS IN AWGN
Figure 14 depicts a natural traced 16-star QAM signal constellation for AWGN applications. The following output and status tables to define a lattice cyclic encoder to encode a 16 star QAM signal in AWGN, are represented in Figures 15 and 18. The table shown in Figure 15 represents the output values as a function of the input and the present state values, while the table shown in Figure 18 presents the following state values as a function of the input and the values of present state.
In accordance with the teachings of the present invention, a 3/4 speed cyclic lattice encoder, for encoding a 16 star QAM signal into AWGN, divides the output values into two groups, as represented in the table in Figure 15. As is well known in the art, a 3/4 speed lattice encoder receives 3 input lines (corresponding to the 8 possible input values) and generates outputs on 4 lines (corresponding to the 16 possible output values) . For this particular embodiment of the present invention, it has been found that a 16 encoder
-45lili states is advantageous, so there are 16 present state values and 16 next state values. As shown in the table in Figure 15, each of the pairs present state values generates an output value from subgroup A (see Figure 14) after the application of an input value. Similarly, each of the odd present state values generates an output value from subgroup B (Figure 14) after application of the input value. In this way, according to the natural trace, for each even present state value, an even output value is generated after the application of an input value, so that the input values in ascending order (i.e. 0, 1, 2, ... 6, 7) generate even output values in ascending order (i.e. 0, 2, 4, ..., 12, 14). In a similar way, for each odd present state value, an odd output value is generated after the application of an input value, so that the input values are in ascending order (i.e. 0, 1, 2, .... 6, 7) generate odd output values in ascending order (i.e. 1, 3, 5, .... 13, 15). For example, if the lattice encoder is currently in state 7 (binary 0111) and an entry of 4 is applied (binary
0100), the output value produced by the encoder will be 9 (binary 1001).
-46LI.LL
16 STATE CYCLIC GRID CODING FOR
SIGNALS 16 QAM OF SIGNAL FADING STAR
FROM RAYLEIGH
Figure 16 depicts a single tier, split, 16-star QAM signal constellation with Gray-coded tracing for Rayleigh signal fading applications. The output and status tables below to define a lattice cyclic encoder to encode a 16 QAM star signal into the Rayleigh fading signal, are represented in Figures 17 and 18. The table shown in Figure 17 presents the output heats as a function of the input and present state values.
In accordance with the teachings of the present invention, a 3/4 speed cyclic lattice encoder for encoding a 16 QAM star signal fading Rayleigh signal divides the output values into two groups, as represented in the table in Figure 17. Each of the pairs present status values generates an output value from subgroup A (see Figure 17) after application of an input value. Similarly, each of the odd present state values generates an output value from subgroup B (Figure 17) after application of the input value. In this way, according to the Gray-coded plot, for each even state value, a subgroup A output value is generated after the application of an input value, so that the input values in order
-4747 ascending (i.e. 0, 1, 2, ... 6, 7) generate output values of subgroup A in ascending order (i.e. 0, 3, 5, 6, 9, 10, 12, 15) . In a similar way, for each odd present state value, an output value of subgroup B is generated after the application of an input value, so that the input values are in ascending order (i.e. 0, 1, 2, .... 6, 7) generate output values of subgroup B in ascending order (i.e. 1, 4, 7, 8, 11, 13, 14). Thus, for example, if the lattice encoder is currently in state 7 (binary 0111) and an io input of 4 (binary 0100) is applied, the output value produced by the encoder will be 8 (binary 1000).
The table in Figure 18 represents the following state of a 3/4 lattice cyclic encoder as a function of the input and present state values. Although the output table for the 16-star QAM signal constellation encoder depends on whether the communication system to be used is in an AWGN environment or a Rayleigh signal fading environment, the form of the table for next status query it does not change due to prevailing channel damage. As shown in Figure 18, the following status value is divided into multiple groups. That is, the first 8 next status values (0-7) are assigned, in order, to the first present status value, while the next 8 next status values (8-15) are assigned, in order, to the second state value present. The first 8 next status values are then assigned from
-4811.1,1..
again to the third present state value, but this time not in order from 0 to 7. Rather, the order is 7, 0, 1, 2, 3, 4, 5, 6. In this way, the next third status row is like the next next status row, but cyclically shifted to the right. This pattern is repeated between the fourth and second rows with 15 being changed to the first position, while 14 is changed to the last position in the row. Generally stated, each next status row takes the last value in the row immediately preceding the previous next status row and places this value in the first position, while changing the other values by one position. This procedure is repeated until a complete next state table is defined. Generally, the cyclic lattice codes of the present invention do not have a forward feed or feedback change register implementation. However, as is well known in the art, an encoder defined by the tables in Figures 15 or 17, and 18, can be implemented as a table for query, or some other input / output state machine circuit.
CYCLIC CODING PE GRILLED FOR ANY
SIGNAL CONSTELLATION
Previously, specific examples have been described detailing the cyclic lattice coding of the 8-PSK signal constellation and the 16-star QAM signal constellation. The following description sets out the general method used for
-49i! 1.1.
cyclic lattice encoding of plotted data in any signal constellation. As detailed, in the examples above, the form of the output lookup table for any lattice cyclically encoded signal constellation varies depending on the prevailing channel damage. Thus, if AWGN is the predominant damage, then the natural coding of the signal constellation will be used to determine the table for output query, whereas if Rayleigh signal fading is the predominant damage, then the coding will be used. of Gray of the signal constellation to determine the table for output query. The shape of the next status query table does not vary with the prevailing channel damage, so the shape of the next status query table will be the same for any application.
Given a lattice cyclic encoder, which receives n input binary digits at one time and encodes them at n + 1 output binary digits at one time, there are 2<sup>n</sup> possible input values and 2<sup>n + 1 </sup>possible output values. Furthermore, the number of lattice encoder states can generally be expressed as 2<sup>k</sup> states, where k can be any positive integer. Thus, according to this formulation, a lattice cyclic encoder can be represented by tables (such as those described above for 8-PSK and 16 star QAM signal constellations) having 2<sup>n</sup> input values, 2<sup>n + 1</sup> output values, and 2<sup>k</sup> present state and next state values. For the
-50i 11.1 both the output table and the following state table have 2<sup>k</sup> rows and 2<sup>n</sup> columns.
The first step in defining a generalized encoder output table is to divide the set of 2<sup>n + 1</sup> input values in two groups. The elements in each group will depend on whether the table is defined for AWGN applications or for Rayleigh signal fading applications. The following description is presented with reference to AWGN applications where the natural tracing of the signal constellation is used. A brief description of the generalized method for defining the output query table for Rayleigh signal fading applications is provided after the detailed description of the method for defining the output query table for AWGN applications.
For AWGN applications, the signal constellation is plotted according to the natural plot. (Once the signal constellation has been divided, along with "the natural path of the constellation, the first subgroup contains all the even output values and the second subgroup contains all the odd output values. The first group is then placed in ascending order (i.e. 0, 2, 4, ..., 2<sup>n + 1</sup>-4, 2<sup>n + 1</sup>-2) in all even rows of present state. The second group is placed in ascending order (i.e. 1, 3, 5, .... 2<sup>n + 1</sup>-3, 2<sup>n + 1</sup>-1) in all odd rows of present state. Said generalized output table is represented in Figure 19. The output table shown in 'a
Figure 19 can be, for example, implemented with an encoder
-51.1.1 ι.
cyclic lattice through a table for querying ROM, or a table for consulting programs (software), as will be described in detail later with reference to Figure 21.
If the table for output query is to be defined for Rayleigh signal fading applications, then the signal constellation is Gray encoded. The signal constellation is then divided into two symmetric subgroups, A and B. The elements of the output table for even present states are those of subgroup A in ascending order, while the elements of the output table of odd present states are those of subgroup B in ascending order.
The shape of the state transition table is the same for both AWGN applications and Rayleigh signal fading applications. Defining a state transition table, or next state, involves dividing the group of present state values by 2<sup>k</sup> in m present state groups, where m equals 2<sup>k</sup>/ 2 (i.e. m = 2<sup>k</sup>‘<sup>n</sup>, which is the relationship between the number of states and the number of input values). For the present example, only the case where m is greater than or equal to one is explained. In this way, the first present state group, SOl contains the present state values {0, m, 2m, ... (2<sup>n</sup>-1) m}, in the second group of present state, S1f contains the present state values {1, m + 1, 2m + 1 ..... (2<sup>n</sup>-1) m + 1}, and so on until the last group, S<sub>m</sub>.i, which contains the present state values {m-1, 2m-1, (2<sup>n</sup>-1) m + m-1}. For ease of illustration, Figures 20A-20C
-5211.Ϊ.Ι.
illustrate state transition tables for each of the S groups<sub>0</sub>-S<sub>m +</sub>i. However, it should be understood that the state transition tables presented in Figures 20A-20C, must be combined into a single state transition table, as represented in Figures 10 and 15, which can be implemented inside a cyclic lattice encoder through a table for query made by programs (software), a table for ROM query, or other input / output status circuit.
In the table presented in Sa Figure 20A, the rows of the state transition table correspond to the values of the present state in the first group of present state So- · In the first row (that is, the row that corresponds to the present state 0), the first following status values 2<sup>n</sup> are assigned in ascending order from 0 to 2<sup>n</sup>-one. In the second row of the table in Figure 20A (ie the row that corresponds to the present state value, m), the same next state values are assigned for each input value. However, in row m, a cyclical change has been made, so that the last value in row 0 is placed in the first position in row m, while each of the remaining values are then placed in ascending order , from 0 to 2<sup>n</sup>-2, for the rest of row m. Another change is made for the next row in Figure 20A (i.e. the row that corresponds to the present status value 2m), so that the next status values in row 2m are 2<sup>n</sup>-2, 2<sup>n</sup>-1, 0, 1, 2, ..., 2<sup>n</sup>-3. In this way, a cyclical change is made in each row of Figure 20A (that is, each value, m,
-53di.i.
state value) until the last state value in group S is reached<sub>or</sub>.
A similar procedure is used to define the tables in Figures 20B and 20C. In the table presented in Figure 20B, the rows of the state transition table correspond to the values of state present in the second group of state present, Si . In the first row (that is, the row that corresponds to the present state 1), the second next state values 2<sup>n</sup> are assigned in ascending order of 2<sup>n</sup> to 2<sup>n + 1</sup>-one. In the second row of the table in Figure 20B (that is, the row that corresponds to the present status value m + 1), the same next status values are assigned for each input value. However, in row m + 1, a cyclical change has been made, so that the last value in row 1 is placed in the first position in row m + 1, while each of the remaining values are placed then in ascending order of 2<sup>n</sup> to 2<sup>n + 1</sup>-2, for the rest of row m + 1. Another change is made for the next row in Figure 20B (that is, the row that corresponds to the present state value 2m + 1), so that the state values present in row 2m + 1 are 2<sup>n + 1</sup>-2, 2<sup>n + 1</sup>-1, 2, 2<sup>n + 1</sup> + 1, 2<sup>n + 1</sup> + 2, .... 2<sup>n + 1</sup>-3. In this way, a cyclical change is made for each row in Figure 20B (ie, each present state value, m) until the last present state value in the Si group is reached.
Figure 20C illustrates a table that generally defines the state transitions for the group, i, of the state values.
-54JII.
present, YES. In the first row (that is, the row that corresponds to the present state, i), the following state values i + 1 2<sup>n</sup> are assigned in ascending order of 2<sup>n + l + 1</sup> to 2<sup>n +</sup>-i. In the second row of the table in Figure 20C (that is, the row that corresponds to the present state value m + i), the same values are assigned for each input value. However, in row m + i, a cyclical change has been made so that the last value in row i is placed in the first position in row m + i, while each of the remaining values are then placed in ascending order of 2<sup>n +, + 1</sup> to 2<sup>n + l</sup>-2, for the rest of row m + i. Another change is made for the next row in Figure 20C (i.e. the row that corresponds to the present status value 2m + ¡), so that the next status values in row 2m + i are 2<sup>n + í</sup>-2, 2<sup>n + i</sup>-1, 2<sup>n +</sup>', 2<sup>n</sup>*'+1, 2<sup>n +</sup>’+2, 2<sup>+,</sup>-3. In this way, a cyclical change is made for each row in Figure 20C (ie, each present state value, m) until the last present state value in group S, is reached.
The above description of the construction of the state transition tables of Figures 20A-20C has assumed that the ratio between the number of encoder status values and the number of encoder input values is greater than or equal to one ( that is, m> = 1). If, however, there are more possible input values than encoder states, the above procedure should be followed for cyclic lattice encoding of the input data signal.
-55U.IL
The first present status row is populated by placing the next status values in ascending order, starting at the first input value column until all present status values have been placed. Since there are more input values than next status values, next status values will not fill the entire first row. Thus, the next status values are again placed in the first row in ascending order. This procedure is repeated until the entire first row is filled. Since the number of input and next state values can only be of a power of two, the entire group of next state values will set an even number of times in the first row of the state transition table, so that there is no leakage to the next row. Once the first row has been filled, the second row is defined by cyclically changing the first row. The third row is defined by making a cyclical change on the second row, etc., until all the rows have been filled within the table for state transition query.
In accordance with the above procedure, a complete next state table is constructed, which defines each next state value as a function of the input value and the present state value. According to this method, the built-in encoder output and status tables are sufficient to apply to any signal constellation. As indicated above, the codes generated by the method described above
-5656 lattice cyclic encoding has been found to have no forward feed change or feedback register implementation. Tables can be implemented within a cyclic convolutional encoder as tables for query, as described in detail later.
PROPERTIES OF CYCLIC GRID CODES
It will be appreciated by those skilled in the art that the signals encoded according to the technique described above have certain advantageous properties which provide optimal or near optimal discrimination between the signals leaving the lattice encoder 810.
For example, lattice state transition structures will have the minimum number of two branch paths for state transitions, which originate outside of one state and are interleaved to the same state. For example, the 16-star QAM signal, to which cyclic lattice coding was applied, will have only four state transition paths, which originate from the zero state and are sandwiched to the zero state within two transitions (i.e. , the paths from state 0 to state 0, and again to state 0, 0 to 2 back to 0, 0 to 4 back to 0, and 0 to 6 back to 0).
Another advantageous property of cyclic lattice codes is that they provide a maximum or near-maximum gap between outputs on state transition paths, which are
-5757 originate from one state and are interspersed with the same state.
An additional advantageous property of cyclic lattice codes is that such codes can be constructed in a very short time for signal constellations in virtually any shape. Typically, a cyclic lattice code can be constructed in minutes for most signal constellations, while conventional simulation techniques to generate lattice codes take weeks or months through iterative computer searches. Thus, the cyclic lattice coding technique of the present invention offers many significant advantages over previous systems and methods, which generate or employ lattice codes.
THE CYCLIC GRID ENCODER
Figure 21 is a schematic block diagram showing the main structural elements of the 810 general lattice cyclic encoder constructed in accordance with the teachings of the present invention. Encoder 810 includes a table for state transition query 1500, which may be, for example, manufactured from a ROM IC chip, or formed in programs (software) or other machine circuit system input / output status. A following state output from the table for state transition query
1500 it is connected to a memory element 1510 via a line 1505.
-58..i 1.1 ..
Memory element 1510 may, in one embodiment, be implemented as a series of D-rockers. The output of memory element 1510 connects to a present state input of the table for state transition query 1500 via a line 1515, and to a present state input of a table for output query 1520 via a line 1525. The output query table 1520 connects to a signal trace query table 1530 via a line 1535. The state transition query table 1500 and the output query table 1520 receive binary n-digit input symbols via lines 1540, 1545, respectively, while the output of the signal trace query table 1530 serves as the output of n + 1 binary digits of the lattice encoder 810.
During operation, the n-bit input symbol enters the table for state transition query 1500. In addition, the present state k-bit of the encoder, which is supplied by memory element 1510, is applied to the table current state input for state transition query 1500. Giving the present state k-bit and the input signal n-bit, the state transition table 1500 outputs a next state value on line 1505. The table for state transition query 1500 is implemented. a such that the next state value generated by the state transition query table 1500 is determined according to the next state tables of Figures 20A-20C.
-591.1, Ϊ 1 ..
The next status value enters memory element 1510, where the next status value is stored during an input cycle. That is, after the application of the next b-digit n-digit input signal, the following status value, which was applied to the input of memory element 1510, is passed to the output of memory element 1510. From such that the output of memory element 1510 corresponds to the present state of lattice encoder 810.
The state value present at the output of memory element 1510 is applied to the inputs of both the table for state transition query 1500 and the table for encoder output query 1520. The table for output query 1520 receives the status input present via line 1525 and input symbol via line 1545, and generates an encoded output symbol η + 1-bit. For applications in AWGN, the output table 1520 is implemented so that the output value generated by the table for output query 1520 is determined according to the output table in Figure 19. For Rayleigh signal fading applications , the output table will be determined by the particular signal constellation and the well known Gray coding method.
The output value is then applied to the signal trace query table 1530 via line 1535. The signal trace query table 1530 assigns each of the possible output values, 2<sup>n + 1</sup>, to a point on the point signal constellation
-60li.I11.
2<sup>n + 1</sup>, according to natural or Gray coding, depending on the application.
CYCLIC GRID DECODER
As will be appreciated by one skilled in the art, a decoder (eg, the decoder 870 in Figure 8) to decode encoded data through the encoder described above, can be easily realized as a Viterbi decoder. Conventional Viterbi decoders decode the received data stream according to the Viterbi soft decision decoding methods described above, giving the form of the table for output query 1520, the table for state transition query 1500, and the table for signal trace consultation 1530.
Briefly, lattice decoder 870 includes a memory circuit, which contains information from state transition table 1500 with reference to lattice branches (i.e. state transition paths), which are interleaved within and outside of each state. The decoder
870 it also includes a memory circuit containing information from the 1520 output lookup table with reference to the symbol pair (input, output) associated with each lattice branch. The 870 decoder also includes a circuit to calculate the decoding metric, which is the distances
Euclidean between received signals and output signals
-61U.1, .1., Associated with the lattice branches, as well as a comparator circuit to select the most likely calculated trajectory of the decoding metric. Of course, it must be understood that each of these circuits can be implemented through programs (software).
Prior to decoding, the received signal is converted to an amplitude and digital phase value, which is fed to decoder 870. Decoder 870 then determines the decoding metric associated with each status value as determined by the memory memory circuits. state transition and exit query table. This procedure is repeated for many symbols, and the corresponding metrics are accumulated for each state. A comparison is made between all possible states, as described above in the section entitled “Viterbi maximum probability decoding”. Finally, the most likely path or sequence of symbols is output through decoder 870.
CATASTROPHIC CODES
It will be appreciated by those of skill in the art that certain implementations of query table encoder encoders can result in catastrophic codes. In catastrophic codes, a finite sequence of errors in the received signal sequence can result in an indefinite sequence of decoding errors. A sign that a code
-62. JI] ,.
can result in a catastrophic encoder implementation, is that in a next state table, one present state moves to the same next state with a given output, while another present state moves to the same next state (i.e. remains in the same state) with the same given output. Take, for example, the state transition table in Figure 13. When the encoder is in state 0 and a zero input is applied to the encoder, the encoder is moved back to state 0 with an output of zero. Similarly, when the io encoder is in the present state 10 and a zero input is applied to the encoder, the encoder is moved back to state 10 with a zero output. In this way, it is possible that said implementation of the encoder query table could cause the encoder to be catastrophic.
In order to avoid catastrophic codes, a simple modification can be made to the table for state transition query. For example, the table in Figure 13 can be modified as shown in the table in Figure 22. As shown in Figure 22, the next status values for next status rows 10 and 14 have been triggered, so so that, after the application of a zero input, the present state 10 moves to the next state 9. In this way, catastrophic codes can be avoided with little or no significant degradation in error performance.
Since various modalities of the system have been described and
-63a.ii ;, method of the present invention, it should be understood that these modalities have been presented only by way of example, and are not intended to limit the scope of the present invention. Thus, the scope of the present invention should be defined only in accordance with the following claims and their equivalents.
-6464
Contents38
23 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19 Sheet 20 Sheet 21 Sheet 22 Sheet 23
14 members in 6 offices
Priority claims2
| Document | Office | Kind | Date |
|---|---|---|---|
| 34411194 | United States of America | A | |
| 9515388 | United States of America | W |
Members14
| Document | Office | Kind | |
|---|---|---|---|
| CA2203899A1 | Canada | A1 | |
| WO9617439A1 | World Intellectual Property Organization (WIPO) | A1 | |
| AU4503396A | Australia | A | |
| US5675590A | United States of America | A | |
| BR9509908A | Brazil | A | |
| MX9703831AThis record | Mexico | A | |
| US5784417A | United States of America | A | |
| US5907565A | United States of America | A | |
| US5931965A | United States of America | A | |
| US2002059551A1 | United States of America | A1 | |
| US6578173B2 | United States of America | B2 | |
| US6889356B1 | United States of America | B1 | |
| US2005254606A1 | United States of America | A1 | |
| US8037396B2 | United States of America | B2 |
Numbers
- Application
- 9703831
Titles2
- English
- CYCLIC TRELLIS CODED MODULATION.
- Spanish
- MODULACION CODIFICADA CICLICA DE ENREJADO.
Classification
- CPC, 5
- H04L1/006
- H03M13/235
- H03M13/25
- H03M13/256
- H04L27/3427
- IPC, 3
- H03M13 25
- H04L1 00
- H04L27 34