Técnicas de deteção e correção de erros em transmissões digitais

Quando estamos em ambientes ruidosos temos dificuldade em ouvir alguém que fale connosco, nas transmissões de dados, fenónemos como o ruido e as interferências também ocorrem, podendo deturpar a mensagem original. Devido a este problema são aplicados códigos de deteção e correção de erros às transmissões.

Vamos Descrever três códigos detectores de erros que são: Verificação da paridade, Checksum e CRC.

 

 

 

1º Bit de Paridade

Este é um dos métodos mais utilizados para a deteção de erros. O bit de paridade indica o número de bits 1 presentes num carácter (Byte). Assim, diz-se que a paridade é par se tiver um número par de 1's e ímpar caso tenha número ímpar de 1's. Assim, este assume o bit 0 quando temos paridade par e 1 quando temos paridade ímpar.

Vejamos os exemplos: 1100110 - a mensagem está correta. O último bit é zero indicando que o número de 1's que o precede é par (4 uns).

10101011 - a mensagem está errada. O byte teria assim de ser retransmitido visto o bit de paridade dizer que o número de 1's é ímpar e no entanto é par (4 uns).

 

Das sequências de bits que se seguem, assinale em qual/quais ocorreram erro, sabendo que o último bit é um bit de paridade:

a) 11100111110101011

R: A mensagem nao foi enviada por ocorrência de um erro

b) 10101011110001001

R: A mensagem nao foi enviada por ocorrência de um erro

c) 10101000000001000

R: A mensagem foi enviada correctamente sem erro

d) 1110000

R: A mensagem nao foi enviada por ocorrência de um erro

 

CheckSum

São técnicas utilizadas para detectar erros principalmente na internet e denominam-se somas de verificação. Se a soma de checksums (normal e complemento de para 1) resultarem apenas 1's, podemos inferir que "não" houve erros na transmissão, caso contrário, existiu erro na transmissão.

Exercicio:

1º Passo - Fazer a respetiva soma de binários

 

 00111101

+00001101

  01001010

 

2º Passo - como a soma tem de ser em complemento para um terá de inverter a sequência resultante da soma normal (zeros passam a 1's e vice-versa)

 

Checksum invertido: 10110101

 

Os dados enviados serão então: 00111101 00001101 10110101, ou seja, os dois bytes iniciais mais a sequência de checksum invertido.

 

3º Passo - para verificar se ocorreram erros durante a transmissão, no receptor, teremos de voltar a somar os 2 bytes de dados enviados e somar ao checksum invertido.

 

10110101 (checksum invertido)

01001010 (checksum do receptor)

+

11111111

 

Como a soma resultou em 1's concluímos que não houve erro na transmissão

 

CRC ( Cycle Redudancy Check )

Está é a técnica mais eficiente que as anteriores. Muitas vezes, é também denominada por método de detecção polimonimal. O método consiste em adicionar um conjunto de bits (FCS- Frame Check Sequence) à mensagem original a transmitir. Os bits FCS são calculados através da seguinte expressão:

 

FCS(x)=resto  M(x)*xm / G(x)

 

 

FCS(x) é igual ao resto da divisão inteira entre duas funções polimoniais M(x) e G(x) onde M(x) é a nossa mensagem original sem código.de erros e G(x) o polinómio gerado pré-definido(chave da nossa codificação). Para facilitar a compreensão deste tema resolve se de seguida um exercício.

 

M(x)=x6+x5+x3+x+1

M(x)=1101011

G(x)=x1+x3+1

G(x)=11001

M(x)binXnbin=11010110000

1101011 = M(x)

0000=Xn

 

 

A B A XOR
0 0 0
0 1 1
1 0 1
1 1 0

 

 

 

M(x)*Xn                           

11010110000           |11001     G(x)bin

11001                      1001010

000111

 00000

 001111

 00000

 011110

  11001

  001110

   00000

   011100

    11001

    001010

     00000

     01010

 

M(x)bin+FCS(x)bin=11010111010

1101011 M(x)bin

1010 FCS(x)bin

 

Mas como é que o receptor verifica se houve erro na transmissão ou não? 

Faz a divisão do M(x) e o FCS

Se o resto for zero, diz-se que não houve erro e o contrário se o resto for diferente de zero.