Está en la página 1de 56

Codificación de

canal: Codificación de la
forma de onda y secuencias
estructuradas Integrantes:
Marco Rodas
Juan Diego Armijos
Ismael Samaniego
Daniel Palacios
María Emilia Aguilar
Codificación de canal:
La codificación de canal puede darse de dos maneras: Codificación de la forma de onda y la codificación
mediante secuencias estructuradas o redundancia estructurada.

La primera busca que la entrada de datos no sea susceptible a errores en el proceso de detección a través de
una adecuación de la señal. La segunda añade redundancia estructurada a las secuencias de datos de entrada
utilizada para detección y corrección de errores.
01
Codificación
de la forma de
onda:
Codificación de la forma de onda:
Tiene por objeto transforma la forma de onda de la señal a fin de que en el proceso de detección sea más
inmune a los errores de transmisión. Es decir, transforma un conjunto de pulsos en otro conjunto mejorado, de
modo que cada una de las formas de onda así codificadas sea lo menos parecida posible a cualquier otra del
conjunto.

- Da lugar al agrupamiento de varios bits consecutivos de una secuencia, en un solo símbolo.


- El símbolo puede modular una portadora senoidal ya sea en amplitud, frecuencia o fase.
- Reduce el ancho de banda respecto al que sería necesario si no se hubiera codificado la forma de onda.
02 Codificación
medianre
secuencias
estructuradas:
Codificación mediante secuencias
estructuradas:
Es un método de codificación en el cual se detecta y controla o corrige los errores. Es decir, transforma las
secuencias de datos en “secuencias mejoradas” agregando redundancia, esto quiere decir que se agregarán
más bits a la información de entrada para que el receptor pueda detectar y corregir errores en la información
transmitida.
Categorías:
Codificación mediante
secuencias estructuradas:

Codificación de Codificación
Turbo Códigos
bloques convolucional
1. Codificación de bloques:
En la codificación de bloques, los símbolos de entrada al codificador de canal son representaciones de una
señal generada por un codificador de fuente. Estos símbolos pertenecen a un alfabeto con características
específicas.

Alfabeto: Secuencia ordenada de símbolos como los ocho del código octal

Características:
- Agregar redundancia a la señal.
- Detecta y corrige errores durante la transmisión.
- Mayor cantidad de bits por símbolo a la salida que a la entrada.
- Requiere un mayor ancho de banda o velocidad de transmisión.
2. Codificación Convolucional:
Tiene la capacidad de expandir el alfabeto sin aumentar el ancho de banda necesario.

Transmite más
símbolos en un Aumenta la
Corregir Eficiencia en la robustez contra
Codificación
errores. mismo ancho codificación. Convolucional
de banda. errores.

Codificación con memoria: Utiliza los bits anteriores para entregar el código.

•Integran la
Sistemáticos: información
original como
parte del código

• Son más robustos,


No no utilizan la
entrada original
sistemáticos: como parte de él.
2. Codificación Convolucional:
Los codificadores convolucionales son
implementados con registros de corrimiento lineal
donde la información es procesada en diferentes
estados con la ayuda de polinomios generadores
que arrojan el código.

M = 2 -> registros de corrimiento -> s1 y s2


k = 1 -> la entrada de la información
n = 2 -> salida del código
R = k/n -> tasa de codificación
3. Turbo Códigos:
Son códigos formados por la concatenación en paralelo de dos codificadores
convolucionales sistemáticos recursivos (RSC) separados por un entrelazador.

- Proporcionan a los códigos una mejor capacidad de corrección de errores de


códigos grandes.
- Mejor rendimiento.
- Pueden ser decodificados con algoritmos moderadamente complejos.
03
Tipos de
control de
error:
Tipos de control de error

Existen dos formas de realizar el control de error:


Detección de error y retransmisión: En este tipo se utiliza bits de paridad
para detectar el error, en este caso el receptor no trata de corregir el error, si
no simplemente realiza una petición de retransmisión.

Forward error correction (FEC): Este tipo de control solo requiere transmisión
en una sola dirección, los bits de paridad están diseñados para detectar y
corregir errores, no todos los errores pueden ser corregidos debido a
la capacidad del sistema de corregir estos errores.
Métodos de transmisión

Simplex

Half-Duplex

Full-Duplex
Solicitud automática de repetición
FEC
FEC se puede usar en los siguientes casos:
• Un canal inverso no está disponible o el retardo causado por ARQ es
demasiado.
• La estrategia de retransmisión no es conveniente.
• El número de errores y retransmisiones son excesivos.
04 Detección de
errores y
capacidad
de corrección:
Detección de errores y capacidad de
corrección.

• La teoría de la información y la codificación son fundamentales en la era


digital, facilitando la transmisión de datos con precisión.
• El objetivo de esta presentación es entender la importancia y los métodos
de detección y corrección de errores en las comunicaciones de datos.
Conceptos Básicos

1.Error en la transmisión de datos: Un error ocurre cuando los datos se alteran


durante la transmisión, lo que resulta en una discrepancia entre el mensaje enviado y
el mensaje recibido.

2.Detección y Corrección de Errores: Dos procesos esenciales en la comunicación


de datos.

•Detección de errores: Proceso de identificar si un error ha ocurrido en la transmisión


de datos.

•Corrección de errores: Proceso de identificar y corregir los errores detectados en la


transmisión de datos.
Diferencia entre la detección y la corrección de errores: Mientras que la detección de
errores se enfoca en identificar la presencia de errores, la corrección de errores va un
paso más allá para identificar y rectificar los errores detectados.
Tipos de errores en la comunicación de datos:
•Errores de bit único: Ocurren cuando solo un bit cambia debido a la alteración en la
transmisión.

•Errores de bits múltiples: Cuando más de un bit cambia en una transmisión de datos.

•Errores de ráfaga: Se producen cuando se altera una secuencia consecutiva de bits.

•Detección de Redundancia Cíclica (CRC): Se crea un polinomio para los datos y se calcula
el resto. En el receptor, se repite el proceso. Si los restos no coinciden, se ha producido un
error.
Técnicas de detección de errores:

• Paridad: Se agrega un bit de paridad al final de cada bloque de datos para hacer la
suma total de 1's par o impar. Si el recuento no coincide en la recepción, se detecta
un error.
• Checksum: Se suma el bloque de datos y se envía el resultado con los datos.
En el extremo receptor, si la suma de los datos recibidos no coincide con
el checksum, se ha producido un error.

Ventajas y desventajas de las técnicas de detección de errores:

• Paridad: Ventaja - Simple y fácil de implementar;


• Desventaja - Solo puede detectar un número impar de errores.
• Checksum: Ventaja - Puede detectar la mayoría de los errores;
• Desventaja - No puede detectar todos los errores, especialmente si la suma total es
correcta a pesar de los errores.
• CRC: Ventaja - Puede detectar errores de ráfaga y proporciona una alta fiabilidad;
• Desventaja - Más complejo y requiere más procesamiento que los otros
dos métodos.
Corrección de Errores
• Técnicas de corrección de errores:

• Códigos de Hamming: Esta técnica utiliza un conjunto de bits de paridad en


posiciones específicas en el bloque de datos para identificar y corregir un error
de bit único. Por ejemplo, en un código de Hamming (7,4), 4 bits son datos y 3
bits son bits de paridad.

• Códigos de Reed-Solomon: Estos códigos son capaces de detectar y corregir


múltiples errores de símbolo. Son útiles en situaciones donde los errores tienden
a ocurrir en ráfagas en lugar de en forma aislada, como en las transmisiones de
datos inalámbricas.
• Ventajas y desventajas de las técnicas de corrección de errores:

• Códigos de Hamming:

• Ventaja - Son simples y eficientes para corregir errores de bit único;

• Desventaja - No pueden manejar eficientemente errores de bits múltiples o errores de


ráfaga.

• Códigos de Reed-Solomon:

• Ventaja - Son capaces de corregir múltiples errores de símbolo, lo que los hace útiles
para una amplia variedad de aplicaciones, incluyendo en el almacenamiento de datos y
las comunicaciones inalámbricas;

• Desventaja - Son más complejos y computacionalmente intensivos en comparación con


los códigos de Hamming.
Capacidad de Corrección

1.Definición de la capacidad de corrección de errores:


Es el número máximo de errores que un código puede corregir en un bloque de datos.
Depende de la estructura del código y la longitud del bloque de datos.

1.El límite de Hamming y el límite de Singleton:

•Límite de Hamming: Proporciona una cota inferior en la distancia de Hamming que


cualquier código de corrección de errores puede tener para corregir cierto número de
errores. Se usa para determinar la eficiencia de un código de corrección de errores.
•Límite de Singleton: Proporciona una cota superior en la tasa de código para un código
de corrección de errores dado una distancia mínima y longitud de bloque. Se utiliza para
determinar el compromiso entre la tasa de código y la capacidad de corrección.

2.Relación entre la tasa de código, la capacidad de corrección y la longitud del bloque de


código:
La tasa de código es la proporción del número de bits de información en un bloque de
datos al número total de bits transmitidos (incluyendo bits de corrección de errores). La
longitud del bloque de código y la capacidad de corrección del código influyen en la tasa
de código. En general, a medida que la capacidad de corrección de errores aumenta, la
tasa de código disminuye debido a la necesidad de transmitir más bits de corrección de
errores.
Aplicaciones Prácticas de Técnicas de Detección y Corrección de Errores Mejoradas
con IA

1.Comunicaciones por satélite y móviles: La aplicación de la IA en códigos cíclicos ha


demostrado ser efectiva en las comunicaciones por satélite y móviles. La IA puede ayudar a
mejorar la eficiencia de la decodificación de códigos cíclicos, lo que resulta en una mayor
velocidad y fiabilidad de las comunicaciones.
Ejemplo - Qualcomm: Qualcomm ha aplicado IA en su decodificador de códigos de
corrección de errores en su línea de productos de chipsets Snapdragon. El decodificador
utiliza una red neuronal para mejorar la eficiencia de la decodificación de los códigos
cíclicos. Esto ha llevado a una mejora en la velocidad y fiabilidad de las comunicaciones.
Almacenamiento de datos:
Las técnicas de detección y corrección de errores mejoradas con IA también se han
utilizado en el campo del almacenamiento de datos. La IA puede optimizar la
decodificación de códigos cíclicos, mejorando así la eficiencia y la fiabilidad del
almacenamiento de datos.

Ejemplo - Amazon S3:


Amazon ha implementado IA en su servicio de almacenamiento en la nube, Amazon S3.
Utiliza una red neuronal para optimizar la decodificación de los códigos cíclicos utilizados
en el almacenamiento de datos. Esto ha mejorado la eficiencia y la fiabilidad del servicio.
Desafíos Actuales:

•Complejidad computacional: A medida que los códigos de corrección de errores se


vuelven más sofisticados para manejar una variedad de errores, la complejidad
computacional también aumenta. Esto puede llevar a un aumento en el tiempo de
decodificación y una mayor utilización de los recursos del sistema.

•Limitaciones de las técnicas actuales: Las técnicas actuales de detección y corrección


de errores tienen limitaciones. Por ejemplo, los códigos de Hamming solo pueden
corregir un error a la vez. Las técnicas más avanzadas, como los códigos de Reed-
Solomon, pueden corregir múltiples errores, pero son más complejas y requieren más
recursos de cálculo.

•Evolución de las tecnologías de comunicación: Con el advenimiento de nuevas


tecnologías de comunicación, como el 5G y más allá, los desafíos de detección y
corrección de errores también están evolucionando. Estos nuevos estándares de
comunicación requieren altas tasas de transferencia de datos y baja latencia, lo que
pone a prueba las técnicas existentes de detección y corrección de errores.
Visión de Futuro y Posibles Soluciones:

•Uso de la IA para mejorar las técnicas de detección y corrección de errores: La IA tiene


el potencial de mejorar las técnicas de detección y corrección de errores al optimizar los
algoritmos de decodificación, reducir la complejidad computacional y mejorar la eficiencia
de la corrección de errores. La IA puede ser entrenada para aprender a detectar y
corregir errores en formas más eficientes que las técnicas tradicionales.

•Investigación en nuevos códigos de corrección de errores: Existen esfuerzos de


investigación en curso para desarrollar nuevos códigos de corrección de errores que
puedan manejar una gama más amplia de errores y que sean menos complejos desde el
punto de vista computacional. Por ejemplo, los códigos polar y las técnicas de códigos
LDPC (Low-Density Parity-Check) están recibiendo mucha atención en este sentido.

•Desarrollo de estándares de comunicación futuros: A medida que las tecnologías de


comunicación evolucionan, también lo harán las técnicas de detección y corrección de
errores. Las futuras generaciones de estándares de comunicación tendrán que
considerar estos desafíos y posiblemente incorporar soluciones en su diseño.
Conclusiones

La detección y corrección de errores juega un papel crucial en


nuestras comunicaciones y sistemas de almacenamiento de datos. A
medida que avanzamos hacia un futuro cada vez más digital y
conectado, la necesidad de técnicas de detección y corrección de
errores eficientes y fiables solo aumentará. La IA presenta una
oportunidad prometedora para mejorar estas técnicas, pero también
plantea nuevos desafíos que debemos abordar. Al continuar nuestra
investigación y desarrollo en este campo, podemos esperar mejorar
aún más la integridad y la fiabilidad de nuestros sistemas de
información y comunicación.
Códigos Lineales de Bloques
Introducción

● Los códigos de bloques son aquellos en donde la suma de dos códigos resulta en un
tercero valido. Los datos que ingresan son segmentados en bloques de tamaño k, a
esos bits se les agrega bits redundantes llamados r a cada bloque. La suma de k+r
resulta en n, este es el código resultante.

● Una propiedad importante es el código de puros ceros que aparece en el


diccionario, este es el conjunto de posibles códigos que pueden generarse ya que
este, posteriormente, servirá para la detección de errores.
Construcción de las palabras codificadas

Para esto hay que tener ciertos conceptos en cuenta como los siguientes:
● El vector de mensaje m es un vector de dimensiones 1 x k.
● La matriz de generación se define como G con dimensiones k x n.
● El multiplicar m*G se obtiene la palabra codificada C de dimensiones 1 x n.
La matriz de generación está conformada por dos partes, la matriz
identidad y la matriz de paridad. Como ejemplo se muestra una matriz para
un código de bloques (n=6,k=3)
Construcción de las palabras codificadas

También hay que definir un vector m.

Esto genera mensajes diferentes, esto quiere decir que cunado se


multiplique m y G generaran 8 palabras de código distintas.

En la palabra codificada las 3 primeras columnas corresponden a los bits


de paridad mientras que las 3 ultimas son los bits de mensaje.
Peso y distancia Hamming

● El peso haming de una palabra codificada es el contar el numero de 1 que


tiene una palabra codificada. La distancia haming entre dos palabras
codificadas es igual al numero de elementos que difieren, esta distancia se
relaciona a la capacidad del código de corregir errores.
● La capacidad de corrección de errores t esta relacionada a la distancia
mínima y a su vez a la distancia haming, resulta que para obtener la
distancia mínima hay que obtener el peso haming de cada palabra de
código y la más pequeña es el dmin.
Peso y distancia Hamming
Decodificación

Para este proceso hay que hacer un opuesto de la matriz G, esta matriz fue
utilizada para la codificación y la matriz utilizada para realizar la
decodificación se la llama HT (transpuesta). Al multiplicar C*HT el resultado
debe ser un vector cero, esto quiere decir que el mensaje está perfectamente
codificado.

Con estas condiciones la matriz HT debe ser construida de n filas, r columnas


y de dos partes, una de identidad parecida a la identidad de G y una parte
de paridad que va a ser idéntica a G.
Decodificación

Si el vector C se llega a corromper con un vector de error [e] entonces la señal


resultante será un vector [r]=[C]+[e]. Al multiplicar [r] por [HT] se
obtiene:

La multiplicación del vector de error por la matriz HT genera el síndrome [S].


Si [r] pertenece al grupo de palabras de código validas entonces S será
igual a cero. Pero si [r] no pertenece entonces S dará una pista de donde
esta el error según la matriz HT, esta matriz debe tener todas sus filas
diferentes para poder detectar los errores de manera más precisa.
Sindrome
Códigos cíclicos
Introducción

Los códigos cíclicos son un tipo de códigos de corrección de errores utilizados en telecomunicaciones
y almacenamiento de datos. Estos códigos se caracterizan por tener una propiedad especial llamada
"propiedad cíclica", que les permite detectar y corregir errores de manera eficiente.

Un código cíclico se representa mediante un polinomio generador, que es un polinomio de grado n


utilizado para generar los bits de paridad del código. El polinomio generador tiene una propiedad
especial: si se toma cualquier secuencia de bits y se aplica una operación llamada "desplazamiento
cíclico" (cyclic shift), el resultado también es una secuencia de bits válida en el código. Esto significa
que el código cíclico es invariante bajo desplazamientos cíclicos.

La principal ventaja de los códigos cíclicos es su eficiencia en la detección y corrección de errores.


Utilizan la aritmética modular, específicamente la aritmética binaria en el caso de los códigos binarios,
para calcular los bits de paridad y detectar errores. También pueden corregir errores si la cantidad de
bits erróneos no excede cierto límite.
Códigos Cíclicos

● Son un tipo de códigos lineales más fáciles de implementar. Un código lineal cíclico cumple
las siguientes propiedades:
● 1) Linealidad: La suma de 2 palabras códigos es otra palabra código.
● 2)Desplazamiento cíclico: cualquier desplazamiento cíclico de una palabra código es otra
palabra código.
● 3)Los componentes de un vector de código Co, C1, C2, Cn-1, pueden ser tratadas como un
polinomio:
Estructura para codificar y decodificar en
códigos cíclicos.
Lo que esta a la salida de los
registros van hacer los bits de
paridad.

Un bit de paridad es un bit


adicional utilizado para detectar
errores en los datos durante la
transmisión o almacenamiento.
Se calcula en función de los bits
de datos y se utiliza para
comparar con la suma de los bits
de datos en el receptor y
determinar si se ha producido un
error.
Manejo de Polinomios

● Si construimos

Y por otra parte desplazamos cíclicamente a la derecha el vector C(X) llamándolo

Se puede demostrar:
Es decir, se consigue como el residuo al dividir

El polinomio será clave para construir códigos cíclicos.


Polinomios irreductibles

Para cada valor de n hay que factorizar el polinomio buscando factores irreductibles o irreducibles. Ejemplo. Si
queremos necesitamos el polinomio

Se observan 2 polinomios de orden 3 y uno de orden 1. Al seleccionar uno de esos tres polinomios estamos definiendo
r. Por ejemplo si se escoge entonces r=1, si en cambio se elije entonces r=3. Como n=7 estamos
diciendo que los únicos casos que resultaran cíclicos son (7,6) y (7,4).

Cabe destacar que tomar r=1, para cualquier valor de n, resultará en una codificación de paridad donde a n-1 bits se le
agrega 1 bit de paridad.
Como se construye los códigos cíclicos

● Se elige n, se descompone el polinomio y se toma alguno de sus polinomios


irreductibles. Eso fija el valor de r y se tendrá que el polinomio seleccionado lo llamaremos
g(x).
● Se multiplica el mensaje (escrito como polinomio) por
● Este resultado se divide entre g(x)
● El residuo de esta división nos dará los bits de paridad que colocaremos al lado de los del
mensaje. Esta será la palabra codificada.
Ejercicio práctico:
Ejemplo Circuito
● El codificador seria lo siguiente:
Aplicaciones
● Comunicaciones digitales: Los códigos cíclicos se utilizan en sistemas de comunicación para garantizar la integridad de los d atos transmitidos a
través de canales ruidosos. Proporcionan detección y corrección de errores para garantizar que los datos se entreguen de mane ra precisa y
confiable.

● Almacenamiento de datos: En sistemas de almacenamiento, como discos duros, unidades flash y tarjetas de memoria, se utilizan códigos cíclicos
para detectar y corregir errores. Ayudan a proteger los datos almacenados contra la corrupción y mejorar la confiabilidad y l a integridad de la
información.

● Redes de comunicación: En las redes de comunicación, como Ethernet, Wi-Fi, redes celulares, se utilizan códigos cíclicos para detectar errores
en los datos transmitidos. Por ejemplo, el código de detección de redundancia cíclica (CRC) se utiliza ampliamente en los enc abezados de los
paquetes de datos para verificar la integridad de la información recibida.

● Transmisión inalámbrica: En sistemas de transmisión inalámbrica, como la televisión digital y la telefonía móvil, los códigos cíclicos se utilizan
para garantizar una transmisión confiable de datos en presencia de ruido y interferencias. Ayudan a mejorar la calidad de la señal y reducir la tasa
de errores de transmisión.

● Memorias y almacenamiento de datos en computadoras: Los códigos cíclicos se utilizan en memorias de computadoras, como RAM y ROM, así
como en unidades de almacenamiento, como discos duros y SSDs. Ayudan a garantizar la integridad de los datos almacenados y la protección
contra errores causados por ruido, interferencias o fallas del hardware.
Codificación Convolucional

Utilizado desde 1970 en comunicaciones inalámbricas, así como


satelitales y utilizados ampliamente para la transmisión, estos son
codificaciones lineales con una distintiva estructura algebraica.

Son utilizados para la protección de la información y creación de


redundancias, esta codificación genera palabras de código a partir de
información anterior y actual.
Codificación Convolucional

● La figura a continuación servirá como referencia para entender el funcionamiento de estos


codificadores.
● Según la imagen anterior puede decirse que el codificador memoriza las secuencias L -1 de
bits anteriores a la actual lo cual representa un sistema con memoria. L-1 resulta ser el
orden de memoria y la relación k/n es la tasa o cadencia del codificador.

K: entrada de información/bits
N=salida de n bits. Depende de la cantidad
de sumadores.
L= Longitud limitada/obligada

La respuesta del codificador se determina por


la forma en la que cada uno calcula los bits n.
Codificación Convolucional
Secuencias Generadoras
● Estas se utilizan para construir la palabra de código , caracterizan la salida.
● Suponiendo un código convolucional [2 1 3] obtenido de la siguiente figura. En este
codificador cada bit de entrada se mapea en dos bits de salida. Si se lo analiza con un
instante de tiempo t tenemos que:

• N1 es la suma de los bits de entrada


en el instante t y t-2
• N2 es la suma de los bits de entrada
en los instantes t,t-1 y t-2
Codificación Convolucional
Secuencias Generadoras
Con las expresiones obtenidas anteriormente es posible obtener
las secuencias generadoras g1=[1 0 1] y g2=[1 1 1] las cuales
pueden expresarse como polinomios.

g_1 (X)=1+X^2
g_1 (X)=1+X+X^2

Con estos polinomios se puede calcular la palabra de código al


multiplicar la entrada por cada una de las secuencias generadoras.
Codificación Convolucional
Secuencias Generadoras
Suponiendo una entrada k=[1 1 0 0], se quiere obtener la palabra de código y para eso se calculan los
productos:
𝑛1 = 𝑘 𝑋 ∗ 𝑔1 𝑋 = 1 + 𝑋 ∗ 1 + 𝑋 2 = 1 + 𝑋 2 + 𝑋 + 𝑋 3
𝑛2 = 𝑘 𝑋 ∗ 𝑔2 𝑋 = 1 + 𝑋 ∗ 1 + 𝑋 + 𝑋 2 = 1 + 𝑋 + 𝑋 2 + 𝑋 + 𝑋 2 + 𝑋 3 = 1 + 2𝑋 + 2𝑋 2 + 𝑋 3
Como resultado se obtiene
𝑛1 = [1 1 1 1]
𝑛2 = [1 2 2 1]
Ya que estas salidas n1 y n2 son entregadas de forma secuencias se tiene la siguiente palabra de
código
𝑛 = [11 12 12 11]
Conclusiones
• La teoría de la información, desarrollada por Claude Shannon en la década de 1940,
proporciona un marco matemático para cuantificar la información y establecer límites teóricos
sobre la cantidad de información que se puede transmitir de manera confiable a través de un
canal de comunicación.
• La codificación eficiente es crucial para maximizar la capacidad de transmisión y minimizar los
errores en la comunicación. Las técnicas de codificación pueden incluir la compresión de
datos para reducir la cantidad de información necesaria para su representación o la corrección
de errores para garantizar una transmisión confiable a través de canales ruidosos.
• La codificación de canal se enfoca en la corrección o detección de errores durante la
transmisión de datos. Los códigos de corrección de errores, como los códigos de Hamming o
los códigos Reed-Solomon, añaden redundancia a los datos para permitir la recuperación de
errores en el receptor. Los códigos de detección de errores, como los códigos de paridad,
pueden detectar la presencia de errores, pero no pueden corregirlo
Bibliografía
1) (S/f-d). Unican.es. Recuperado el 14 de julio de 2023, de
https://personales.unican.es/perezvr/pdf/codificacion%20de%20canal.pdf
2) Sklar, B. Digital Communications: Fundamentals and Applications. Prentice-Hall International, Inc. 1988
3) Haykin, S. Digital Communications. John Wiley & Sons. 1988.
4) Atizapán de Zaragoza, Edo. Méx., noviembre de 2008.
5) BERROU C., GLAVIEUX A., THITIMAJSHIMA P., Near Shannon Limit error-Correcting Coding and
Decoding: Turbo Codes. IEEE Proceedings of the Int. Conf. On Communications, pp. 1064-1070,
Geneva, Switzerland, Mayo 1993.
6) Sklar B., “DigitalCommunications, Fundamentals and Applications”. Prentice Hall, PTR, Estados Unidos
de América, 2001.

También podría gustarte