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
2º 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
3º 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.