Você está na página 1de 94

SISTEMAS DE COMUNICAÇÕES DIGITAIS

 Distorção, Atenuação, e Ruídos


 Detecção e correcção de erros
 Paridade, HRC, VRC, FEC, CRC

CÓDIGOS DE DETECÇÃO E CORRECÇÃO DE


ERROS 1
SISTEMAS DE COMUNICAÇÕES DIGITAIS

BIBLIOGRAFIA
 White C. M., Data Communications and Computer Networks: A Business User’s
Approach, 7 Edition, Course Technology, 2013, p150-174.

 Carlson A. B. Communication Systems. Na introduction to signals and noise in


electronical Communication. 3 edition, McGraw Hill, 1986, p469-508.

2
 Detecção e correcção de erros

 Tipos de Erros
 Detecção
 Correcção

3
Tipos de Erros

 Conceitos Básicos

 As redes devem poder transferir dados de um


dispositivo para outro com total precisão.
 Os dados podem ser corrompidos durante a
transmissão.
 Para uma comunicação confiável, os erros devem
ser detectados e corrigidos.
 A detecção e a correcção de erros é implementada
na camada de enlace de dados (Data Link) ou na
camada de transporte (Transport) do modelo OSI

4
Tipos de Erros

 Modelo OSI vs Internet

Detecção e Detecção
Controlo e Controlo
de Erros de Erros

Figura 1. Modelo OSI vs Internet 5


Tipos de Erros
 Tipo de Erros

Figura 2. Tipos de Erros

6
Tipos de Erros
Single - bit error ou
Erro de bit único

Em um quadro, há apenas um bit, em qualquer lugar,


que está corrompido
7
Tipos de Erros

Multiple bit Error

O quadro é recebido com mais de um bit no estado corrompido


8
Tipos de Erros
Burst error ou Erro de rajada

9
Tipos de Erros

 O termo Burst Error (erros de rajada) significa que


dois ou mais bits na unidade de dados foram
alterados de “1” para “0” ou de “0” para “1”.
 No Burst Error, não significa necessariamente que
os erros ocorram em bits consecutivos.
 A duração do burst é medida a partir do primeiro
bit corrompido até ao último bit corrompido.
 Alguns bits entre eles podem não ter sido
corrompidos.
10
Tipos de Erros

 É mais provável que o Burst Error aconteça na


transmissão serial, já que a duração do ruído é
normalmente maior que a duração de um bit.

 O número de bits afectados depende da taxa de


dados e da duração do ruído.

Exemplo:

 Se os dados forem enviados a uma taxa = 1Kbps, um


ruído de 1/100 segundos poderá afectar 10 bits
(1/100 * 1000).

 Se os mesmos dados forem enviados a uma taxa de


1Mbps, um ruído de 1/100 segundos poderá afectar
10.000 bits. (1/100 * 106)
11
 Porque ocorrem erros ?
a. Como vimos, temos diversos canais de comunicação
que são fisicamente diferentes e consequentemente
diferentes tipos de erros podem ocorrer:
 Possibilidade de ruptura de um link de comunicação,
 Atenuação do sinal ao longo de grandes distâncias.
 Possibilidade de muito ruído em uma linha telefônica,
 Possibilidades de falhas em uma posição de memória (uma
célula),
 etc;
b. No nosso estudo iremos considerar que
independentemente da causa física, um erro é uma
mudança de um bit de um estado para outro estado
(de 0 para 1 ou de 1 para 0).
12
Tipos de Erros
 Erros (1)

 Um sistema de computação funciona em função da


transferência de informação desde o nível de
circuitos 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
eletromagnéticas, envelhecimento de
componentes, curto-circuito, ...
13
Tipos de Erros
 Transmissão de Erro

Figura 6. Transmissão de erro 14


Tipos de Erros

 Erros (2)

 Características dos erros


• São inevitáveis em qualquer sistema de comunicação real;
• A distribuição dos erros não é homogénea: bits isolados ou
em “rajadas”(burst) de erros, com 8 ou mais bits
sucessivos errados;
 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.
15
Tipos de Erros

Erros (3)

 Possíveis abordagens no tratamento de


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

16
Tipos de Erros
 Fontes de Erros
 O ruído está sempre presente.

 Se uma linha de comunicação sofrer muito ruído, o sinal será


perdido ou corrompido.

 Sistemas de comunicação devem verificar erros de


transmissão.

 Quando um erro é detectado, um sistema pode executar


alguma acção.

 Alguns sistemas não executam nenhum controlo de erros,


mas simplesmente permitem que os dados com erro sejam
descartados. 17
Tipos de Erros
 White Noise - Ruído branco
 Como o ruído branco é relativamente contínuo, ele pode ser reduzido
significativamente, mas nunca completamente eliminado.
 O ruído branco é o tipo de interferência que faz com que um sinal analógico
ou digital se torne difuso (Figura 2).

Figura 7. Ruído branco interferindo no sinal digital 18


Tipos de Erros
 Ruído de Impulso
• É uma das formas mais perturbadoras de ruído.
• Picos aleatórios de potência que podem destruir um ou mais
bits de informação.
• Difícil de remover de um sinal analógico porque pode ser
difícil de distinguir do sinal original.
• O ruído de impulso pode danificar mais bits se os bits
estiverem mais próximos (transmitidos a um ritmo mais
rápido).

Figura 8. Efeito do ruido impulsivo no sinal digital 19


Tipos de Erros
O ruído é um problema tanto para sinais analógicos como digitais, e na
transmissão a velocidade dos dados pode afectar a significância do ruído. De
facto, às vezes a influência da velocidade de transmissão é bastante
dramática e pode ser facilmente demonstrada.
A Figura 4 mostra uma transmissão de sinal digital a uma velocidade
relativamente lenta e velocidade relativamente alta. Observe na figura que
quando a velocidade de transmissão é mais lenta, ainda se pode determinar
o valor de um sinal, mas quando a transmissão aumenta a velocidade, não se
pode mais determinar se o sinal é um zero “0” ou um “1”.

Figura 9. transmissão de um sinal digital 20


 Crosstalk Tipos de Erros

• Acoplamento indesejado entre dois caminhos de sinal


diferentes.
• Por exemplo, ouvir outra conversa enquanto fala ao
telefone.
• Relativamente constante e pode ser reduzido com
medidas adequadas.

21
Figura 10. Três circuitos telefónicos com Crosstalk
Tipos de Erros

 Eco
• É o feedback reflexivo de um sinal transmitido enquanto o
sinal se move através de um meio.
• Na maioria das vezes ocorre no cabo coaxial. Se o eco for ruim
o suficiente, pode interferir no sinal original. Relativamente
constante e pode ser significativamente reduzido.

Figura 11. Um sinal retornando no final de um cabo coaxial e causando eco22


Tipos de Erros
 Delay Distortion

• Ocorre quando a velocidade de propagação de um


sinal através de um meio varia com a frequência do
sinal. Pode ser reduzido usando equalizadores
• Atenuação
• A perda contínua da força de um sinal à medida
que ele passa por um meio.
 Use menos meio com perdas
 Use amplificadores

23
Tipos de Erros
 Atenuação

 O sinal ao viajar, se torna fraco

 Se muito fraco, não poderá informar sobre os “1”

e “0”.

Distância
Figura 12. Atenuação de um sinal

24
Tipos de Erros

 Distorção

 O sinal ao viajar, se torna distorcido.


 Muda de forma
 Bits sucessivos podem se “juntar”, tornando a
recepção difícil

Distância

Figura 13. Distorção de um sinal 25


Tipos de Erros

 Interferência

• Sinal indesejado de fontes externas


• Frequentemente intermitente, difícil de
diagnosticar.

Signal Sinal
Strength

Interferência

Figura 14. Interferência em um sinal

26
Tipos de Erros
 Prevenção de Erros

• O condicionamento de linha para linhas shielded


reduz:
– Atenuação
– Ruído
– Distorção
• Métodos
– Blindagem ou isolamento
– Melhoramento da conexão
– Supressor de eco
– Repetidores ou amplificadores (atenuação)
Tipos de Erros
 Prevenção de Erro

Tipo de Erro Técnica de prevenção de erro


White noise Install special filters for analog signals; implement digital
signal regeneration for digital signals
Impulse noise Install special filters for analog signals; implement digital
signal processing for digital signals
Crosstalk Install proper shielding on cables
Echo Install proper termination of cables
Jitter Use better-quality electronic circuitry, use fewer repeaters,
slow the transmission speed
Attenuation* Install device that amplifies analog signals; implement
digital signal regeneration of digital signals

Figura 15. Sumário de erros e de técnicas de prevenção de erros


28
Tipos de Erros
Figura 11. Fontes de erros e formas de os prevenir ou de minimizá-los

Source of Error What causes it How to prevent it

Line Outages Storms, accidents


(Surtos)
White Noise Movement of electrons Increase signal strength

Impulse Noise Sudden increases in electricity Shield or move the wires


(e.g., lightning)
Cross-talk Multiplexer guard bands are too small Increase the guard bands, or
or wires too close together move or shield the wires
Echo Poor connections Fix the connections, or
tune equipment
Attenuation Gradual decrease in signal over Use repeaters or amplifiers
distance
Intermodulation Signals from several circuits combine Move or shield the wires
Noise (form of crosstalk)
Jitter Analog signals change phase Tune equipment

Harmonic Amplifier changes phase Tune equipment


Distortion

29
Detecção e Correcção de Erros
 Detecção e correcção de erros

• Na teoria da informação e na teoria de codificação, com


aplicações em informática e telecomunicações , a detecção e
correcção de erros ou o controlo de erros são técnicas que
permitem a entrega confiável de dados digitais em canais de
comunicação não confiáveis. Muitos canais de comunicação estão
sujeitos a ruído de canal e, assim, erros podem ser introduzidos
durante a transmissão do Emissor para o Receptor.
• Em muitos casos, as técnicas de detecção de erros permitem
detectar esses erros, enquanto a correcção de erros permite a
reconstrução dos dados originais.
30
Detecção e Correcção de Erros
 Detecção de Erros
 A detecção de erros significa decidir se os dados
recebidos estão correctos ou não, sem ter uma cópia
da mensagem original.

 A detecção de erros usa o conceito de redundância,


o que significa adicionar bits extras para detectar
erros no destino.
 Apesar das melhores técnicas de prevenção, os erros
ainda podem acontecer.
 Para detectar um erro, algo extra deve ser
adicionado aos dados / sinal. Este extra é um código
de detecção de erro.
31
Detecção e Correcção de Erros

Exemplo de Redundância

Figura 17. Redundância 32


Detecção e Correcção de Erros
 Detecção de Erros
 Um receptor pode detectar a mudança se o codeword
original :
• O receptor tem a lista de codewords válidos, e
• O codeword original mudou para outro inváido.

33
Detecção e Correcção de Erros

 Quatro tipos de verificação de redundância usados


em comunicações de dados

Figura 19. Tipos de verificação de redundância

34
Detecção e Correcção de Erros

 Detecção de Erros
 Verificação de redundância vertical (VRC) ou
verificação de paridade
 Verificação de redundância longitudinal (LRC)
ou caractere de verificação de bloco (BCC)
 Soma de verificação (CheckSum)
 Verificação de redundância cíclica (CRC - CYCLIC
REDUNDANCY CHECK)
• CRC -16 ou CRC -32, …
Detecção de Erros
 Detecção de erro

• A maioria das técnicas de detecção de erros funciona


da mesma maneira:
– Um valor de detecção de erro é primeiro calculado
pelo remetente e transmitido juntamente com os
dados.
– No final de recepção, o valor de detecção de erro é
recalculado e verificado em relação ao valor
recebido.
– Se os dois valores forem iguais, implica que os
dados foram recebidos correctamente
– Se diferentes, no entanto, ocorreu um erro e os
dados precisam ser enviados novamente.

36
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 para
detectar erros é o de Paridade (Parity);

• Um método mais eficiente é o uso de um código


polinomial, ou CRC (Cyclic Redundancy Check);

37
Detecção de Erros
 Verificação de Paridade – Parity Check

 O valor do bit de paridade é tal que o caractere tem


um número par (Paridade par) ou ímpar (Paridade
ímpar).

 Verificação de Redundância Longitudinal (LRC)

 Verificação de Redundância Vertical (VRC)

 Verificação de Redundância Longitudinal / Verificação


de Redundância Vertical (LRC / VRC)

38
Detecção de Erros
 Verificação de paridade
• A verificação de paridade é uma das mais antigas e simples
técnicas de detecção de erros.

• Na verificação paridade par, a soma dos bits permanece par, e


para paridade ímpar, a soma permanece ímpar.

• No final de recepção, o bit de paridade é recalculado. Se um


bit tiver sido transmitido com erro, o bit de paridade recebido
será diferente do recalculado.

• A verificação de paridade é simples, mas não detecta todos os


erros.

• Se dois (ou um número par de bits) foram alterados ao


mesmo tempo, a verificação de paridade vai parecer estar
correcta mesmo que tenha ocorrido um erro.
39
Detecção de Erros
 Exemplos de Paridade

• Paridade Par de 1’s • LRC/VRC

Data VRC
Data Parity 1 0 0 1 1 1 0 0
0 0 1 1 1 0 0 1
1 0 0 1 1 1 0 0 1 1 1 0 1 1 1 0

0 0 1 1 1 0 0 1 1 1 1 0 1 1 1 0
0 0 1 1 1 0 0 1
1 1 1 0 1 1 1 0 0 0 1 0 1 0 1 1
0 0 1 1 1 0 0 1
1 0 0 0 1 1 1 0 LRC

Tabela 20. Paridade simples e LRC/VRC


40
Detecção de Erros
 Longitudinal Redundancy Checking (LRC)
• O LRC foi desenvolvido como uma melhoria em relação aos

testes de paridade.

• O LRC adiciona um caractere adicional de verificação de

paridade, chamado de caractere de controlo de bloco (BCC) a

cada bloco de dados.

• O LRC é um grande aprimoramento sobre a verificação de

paridade, alcançando mais de 98% de todos os erros, mas ainda

perde um número significativo de erros.


Detecção de Erros

 Verificação de paridade

• O que acontece se na sequência 10010101 (bit de


paridade é o último bit) e os dois primeiros 0s
acidentalmente se tornarem dois 1s?
• Assim, o seguinte caractere é recebido:
 11110101.
• Haverá um erro de paridade?
• Problema!

42
Detecção de Erros
Tabela 3. Exemplo simples de paridade longitudinal

Dado Paridade
Linha 1 1 1 0 1 0 1 1 1
Linha 2 1 1 1 1 1 1 1 1
Linha 3 0 1 0 1 0 1 0 1
Linha 4 0 0 1 1 0 0 1 1
Parity Row 0 1 0 0 1 1 1 0

Tabela 4. Os segundo e terceiro bits nas linhas 1 e 2 possuem erros, mas


paridade longitudinal não detecta os erros
Dado Paridade
Linha 1 1 10 01 1 0 1 1 1
Linha 2 1 10 10 1 1 1 1 1
Linha 3 0 1 0 1 0 1 0 1
Linha 4 0 0 1 1 0 0 1 1
Parity Row 0 1 0 0 1 1 1 0
43
Detecção de Erros
 Verificações de paridade
 Tanto a paridade simples como a paridade longitudinal
não captam todos os erros.
 A paridade longitudinal é melhor na captura de erros,
mas requer muitos bits de verificação adicionados a
um bloco de dados.
 Como tal, estes métodos não são frequentemente
usados.
 Assim, necessita-se de um melhor método de detecção
de erros.
E quanto à soma de verificação de redundância
cíclica? 44
Detecção de Erros

CRC
CYCLIC REDUNDANCY CHECK
OU TESTE DE REDUNDÂNCIA
CÍCLICA

45
Detecção de Erros
 Cyclic Redundancy Check (CRC)

• O método de detecção de erro CRC trata o


pacote de dados a ser transmitido como um
grande polinómio e é a mais poderosa técnica de
verificação de erros actualmente difundido e em
uso.
• O transmissor toma a mensagem polinomial e
usando aritmética polinomial, divide-a por um
dado polinómio gerador.
• O quociente é ignorado, mas o resto é “anexado”
ao final da mensagem.

46
Detecção de Erros

 Cyclic Redundancy Check - CRC

• A mensagem e o resto anexado é transmitida ao


receptor.
• O receptor divide a mensagem e o resto pelo
mesmo polinómio de geração.
• Se o resto não for igual a zero, houve um erro
durante a transmissão.
• Se o resultado resto for zero, significa que não
houve erro durante a transmissão.

47
Detecção de Erros

Figura 22. Detenção de erros - CRC 48


Error Correction

49
Correcção de Erros
 Correcção de Erro via Retransmissão
• Quando um erro é detectado, ele é corrigido pela
retransmissão dos dados junto com seu valor de
detecção de erro.

• O processo de solicitar que uma transmissão de


dados seja reenviada é chamado de Solicitação de
Repetição Automática ou ARQ.

• Os dois principais protocolos ARQ são:


– Pare e aguarde ARQ
– ARQ contínuo
50
 Controlo de Erros Controlo de Erros

• O controlo de erros, lida com erros de rede causados


por problemas na transmissão e não em erros
humanos.
• Os tipos de erro incluem dados corrompidos e dados
perdidos.

• O controlo de erros está relacionado com:


1. Prevenção,
2. Detecção e
3. Correcção de erros.
• Um tipo de erro importante é o erro de rajada no qual
muitos bits são corrompidos ao mesmo tempo.
Controlo de Erros

 Controlo de Erros
Uma vez detectado um erro, o que o
receptor fará? Hipóteses:
• Não fará nada
• Retornará uma mensagem de erro
ao transmissor
• Corrigirá o erro sem ajuda do
transmissor
52
Controlo de Erros
 Passos de Controlo de Erros
• O Controlo de Erros consiste nas seguintes etapas
(repare que, nem todas são necessárias):

– Detecção de erros (Usa-se; paridade, CRC, etc.)


– Confirmação positiva (ACK) significa que nenhum
erro foi detectado
– Retransmissão após o tempo limite - porque um
quadro ou um ACK pode ter sido perdido
– Confirmação negativa (NAK) e retransmissão

• Colectivamente, todos esses mecanismos são


chamados de Automatic RepeatereQuest - ARQ
53
Controlo de Erros

 Controlo de Erros

• Existem três formatos básicos ARQ para retornar


uma mensagem:
1. ARQ parar e esperar (stop – N wait ARQ)
2. Go-back-N ARQ
3. ARQ de rejeição selectiva

54
Controlo de Erros

 Controlo de Erros

• Stop-and-wait ARQ é o mais simples dos


protocolos de controlo de erros.
• Um transmissor envia um quadro e em seguida,
pára e aguarda uma confirmação.
• Se uma confirmação positiva (ACK) for
recebida, o quadro seguinte é enviado.
• Se uma confirmação negativa (NAK) for
recebida, o mesmo quadro é transmitido
novamente.

55
Correcção de Erros

Figure 23. Amostra de diálogo usando controlo de erro Stop-and-Wait


56
Detecção e Correcção de Erros
 O que nós estudamos?

• Tipos de erros e sua prevenção


• Detecção de erro
– Paridade - 50%
– CRC - pode detectar quase todos os erros
• Correcção de erros
– Não faça nada
– Retornar uma mensagem de erro ao
transmissor
– Corrigir o erro sem ajuda do transmissor

57
 Técnicas de correção de erros Correcção de Erros

• Para um receptor corrigir o erro sem ajuda do transmissor, é


necessário que uma grande quantidade de informação
redundante acompanhe os dados originais.
• Essa informação redundante permite que o receptor determine
o erro e faça as correcções.
• Esse tipo de controlo de erros é geralmente chamado de:
 Forward Error Correction (FEC) ou Error Correcting
Code (ECC):
• Os erros são corrigidos pelo receptor através do uso
exclusivo de codificação de dados.
 Backward Error Correction (BEC):
• O receptor informa o transmissor sobre o erro e solicita
uma retransmissão de dados.
58
Correcção de Erros
 Forward Error Correction - FEC

• A Correcção Antecipada de Erros - FEC, significa que o


dispositivo receptor pode corrigir as próprias
mensagens recebidas em vez de ter que reenviá-las.

• Para isso, informações correctivas adicionais precisam


ser enviadas juntamente com os dados/mensagem que
permitem que os dados sejam verificados e corrigidos
pelo receptor.

• A quantidade de informação extra necessária é


geralmente bastante (50 -100% dos dados).

• Esta técnica é útil para transmissões unidireccionais ou


quando os tempos de transmissão são muito longos
(p.ex: nas comunicações com espaço - naves).
59
Correcção de Erros
 Forward Error Correction

• A vantagem dessa abordagem é que não necessita de um


caminho de retorno. Este seria um requisito crítico para
aplicações como a comunicação com sondas espaciais, por
exemplo, onde o atraso entre enviar uma mensagem e receber
uma resposta poderia ser considerável.

• A desvantagem é que, para garantir o grau necessário de


integridade de dados, uma grande quantidade de dados
redundantes terá que ser transmitida com cada mensagem,
aumentando significativamente a largura de banda necessária.

60
 O que é BEC (Backward Error Correction) ?
 Backward Error Correction (BEC): o receptor detecta um erro
e envia uma solicitação de retransmissão ao remetente.

 Os protocolos BEC impõem menos sobrecarga de largura de


banda do que os protocolos FEC (Forward Error Correction),
mas exigem mais tempo e largura de banda para recuperar-se
de erros.

 A BEC é uma solução melhor quando os erros são poucos e a


largura de banda deve ser optimizada. Os algoritmos BEC
incluem:
 Bits de paridade
 CRC (Verificação de Redundância Cíclica)
 LRC (Verificação Longitudinal de Redundância)
 Soma de verificação
 Esquemas de repetição 61
Detecção e Correcção de Erros
Redundância
Quadro com Campo de Verificação

Mensagem (m bits) Verificação (r bits)

• A quantidade total de bits será:

n=m+r

62
Redundância
Redundância de um Código (1)

 A redundância de um código, R, é a proporção de


informação redundante, necessária para a detecção
e/ou correcção de erros.
 A partir dos valores de m, n e r, define-se R como:
𝒏 𝒎+𝒓 𝒓
𝑹= = =𝟏+
𝒎 𝒎 𝒎
 R mede a eficiência de um código, do ponto de vista de
consumo de banda de um canal de transmissão.
 Assim, ocupando um canal com maior quantidade de
bits de verificação (r), reduz-se a quantidade de bits de
informação (m) que podem ser transmitidos. 63
Redundância
 Redundância de um Código (2)

 Então, como um canal possui sempre uma


capacidade limitada de transmissão de informação,
que limita a quantidade total (n) bits por segundo.

 Como um canal possui sempre uma capacidade


limitada de transmissão de informação (n), deve
existir um balanço entre a quantidade de
informação (m) e de bits de verificação (r), onde:.

n=m+r

64
Checksum

65
Checksum 1
 O checksum pode ser definido como um byte que, somado à
soma de todos os bytes transmitidos, torna o resultado da
soma igual a zero.

 Para o cálculo do checksum, o transmissor ao longo da


transmissão faz a soma de todos os bytes de informação,
armazenando este resultado em uma variável.

 O byte de checksum é calculado a partir desta variável.

66
Checksum 2

Bloco de Informações Checksum

 Do ponto de vista do receptor, ele deve receber todos os


bytes, inclusive o de checksum, e somá-los.
 O resultado da soma deve dar zero.
 Se não der zero, significa que aconteceu algum erro na
transmissão de dados e aquele bloco deve ser retransmitido.

67
 Detecção de Erros – Checksum (4) Checksum

 Pretende-se enviar uma lista de cinco números de 4 bits


para um destino. Além de se enviar esses números, envia-
se a soma dos números.
 Por exemplo, se o conjunto de números for (7, 11, 12, 0, 6),
envia-se (7, 11, 12, 0, 6, 36), onde 36 é a soma dos
números originais.
 O receptor adiciona os cinco números e compara o
resultado com a soma.
 Se os dois são iguais, o receptor não assume nenhum erro,
aceita os cinco números e descarta a soma. Caso contrário,
há um erro em algum lugar e os dados não são aceites. 68
 Detecção de Erros – Checksum (5) Checksum

 Pode - se facilitar o trabalho do receptor


enviando-se o negativo (complemento) da soma,
chamado checksum.

 Neste caso, enviamos (7, 11, 12, 0, 6, −36).

 O receptor pode adicionar todos os números


recebidos (incluindo a soma de verificação).

 Se o resultado for 0, não assume erro algum; caso


contrário, há um erro.

69
 Detecção de Erros – Checksum (6) Checksum
 Notas:
 Lado emissor:
 A mensagem é dividida em palavras de 16 bits.
 O valor da palavra da soma de verificação é
definido como 0 (Zero).
 Todas as palavras, incluindo o checksum, são
adicionado usando a adição do complemento.
 A soma é complementada e se torna o checksum.
 A soma de verificação é enviada com os dados.
70
 Detecção de Erros – Checksum (7) Checksum

 Lado receptor:
 A mensagem (incluindo a soma de verificação) é
dividida em palavras de 16 bits.

 Todas as palavras são adicionadas usando adição


de complemento.

 A soma é complementada e se torna numa nova


soma de verificação.

 Se o valor da soma de verificação for 0, a


mensagem é aceite; caso contrário, é rejeitada.
71
 Detecção de Erros – Checksum (8)
 Exemplo:
checksum de 2 palavras de 8 bits
• Dados iniciais: 00111101 00001101
• Checksum é:
01001010
• Checksum invertido:
10110101

72
 Detecção de Erros – Checksum (9)

 Dados enviados:
• 00111101
• 00001101
• 10110101 (checksum – invertido)
 No receptor, as palavras são novamente somadas 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

73
 Detecção de Erros – Checksum (10)

 Exemplo com erro:

00101001
00001101
0 0 1 1 0 1 1 0 → novo checksum
1 0 1 1 0 1 0 1→ checksum enviado
11101011≠11111111

74
CRC
Cyclic Redundancy Check

75
 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
 Palavra inicial de kbits é representado por um
polinómio X de ordem k -1
• Palavra inicial = 10110001
• Polinómio = 𝒙𝟕 + 𝒙𝟓 + 𝒙𝟒 + 𝟏 76
 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);
 O 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). 77
Figure 16. Polinómio representativo da palavra binária (binary word)

Tabela 2. Polinómios Standards

78
CRC
Exemplos

79
1. Mensagem a transmitir 𝑴 𝒙 :10111011

2. Polinómio gerador 𝑮 𝒙 = 𝒙𝟒 + 𝒙 + 𝟏 → 𝟏𝟎𝟎𝟏𝟏

3. Acrescenta-se à mensagem inicial, a quantidade de


zeros equivalentes ao grau de G(x), ficando:
10111011 0000

4. Seguidamente divide-se a mensagem pelo


polinómio gerador

 A divisão de dois polinómios (na sua forma


binária) é feita recorrendo à operação XOR (⊕) 80
Detecção de Erros – CRC
Execução:
101110110000
10011
0010001
10011
00010100
10011
0011100
10011
0 1 1 1 1 →Resto da Divisão

• O resto da divisão é finalmente adicionado à


mensagem original, pelo que a mensagem transmitida
será: 101110111111 81
Descodificação: Detecção de Erros – CRC

 Para descodificar a mensagem, o procedimento deve ser


repetido mas dividindo a Codeword com o gerador:
1 0 1 1 1 0 01 1 1 1 1
10011
0010000
10011
00011111
10011
011001
10011
010101
10011
0 0 1 1 0 → ≠ 0, logo a mensagem foi
recebida com erro. 82
 Cyclic Redundancy Check

• M(x) é a Mensagem polinomial

• P(x) é o Gerador polinomial

– P(x) é fixo para dado esquema CRC

– P(x) é conhecido por ambos Emissor e Receptor

• Cria-se block polynomial F(x) baseado no M(x) e P(x)


tal que F(x) é divisível por P(x):

F ( x) 0
 Q( x) 
P( x) P( x)
83
• Lado Emissor • Lado Receptor Exemplo 2

– M(x) = 110011  x5+x4+x+1 (6 bits) 1100111001


– P(x) = 11001  x4+x3+1 (5 bits, n = 4) 11001
-----------------
 4 bits para redundância
0000011001
– Forma xnM(x)  110011 0000 11001
 x9+x8+x5+x4 -----------------
-
– Divide xnM(x) por P(x) para encontrar C ( x )
00000
1100110000
11001
--------------- Resto zero
0000010000  Aceite
11001
----------------
01001= C (x)

Envie o bloco 110011 1001 84


CRC – Exemplo 3

 Abaixo, é o procedimento para o envio dos dados com o gerador


polinomial fornecido.
• Dados a serem enviados: 11010011101100
• Gerador polinomial: 𝒙𝟑 + 𝒙𝟏 + 𝟏
1. Tome o gerador polinomial e calcule a representação do seu
correspondente binário, identificando as potências ausentes:

• Polinômio = 𝒙𝟑 + 𝒙 + 𝟏
• = 𝟏. 𝒙𝟑 + 𝟎. 𝒙𝟐 + 𝟏. 𝒙𝟏 + 𝟏. 𝒙𝟎
Divisor = 1011; esta é a representação digital do gerador
polinomial.
85
CRC – Exemplo 3.1

Pretende-se codificar 14 bits de mensagem com um CRC de 3 bits,


com um polinómio x³ + x + 1. O polinómio é escrito em binário
como coeficientes; um polinómio de 3ª ordem tem 4 coeficientes.
Neste caso, os coeficientes são 1 0 1 e 1. O resultado do cálculo é
de 3 bits. Comecemos com a mensagem a ser codificada:

11010011101100

Primeiro é preenchido com zeros correspondendo ao


comprimento de bit n do CRC. Aqui está o primeiro cálculo para
calcular um CRC de 3 bits:

11010011101100 000 <--- Entrada com + 3 bits a direita


1011 <--- divisor (4 bits) = x³ + x + 1
-----------------------------
01100011101100 000 <--- resultado
86
CRC – Exemplo 3.2

• O algoritmo actua nos bits directamente acima do divisor


em cada etapa.
• O resultado para essa interacção é o XOR bit a bit do
divisor polinomial com os bits acima dele.
• Os bits não acima do divisor são simplesmente copiados
directamente abaixo para esse passo.
• O divisor é então deslocado um bit para a direita e o
processo é repetido até que o divisor alcance a
extremidade direita da linha de entrada. A seguir é o
cálculo inteiro:
87
CRC – Exemplo 3.3
11010011101100 000 <--- Entrada com + 3 bits na direita
1011 <--- divisor
01100011101100 000 <--- resultado (1)
1011 <--- divisor ...
00111011101100 000
1011
00010111101100 000
1011
00000001101100 000 <--- resultado (2)
1011 <--- divisor
00000000110100 000 <--- resultado
1. (Repare que os primeiros quatro bits são o XOR com o divisor
abaixo, o resto dos bits não são alterados).
2. Observe que o divisor se move para alinhar com o próximo 1
no dividendo (desde que o quociente para essa etapa for
zero)(em outras palavras, necessariamente, não move um bit
por interacção) 88
CRC – Exemplo 3.4

00000000110100 000 <--- resultado


1011 <--- divisor
00000000011000 000 <--- resultado
1011 <--- divisor
00000000001110 000 <--- resultado
1011 <--- divisor
00000000000101 000 <--- resultado
101 1 <--- divisor
-------------------------------------
00000000000000 100 <--- Resto (3 bits). Como o
quociente é igual a zero, o algoritmo de divisão para
aqui.
Assim, o codeword é: 11010011101100 100
89
CRC – Exemplo 3.5

 Como o bit divisor mais à esquerda zerou cada bit de entrada


que tocou, quando esse processo finaliza os únicos bits na
linha de entrada que podem ser diferentes de zero são os n
bits no lado direito da linha.

 Esses n bits são o resto da etapa de divisão, e também será o


valor da função CRC (a menos que a especificação CRC
escolhida solicite algum pós-processamento).

 A validade de uma mensagem recebida pode ser facilmente


verificada executando novamente o cálculo acima, desta vez
com o valor de verificação adicionado em vez de zeros. O
resto deve ser igual a zero se não houver erros detectáveis,
Veja o calculo a seguir:

90
CRC – Exemplo 3.6
11010011101100 100 <--- Entrada com valor de verificação
1011 <--- Divisor
01100011101100 100 <--- Resultado
1011 <--- Divisor ...
00111011101100 100
......
00000000001110 100
1011
00000000000101 100
101 1
-----------------------------
0 <--- Resto
O resto, deve ser igual a zero se não houver erros
detectáveis.
91
CRC – Exemplo 4
 Pretende-se que o transmissor transmita 1996, via CRC.

 Passo 1: transforme o 1996 decimal em binário sendo:


11111001100
 Passo 2: encontre o gerador (que é o valor conhecido tanto
pelo TX como do RX) neste caso é dado: 100011001
 Passo 3: Adicione a quantidade de zeros (no dado) igual a
quantidade de caracteres do gerador menos 1 (ou seja 9 – 1
= 8 caracteres), sendo:
11111001100 00000000 92
1. Este código é
adicionado à mensagem
ficando:
1111100110000000111

2. O TX envia esta
mensagem codificada
(codeword) para o
receptor

3. Por sua vez, o receptor


verifica se o dado que
saiu do Transmissor é o
mesmo que chegou e
realiza a mesma
operação mas no lugar
de zeros é o CRC
93
adicionado:
Ao observar que o
resto da divisão é
zero, o receptor
entende que não
houve perda de dados
durante a transmissão
logo a mensagem que
recebeu é a mesma
que saiu do
transmissor.

94

Você também pode gostar