Post on 16-Apr-2017
REPÚBLICA BOLIVARIANA DE VENEZUELAMINISTERIO POPULAR DE EDUCACIÓN SUPERIOR
UNIVERSIDAD FERMÍN TOROSEDE CABUDARE – EDO. LARA
DECANATO DE INGENIERÍA
COMUNICACIONES DIGITALES
Cabudare, Agosto de 2012
TEMA: CODIGOS DE CORRECCION Y DETECCION DE ERRORES
ASIGNATURA: COMUNICACIONES DIGITALES
Prof.: Ing. Juan MolinaIntegrantes:
Alejandro AdamesMaille Altuve
Milagros ÁlvarezYenny Navarro
CODIGOS DE CORRECCION Y DETECCION DE ERRORES
Código Gray. Código Hamming.
Código de Redundancia Cíclica Código Lineal de Bloques
COMUNICACIONES DIGITALES
INTRODUCCIÓN
INTRODUCCIÓN
El desarrollo de la electrónica, se ha constituido en uno de los más grandes sucesos de la época moderna y ha sido
fundamental para los grandes adelantos tecnológicos, en casi todos los campos del saber.
Las herramientas y conocimientos de electrónica digital son necesarios para el análisis, diseño e implementación de
circuitos y sistemas digitales, en especial con el almacenamiento, transformación y comunicación de la
información en forma digital. El hombre en su vida cotidiana trabaja desde el punto de
vista numérico con el sistema decimal y desde el punto de vista alfabético con un determinado idioma. Asimismo, la
computadora debido a su construcción, lo hace desde ambos puntos de vista con el sistema binario, utilizando una serie de
códigos que permiten su perfecto funcionamiento.
CODIGOS DE CORRECCION Y
DETECCION DE ERRORES
CÓDIGOS DE CORRECCIÓN DE ERRORES
Códigos de Corrección de errores: Se incluye suficiente información redundante en cada bloque de datos transmitido para que el receptor pueda
deducir lo que debió ser el carácter transmitido. Es mas utilizado en canales que causan muchos
errores, tales como enlaces inalámbricos, ya que una retransmisión pudiera presentar nuevamente
errores.
CÓDIGOS DE CORRECCIÓN DE ERRORES
La codificación para corregir errores es mas sofisticada que la codificación para detectar
errores.Su objetivo es descubrir y localizar los errores en la
transmisión. Una vez localizado, la correcciónes trivial: Se invierte el valor del bit. La
codificación de corrección de errores requiere una menor proporción de codificación que la detección del error. Se puede demostrar que para corregir
hasta n bits erróneos un esquema de codificación requiere el uso de frases codificadas preasignadas con una distancia Hamming de por lo menos 2n +
1.
CÓDIGOS DE CORRECCIÓN DE ERRORES
La función principal de las técnicas de control de errores es introducir redundancia controlada
permitiendo que los mensajes transmitidos que hayan sido corrompidos sean corregidos antes de ser procesados. Con esta redundancia controlada
sólo un subconjunto de todos los posibles mensajes (secuencias de bits) contiene mensajes válidos.
Esto quiere decir que si formamos secuencias de 7 bits, podremos recibir 27=128 secuencias distintas, pero los posibles mensajes transmitidos no serán
128 sino un subconjunto de ellos, luego si no hemos recibido una secuencia de 7 bits que coincida con uno de los posibles mensajes
transmitidos, habremos recibido una secuencia con errores.
CÓDIGOS DE DETECCIÓN DE ERRORES
Debido a los numerosos problemas a la hora de realizar la transmisión, es necesario utilizar
técnicas que permitan detectar y corregir los errores que se hayan producido. Estas técnicas se
basan siempre en la idea de añadir cierta información redundante a la información que desee
enviarse. A partir de ella el receptor puede determinar, de forma bastante fiable, si los bits recibidos corresponden realmente a los enviado.
CÓDIGOS DE DETECCIÓN DE ERRORES
Códigos de Detección de errores: Se incluye suficiente redundancia para permitir que el
receptor sepa que ha ocurrido un error (pero no qué error) y entonces solicite una retransmisión. Es
mas factible utilizarlo en canales que son altamente confiables, como los de fibra, ya que
simplemente se retransmiten los bloques defectuosos que surgen ocasionalmente.
CODIGO GRAY
CODIGO GRAY
El código Gray es un sistema de numeración binario en el que dos valores sucesivos difieren solamente en uno de sus dígitos, es por ello que este sistema fue diseñado originalmente para prevenir señales
ilegítimas de los switches electromecánicos. En el presente es usado para facilitar la corrección de errores en los sistemas de comunicaciones, tales como algunos
sistemas de televisión por cable y la televisión digital terrestre, también se sigue empleando para el diseño los mapas de Karnaugh, los cuales son, a
su vez, utilizados en la implementación de circuitos combinacionales y circuitos
secuenciales.
CODIGO GRAYResulta oportuno señalar que utilizando el código Gray es posible resolver el problema de las Torres de Hanói, además puede incluso formar un ciclo
hamiltoniano o un hipercubo, en el que cada bit se puede ver como una
dimensión. Convenientemente gracias a las propiedades de distancia de Hamming de los
códigos de Gray, es usado en ocasiones en algoritmos genéticos. Es por ello que las
computadoras antiguas indicaban posiciones abriendo y cerrando interruptores. Utilizando tres interruptores como entradas usando Base 2, estas
dos posiciones estarían una después de la otra:
... 011 100
CODIGO GRAY
Ahora bien, el problema con el código binario en base 2 es que con interruptores mecánicos, es
realmente difícil que todos los interruptores cambien al mismo tiempo. En la transición de los dos estados mostrados arriba, tres interruptores
cambian de sitio. En el lapso en el que los interruptores están cambiando, se pueden
presentar salidas de información espurias. Si las salidas mencionadas alimentan un circuito
secuencial, probablemente el sistema presentará un error en
entrada de datos. En consecuencia, el código gray resuelve este problema cambiando solamente un dígito a la vez, así que no existe este problema.
CODIGO GRAY
Su característica es que entre una combinación de dígitos y la siguiente, sea ésta anterior o posterior,
sólo hay una diferencia de un dígito.
CODIGO GRAY
Utilizando el código Gray es posible resolver el problema de las Torres de Hanói. Puede incluso formar un ciclo hamiltoniano o un hipercubo, en el que cada bit se puede ver como una dimensión.
Las Torres de Hanói es un rompecabezas o juego matemático inventado en 1883 por el matemático francés Éduard Lucas.1 Este solitario se trata de un juego de ocho discos de radio creciente que se apilan insertándose en una de las tres estacas de un tablero. El objetivo del juego es crear la pila en otra de las estacas siguiendo
unas ciertas reglas. El problema es muy conocido en la ciencia de la computación y aparece en muchos libros de texto como introducción
a la teoría de algoritmos.
CODIGO GRAY
Se sigue empleando para el diseño los mapas de Karnaugh, los cuales son, a su vez, utilizados en la
implementación de circuitos combinacionales y circuitos secuenciales.
CODIGO GRAY
El problema con el código binario en base 2 es que con interruptores mecánicos, es realmente difícil
que todos los interruptores cambien al mismo tiempo. En la transición de los dos estados
mostrados arriba, tres interruptores cambian de sitio.
CODIGO GRAY
En el lapso en el que los interruptores están cambiando, se pueden presentar salidas de información espurias. Si las salidas mencionadas alimentan un circuito secuencial,
probablemente el sistema presentará un error en entrada de datos. En consecuencia, el código gray resuelve este
problema cambiando solamente un dígito a la vez, así que no existe este problema:
CODIGO GRAY º BINARIO GRAY
0 0000 00001 0001 00012 0010 00113 0011 00104 0100 01105 0101 01116 0110 01017 0111 01008 1000 11009 1001 110110 1010 111111 1011 111012 1100 101013 1101 101114 1110 100115 1111 1000
La tabla siguiente es una lista del código Gray de cuatro bits para números decimales del 0 al 15.Los números binarios se muestran en la tabla como una referencia. Como los números binarios, el código Gray puede tener cualquier número de bits Note el cambio de bit único entre los números sucesivos del código Gray. Por ejemplo, yendo del decimal 3 al 4, el código Gray cambia de 0010 a 0110, mientras que el binario cambio de 0011 a 0100, un cambio de tres bits. El único cambio de bit se origina en el tercer bit de la derecha en el código Gray; los otros permanecen iguales.
CODIGO GRAY
CONVERSIÓN DE BINARIO A CÓDIGO GRAY
La conversión entre el código binario y el código Gray a veces es muy útil. Primeramente, mostraremos cómo convertir un número binario a un número de código Gray. Se aplican las
siguientes reglas: El bit más significativo (el más a la izquierda) en el código Gray es el mismo que el MSB correspondiente en el número
binario, Lleno de izquierda a derecha, sume cada par adyacente de
bits del código binario, para obtener el siguiente bit del código Gray. Descarte acarreos.
CODIGO GRAY
Ejemplo: Paso 1. El digito del código Gray más a la izquierda es el mismo
que el digito del código binario más a la izquierda.
Paso 2. Sume el bit de código binario más a la izquierda al bit adyacente.
Paso 3. Sume el siguiente par adyacente.
1 + 0 1 1 0 Binario
1 1 Gray
1 0 + 1 1 0 Binario1 1 1 Gray
1 0 1 1 0 Binario1 Gray
CODIGO GRAY
Ejemplo:
Paso 4. Sume el siguiente par adyacente y descarte el acarreo.
Paso 5. Sume el último par adyacente.
La conversión ha sido completada; el codeo Gray es 11101.
1 0 1 + 1 0 Binario1 1 1 0 Gray
1 0 1 1 +0 Binario1 1 1 0 1 Gray
CODIGO GRAY
CONVERSIÓN DE GRAY A BINARIOPara convertir de código Gray a Binario, se utiliza un método similar,
pero con algunas diferencias. Se aplican las siguientes reglas:· El bit más significativo (el más a la izquierda) es el código binario
es el mismo que el bit correspondiente en el código Gray.· Sume cada bit generado del código binario al bit del código Gray
en la siguiente posición adyacente. Descarte acarreos.
Ejemplo: Paso 1. El digito del código binario más a la izquierda es el mismo
que el digito del código Gray más a la izquierda.
1 1 0 1 1 Gray1 Binario
CODIGO GRAY
Ejemplo: Paso 2. Sume el último bit del código binario que se acaba de
generar al bit del código Gray en la siguiente posición. Descarte acarreos. (En negrilla bit que se suman).
Paso 3. Sume el último bit del código binario que se acaba de generar al bit del código Gray en la siguiente posición.
1 1 0 1 1 Gray1 0 Binario
1 1 0 1 1 Gray1 0 0 Binario
CODIGO GRAY
Ejemplo: Paso 4. Sume el último bit del código binario que se acaba de
generar al bit del código Gray en la siguiente posición.
Paso 5. Sume el último bit del código binario que se acaba de generar al bit del código Gray en la siguiente posición. Descarte
acarreos.
1 1 0 1 1 Gray1 0 0 1 Binario
1 1 0 1 1 Gray1 0 0 1 0 Binario
CODIGO HAMMING
CODIGO HAMMING
Es un algoritmo,(código de bloques) para detectar y corregir un bit erróneo dentro de una palabra binaria de datos.
Códigos Hamming están diseñados para tener una dmín=3, se pueden detectar errores en uno o en dos bits corregirlos, y
también corregir errores en un solo bit. Antes de comenzar el razonamiento para describir los códigos de Hamming es
necesario tener presente las siguientes definiciones:
Código binario: Es una representación unívoca de las cantidades, de tal forma que a cada una de éstas se le asigna
una combinación de símbolos binarios
Distancia entre dos representaciones válidas: cantidad de bits para pasar de una representación a otra.
CODIGO HAMMING
Distancia mínima de un código: mínima cantidad de bits que se debe cambiar para pasar de una representación válida a
otra. Bit de paridad El bit de paridad es aquel que hace que el dato tenga una paridad par ó impar. Ya que la paridad se
toma como:
Existen dos variantes del bit de paridad: el bit de paridad par y el bit de paridad impar.
Nro. de 1’s del dato + Bit de paridad
CODIGO HAMMING
El bit de paridad par es puesto como"1" si la cantidad de "unos" en un conjunto dado de bits es impar, haciendo de
este modo a la cantidad total de "unos" par.
El bit de paridad impar es puesto e n "1" si la cantidad de "unos" en un subconjunto dado de bits es par, haciendo de
este modo al total de "unos" impar
En base a estas definiciones se concluye que un código binario debe tener al menos la distancia mínima igual a 1
para garantizar que una combinación no represente a varias cantidades o valores
CODIGO HAMMING
Los códigos de Hamming usan puertas XOR para tres tareas diferentes: generador de paridad par, inversor programable y
detector de paridad par.
La puerta lógica OR-exclusiva, más conocida por su nombre en inglés XOR, realiza la función booleana A'B+AB'. Por su Tabla de Verdad, sabemos que un OR-EXCLUSIVO de dos entradas A y B da un" 1 " cuando ambas entradas son
iguales, y dá un "0" cuando ambas entradas son diferentes. Pero ahora veremos al OR-EXCLUSIVO desde otra perspectiva.
CODIGO HAMMING
Cuando ambas dos entradas A y B son iguales, la salida del OR-EXCLUSIVO es" 1 ", o sea cuando las dos entradas son
ambas “ 0" ó cuando las dos entradas son ambas " 1 ", o sea cuando la paridad de la palaba de entrada AB es par .
El OR-EXCLUSIVO es capaz de detectar la paridad en una palabra de dos bits, o sea un número par de "unos" cuando
hay "unos" en la palabra. ¿Podemos extender este concepto a una palabra binaria de tres bits? La respuesta es afirmativa, y para ello podemos seguir utilizando el mismo OR-EXCLUSIVO
de la siguiente manera
CODIGO HAMMING
Las entradas combinadas A y B cuando ambas solo están produciendo un "1" a la salida del OR-EXCLUSIVO del cual son entradas (o sea, cuando ambas A y B Son iguales).
CODIGO HAMMING
Esta salida de "1" del OR-EXCLUSIVO de arriba es la entrada al OR-EXCLUSIVO de abajo. Y cuando ambas entradas al OR-EXCLUSIVO inferior son iguales, la salida del OR-EXCLUSIVO que es a su vez la salida del circuito será "1", y en caso contrario la salida será "0". Un efecto curioso es que este circuito, el cual tiene una cantidad impar de entradas (tres entradas: A , B y C ), produce un "1" a su salida cuando la palabra binaria de entrada ABC es impar (o sea, cuando hay un número impar de "unos" a la entrada), y produce un "0" cuando la palabra binaria de entrada ABC es par. :Contrástese esto con el funcionamiento del OR-EXCLUSIVO de dos entradas, cuyo comportamiento es el reverso de esto. Si queremos que se produzca un "1" cuando la paridad de la palabra de entrada sea par (como ocurre con el OR-EXCLUSIVO de dos entradas), todo lo que tenemos que hacer es agregar un inversor lógico NOT a la salida del circuito. Así como construimos el circuito anterior usando tres bloques OR-EXCLUSIVO, podemos construir otro circuito que incorporando cuatro bloques OR-EXCLUSIVO
CODIGO HAMMING
CODIGO HAMMING
Usa distancia mínima m. Por cada entero m existe un código Hamming de 2m-1 bits que contiene m bits de paridad y 2m-1-m bits de información. Si se numeran las posiciones de los bits desde 1 hasta 2m-1, los bits en la posición 2k (0 ≤k≤m-
1), son los bits de paridad y los bits restantes son bits de información.
CODIGO HAMMING
Ejemplo Para una cadena de m=3 la palabra sería:
2m-1 = 23-1=8-1=7 Entonces:
La palabra consta de 7 bits.M=3 tiene 3 bits de paridad
Los 4 bits restantes son de informaciónTomando en cuenta que las posiciones de los bits se numeran
del 1 al 7 en este caso las potencias de 2 son los bits de paridad o chequeo.
CODIGO HAMMING
EJEMPLO: Supóngase que se transmite una palabra de código y se recibe una palabra y se recibe una palabra que no pertenece
al código y que es 1110101 ¿Cuál fue la palabra correcta transmitida?
Se chequea:C1 P3 P5 P71 1 1 Paridad ParC2 P3 P6 P70 1 1 1 Paridad ImparC4 P5 P6 P70 1 1 1 Paridad ImparPosición con error: C2+C4 = 2+4=6; “El error está en la posición 6 (P6).LA PALABRA CORRECTA ES: 1010101
CODIGO HAMMING
Usa distancia mínima m. Por cada entero m existe un código Hamming de 2m-1 bits
que contiene m bits de paridad y 2m-1-m bits de información. Si se numeran las posiciones de los bits desde 1 hasta 2m-1, los bits en la posición 2k (0 ≤k≤m-1), son los bits de paridad
y los bits restantes son bits de información.
Ejemplo Para una cadena de m=3 la palabra sería:
2m-1 = 23-1=8-1=7 Entonces:
La palabra consta de 7 bits.M=3 tiene 3 bits de paridad
Los 4 bits restantes son de informaciónTomando en cuenta que las posiciones de los bits se numeran
del 1 al 7 en este caso las potencias de 2 son los bits de paridad o chequeo.
CÓDIGO DE REDUNDANCIA CÍCLICA
CÓDIGO DE REDUNDANCIA CÍCLICA (CRC)
Mensajes de n bits se tratan como polinomios de grado n-1: 101 = x2 + 1.
El código de comprobación se obtiene dividiendo el polinomio del mensaje por un polinomio generador G => se halla el
resto y se le añade al mensaje. El mensaje recibido es correcto si el divisible por G. No se detecta el error cuando es
divisible por G.CRC-CCITT detecta:
Cualquier número impar de errores simplesTodos los errores dobles
Todas las ráfagas de 16 o menos bitsEl 99’997% de las ráfagas de 17 bits
El 99’998% de las ráfagas de 18 o más bits
CÓDIGO DE REDUNDANCIA CÍCLICA (CRC)
CODIFICACIÓN:
Las operaciones que realiza el equipo transmisor para calcular su CRC son:
• Añade tantos ceros por la derecha al mensaje original como el grado del polinomio generador.
• Divide el mensaje con los ceros incluidos entre el polinomio generador
• El resto que se obtiene de la división se suma al mensaje con los ceros incluidos
• Se envía el resultado obtenido• Estas operaciones generalmente son incorporadas en el hardware para que pueda ser calculado con mayor rapidez, pero en la teoría se utilizan los polinomios para facilitar los
cálculos.
CÓDIGO DE REDUNDANCIA CÍCLICA (CRC)
DECODIFICACIÓN:
La decodificación en los CRC se realiza dividiendo la palabra recibida (X(p)) entre el polinomio generador (G(p)).
• Se recibe la palabra.• Se calcula el residuo C(p).
• Si C(p)=0 No se detectan errores.• Si C(p) ≠0 La palabra recibida tiene errores detectables.
El residuo es distintivo de la posición del error.
PROPIEDADES DE G(p):
• G(p) no puede tener a p como factor común. ¿Por qué? • Porque de ser así, todas las palabras de código terminarían
en uno y ese bit no tendría valor.
CÓDIGO DE REDUNDANCIA CÍCLICA (CRC)
TEOREMA DE G(p):
Cualquier G(p) con más de un término detecta cualquier error simple.
Un error simple se representaría por 1 o por pi que evidentemente no es divisible entre cualquier polinomio de
más de un término. No existe polinomio con un número impar de términos que sea divisible entre (p + 1). Por lo tanto con
un G(p) que tenga a (p + 1) como factor común se pueden detectar la ocurrencia de cualquier combinación de errores
impares. Cualquier código cíclico generado por un polinomio de grado b, es capaz de detectar todas las ráfagas de
longitud b o menor L q.
CÓDIGO DE REDUNDANCIA CÍCLICA (CRC)
TEOREMA DE G(p):
Una ráfaga de largo q se representaría por E(p) = pi (pq-1 + pq-2+ ….+1) G(p) no tiene a p como factor común y además el segundo término es de grado q-1, no divisible entre G(p). Se dice que un polinomio G(p) pertenece un exponente “e”,
si “e” es el menor entero positivo para el cual (pe + 1) es divisible por G(p). Ahora, un código cíclico generado por G(p) es capaz de detectar errores simples y dobles si la longitud n
de las palabras codificadas es igual o menor que el exponente e al cual pertenece G(p), es decir, si n e.
CÓDIGO DE REDUNDANCIA CÍCLICA (CRC)
EJEMPLOS:
Se requiere transmitir 10011011. Polinomio generador G(x) = x3 + 1
Mensaje: 10011011Polinomio generador: 1001 (r=3)
Se añaden 3 bits 0 al final del mensaje: 10011011000Se divide x3 • M(x) entre G(x):
Se transmite 10011011010 (4DA16)
CÓDIGO DE REDUNDANCIA CÍCLICA (CRC)
EJEMPLOS:
Un ejemplo de polinomio generador usado normalmente en las redes WAN es:
g(x) = x16 + x12 + x5 + 1
CÓDIGO LINEAL DE BLOQUES
CÓDIGO LINEAL DE BLOQUES
Los códigos de bloque son técnicas utilizadas para transformar un conjunto de datos binarios “N” en otro un
poco más largo “K” donde se agregan unos bits de más para dar redundancia al código saliente K, donde (K>N). El número
de dígitos de comprobación o redundancia será M=K-N; donde M son la cantidad dígitos adicionados.
CÓDIGO LINEAL DE BLOQUES
El principio que se utiliza en los códigos de bloque consiste en estructurar los datos en bloques de longitud fija y añadir a
cada bloque un cierto número de bits llamados bits de redundancia.
Sólo ciertas combinaciones de bits son aceptables y forman una colección de palabras de código válidas.
CÓDIGO LINEAL DE BLOQUES
Cuando los datos se transmiten y llegan al receptor hay dos posibilidades:
• Que la palabra que se recibe sea una palabra de código válido.
• Que la palabra que se recibe no sea un código válido, en cuyo caso hay dos posibilidades:
• El receptor puede recrear el bloque original FEC (código auto corrector).
• El receptor puede pedir que se retransmita el bloque ARQ(código de auto chequeo)
A un código bloque de longitud n y 2k palabras código se le llama código lineal (n,k) si y sólo si sus 2k palabras código
forman un subespacio k-dimensional.. El bloque código dado en la siguiente tabla es un código lineal (7,4). Se puede
comprobar fácilmente que la suma de dos palabras código en este código es también otra palabra código.
CÓDIGO LINEAL DE BLOQUES
CÓDIGO LINEAL DE BLOQUES
CÓDIGO LINEAL DE BLOQUES
La idea general de estos bloques es:
• Sustituir a los caracteres por un código binario (por ejemplo el código ASCII basa 2). él obtiene así una larga
cadena de 0 y de 1.• Recortar esta cadena en bloques de longitud dada, por
ejemplo 64 bites.• Calcular un bloque el “añadiendo” bit por bit a una clave.
• Desplazar algunos bites del bloque.• Reiniciar eventualmente una serie de veces la operación 3.
llama eso una ronda.
CÓDIGO LINEAL DE BLOQUES
En un código lineal (n,k) es posible encontrar k palabras de código
linealmente independientes, g0, g1,..., gk-1 tal que cada palabra
código v es una combinación lineal de esas k palabras código indep.:
v = u0g0 + u1g1 + ... + uk-1gk-1con ui= 0 ó 1, i >= 0 e i < k.
Representado matricialmente:
CÓDIGO LINEAL DE BLOQUES
Si u = (u0, u1,..., uk-1) es el mensaje a codificar, el código correspondiente se puede generar entonces como:
CÓDIGO LINEAL DE BLOQUESEjemplo, el código lineal (7,4) de la tabla anterior, tiene la
siguientematriz generadora:
Si el mensaje a codificar es u = (1 1 0 1) , el código resultantes es:
v = 1g0 + 1g1 + 0g2 + 1g3 =(1 1 0 1 0 0 0)+(0 1 1 0 1 0 0)+(1 0 1 0 0 0 1)
= (0 0 0 1 1 0 1)
CÓDIGO LINEAL DE BLOQUESUn codificador lineal sistemático divide la palabra código en
dos partes: la parte del mensaje de k bits de información y la parte de
redundancia de n-k bits de paridad (o comprobación de paridad), como el ejemplo de código (7,4)
CÓDIGO LINEAL DE BLOQUESUn codificador lineal sistemático divide la palabra código en
dos partes: la parte del mensaje de k bits de información y la parte de
redundancia de n-k bits de paridad (o comprobación de paridad), como el ejemplo de código (7,4)
CÓDIGO LINEAL DE BLOQUESUn código lineal (n,k) sistemático queda completamente
definidopor una matriz Gkxn de la siguiente forma:
Con pij = 0 ó 1, Ik matriz identidad de dimensión k,o bien G = [P Ik].
Así, la palabra codificada v = (v0 ,v1 ,v2 , ... ,vn-1) = ( u0, u1, ... , uk-1)G es el mensaje a codificar a la derecha, con vn-k+i = ui (con 0=i<k) y vj = u0p0j + u1p1j + ... + uk-1pk-1j a la
izquierda (con 0 j<n–k). Es decir los k primeros dígitos de código v por la derecha son los de información u0, u1,..., uk-1, y los n–k de redundancia son combinaciones lineales de los
de información.
CÓDIGO LINEAL DE BLOQUESPara el ejemplo:
Multiplicando se obtiene el código v como (también se puede representar
con compuertas lógicas):v0 = u0 + u2 + u3v1 = u0 + u1 + u2v2 = u1 + u2 + u3
v3 = u0v4 = u1v5 = u2v6 = u3
CÓDIGO LINEAL DE BLOQUESDECODIFICACIÓN:
Sea la matriz de comprobación de paridad de la siguiente forma:
H(n-k)xn= [In-k Pkx(n-k)T]Y dado que las filas de Gkxn son independientes u
ortogonales(ninguna se genera a partir de la suma modulo 2 de otras
dos), secumple que
GkxnH(n-k)xnT =0kx(n-k)Luego si el código v1xk se comprueba con HT se obtiene
v1xnH (n-k)xnT =u1xkGHT=01x(n-k) (*)Es decir cualquier palabra de código válida arroja un vector
de n-k0’s como chequeo de los bits de redundancia o paridad,
validandolos k bits de información en v. Si los bits de código son
afectadospor el canal de transmisión, como errores binarios, la
operación (*)no da solo 0’s.
CÓDIGO LINEAL DE BLOQUESDECODIFICACIÓN:
Por otra parte, si s¹0 parece posible resolver e a partir del sistema
de ecuaciones asociado %%", pero dado que hay n-k ecuaciones y n
incógnitas (n componentes de e), hay k grados de libertad para la
soluciones de e, por lo tanto hay 2k patrones de error que dan el
mismo síndrome. Para minimizar la probabilidad de error, se elige
al patrón de error más probable, o emín que en un canal BSC es el
que tiene el menor número de unos y equivale a elegir la menor
distancia de r a algún v. El mensaje decodificado así es v=r+emín
Si se ha producido un error simple, el síndrome corresponde a una
de las filas de HT, y la posición de la fila es la posición del error.
CÓDIGO LINEAL DE BLOQUESDECODIFICACIÓN:
Cálculo de síndrome para el ejemplo anterior:
PROPIEDADES DE DETECCIÓN Y CORRECCIÓN DE ERRORES DE UN
CÓDIGO BLOQUE.Propiedades detectoras.
La distancia de r a una palabra de código es el peso de e, luego
cuando el número de errores en e es menor que dmín (y el síndrome
no es 0) a partir del síndrome puede detectarse cualquier patrón de
error con dmín-1 o menos errores. También es posible detectar una
parte de los patrones de error con dmín o más errores, en total son 2n- 2k patrones de error detectables (que no dan síndrome 0) por lo tanto hay 2k-1 patrones de error que no
son detectables (que dan otra pal. de cod. – 0).A tasa de código constante rc, la proporción de errores no
detectables disminuye con n, es decir (2k-1)/(2n-2k)»1/2n(1-rc)
La capacidad correctora de un código bloque también es de 2n-2k
patrones de error (palabras no código). Detección, no detección,
corrección y no corrección de errores tienen una probabilidadasociada que depende de las características del código en
particular.
PROPIEDADES DE DETECCIÓN Y CORRECCIÓN DE ERRORES DE UN
CÓDIGO BLOQUE.Si el código se usa solo para detectar errores, no hay
detección si ecoincide con una palabra de código (excepto error 0), luego laprobabilidad de no detectar palabras erradas es la suma de
lasprob. de que esto ocurra, que para BSC es:
Con la prob. de error por bit de canal, y + el número de palabras
de código de peso Si el código tiene dmín, +será 0 para 0 << dmín
Para el ejemplo, los Adel código son (ver tabla, hay 2k-1 con e¹0):
A0=1, A1=A2=0, A3=A4=7, A5=A6=0, A7=1.La probabilidad de no detección de palabras erradas es
entonces:," & $ - "! ' !$ - " ' .
Si p=10-2, ,»7x10-6, es decir en promedio por cada millón depalabras transmitidas apenas hay 7 erradas que no son
detectadas.
PROPIEDADES DE DETECCIÓN Y CORRECCIÓN DE ERRORES DE UN
CÓDIGO BLOQUE.Propiedades correctoras.
Un código bloque con dmín corrige palabras erradas asociando la
secuencia recibida a la palabra de código válida más cercana,esto se puede hacer si el número de errores en e (o su peso)
esmenor que la mitad de dmín, parte entera, es decir cuando
hayt=[(dmín-1)/2] o menos errores. Si el código se usa solo paracorregir, hay error incorregible cuando hay más de t errores,entonces la probabilidad de error de detección es la suma de
lasprobabilidades de que esto ocurra. En un canal BSC con
probabilidad de error por bit de canal , la probabilidad de error
por palabra es:
Para el código de ejemplo, n=7, dmín=3 t=1. Si =10-2," » 2x10-3 (mucho mayor que la prob. de no detección)
PROPIEDADES DE DETECCIÓN Y CORRECCIÓN DE ERRORES DE UN
CÓDIGO BLOQUE.
CONCLUSIONES Como se sabe los factores que más afectan en el rendimiento
de las comunicaciones son los errores y, por supuesto el manejo de información repetida. Es por ello que la meta de la
codificación es producir códigos con propiedades de decodificabilidad única para una fuente dada con alfabeto y
un conjunto de prioridades. Un tratamiento general de códigos detectores y correctores de errores requiere que la
estructura del código sea modelada en una forma matemática relativamente específica. La forma más frecuente es
identificar las letras códigos con los elementos de un campo finito.
Para canales de transmisión existen teoremas de codificación los cuales responde a la existencia de un código que
permitirá la transmisión a cualquier rapidez menor que la capacidad del canal con probabilidad de error injustamente pequeña. Igualmente las propiedades de códigos detectores de errores sencillos, es decir, códigos que pueden ser usados para elevar la fiabilidad de la transmisión, permiten corregir algunos de los errores que ocurren, reduciendo de este modo
la fiabilidad de error.
G R A C I A S00111 10011 00001 00011 01001 00001 10100
P O R S U10001 10000 10011 10100 10110
A T E N C I O N
00001 10101 00101 01110 00011 01001 10000 01110