Você está na página 1de 18

Códigos de Detecção e Correcção de Erros

SISTEMAS DE COMUNICACCAO DE DADOS

Detecção e Correcção de Erros

 Características dos Erros


 Possíveis Abordagens
 Códigos de Detecção de Erros:
o Paridade, Checksum, CRC (Cyclic Redundancy Check)
 Códigos de Detecção e Correcção de Erros
o Correção de erros isolados: Código de Hamming
o Correção de erros em “rajada” (burst): BCH, ReedSolomon, Reed-Muller, Golay

Erros (1)
 Um sistema de computação funciona em função da transferência de informação desde o
nível de circuito integrados até aos níveis mais altos, como por exemplo gravação no
disco ou comunicação entre computadores.
 Está sujeito a diversos erros, como os causados por interferências electromagnéticas,
envelhecimento de componentes, curto-circuitos, ...

Erros (2)
Características dos erros 1.

1. São inevitáveis em qualquer sistema de comunicação real;


2. A distribuição dos erros não é homogénea: bits isolados ou em “rajadas” (bursts) de
erros, com 8 ou mais bits sucessivos errados;
3. Deve-se levar em conta o meio físico de transmissão de dados, para incluir maior ou
menor redundância na transmissão, a fim de garantir que a informação recebida seja
confiável.

Erros (3)
Possíveis abordagens no tratamento de erros:

1. Ignorar o erro;
2. Eco (transmissão à origem de reflexos dos dados recebidos);
3. Sinalizar o erro;
4. Detectar e solicitar a retransmissão em caso de erro;
5. Detectar e corrigir os erros na recepção de forma automática.

Preparado por: Sidonio Turra, docente da Cadeira


Códigos de Detecção e Correcção de Erros
SISTEMAS DE COMUNICACCAO DE DADOS

CÓDIGOS DE DETECÇÃO DE ERROS


Códigos de Detecção de Erros

 Detectar um erro é uma tarefa mais simples do que detectar e corrigir;


 Nem sempre é possível solicitar uma retransmissão;
 Todos os métodos utilizam a inserção de bits extras; (Esses bits podem ser obtidos
a partir da informação original e o receptor recalcula os bits extras)
 Um método ineficiente, mas muito utilizado par a detectar erros é a Paridade;
 Um método mais eficiente é o uso de um código polinomial ou CRC (Cyclic
Redundancy Check);

Detecção de Erros – Paridade (1)


 Paridade
o Consiste basicamente no acto do transmissor adicionar um bit de redundância
após um determinado número de bits (normalmente um byte):
o nº par de 1’s → paridade par
o nº impar de 1’s → paridade impar
 000, 011, 101, 110 → são mensagens transmitidas sem erro, tendo em conta que o
último bit é o de paridade

Detecção de Erros – Paridade (2)

 Exemplo1:
 caracter A no código ASCII é representado por 1000001
 O bit P de paridade é calculado e transmitido:1000001P → nº par de 1’s → P = 0
(paridade par ), logo transmite-se 1000001 0
 O receptor calcula a paridade da mensagem e compara-a com o bit P recebido: P =
paridade → transmissão correcta

Detecção de Erros – Paridade (4)


 Este processo pode ser vulnerável se houver mais do que um erro, permitindo assim que
este passe até ao destino sem ser identificado.
Exemplo: 11010010 – devolve valor 0 mas existe erro

Preparado por: Sidonio Turra, docente da Cadeira


Códigos de Detecção e Correcção de Erros
SISTEMAS DE COMUNICACCAO DE DADOS

 Usada em muitas aplicações de hardware (onde uma operação pode ser repetida em
caso de dificuldade, ou onde é útil a simples detecção de erros). Exemplo: Bus PCI e
SCSI.

Detecção de Erros – Checksum (1)


 Checksum
Consiste na transmissão de todas as palavras juntamente com o resultado da sua soma binária.
y Inclui o bit de transporte. y Inversão do valor dos bits do checksum.

 Usada em muitas aplicações de hardware (onde uma operação pode ser repetida em
caso de dificuldade, ou onde é útil a simples detecção de erros). Exemplo: Bus PCI e
SCSI.

Figura1: Detecção de Erros – Checksum

Detecção de Erros – Checksum (2)


o Exemplo: checksum de 2 palavras de 8 bits
o Dados iniciais: 00111101 00001101
o Checksum é: 01001010
o Checksum invertido: 10110101

Figura 2: Detecção de Erros – Checksum

Preparado por: Sidonio Turra, docente da Cadeira


Códigos de Detecção e Correcção de Erros
SISTEMAS DE COMUNICACCAO DE DADOS

Detecção de Erros – Checksum (3)


Dados enviados:
 00111101
 00001101
 10110101 (checksum – invertido)
 No receptor, as palavras são novamente som adas e comparadas com o checksum enviado:
 Se qualquer um dos dados transmitidos, incluindo o checksum, sofrerem algum erro então, a
soma do novo checksum com o checksum enviado, será diferente de 1.
0 1 0 0 1 0 1 0 → novo checksum (das palavras iniciais recebidas)
1 0 1 1 0 1 0 1 Æ checksum enviado 1 1 1 1 1 1 1 1 → sem erro

Detecção de Erros – Checksum (3)


Exemplo com erro:
00110001
00001101
0 0 1 1 0 1 1 0 → novo checksum
1 0 1 1 0 1 0 1 → checksum enviado
11101011≠11111111
→ valor recebido incorrectamente, com erro no 3º ou 5º bit (de qualquer uma das palavras
enviadas, incluindo o checksum)

Detecção de Erros – CRC (1)


CRC (Cyclic Redundancy Check)

 Esquema mais eficiente


 Emissor/receptor concordam num polinómio gerador G(x), em que quanto maior for o
seu grau maior será a capacidade de detecção de erros
 Neste polinómio tanto o bit de maior ordem quanto o de menor ordem devem ser iguais
a1
 Palavra inicial de k bits é representado por um polinómio de X de ordem k-1
o palavra inicial = 10110001
o polinómio = X 7 + X 5 + X 4 X 7+1

Preparado por: Sidonio Turra, docente da Cadeira


Códigos de Detecção e Correcção de Erros
SISTEMAS DE COMUNICACCAO DE DADOS

Detecção de Erros – CRC (2)


 Execução: o polinómio p(x) é representado pela palavra inicial somada aos bits de
paridade e deve ser divisível por G(x);
 receptor tenta dividir p(x) por G(x). Se houver resto ≠ 0, houve um erro de transmissão;
 Se houver um erro, em vez de se receber o polinómio T(x), recebe-se T(x)+E(x);
 Cada bit 1 em E(x) corresponde a um bit invertido;
 T(x)/G(x) é sempre zero, logo o resultado é E(x)/G(x).

Detecção de Erros – CRC (3)


 Exemplo:
o Mensagem a transmitir:10111011
o Polinómio gerador G(X) = x 4+x+1 Æ 10011
o Acrescenta-se à mensagem inicial, a quantidade de zeros equivalentes ao grau de G(x),
ficando:
10111011 0000
o Seguidamente divide-se a mensagem (ponto anterior) pelo polinómio gerador
 A divisão de dois polinómios (na sua forma binária) é feita recorrendo à
operação XOR (⊕)

ELEMENTOS DE UM SISTEMA DE DETEÇÃO E CORREÇÃO DE ERROS

Figura 3: Representação de Transceptor

Todos os sistemas de comunicações em pequenas ou altas proporções, estão sujeitos a


perturbações causadas pela ação do ruído presente no canal. Este efeito pode ocasionar a
ocorrência de erros nas mensagens que são recebidas por um sistema receptor. Genericamente

Preparado por: Sidonio Turra, docente da Cadeira


Códigos de Detecção e Correcção de Erros
SISTEMAS DE COMUNICACCAO DE DADOS

são chamados de erros aleatórios, quando este tipo de incidência ocorre de maneira esporádica
e independente; já quando ocorrem em surtos, ou seja, em sequência de vários erros
consecutivos, são denominados erros em rajadas (ALENCAR, 2007).

Como a previsão e eliminação total do ruído é algo praticamente impossível, os sistemas de


comunicação devem ser projetados com mecanismos que possibilitem a recuperação de dados
perdidos, durante o processo de transferência. Estes mecanismos, são baseados
primordialmente, na identificação de um quadro recebido com erro, para que em seguida entre
em execução as demais providências necessárias, que variarão de acordo com as
características e aplicações do sistema em questão (SOARES; LEMOS; COLCHER, 1995).

Desta forma, visando atingir uma maior confiabilidade do sistema, utiliza-se o bloco codificador
do canal, cuja a principal função é a aplicação de códigos de controle de erros, que são métodos
que buscam superar os efeitos de ruídos e interferências, presentes de forma degenerativa no
canal de transmissão. Estes códigos se originaram de técnicas baseadas na introdução de
redundância a mensagem a ser enviada, de forma que o receptor através de processamentos
lógicos consiga identificar e aplicar uma medida de tratamento, caso o sinal recebido estiver sido
corrompido (JESZENSKY, 2004; ROCHOL, 2012; YOUNG, 2006).

Quem primeiro se preocupou de forma sistemática com esse assunto foi Richard Wesley
Hamming (1915-1998). Em 1950, ele publicou, no Bell System Technical Journal de abril, um
trabalho com o título de: Error Detecting and Error Correcting Codes, que pode ser considerado a
primeira sistematização teórica sobre detecção e correção de erros (ROCHOL, 2012, p. 249).

A partir da década de 60, devido ao crescimento acelerado dos Sistemas de Comunicações


Digitais (SCD), o desenvolvimento de técnicas e parâmetros para o tratamento de erros tornou-
se um fator emergente (ROCHOL, 2012).

As técnicas empregadas para o controle de erros podem ser classificadas em dois grupos
principais: detecção e correção. Nas técnicas de correção de erros, é adicionado a mensagem
original uma quantidade suficiente de redundância, para que no receptor, o decodificador seja
capaz de identificar se a mensagem recebida foi corrompida a ponto de conter erros, e possa
corrigir estes erros e recuperar a mensagem original. Já os códigos baseados em técnicas de
detecção de erros, o codificador do canal adiciona redundância apenas para que o receptor
deduza se houve o erro, mas sem identificar qual, e em seguida, caso o sistema possua algum
mecanismo ARQ (Automatic-Repeat Request), solicite automaticamente uma retransmissão
(TENENBAUM, 2003; YOUNG, 2006).

Preparado por: Sidonio Turra, docente da Cadeira


Códigos de Detecção e Correcção de Erros
SISTEMAS DE COMUNICACCAO DE DADOS

Conforme Peterson e Davie (2004, p.70):

A princípio, parece que a correção é sempre melhor, pois com a detecção somos
forçados a abandonar a mensagem e, em geral, pedir a transmissão e outra cópia. Isso
utiliza largura de banda e pode introduzir latência enquanto se espera a retransmissão.
Porém, existe uma desvantagem na correção: ela geralmente exige um número maior
de bits redundantes para enviar um código de correção de erros tão forte (ou seja, capaz
de lidar com o mesmo intervalo de erros) quanto um código que só detecta erros.
Assim, embora a detecção de erro exija o envio de mais bits quando os erros são
encontrados, a correção de erro exige o envio demais bits o tempo todo.

Nesse contexto, podemos perceber que a decisão de optar entre a implementação de um


método de detecção ou correção de erros, é algo a ser analisado minunciosamente. Sendo
assim, deve-se levar em consideração a quantidade de bits redundantes, por bits de informação,
que se pretende enviar por quadro; além da probabilidade de erro que o sistema estará
suscetível, de acordo com suas características limitantes, dentre outros fatores.

Códigos Detectores de Erros

Eventualmente, durante a transmissão de dados em um SCD, devido a ações deturpadoras do


sinal, tais como ruído térmico ou interferências elétricas, são introduzidos erros nos quadros de
bits. Sendo assim, por mais que em alguns sistemas, como em enlaces ópticos, esta incidência
seja consideravelmente baixa, faz-se necessário a utilização de algum mecanismo detector de
erros, que opere juntamente com uma ação corretiva (PETERSON; DAVIE, 2004).

De acordo com Young (2006, p.379), “uma forma de superar os efeitos de ruído e interferência
no sistema de transmissão de dados, além de aumentar a potência transmitida, é detectar a
ocorrência de erros e obter uma retransmissão[...]”.

Nesse contexto, os métodos de detecção de erros utilizam-se do acréscimo de bits redundantes,


processados de forma lógica e incorporada a mensagem a ser enviada, de forma que o sistema
receptor ao receber a mensagem utilizará de um algoritmo que através destes dados adicionais,
poderá identificar se a mensagem foi recebida integra ou corrompida (PETERSON; DAVIE,
2004).

Já a retransmissão se resume em enviar uma notificação ao sistema emissor, identificando e


solicitando que o quadro adulterado seja retransmitido. Sendo assim, se o enlace em questão,
tiver sido instalado e configurado respeitando as limitações do sistema, e os erros de bits tiverem

Preparado por: Sidonio Turra, docente da Cadeira


Códigos de Detecção e Correcção de Erros
SISTEMAS DE COMUNICACCAO DE DADOS

ocorrendo de forma esporádica, será alta a probabilidade da cópia reenviada ser recebida livre
de erros (PETERSON; DAVIE, 2004).

É o que ocorre em um SCD constituído apenas por um código detector de erros, e que possua
um mecanismo ARQ, ou seja, quando o receptor detecta algum erro em um bloco de bits
recebido, este devolve uma mensagem curta ao sistema emissor; através de um percurso de
retorno, ou seja, um canal de realimentação; solicitando uma retransmissão do quadro de bits
em questão (HAYKIN; MOHER, 2008; YOUNG, 2006).

De acordo com Tenenbaum (2003, p. 205-206):

Em canais altamente confiáveis, como os de fibra, é mais econômico utilizar um código


de detecção de erros e simplesmente retransmitir o bloco defeituoso ocasional. Porém
em canais com enlaces sem fio que geram muitos erros, é melhor adicionar a cada bloco
redundância suficiente para que o receptor seja capaz de descobrir qual era o bloco
original, em vez de confiar em uma retransmissão, que pode ela própria conter erros.

Dessa forma, podemos constatar que os códigos corretores de erros, são mais indicados para
sistemas de comunicação em que erros sejam muito prováveis, pois apesar desses códigos
necessitarem de maior quantidade de bits de redundância e de processamento, se comparados
aos códigos detectores, a necessidade de retransmissão contínua poderia introduzir uma alta
latência, a ponto de inviabilizar o sistema. Já os códigos detectores de erro, juntamente com os
mecanismos ARQ, possuem melhor desempenho para enlaces cabeados, pois esses sistemas
apresentam baixas taxas de erro. Sendo assim, consequentemente, a necessidade de
retransmissão de uma mensagem corrompida seria eventualmente baixa (PATERSON; DAVIE,
2004; TENENBAUM, 2003).

De acordo com Rochol (2012, p.254), “Existem duas grandes classes de técnicas de detecção
de erros: as técnicas baseadas em paridade e as técnicas baseadas em códigos cíclicos”.
Dentro deste contexto, nas subseções a seguir, serão abordadas de forma breve as técnicas de
paridade linear e bidimensional, que são considerados métodos primitivos, porém pioneiros, que
ainda em tempos atuais são utilizados em alguns protocolos para a detecção de erros. Já no
Capítulo 4, serão explorados de forma aprofundada, os fundamentos e características funcionais
dos métodos de CRC, os quais são largamente empregados em protocolos de comunicação de
redes de computadores.

Paridade Unidimensional

Preparado por: Sidonio Turra, docente da Cadeira


Códigos de Detecção e Correcção de Erros
SISTEMAS DE COMUNICACCAO DE DADOS

De acordo com o contexto histórico, as técnicas de paridade foram as primeiras técnicas a serem
desenvolvidas e utilizadas em SCD. Sendo que devido sua simplicidade, ainda são largamente
utilizados em protocolos de comunicação baseados em caracteres, tais como os protocolos
BSC-1 e BSC-3 (Binary Sinchronous Communication) da IBM (ROCHOL, 2012).

O método de paridade unidimensional, baseia-se em acrescentar um único bit de redundância a


um bloco composto por n bits. Sendo que este bit deve ser escolhido e adicionado ao bloco, de
forma a obter um resultado par da soma da quantidade de caracteres 1 (caso o sistema opere
em paridade par); ou resultado ímpar (caso o sistema opere em paridade ímpar), como
demonstra a Figura 2 (SOARES; LEMOS; COLCHER, 1995).

Figura4: Paridade Par

Fonte: Elaborado pelo autor

Em SCD, pode-se entender como erro, quando o nível de consistência do ruído/interferência


presente no canal, se torna consideravelmente alto a ponto de distorcer o sinal recebido,
ocasionando a inversão de somente um ou vários bits. Neste contexto, conforme Kurose e Ross
(2006, p. 333):

A operação do receptor também é simples com único bit paridade. O receptor precisa apenas
contar quantos '1' há nos d +1 bits recebidos. Se, utilizando o esquema de paridade par, for
encontrado um número ímpar de bits e valor 1, o receptor saberá que ocorreu pelo menos um
erro de bit. Mais precisamente, ele saberá que ocorreu algum número ímpar de erros de bit.

A paridade unidimensional é um método bastante simples, com a capacidade de detectar todos


os erros em um determinado bloco, caso ocorram em quantidades ímpares. Porém, ao mesmo
tempo, baseia-se em um código relativamente fraco, pois caso ocorra algum erro, que inverta
uma quantidade par de bits, o receptor não teria a capacidade de detectá-lo. Sendo assim, em
um sistema suscetível a erros em rajadas, a probabilidade de detectar erros consistiria em
apenas 0,5, proporção que não é muito aceitável (TENENBAUM, 2003; YOUNG, 2006).

Paridade Bidimensional

Preparado por: Sidonio Turra, docente da Cadeira


Códigos de Detecção e Correcção de Erros
SISTEMAS DE COMUNICACCAO DE DADOS

A paridade bidimensional também se trata de um método simples, sendo esta, uma técnica
derivada da paridade de bloco único, contudo, possui melhor eficiência, devido sua maior
capacidade de detecção de erros.

A lógica estrutural aplicada neste método, pode ser melhor descrita por Tenenbaum (2003, p.
209), quando nos fala que:

As disparidades poderão ser consideravelmente melhoradas se cada bloco for enviado como
uma matriz retangular com n bits de largura e k bits de altura [...] Um bit de paridade é calculado
separadamente para cada coluna e afixado à matriz como sua última linha. Em seguida a matriz
é transmitida uma linha de cada vez.

A Figura 3, demostra de maneira simples, como pode ser interpretada a matriz de paridade
bidimensional, para o processamento dos bits de paridade, referentes ao bloco de verificação, o
qual é afixado como última linha da matriz. Do ponto de vista prático, primeiramente deve ser
processado o bit de paridade que será adicionado ao final de cada pacote, gerando uma última
coluna, denominada de verificação de redundância vertical (VRC - Vertical redundancy check).
Posteriormente são processados são calculados os bits de paridade para cada coluna, incluindo
os da coluna VRC, que integrarão um último pacote de verificação, geralmente intitulado de
verificação de redundância longitudinal (LRC- Longitudinal redundancy check), ou paridade
horizontal. Após tais procedimentos, os dados já estarão codificados e prontos para envio
(YOUNG, 2006).

Figura 5: Matriz de paridade par bidimensional

Fonte: Elaborado pelo autor

Preparado por: Sidonio Turra, docente da Cadeira


Códigos de Detecção e Correcção de Erros
SISTEMAS DE COMUNICACCAO DE DADOS

Assim como todo código de tratamento de erros possui suas peculiaridades e limitações, com
método de paridade bidimensional não é diferente. E por mais que se enquadre na classe de
códigos detectores, este possui a capacidade de correção de erro, caso a degradação atinja um
único bit.

Figura 6: Paridade par bidimensional

Fonte: KUROSE; ROSS, 2006, p.334

Como pode ser observado na Figura 4, quando ocorre um erro que atinge somente um dos bits
do bloco, é possível mapeá-lo. Neste contexto, conforme Young (2006, p.381), “a interseção da
fila e da coluna com erro de paridade é a localização do bit incorreto. Obtém se a correção
simplesmente invertendo o bit com problemas”.

Em relação a adulteração de bits, devido a inserção de erros pelo ruído presente no canal de
transmissão, Kurose e Ross (2006, p. 333-334 grifos dos autores), nos diz que: “[...] medições
demonstraram que, em vez de acontecerem independentemente, os erros frequentemente se
aglomeram em 'rajadas’”.

Sendo assim, se tratando das limitações, os códigos baseados em paridade bidimensional ainda
podem detectar mais não corrigir, qualquer combinação de erro duplo em determinado pacote.
Em relação a um bloco por inteiro e sendo n a quantidade de bits em sentido horizontal deste
bloco, ou seja, o tamanho do pacote de bits, o método ainda possibilita a detecção de erros de
uma única rajada de tamanho n, pois desta forma, se interpretarmos a estrutura deste bloco
recebido, no sistema receptor, como uma matriz, verificaríamos que um surto dessa proporção
alteraria somente um bit por coluna. No entanto, uma rajada de tamanho maior que n,
comprometeria a capacidade de detecção do sistema, pois o bloco estaria suscetível a erros
duplos em linhas e colunas com a possibilidade de não serem detectados. Assim a capacidade

Preparado por: Sidonio Turra, docente da Cadeira


Códigos de Detecção e Correcção de Erros
SISTEMAS DE COMUNICACCAO DE DADOS

de identificação de um bloco corrompido consistiria em apenas 50% de probabilidade de


detecção (TANENBAUM, 2003; YOUNG, 2006).

Soma de Verificação

Uma das técnicas de bastante destaque utilizada em comunicação de dados, também


pertencentes a classe de detecção de erro, é o método de soma de verificação, mais conhecido
como Checksum. Conforme Kurose e Ross (2006), é o método de codificação utilizado em
protocolo UDP (User Datagram Protocol – Protocolo de Datagrama de Usuário), sendo mais
especificamente aplicado na camada de transporte.

A soma de verificação também se trata um método simples, o qual devido não ser o escopo
deste trabalho não será aprofundado. De maneira resumida, a codificação baseada
em Checksum, consiste primeiramente em somar uma determinada quantidade de palavras de
código que se pretende transmitir, sendo que em seguida são enviadas as palavras de código
em questão juntamente com o resultado dessa soma. Após os dados serem encaminhados ao
sistema receptor, é realizado o mesmo cálculo em cima dos pacotes recebidos, sendo em
seguida o resultado comparado com a soma de verificação recebida. Se caso algum dado tenha
sido adulterado, incluindo os da soma de verificação, os resultados não combinarão, permitindo
que o sistema identifique que ocorreu um erro e que a mensagem está corrompida (PETERSON;
DAVIE, 2004).

CODIFICAÇÃO PARA CONTROLO DE ERROS

1. Sinal de voz. Qual a forma Sistema para transmissão de voz Transdutor (Microfone) CF
Codificador de Fonte CC Codificador de Canal R Repetidor Lacete de assinante A/D A/D...
A/D CF MUX mais eficiente de codificar as mensagens geradas pela fonte? CC Codificação
de Linha, como codificar as mensagens para que o receptor possa detectar/corrigir os erros
de transmissão? Modulador Interface Central 2 R Meio de Transmissão R Meio de
Transmissão Interface Filtro Desmodulador Igualador (Cod. Linha) - CC c - DEMUX CF - D/A
D/A... Lacete de assinante Transdutor (Auscultador) Sinal de voz D/A Central
2. Introdução 3 O ruído, a distorção e eventuais interferências, inerentes ao processo de
transmissão do sinal, podem originar erros no sinal recebido. A codificação para controlo de
erros (CCE), também designada por codificação de canal, consiste em adicionar informação
redundante (i.e., mais bits) à mensagem original; essa redundância é utilizada na recepção
de modo a possibilitar a detecção e/ou correcção de erros que tenham eventualmente

Preparado por: Sidonio Turra, docente da Cadeira


Códigos de Detecção e Correcção de Erros
SISTEMAS DE COMUNICACCAO DE DADOS

ocorrido durante a transmissão. A utilização de codificação para controlo de erros conduz a


um aumento da complexidade do sistema, em maior ou menor grau, consoante o tipo de
código utilizado.
3. Áreas de aplicação 4 Armazenamento de dados Memórias RAM Sistemas de
armazenamento ópticos e magnéticos (discos rígidos, CD s, DVD s) Comunicações digitais
Comunicações via-satélite Comunicações móveis celulares Comunicações de áudio e vídeo
(DAB, DVB) Redes de computadores (protocolo TCP/IP).
4. Codificação para detecção de erros 5 O receptor não consegue corrigir os erros, mas pode
detectá-los e efectuar um pedido de retransmissão da informação errada (ARQ - automatic
repeat request) Apropriado para Canais com pouco atraso Canais com uma ligação de
retorno Não é apropriado para dados sensíveis ao atraso, e.g., transmissão de voz ou vídeo
em tempo real. Em alguns sistemas, esta forma de controlo de erros é utilizada com o
propósito de determinar a qualidade da comunicação (exemplo: controlo de erro nas
hierarquias TDM-SDH).
5. Exemplo Códigos de paridade 6 A cada sequência de k bits da informação a transmitir, é
acrescentado um bit (bit de paridade) de modo a que o número total de bits a na sequência
de k+ bits resultantes seja par (paridade par) ou ímpar (paridade ímpar). Simples de
implementar (operações XOR) Exemplo (paridade par): Bits de informação: bit de paridade
Palavra de código: Só detecta erros se estes ocorrerem em número ímpar.
6. Exemplo Códigos de paridade (cont.) Tabela de codificação para um código de paridade
(4,3) Informação Palavra de código
7. Exemplo Códigos de paridade no SDH 8 B3 (POH Cabeçalho de caminho) B, B2 e B3:
usados para detecção de erros, ao nível de blocos de bits
8. Codificação para correcção de erros 9 Possibilita a correcção de erros que tenham ocorrido
durante a transmissão. É introduzida maior redundância do que na codificação para
detecção de erros; codificação e descodificação são também mais complexas. Apropriado
para dados sensíveis ao atraso e transmissão unidireccional. Dois tipos principais de
códigos: Códigos de blocos Códigos convulsionais Designação Inglesa: Forward Error
Correction (FEC).
9. Exemplo Códigos de repetição Codificação: ==> ==> Palavra recebida: Qual foi a palavra
transmitida? cenário A: com erro na a. posição cenário B: com erros na 2a. e 3a. posições
Descodificação: aplica lógica de maioria Decisão na descodificação: ==> Exemplo de
aplicação: envio do bit de controlo de justificação nas hierarquias TDM-PDH. Desvantagem:
aumento da LB necessária para a transmissão e de um factor igual ao número de repetições.

Preparado por: Sidonio Turra, docente da Cadeira


Códigos de Detecção e Correcção de Erros
SISTEMAS DE COMUNICACCAO DE DADOS

10. Relembrar Estrutura da Trama E2 Transporta 2 canais de 64 kbit/s; f b =8448 kbit/s SAT bits
52 4 bits 52 4 bits 5 4 bits 2 bits de serviço 4 bits de controlo de justificação 4 bits de controlo
de justificação 4 bits de controlo de justificação 4 bits de justificação E E E E MUX E2 E2.
11. Classes de Códigos para Controlo de Erros 2 Codificação de canal Detecção Correcção
Bloco Bloco Convolucionais Verificação de paridade CRC Cheksum Binários Não binários
TCM Convolucionais Binários Códigos Turbo Hamming BCH Reed Solomon.
12. Códigos de blocos 3 A mensagem a transmitir é dividida em blocos de k símbolos. Cada
bloco de k símbolos da mensagem é codificado num bloco de n símbolos (palavra de
código), com n>k código de blocos (n, k). Os símbolos adicionais são designados por
símbolos de paridade. n-k símbolos de paridade k símbolos da mensagem palavra de código
com n símbolos um código de blocos é: Binário, se os símbolos forem bits Linear, se a
adição (XOR) de quaisquer duas palavras de código válidas, resulta numa palavra de código
válida cíclico, se um desvio circular de qualquer palavra de código válida, resulta numa
palavra de código válida.
13. Códigos de blocos (cont.) 4 Tipicamente é utilizada a notação vectorial, Mensagem m = (m
m 2.m k ) Palavra de código c = (c c 2..c n ) A redundância introduzida pelo código é
quantificada pela taxado código (code rate) Taxa do código = k/n i.e., quanto maior for a
redundância, menor é a taxa do código (mas maior é o número de erros que podem ser
detectados ou corrigidos) Para um código de blocos (7,4): Comprimento da mensagem k = 4
Comprimento da palavra de código n = 7 Taxa do código = 4/7 m = (), c = (), por exemplo.
14. Distância de Hamming 5 A distância de Hamming entre duas palavras de código, é o número
de diferenças entre bits correspondentes. A distância de Hamming d (,) é 2 pois = (dois s) A
distância de Hamming d (,) é 3 pois = (três s) A distância de Hamming mínima de um código,
d min, é a mais pequena distância de Hamming entre todos os pares de palavras do código.
15. Exemplo: código (5,2) 6 Mensagem Código (5,2) Palavra de código d min = 3 Qual a d min
de um código de paridade?
16. Número de Erros Detectáveis 7 É possível detectar qualquer situação de a s erros desde
que a distância de Hamming mínima de um código de blocos seja: d min = s + (É possível a
detecção de situações com mais de s erros, mas não todas.).
17. Número de Erros Corrigíveis 8 É possível corrigir qualquer situação de a t erros desde que a
distância de Hamming mínima de um código de blocos seja: d min = 2t + (É possível
efectuar-se a correcção em algumas situações com mais de t erros, mas não todas.)

19 Exemplo: código (7,4) 9 No. Mensagem Código No. Mensagem Código

Preparado por: Sidonio Turra, docente da Cadeira


Códigos de Detecção e Correcção de Erros
SISTEMAS DE COMUNICACCAO DE DADOS

20 Exemplo: código (7,4) (cont.) Palavras de código 2 ` t = d min = 3 Território de Qualquer


palavra desta coluna será descodificada como Todas as palavras de 7 bits

21 Limite de Hamming 2 Num código (n,k) existem 2 k palavras de código distintas (as que se
podem transmitir), sendo no entanto possível receber 2 n palavras distintas (todas as que se
podem formar com n bits) Para se poderem corrigir até t erros, a distância mínima do código
deve ser 2t + O número total de palavras existentes em cada esfera, incluíndo a palavra de
código no seu centro, é t n t n i i i i (i é o número de bits em que uma dada palavra difere da
palavra de código) O número total de sequências de n bits que deverá existir para que possam
ser corrigidos até t erros, é: 2 k t i n i

22 Limite de Hamming (cont.) 22 Mas o número total de sequências é 2 n, pelo que: 2 k t i n i 2 n


t i n i 2 ( nk ) No. de bits redundantes Limite de Hamming Um código que verifica a igualdade é
designado por código perfeito (mas isto não significa ser o melhor!) O limite de Hamming é uma
condição necessária (mas não suficiente) para a existência de um código (n, k) com a
capacidade para corrigir t erros

23 Exemplo 23 Questão: Será possível construir um código (,7) com capacidade para corrigir
todas as situações de erro? 3 2 R: Não é possível.

24 Limite de Gilbert 24 O limite de Hamming impõe um limite inferior ao número de bits


redundantes (n-k) necessários para que um código de blocos linear (n, k) consiga corrigir t erros.
O limite de Gilbert, indica um limite superior do número de bits redundantes necessários para se
conseguir corrigir t erros. 2t i n i () 2 n k Limite de Gilbert

25 Questões a resolver no processo de codificação 25 Como seleccionar as 2 k palavras de


código a partir dos 2 n sequências possíveis, de modo a garantir a maior distância mínima para o
código resultante? Exemplo: Como obter as 6 palavras do código (7,4) representado no slide 7?
Será necessário armazenar toda a tabela de codificação? Necessários processos eficientes de
codificação e de descodificação

26 26 Códigos detectores de erros

27 Exemplos 27 Miquelina Pereira Oliveira Asdrúbal Oliveira * Pancrácia Pereira Oliveira S.


Sebastião da Pedreira * Lisboa Olivais * Lisboa //98 SOL.,7 4/9/2

Preparado por: Sidonio Turra, docente da Cadeira


Códigos de Detecção e Correcção de Erros
SISTEMAS DE COMUNICACCAO DE DADOS

28 Classes de Códigos para Controlo de Erros 28 Codificação de canal Detecção Correcção


Bloco Bloco Convolucionais Verificação de paridade CRC Cheksum Binários Não binários TCM
Convolucionais Binários Códigos Turbo Hamming BCH Reed Solomon

29 Representação de sequências binárias através de polinómios 29 Uma sequência de bits pode


ser representada como um polinómio. O bit mais à direita (LSB) representa o termo de expoente;
o bit seguinte representa o termo de expoente, etc. Se um bit tiver valor, o termo correspondente
do polinómio é eliminado.

30 Códigos Cíclicos (Cíclica redundância checo - CRC) 3 Seja M(x) o polinómio correspondente
à mensagem, e G(x) um polinómio conhecido pelo codificador e pelo descodificador (polinómio
gerador). Exemplo: m= () M(x)=x 9 + x 8 + x 6 + x 4 + x 3 + x + G(x) = x 4 + x + Nos códigos
CRC, os bits redundantes são determinados de modo a que a representação em polinómio da
palavra de código resultante - T(x) - seja divisível pelo polinómio gerador G(x). No exemplo
anterior: c= () bits redundantes A detecção dos erros é feita pelo receptor dividindo a palavra
recebida pelo polinómio gerador: Se o resto for zero, conclui (bem ou mal) que não houve erros.
Se o resto não for zero, conclui (e bem) que houve erros.

31 Algoritmo de geração dos códigos CRC 3 ) Seja M(x) a mensagem a transmitir e G(x), o
polinómio gerador (de grau m). 2) Obter M(x). x m (corresponde a acrescentar m bits à direita da
mensagem). 3) Efectuar a divisão (módulo 2) de M(x). x m por G(x). 4) Adicionar o resto da
divisão p(x) a M(x). x m, obtendo-se T(x).

32 Exemplo 32) m= () M(x)=x 9 + x 8 + x 6 + x 4 + x 3 + x + 2) M(x). x 4 G(x) = x 4 + x + grau 4 3)


M(x). x 4 G(x) p(x) 4) T(x) = M(x). x 4 p(x) c= ()

33 Capacidade de detecção de erros 33 Os erros podem ser representados como uma


sequência binária em que o nível lógico indica a ocorrência de um erro. Exemplo: sequência de
bits enviada c = sequência de bits recebida r = sequência de erro e = r = c e A sequência de
erros também pode ser representada na forma polinomial E(x) Os erros não são detectáveis se
E(x) for divisível por G(x) Demonstração: T r (x) = T(x) E(x) (sequência recebida com erros) T r
(x) / G(x) = [T(x) E(x)] / G(x) = = [T(x) / G(x)] [E(x) / G(x)] Se E(x) fôr divisível por G(x), então T r
(x) também é!

Preparado por: Sidonio Turra, docente da Cadeira


Códigos de Detecção e Correcção de Erros
SISTEMAS DE COMUNICACCAO DE DADOS

34 Exemplo 34 Quais dos seguintes polinómios geradores garantem a detecção de erros únicos?
a) g(x)=x+ b) g(x)= x 3 c) g(x)= Resolução: A ocorrência de um erro único pode ser representada
pelo polinómio x i em que i indica a posição do erro. a) Como x i nunca pode ser divisível por x+,
garante-se a detecção de qualquer situação de erros únicos b) Se i 3, x i é divisível por g(x); só é
possível detectar erros nas posições, ou 2. c) Todos os valores de i tornam x i divisível por g(x)=,
não sendo possível detectar qualquer situação de erro.

35 Polinómios Geradores Normalizados (standards internacionais) 35

36 Classes de Códigos para Controlo de Erros 36 Codificação de canal Detecção Correcção


Bloco Bloco Convolucionais Verificação de paridade CRC Cheksum Binários Não binários TCM
Convolucionais Binários Códigos Turbo Hamming BCH Reed Solomon

37 Cheksum 37 Método de detecção de erros usado por vários protocolos da Internet (IP, TCP,
UDP,) Suponha-se que se pretende transmitir uma sequência de 5 números, cada um
representado com 4 bits, enviando-se também o resultado da sua adição. Como exemplo, se a
sequência de números for (7,, 2,, 6), envia-se (7,, 2,, 6, 36), onde 36 é o resultado da soma dos
números. O receptor efectua a mesma adição, e compara os resultados; se coincidirem assume
que não ocorreram erros, aceita os 5 números e descarta a soma. Para simplificar a tarefa do
receptor, em vez de se enviar o resultado da soma dos números, envia-se o seu simétrico
(checksum), i.e., (7,,2,,6,-36). Neste caso, a soma de todos os números incluindo a checksum
deve dar. Como -36 não pode ser escrito em 4 bits, representa-se o seu complemento para 5 (x5
= 9).

38 Exemplo 38 Neste exemplo a informação é dividida em palavras de 4 bits.

39 Cheksum - Codificação 39. A mensagem é dividida em palavras de 6 bits. 2. Somam-se as


palavras e transforma-se o resultado numa palavra de 6 bits (wrapped sum). 3. Aplica-se o
complemento para um ao resultado, obtendo-se a checksum. 4. A checksum é enviada com os
dados.

40 Exemplo 4 Mensagem: Checksum

41 Cheksum - Descodificação 4. A mensagem (incluindo a checksum) é dividida em palavras de


6 bits. 2. Somam-se as palavras e transforma-se o resultado numa palavra de 6 bits (wrapped

Preparado por: Sidonio Turra, docente da Cadeira


Códigos de Detecção e Correcção de Erros
SISTEMAS DE COMUNICACCAO DE DADOS

sum). 3. Aplica-se complemento para um ao resultado. 4. Se o resultado der, conclui-se não


terem ocorrido erros.

42 Notas finais 42 Existem vários tipos de códigos para correcção ou detecção de erros. A
escolha do(s) código(s) a usar, deverá ter em conta: O tipo de erros esperados (rajadas vs.
uniformes) A possibilidade de se efectuarem retransmissões A taxa de erros (BER) esperada A
complexidade (custo, atraso) associada aos processos de codificação e descodificação O
acréscimo de banda necessária para a transmissão

Preparado por: Sidonio Turra, docente da Cadeira

Você também pode gostar