Você está na página 1de 54

Cap.

03 Controle de Erro

3.1 Introduo
3.2 Modelo de Erro
3.3 Tipos de Erros de Transmisso
3.4 Redundncia de Dados
3.5 Tipos de Cdigos de Erros
3.6 Verificao por Paridade
3.7 Correo de Erros
3.8 Cdigo de Bloco Linear
3.9 Verificao por Redundncia Cclica
3.10 Verificao por Soma Aritmtica

Lus F. Faina - 2016 Pg. 1/54


Referncias Bibliogrficas

Gerard J. Holzmann Design and Validation of Computer


Protocols Prentice Hall; Englewood Clifs; New Jersey; 1991.
Andrew S. Tanenbaum - Computer Networks - Prentice Hall;
Englewook Cliffs; New Jersey; 1989; ISBN 0-13-166836-6

Paulo Coelho - Material de Aula - Arquitetura de Redes de


Computadores (FACOM49070 - Mecatrnica)
Pedro Frosi - Material de Aula - Arquitetura de Redes de
Computadores (GBC056 - Cincia da Computao)

Lus F. Faina - 2016 Pg. 2/54


3.1 - Introduo

estatsticas - nro de erros causados na transmisso de dados


so muitas ordens de grandeza do nro de erros causados por
falhas de hardware dos sistemas computacionais;
diferena de magnitude entre uma probabilidade de erro de
10-15 e outro de 10-4 no pode ser subestimada.
e.g., considere uma taxa de erros de bits de 10-15 em uma linha
de transmisso com capacidade de 9600 bps.
... teremos 01 erro de bit a cada 3303 anos de operao contnua.

alguns valores para taxas de erros de bits como funao do


meio de transmisso, p.ex., hardware = 10-15; fibra tica = 10-19;
cabo coaxial = 10-6 e par tranado = 10-4 a 10-5
Lus F. Faina - 2016 Pg. 3/54
3.1 - Introduo

Obs.: ... no se pode desprezar a diferena em magnitude.


e.g., diferena entre taxas 10-15 e 10-4 enorme e se conside-
rarmos a taxa de transmisso de 100.000.000 bps (100 Mbps)
10-15 01 bit ser corrompido a cada 115 dias;
10-4 10.000 bits sero corrompidos a cada segundo

dependendo das caractersticas da linha de transmisso, os


dados podem ser reordenados, distorcidos, removidos, e, at
rudos podem ser inseridos como se fossem dados.

Lus F. Faina - 2016 Pg. 4/54


3.1 - Introduo

controle de erro - tem por objetivo aumentar a confiabilidade


de transmisso, preferivelmente para um nvel de confiabilidade
de operao standalone de um sist. computacional.
no se deve esperar dos mtodos de controle de erro a captura de
todos os possveis erros que a princpio podem ocorrer !!
... um controle de erro efetivo deve considerar as caractersticas de erro
do canal a ser usado questo frequentemente negligenciada.

Obs.: se a taxa de erro de um canal << que a de um equip.


perifrico, a incluso de controle de erro a soluo ?!
incluso do controle de erro degrada desnecessariamente o desem-
penho e pode at diminuir a confiabilidade em vez de aument-la.

Lus F. Faina - 2016 Pg. 5/54


3.2 Modelo de Erro

Discrete Memoryless Channel - modelo formal para este tipo de


canal o canal discreto sem memria.
canal discreto - canal dito discreto porque ele reconhece apenas um
nmero finito de nveis de sinais distintos;
canal sem memria - canal dito sem memria porque a probabilidade
de um erro suposta ser independente dos erros anteriores.

Canal Simtrico - p (bit error 0) = p (bit error 1)

Lus F. Faina - 2016 Pg. 6/54


3.2 Modelo de Erro

Canal Simtrico Binrio - estabelece que a probabilidade Pr


de se ter ao menos n bits contguos livres de erro EFI >= n :
Pr( EFI >= n ) = (1 b) n onde EFI Error Free Interval
onde n >= 0 e b = taxa mdia de erros de bits.

probabilidade decresce linearmente a medida que o tamanho


do intervalo livre de erros decresce (EFI);
de maneira similar, probabilidade que a durao de uma rajada
exceda n bits decresce linearmente com n.
e.g., conside b = 0.5, ento (1-b)^n = 0.5^n o que implica que a
razo entre 2 resultados consecutivos linear.

Lus F. Faina - 2016 Pg. 7/54


3.2 Modelo de Erro

Para expressar Pr como uma funo exponencial do tamanho


do intervalo livre de erros (EFI >= n), substitui-se a equao
Pr( EFI >= n) = e ^ [-b*(n-1)]
onde n >= 1 e b = taxa mdia de erros de bits.

acurcia da predio - comparar os resultados da equao com


valores empricos ou experimentais (melhor forma de avaliar a acurcia da predio)
estudos monstram que a equao acima (exponencial) prediz intervalos
livres de erros de modo melhor que a equao anterior (linear);
no entanto, a equao pode ainda ser melhorada com a adio de mais
um fator que determina o efeito de agrupamento Benoit Mandelbrost.

Lus F. Faina - 2016 Pg. 8/54


3.3 Erros de Transmisso

Como os principais erros de transmisso aparecem / se apresentam ?!

insero / remoo de dados normalmente causado por perda


temporria de sincronizao entre transmissor e receptor;
remoo de dados - tambm podem ser causados artificialmente
por disciplinas inadequadas de controle de fluxo;
duplicao de dados - podem ser gerados intencionalmente, p.ex.,
pelo transmissor ao implementar protocolo com retransmisso;
distoro de dados - podem ser gerados por variaes nas
condies de operao do canal, inserindos distores nos dados;
reordenao de dados - podem potencialmente ser causados
quando os dados percorrem diferentes rotas.

Lus F. Faina - 2016 Pg. 9/54


3.3 Erros de Transmisso

remoo, duplicao e reordenao sao resolvidos com


esquemas prprios de controle de fluxo.
no obstante, em todos os casos, inseres e distores po-
dem ocorrer, no importando a razo que o gerou, assim, fazem-
se necessrios mtodos para verificar a consistncia dos dados.

Lus F. Faina - 2016 Pg. 10/54


3.4 Redundncia de Dados

Deteco de Erro - somente funcionam se aumentarmos a


redundncia de dados de algum modo na mensagem.

Alm da deteco de erros de transmisso, o receptor pode


tambm ser capaz de corrigir os erros segundo 02 maneiras:
Forward Error Control - redundncia de dados se d de tal modo que o
receptor reconstroi a mensagem a partir da mensagem distorcida;

Feedback Error Control - redundncia de dados se d de tal modo que o


receptor apenas detecta que a mensagem contm distores;

Lus F. Faina - 2016 Pg. 11/54


3.4 Redundncia de Dados

Feedback Error Control - redundncia de dados se d de tal


modo que o receptor capaz de apenas detectar erros (se houver)
cdigos de transmisso correspondentes so denominados Error
Detecting Codes ou Cdigos de Deteco de Erros.
aplicveis em redes de computadores e Processamento Paralelo (PP)
(TC T C...) !?!?

?!

Lus F. Faina - 2016 Pg. 12/54


3.4 Redundncia de Dados

ECCs capazes de detectar e corrigir erros em primitivas (Foward


Error Control) apresentam complexidade (computabilidade) bem
maior que (Feedback Error Control)

Feedback Error Control ... h duas possibilidades:


se o transmissor apresenta alta taxa de erro, a retransmisso pode ser
requerida explicitamente, atravs de uma confirmao negativa;
neste caso o receptor simplesmente descarta a primitiva corrompida e
espera por uma retransmisso da mensagem;
se o transmissor apresenta taxa de erro suficientemente baixa, a ausncia
de confirmao indica sucesso.

Lus F. Faina - 2016 Pg. 13/54


3.4 Redundncia de Dados

Controle de Erro - tem o objetivo de diminuir a taxa de erro de


um determinado canal de comunicao;
contudo, nem todos os erros podem ser detectados, e ento sempre
existe uma Taxa de Erro Residual (RER Residual Error Rate);

Suponha-se que a probabilidade de erros de transmisso em


msgs. seja p, e que o mtodo de controle de erro identifique
uma frao f deste conjunto de erros, ento:
RER = p * (1 f)

... esta equao implica que, por instncia, a taxa residual de


erros da ordem de 10-9 (10^-9) ou menos.
Lus F. Faina - 2016 Pg. 14/54
3.5 Tipos de Codificao

So 02 os tipos bsicos de codificao:


Block Codes
todas as code words tm possivelmente o mesmo tamanho;
codificao para cada msg. de dado pode ser definida estaticamente.

Convolution Codes - h uma relao entre a codificao da


primitiva corrente e a codificao das primitivas anteriores ...
code word produzida depende da mensagem de dados e de um nro.
prvio de mensagens codificadas;
codificador muda seu estado com cada msg. que processada.
comprimento da code word usualmente esttico.

Lus F. Faina - 2016 Pg. 15/54


3.5 Tipos de Codificao

Palavras Cdigos ou Code Words podem sem classificadas em:


Linear Codes; Cyclic Codes e Systematic Codes
Linear Codes - toda combinao linear de palavras cdigos
vlidas produz uma outra palavra cdigo vlida (mod-2 sum).

Cyclic Codes - cada deslocamento cclico (cyclic shift) de uma


palavra cdigo vlida produz uma palavra cdigo vlida (CRC).

Systematic Codes - toda palavra cdigo inclui bits da primitiva


original, seguida ou precedida por um grupo de bits de checks.

Lus F. Faina - 2016 Pg. 16/54


3.5 Tipos de Codificao

Em todos os casos, as palavras cdigos so maiores que as


palavras de dados sobre as quais se baseiam;
se o nro. de bits originais d e o nro. de bits adicionais e,
a razo d / (d + e) chamada code rate.
melhorar a code rate frequentemente significa aumentar a
redundncia e por consequncia diminuir a code rate.

e.g. reduzir taxa de erro de um canal por um fator de 5 * 102


usando o Forward Error Control, pode exigir um cdigo com
um code rate <= 0.5.

Lus F. Faina - 2016 Pg. 17/54


3.6 Verificao por Paridade

Se a probabilidade de erros de mltiplos bits por msg. baixa,


tudo que necessrio para o controle de erro em um canal
simtrico binrio o cdigo de verificao por paridade.
para toda mensagem que adicionarmos 1 nico bit, teremos a soma
mdulo 2 naquela mensagem igual a 1 (um);
se um nico bit, incluindo o bit de verificao sofre mudana, o clculo
da paridade no receptor indica erro e, mas no pode ser corrigido.

Lus F. Faina - 2016 Pg. 18/54


3.6 Verificao por Paridade

Se q = 1 p, ento a probabilidade de transmisso livre de erro


para msgs. de n + 1 bits, sendo 1 bit de partidade, q (n+1).
probabilidade de erros de 1 bit em n + 1 bits transmitidos a
probalidade binomial = (n + 1) * p * qn

Canal Simtrico - p (bit error 0) = p (bit error 1)

Lus F. Faina - 2016 Pg. 19/54


3.6 Verificao por Paridade

probabilidade de erros de 1 bit em n + 1 bits transmitidos a


probalidade binomial, ou seja, (n + 1) * p * qn
sob tais circunstncias, e.g., canal sem memria, a taxa de erro
residual da verificao por paridade de 1 bit
1 q (n + 1) (n + 1) * p * qn

e.g., para n = 15 e p = 10-4 teremos taxa de erro residual da


ordem de 10-6 por mensagem ou 10-7 por bit.

Lus F. Faina - 2016 Pg. 20/54


3.6 Verificao por Paridade

linha contnua mostra como a taxa de erro residual por code


word aumenta como uma funo da taxa p de erro de bits.

Lus F. Faina - 2016 Pg. 21/54


3.7 Correo de Erro

Forward Error Control usa somente um conjunto pequeno de


combinaes disponveis de bits para codificar as msgs.
cdigos so escolhidos de modo que se tenha relativamente um nro.
grande de erros de bits para converter uma msg vlida em outra.

code rate - para um cdigo de correo de erro em geral


menor que aquele para um cdigo de deteco de erro.

Lus F. Faina - 2016 Pg. 22/54


3.7 Correo de Erro

Forward Error Correction - por apresentar code rate maiores


que o Feedback Error Control, quando utiliz-la ?!

Deve ser considerado somente quando as msgs. de controle do


RX para o TX for um problema por razes tais como:
valores altos para o atraso de transmisso;
taxa de erros de bits alta;
ausncia de canal de retorno (receptor transmissor).

Lus F. Faina - 2016 Pg. 23/54


3.7 Correo de Erro

e.g., problema de comunicao de uma estao espacial


(recptor) e o centro de controle (transmissor) na terra;
sinal de controle para liberar o obturador da cmera ou ajustar um
curso, pode exigir vrios minutos at alcanar a estao;
neste cenrio, pode no haver tempo suficiente para repetir o sinal no
caso de erro de transmisso (sinal pode chegar como pode se perder).

e.g., taxa alta de erros de bits neste caso, at mesmo a


probabilidade de uma requisio para uma retransmisso ser
recebida corretamente inaceitavelmente baixa.
o que coloca em dvida a prpria requisio para retransmisso.

Lus F. Faina - 2016 Pg. 24/54


3.7 Correo de Erro

At mesmo a Verificao de Paridade Simples por code word


pode ser extendida de um cdigo de deteco de um nico erro
para cdigo de correo de um nico erro.
e.g., sequncia de 7 bits extendida de 1 bit, o que torna o nro. de bits na
sequncia um nro. par Longitudinal Redundancy Check ou LRC.
1000100 + 0 onde 0 o bit de paridade.
na sequncia inclui-se redundncia para a srie de n cdigos, ou seja,
Vertical Redundancy Check ou VRC

Lus F. Faina - 2016 Pg. 25/54


3.7 Correo de Erro

diferena entre 02 code words definida como o nro. de bits


nos quais as code words se diferem.
Hamming Distance - mnima diferena entre 02 code words

Cdigo com Hamming Distance de n, implica que qualquer


combinao de at n 1 erros de bit pode ser detectada;
qualquer combinao at (n 1)/2 de erros de bits por cdigo pode ser
corrigida se o receptor interpretar toda palavra de cdigo no vlida como
a palavra de cdigo vlida mais prxima.
este mtodo formalmente chamado de Maximum Likelihood
Decoding ou Nearest Neighbor Decoding.

Lus F. Faina - 2016 Pg. 26/54


3.7 Correo de Erro

Aumentando a Distncia de Hamming, escolhendo code words


mais longos, seremos capazes de aumentar a confiabilidade de
um cdigo tanto mais quanto maior a code word.

Obs.: Redundncia de um Cdigo determina seu poder de


deteco e correo de erros de transmisso.

Lus F. Faina - 2016 Pg. 27/54


3.8 Linear Block Code

redundncia pode ser redefinida como o nro de bits sobre o


mnimo exigido para codificar inequivocamente uma mensagem.

Para codificar uma de n msgs. precisamos de m bits, sendo,


que m = inteiro superior o mais prximo (log n na base 2)
pode-se proteger os m bits adicionando c bits de verificao
e escolhendo n cdigos de um total de 2(m + c) cdigos;
... de tal forma que cada combinao de 02 cdigos vlidos
contemple a maior diferena em bits quanto possvel.

Lus F. Faina - 2016 Pg. 28/54


3.8 Linear Block Code

pode-se proteger os m bits adicionando c bits de verificao


e escolhendo n cdigos de um total de 2(m + c) cdigos;
... de tal forma que cada combinao de 02 cdigos vlidos
contemple a maior diferena em bits quanto possvel.

Lus F. Faina - 2016 Pg. 29/54


3.8 Linear Block Code

Para m bits de informao a ser transmitida, ou seja, para cada


palavra de 2m possveis cdigos de dados, precisamos de m + c
+ 1 palavras para proteger a msg de erros de 1 nico bit;
nro total de cdigos (m + c + 1) * 2m
2(m + c) palavras possveis (no incluso a paridade)
(m + c + 1) * 2m = 2(m + c) m + c + 1 = 2c o que permite calcular
o nro mnimo de bits de verificao dado o nro de bits de dados.

e.g., para 8 bits de dados (m = 8), temos c = 3,66 , ou 4 bits


de paridade , no obstante a msg. pode ter at 11 bits.
code rate = 8 / (8 + 4) = 0.66

Lus F. Faina - 2016 Pg. 30/54


3.8 Linear Block Code

Com uma boa aproximao, o nro de bits de dados que podem


ser protegidos cresce exponencialmente com o nro. de bits de
verificao, ou seja, c bits de verificao.

Lus F. Faina - 2016 Pg. 31/54


3.8 Linear Block Code

(m + c + 1) * 2m = 2(m + c) m + c + 1 = 2c o que permite calcular


o nro mnimo de bits de verificao dado o nro de bits de dados.
tambm podemos calcular o nro mximo de bits de dados para
um dado nro de bits de verificao c

Lus F. Faina - 2016 Pg. 32/54


3.8 Linear Block Code

Mesmo efeito da Tab. 3.3 (anterior) ilustrado na Fig. 3.3 para


at 16 bits de verificao.

Lus F. Faina - 2016 Pg. 33/54


3.8 Linear Block Code

e.g. hamming code - em uma mensagem de n bits, inclui-se


c bits de verificao => n + c bits na mensagem;
para c bits de verificao, teremos n + c = 2^c -1, ou seja,
nro mximo de bits na mensagem ser n = (2^c - 1) - c;
e.g., para n = 4 e c = 3 (bits de paridade) => 7 bits na msg;
para n = 11 e c = 4 (bits de paridade) => 15 bits na msg.

Lus F. Faina - 2016 Pg. 34/54


3.8 Linear Block Code

Hamming Code - bits na palavra de cdigo so numerados


de 1 a m+c sendo que i-simo bit de verificao colocado
na posio 2i 1 <= i <= log2(m+c)
bits de verificao so colocados no palavra de cdigo de tal maneira
que a soma da posio dos bits que eles ocupam aponte para o bit errado
para qualquer erro de 1 nico bit (mas no para 2 bits).

Lus F. Faina - 2016 Pg. 35/54


3.8 Linear Block Code

bits de verificao so colocados no palavra de cdigo de tal


maneira que a soma da posio dos bits que eles ocupam aponte
para o bit errado para qualquer erro de 1 nico bit;
qdo um posio escrita como a soma de potncias de 2, p.ex., (1 + 2
+ 4), estas potncias tambm apontam para os bits de verificao que
cobrem o bit em questo neste caso bit de dados 7.

Lus F. Faina - 2016 Pg. 36/54


3.8 Linear Block Code (LBC)

Representao Matricial - mtodo conveniente para LBC


e.g., considere um cdigo com 3 bits de dados (D1, D2 e D3) e 03 bits
de verificao (C4, C5 e C6).
seja C4 = D1 + D2; C5 = D1 + D3; e C6 = D2 + D3, ento com algum
rearranjo podemos representar as equaes na forma de matricial.

Lus F. Faina - 2016 Pg. 37/54


3.8 Linear Block Code (LBC)

Ct a matriz transposta de palavras de dados, escrita como um


vetor de bits e que de acordo com a equao anterior.
Matriz de Dados + Verificao * Ct produz o vetor zero.

Podemos representar a matriz na forma: H * Ct = 0


onde H a Matriz de Paridade (Dados + Verificao).

Lus F. Faina - 2016 Pg. 38/54


3.8 Linear Block Code (LBC)

erros de transmisso podem ser formalizados pela adio de


um vetor E, ou seja, H * ( Ct + E ) = s
onde S chamado de Sndrome.

Neste cdigo, toda soma mdulo 2 de palavras de cdigo vlidas


produz uma outra palavra de cdigo vlida;
assim, se o vetor de erros E coincide com alguma palavra de cdigo
vlida, a sndrome zero e o erro no detectvel !!

Lus F. Faina - 2016 Pg. 39/54


3.9 Cyclic Redundancy Checks

Cyclic Redundancy Check - algoritmo de cdigo cclico mais


utilizado em redes de computadores;
ISO especifica um algoritmo similar denominado FCS (Frame Check
Sequence) utilizado em seus protoclos IEEE802.

CRC contempla o produto de bits de verificao de uma primitiva,


cuja amostragem definida segundo um critrio.
bits escolhidos fazem parte do fator (polinmio gerador) e, portanto,
transmitido o produto, ou seja, primitiva * fator;
.. no destino faz-se a diviso do que recebido pelo fator, se resto zero
significa ausncia de erro ou erro no detectvel;
mtodo de diviso especfico e o fator (polinmio gerador) usado
determinam o leque de erros de transmisso que podem ser detectados.
Lus F. Faina - 2016 Pg. 40/54
3.9 Cyclic Redundancy Checks

Seja uma primitiva - sequncia de n bits que pode ser repre-


sentada por um polinmio de grau n-1;
Somatrio bi * xi com i = [0 .. (n-1)]
bi o coeficiente do bit na posio i
xi indica o literal do bit na posio i

e.g., considere a sequncia de bits 10011.


Como esta sequncia pode ser representada por polinmio ?

1*x4 + 0*x3 + 0*x2 +1*x + 1 ou x4 + x + 1

Lus F. Faina - 2016 Pg. 41/54


3.9 Cyclic Redundancy Checks

Sejam as operaes binrias (ou-exclusivo):


0+0=0-0=0
0+1=0-1=1
1+0=1-0=1
1+1=1-1=0

no h carry bit na adio e nem borrow bit na subtrao, ou


seja, para todo i xi + xi = 0
. para multiplicar 02 cdigos de dados, basta multiplicar os
polinmios correspondentes aos cdigos de dados.

Lus F. Faina - 2016 Pg. 42/54


3.9 Cyclic Redundancy Checks

Dado codificado em 4 bits (p.ex., x2 + 1) multiplicado por x + 1


Cdigo gerado o de paridade cuja code rate de .
tambm um cdigo cclico, mas no simtrico.

Lus F. Faina - 2016 Pg. 43/54


3.9 Cyclic Redundancy Checks

e.g., Calcule o polinmio cuja primitiva 1 0 0 1 1 e o fator


(polinmio gerador) 1 1 0 0
1 0 0 1 1 x4 + x + 1
1 1 0 0 x3 + x2

(x4 + x + 1) * (x3 + x2) = x7 + x6 + x4 + x3 + x3 + x2


x 7 + x 6 + x 4 + x 3 + x 3 + x 2 x 3 + x3 0

(x4 + x + 1) * (x3 + x2) = x7 + x6 + x4 + x2

Lus F. Faina - 2016 Pg. 44/54


3.9 Cyclic Redundancy Checks

polinmios - podem ser objetos de todas as oper. aritmticas.


como a primitiva multiplicada por um fator (polinmio gerador) para
criar o cdigo a ser transmitido, ento aplica-se no destino o processo
inverso, e.g., usar o fator (polinmio gerador) como divisor.

e.g., seja o polinmio x7 + x6 + x4 + x3 + x2 dividido pelo fator


x5 + x2 + 1 resultando x2 + x e resto x
para fazer o polinmio divisvel pelo fator basta subtrair o resto dele,
contudo, o receptor ser capaz de somente detectar o erro.
concluso - mais indicado usar o resto como um checksum.

Lus F. Faina - 2016 Pg. 45/54


3.9 Cyclic Redundancy Checks

fator - utilizado para gerar o checksum, tambm denominado


Polinmio Gerador (Generator Polynomial) do cdigo.
multiplica-se o polinmio da primitiva por um termo igual parcela de
mais alto grau do polinmio gerador de modo que a primitiva seja
deslocada para a esquerda tantos bits quantos do checksum;
na sequncia, divide-se o polinmio da primitiva pelo polinmio gerador
ou fator obtendo-se um quociente e o resto.

Como o CRC um cdigo linear, todo padro de erro E deve ser


igual a alguma palavra cdigo T;
para um cdigo conhecido esta propriedade pode ser usada para
calcular a taxa residual de erro.

Lus F. Faina - 2016 Pg. 46/54


3.9 Cyclic Redundancy Checks

Controle de Erro - tem o objetivo de diminuir a taxa de erro de


um determinado canal de comunicao;
contudo, nem todos os erros podem ser detectados, e ento sempre
existe uma Taxa de Erro Residual (RER Residual Error Rate);

Suponha-se que a probabilidade de erros de transmisso em


uma msg. seja p, e que o mtodo de controle de erro identifique
uma frao f deste conjunto de erros, ento:
RER = p * (1 f) esta equao implica que, por instncia, a taxa
residual de erros da ordem de 10-9 (10^-9) ou menos.

Lus F. Faina - 2016 Pg. 47/54


3.9 Cyclic Redundancy Checks

Seja P um polinmio primitiva e G um polinmio gerador de grau


r, ento o resto da diviso polinmio R com grau r-1, onde:
R = P * xr / G

Palavra Cdigo T = P * xr R

Um erro de transmisso adiciona um polinmio E ao cdigo


e o receptor descobre o erro por:
(T + E) / G = T/G + E/G = E/G

Lus F. Faina - 2016 Pg. 48/54


3.9 Cyclic Redundancy Checks

Um erro de comunicao indetectvel se E/G = 0


se E diferente de zero e de grau menor que G, a diviso sempre tem
resto, ou seja, todas as rajadas menores ou iguais a r so detectveis.
... posio dentro da primitiva T code word onde ocorre a rajada de erro
irrelevante para deteco do erro;

Padro de Erro E no se transforma em um mltiplo de G pela


simples multiplicao de um fator xi (obviamente para xi G).
como a ocorrncia do erro aleatria, ento para um cdigo de com-
primento n+r bits possvel calcular a probabilidade de ocorrncia de
erro (independente da posio).

Lus F. Faina - 2016 Pg. 49/54


3.9 Cyclic Redundancy Checks

Existem 2*n + r possibilidades de erros, sendo que o nro. de


mltiplos inteiros de um polinmio gerador de grau r em uma
palavra de cdigo 2 * n
cada mltiplo pode ser considerado como uma soma finita de
n fatores, no qual cada fator obtido por um deslocamento
esquerda do polinmio gerador.
2n / 2(n+r) = 1 / 2r

e.g., considere r = 16 10-5 de todos os erros.

Lus F. Faina - 2016 Pg. 50/54


3.9 Cyclic Redundancy Checks

Projetar polinmios geradores para detectar a maior classe


possvel de erros de comunicao no uma tarefa fcil.
um bom polinmio gerador tem pelo menos um fator (x + 1), alm disso,
em sistemas distribudos isto deve ser compartilhado com todos os pares.

CRC-12 um polinmio largamente utilizado, para gerar soma


verificao - checksum de grau 12

x12 + x11 +x3 + x2 + 1


Obs.: grau 12, ento este cdigo pode detectar rajadas de
erros de at 12 bits, no somente rajadas de 12 bits.

Lus F. Faina - 2016 Pg. 51/54


3.9 Cyclic Redundancy Checks

A CCITT (hoje ITU-T) recomenda polinmio gerador de grau 16.


x16 + x12 + x5 + 1
grau 16, ento este cdigo pode detectar rajadas de erros de at
16 bits, no somente rajadas de 16 bits.

Em aritmtica binria, este cdigo pode ser escrito como:


(x+1) * (x15 + x14 + x13 + x12 + x4 + x3 + x2 + x + 1)
pode-se ver que qualquer polinmio multiplicado pelo fator (x+1) tem
um nmero par de parcelas (ie, bits no zero).
verificar o resultado (nro par de parcelas) !!!

Lus F. Faina - 2016 Pg. 52/54


3.9 Cyclic Redundancy Checks

Isto significa que todo E com um nmero mpar de parcelas,


produzido por um nmero mpar de erros de bits detectvel;
CRC-CCITT detecta
100% em caso de 2 bits de erro;
99,997% em caso de rajadas de 17 bits;
99,998% em rajadas maiores que 17 bits.

O polinmio utilizado pelo protocolo BSC (Binary Synchronous


Communication) da IBM muito prximo deste polinmio:
x16 + x15 + x2 + 1

Lus F. Faina - 2016 Pg. 53/54


3.9 Cyclic Redundancy Checks

Comit IEEE 802 padronizou um CRC-32 bits:


x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1

Codificao e Decodificao do checksum CRC exigem tempo


e podem degradar o desempenho do autmato;
implementao tipicamente feita em hardware, por motivos
bvios de necessidade de esforo computacional.

Observe-se que o desempenho do algoritmos tem uma


linearidade com o grau do polinmio gerador.

Lus F. Faina - 2016 Pg. 54/54