Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Interfaces e Transmissão de dados 6222
Notas sobre detecção e correcção de
erros em transmissão digital de dados
VERSÂO PRELIMINAR
ENIDH - Rui Silva, Maio de 2011
Pág 1 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Índice
1 – Introdução.......................................................................................................................... 3
1.1 – Modelo do canal binário digital sem memória ....................................................... 3
1.2 – Capacidade do canal binário discreto sem memória ............................................ 4
2 – Tipos de erros em comunicação de dados .................................................................... 4
3 – Caracterização dos erros em comunicações de dados................................................ 4
3.1 – Probabilidade de erro de bit ..................................................................................... 4
3.2 – Probabilidade de erro de trama................................................................................ 4
3.2.1 – Probabilidade de erro de trama em função da probabilidade de erro de bit........ 4
3.2.1 – Probabilidade genérica de erro de trama – Independentemente do numero e
posição dos de bits errados ............................................................................................. 4
4 – Codificação de canal ........................................................................................................ 4
4.1 – Introdução .................................................................................................................. 4
4.2 – Palavra de código ...................................................................................................... 4
4.3 – Códigos lineares de blocos...................................................................................... 4
Código não sistemático: Os bits redundantes após calculados são entrelaçados com
os bits da mensagem: ............................................................................................................ 4
4.3.1 – Distância de Hamming de um código linear de blocos ........................................ 4
4.3.2 – Capacidade de controlo de erros dos códigos lineares de blocos ...................... 4
4.3.3 – Eficiência de um código de blocos c(L,m) ........................................................... 4
5 – Detecção de erros............................................................................................................. 4
5.1 – Detecção de erros por paridade simples ................................................................ 4
5.1.1 – Robustez da detecção de erros por paridade simples......................................... 4
5.1.2 – Resumo do método de detecção por paridade simples....................................... 4
5.2 – Método de detecção de erros por paridade composta.......................................... 4
5.2.1 – Robustez do método de detecção de erros por paridade composta ................... 4
5.2.2 – Resumo do método de detecção de erros por paridade composta ..................... 4
5.3 – Método de detecção de erros por códigos polinomiais ........................................ 4
5.3.1 – Representação polinomiais de números binários ................................................ 4
5.3.2 – Operações base 2 com polinómios...................................................................... 4
5.3.3 – Detecção de erros por CRC ................................................................................. 4
5.3.4 – Desempenho do método de detecção de erros por CRC.................................... 4
5.3.5 – Capacidades de correcção de erros do algoritmo CRC ...................................... 4
5.3.6 – Hardware para implementação do algoritmo CRC .............................................. 4
5.3.7 – Polinómios padrão e implementações comerciais............................................... 4
5.3.8 – Resumo do mecanismo CRC............................................................................... 4
6 – Correcção de erros em transmissão de dados.............................................................. 4
6.1 – Introdução. ................................................................................................................. 4
6.1.1 – Propriedades da codificação de blocos ............................................................... 4
6.1.2 – Pesos de Hamming .............................................................................................. 4
6.2 – Códigos de repetição (3,1)........................................................................................ 4
6.3 – Código de Hamming.................................................................................................. 4
6.3.1 – Desenho de um código de Hamming (7,4,3) ....................................................... 4
6.3.2 – Síndrome de um código de blocos linear............................................................. 4
6.3.3 – Número mínimo de bits de paridade do código de Hamming.............................. 4
6.3.4 – Construção de um código de Hamming (7,4,3) sistemático ................................ 4
6.3.5 – Controlo de erros do código de Hamming (7,4,3) sistemático............................. 4
6.3.6 – Construção de um código de Hamming (7,4,3) não sistemático ......................... 4
6.3.7 – Outras famílias de códigos de Hamming ............................................................. 4
6.3.8 – Sub-conjuntos de famílias de códigos de Hamming............................................ 4
6.4 – Representação matricial de um código de blocos linear. ..................................... 4
6.4.1 – Considerações adicionais sobre o síndrome ....................................................... 4
Referências.............................................................................................................................. 4
Pág 2 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
1 – Introdução
Como estudado em capítulos anteriores, qualquer canal de comunicações, está sujeito
a imparidades. Estas imparidades conduzem a erros na transmissão dos dados e
exigem o desenvolvimento de mecanismos que permitam ao receptor a detecção
automática desses erros para que posteriormente sejam corrigidos.
Um erro de bit é definido como a inversão do valor de um bit à recepção, relativo
ao seu valor original á emissão.
1.1 – Modelo do canal binário digital sem memória
O canal de comunicação digital pode ser representado através do modelo genérico de
um canal de comunicações binárias. Uma vez que os sinais binários são discretos, o
canal é também analisado em termos discretos, através de variáveis aleatórias
discretas.
A figura 1.0, representa este modelo de canal, que não tem memória, ou seja a
transmissão de um bit é independente da transmissão dos bits anteriores.
Figura 1.0 modelo do canal binário
Tendo em conta que a probabilidade de o bit “1” errar é igual à probabilidade de o bit
“0” errar, obtêm-se o modelo do canal binário simétrico representado na figura 1.1.
Figura 1.1 O canal binário simétrico
À saída do canal, os bits são invertidos com probabilidade de erro Peee e chegam
intactos com probabilidade 1- Pe.
A probabilidade de erro de bit será abordada com mais detalhe na secção 3.1.
Pág 3 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
1.2 – Capacidade do canal binário discreto sem memória
A capacidade do canal discreto sem memória é dada pela sua capacidade de
transferência de informação da entrada para a saída. Esta capacidade atinge o seu
valor mínimo quando a probabilidade de erro de bit é 0.5. A figura 1.2 ilustra a
capacidade do canal binário simétrico
Figura 1.2 Capacidade do canal binário simétrico
Pela figura 1.2, verifica-se que a probabilidade de erro no canal binário simétrico
determina qual a sua capacidade C de transferência de informação
A capacidade do canal binário simétrico é máxima para cada um dos extremos do
valor de Pe, pois quando temos Pe = 0, não existem erros, mas quando temos Pe = 1,
todos os bits estão errados bastando invertê-los.
O canal binário simétrico é determinístico para os casos em que a probabilidade
de erro é “0” ou “1”.
A capacidade é “0” quando a probabilidade de erro Pe = 1/2 pois neste caso, os dados
recebidos têm igual probabilidade de serem invertidos para “1” ou para “0”
respectivamente tornando impossível determinar o seu real valor.
Pág 4 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
2 – Tipos de erros em comunicação de dados
Os erros podem ser divididos em três tipos principais:
1 – Erros de bit: (Em Inglês designados bit errors) acontecem quando um ou
mais bits isolados que compõem a mensagem chegam invertidos ao receptor. A
figura 2.1 ilustra um caso onde ocorrem três erros de bit representados a vermelho.
Figura 2.1 Erros isolados de bit
2 – Erros em rajada: (Em Inglês são designados burst errors) acontecem quando
um conjunto de B bits, que começa e acaba com um bit invertido, dista do
próximo conjunto de erros, B ou mais bits.
A figura 2.2 mostra um caso onde existe uma rajada de B=3 erros seguida de outra
de B=5 erros. De acordo com a definição, entre duas rajadas deverão existir pelo
menos igual número de bits que compunham a rajada anterior, sem erros.
Note-se que os erros em rajada não são mais do que erros isolados de bit com
padrões específicos
Figura 2.2 Erros em rajada
3 – Erros de trama: (Em Inglês são designados frame errors) acontecem quando
uma trama contém um ou mais bit errados
Os erros de trama acabam por ser uma consequência dos erros de bit, pois em
comunicação de dados a informação é agrupada e delimitada em tramas de dados.
Basta que um único bit que compõe a trama esteja errado para implicar a retransmissão de toda a trama novamente. (Ver figura 2.3)
Figura 2.3 Trama errada devido a erro de bit
Pág 5 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
3 – Caracterização dos erros em comunicações de dados
A frequência de erros depende de factores internos e externos ao canal de
comunicação, e não são determinísticos. Ou seja, os erros ocorrem aleatoriamente.
Para os caracterizar temos que recorrer à teoria das probabilidades.
3.1 – Probabilidade de erro de bit
A probabilidade de erros de bit Pe define a frequência com que ocorrem erros simples
de bit e não é mais do que a relação entre o número de bit errados e o número total de
bits contados ao longo de um determinado período.
A figura 3.1 ilustra uma situação onde ocorre média 1 bit errado por cada 10 para o
período ∆t da análise: Pe = 2/20 = 0.1
Figura 3.1 Probabilidade de erro de bit de 0.1
Pe =
Ne
Nt
(3.0)
Onde Ne representa o número total de erros e Nt o número total de bit contados num
intervalo de tempo ∆t.
Seja:
N t = rb ∆t
(3.1)
Em que rb representa o débito binário em bit por segundo.
Substituindo 3.1 em 3.0:
Pe =
Ne
rb ∆t
(3.2)
Note-se que ∆t tem que ser suficientemente grande para que a amostra de bits seja
representativa.
A probabilidade de erro de bit também é designada por taxa de erros de bit ou em
Inglês bit error rate (BER)
Pág 6 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
3.2 – Probabilidade de erro de trama
Seguindo o mesmo raciocínio da probabilidade de erro de bit, a probabilidade de erro
de trama (ou taxa de erros de trama) é a frequência de ocorrência de tramas com
erros. É definida pela relação entre o número de tramas erradas e o número total de
tramas recebidas num determinado período de tempo.
A figura 3.2 ilustra uma situação onde a taxa de tramas erradas é PF = 1/3.
Figura 3.2 Probabilidade de erro de trama de 1/3
PF =
N Fe
N tf
(3.3)
Onde NFe representa o número total de tramas com erros e Ntf o número total de
tramas contados num intervalo de tempo ∆t.
Sendo: N ft = rF ∆t
(3.4)
Em que rF é o ritmo de transmissão de tramas em tramas por segundo.
PF =
N Fe
rF ∆t
(3.5)
3.2.1 – Probabilidade de erro de trama em função da probabilidade de erro de bit
Os erros de trama são dependentes dos erros de bit, pois a trama errada é aquela que
contêm 1 ou mais bit errados.
Sendo assim, recorrendo à análise combinatória, facilmente se deduz a probabilidade
de erro de trama em função da probabilidade de erro de bit.
Como exemplo, considere-se a trama T1 da figura 3.3, composta por 3 bit numerados
de 1 a 3.
Cada bit apresenta erros independentes uns dos outros e tem probabilidade individual
de erro Pe
Se cada bit tem probabilidade de erro Pe então a probabilidade de esse mesmo bit
estar correcto (não estar errado) é 1-Pe.
Pág 7 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Figura 3.3 Trama com 3 bit cada um com Probabilidade de erro Pe
Para que uma trama esteja errada são condições suficientes qualquer um
seguintes acontecimentos:
dos
Acontecimento 1: A trama apresenta 1 bit errado. Esse bit pode estar na posição
1, 2 ou 3 (Ver figura 3.4)
Note-se que sempre que há um bit errado com probabilidade Pe, existem em
simultâneo dois bit correctos com probabilidade 1-Pe.
Sendo assim, e de acordo com a figura 3.4 a combinação de posições possíveis dos
bits errados e correctos são: (bit 1 errado e 2,3 correctos) ou (bit 2 errado e 1,3
correctos) ou (bit 3 errado e 1,2 correctos).
A conjunção “e” é matematicamente uma multiplicação e a disjunção “ou” é
matematicamente uma soma:
. Figura 3.4 Trama T1 com as combinações possíveis de 1 bit errado
O acontecimento 1 é descrito matematicamente pela equação 3.6. É a combinação
de 3 bits agrupados 1 a 1, onde 1 bit está errado com probabilidade Pe e 2 bits estão
correctos com probabilidade 1-Pe.
P(Acontecimento 1) = 3C1 pe1 (1 − pe )
2
(3.6)
Acontecimento 2: A trama apresenta 2 bit errados. Esses bit podem estar
combinados nas posições (1 e 2) , (2 e 3), (1 e 3). (Ver figura 3.5)
Temos agora a seguinte combinação: (bit 1 e 2 errados e 3 correcto) ou (bit 2 e 3
errados e 1 correctos) ou (bit 3 errado e 1,2 correctos).
. Figura 3.5 Trama T1 com as combinações possíveis de 2 bits errados
Pág 8 de 68
Departamento de Radiotecnia
Escola Náutica Infante Dom Henrique
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
O acontecimento 2 é descrito matematicamente pela equação 3.7 e é a combinação
de 3 bit agrupados 2 a 2, onde 2 estão errados com probabilidade Pe e 1 está correcto
com probabilidade 1-Pe.
P(Acontecimento 2) = 3C2 pe 2 (1 − pe )
1
(3.7)
Acontecimento 3: A trama apresenta 3 bit errados e 0 correctos. Esses bit
podem estar combinados nas posições (1 e 2 e 3). (Ver figura 3.6)
. Figura 3.6 Trama T1 com as combinações possíveis de 3 bit errados
O acontecimento 3 é descrito matematicamente pela equação 3.8 e é a combinação
de 3 bit agrupados 3 a 3, onde 3 estão errados com probabilidade Pe e nenhum está
correcto com probabilidade 1-Pe.
P(Acontecimento 3) = 3C3 pe 3 (1 − pe )
0
(3.8)
Torna-se agora fácil o cálculo da probabilidade de erro de trama, pois uma trama está
errada caso estejamos perante qualquer um dos acontecimentos anteriores
(acontecimento 1) ou (acontecimento 2) ou (acontecimento 3).
Uma vez que o “ou” é representado por uma soma, então a probabilidade da trama T1
estar errada é:
P(Erro em T1) = acontecimento 1 + acontecimento 2 + acontecimento 3
Ou:
P(Erro em T1) = 3C1 pe1 (1 − pe ) + 3C2 pe 2 (1 − pe ) + 3C3 pe 3 (1 − pe )
2
1
0
(3.9)
A equação 3.9 pode ser generalizada pela equação 3.10, para qualquer trama com L
bits de comprimento e i erros.
L
(
PF (L, i ) = ∑ L C i P e 1 − P e
i
L −i
)
(3.10)
i =1
Em que:
L
Ci =
L!
i!(L − i )!
(3.11)
Pág 9 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
3.2.1 – Probabilidade genérica de erro de trama – Independentemente do numero
e posição dos de bits errados
Caso não nos seja relevante o número e posição de errados na trama, é possível
calcular de forma simplificada, a probabilidade de erro de trama partindo do raciocínio
“inverso”:
Para a trama T1 da figura 3.3 não conter erros, é necessário que todos os bits
(1,2 e 3) que a compõem estejam correctos (com probabilidade 1-Pe)
Para a trama estar correcta é suficiente o acontecimento 4
Acontecimento 4.Todos os bits de T1 (1,2,3) estão correctos
O acontecimento 4 é descrito pela equação 3.12: A probabilidade de T1 estar correcta
é a “probabilidade do bit1 estar correcto e probabilidade do bit 2 estar correcto e
probabilidade do bit 3 estar correcto”.
(3.12)
Torna-se agora fácil deduzir a probabilidade de erro de trama, pois não é mais do que:
___
PF = 1 − PF
(3.13)
Substituindo 3.12 em 3.13 vem:
PF = 1 − (1 − Pe )
3
(3.14)
A equação 3.14 pode ser generalizada para uma trama com L bits. De um modo geral
a probabilidade de uma trama estar errada é dada pela equação 3.15:
PF (L ) = 1 − (1 − Pe )
L
(3.15)
4 – Codificação de canal
Neste capítulo iremos abordar a codificação de canal e respectivos códigos de blocos
lineares como técnica fundamental para detecção e correcção de erros em
transmissão de dados.
No capítulo 5, serão abordados códigos específicas para detecção de erros que
funcionam em modo BEC1
No capítulo 6, serão abordados códigos específicas para correcção de erros, que
podem funcionar em modo FEC2 ou BEC
1
BEC – Backward Error Correction. A correcção é feita por pedido de retransmissão ao emissor. Usado
quando a transmissão é nos dois sentidos
Pág 10 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
4.1 – Introdução
Para que seja possível a detecção e correcção de erros é necessária a adição de um
ou mais bits redundantes à mensagem enviada, de forma a permitir que o receptor
verifique a sua integridade e se possível a corrija. O resultado é uma palavra de
código de comprimento superior à mensagem original.
Este processo de adição de bits redundantes é efectuado pelo emissor e é
denominado “codificação de canal”.
No receptor, o procedimento inverso é efectuado (descodificação de canal) de forma a
validar e recuperar a mensagem original
A figura 4.1 ilustra o processo de codificação à emissão e descodificação à recepção.
É possível verificar que o codificador encontra-se imediatamente antes do modulador e
da transmissão dos dados para a linha.
Figura 4.1 O Codificador no processo de comunicação de dados.
O cálculo do valor do(s) bit(s) reduntante(s) é feito a partir da mensagem na fonte, com
base num algoritmo pré-definido.
O procedimento genérico para construção da palavra de código está representado na
figura 4.2. Aqui a palavra de código é a trama enviada e recebida.
2
FEC – Forward Error Correction . A correcção é feita no receptor através de um código de blocos.
Usado quando a transmissão só é possível num sentido
Pág 11 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
. Figura 4.2 Codificação e Descodificação da palavra de código .
Na emissão, o codificador calcula os bits de redundantes de verificação e adiciona-os
à mensagem para construir a palavra de código.
Na recepção, o descodificador recorre ao algoritmo do emissor para separar a
mensagem dos bits redundantes. É com base no valor dos bits redundantes que o
descodificador consegue detectar ou até corrigir erros.
4.2 – Palavra de código
A trama de dados a transmitir, é composta pela palavra de código que por sua vez
contêm os seguintes campos (ver figura 4.3 )
1 - Mensagem de informação tem comprimento total m, que inclui todos os cabeçalhos
e campos das camadas superiores do modelo OSI3
2 – Palavra de código c, de comprimento total L
3 – Bits redundantes de verificação v, com comprimento L-m
Figura 4.3 Palavra de código de comprimento L e v bits de verificação.
3
OSI – Open Systems For Interconnection
Pág 12 de 68
Departamento de Radiotecnia
Escola Náutica Infante Dom Henrique
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
A palavra de código c, é representada por c (L,m), em que L representa o
comprimento total e m o comprimento da mensagem.
Definição 4.1
O conjunto dos bits de informação mais os bits de verificação é designado por
palavra de código.
A palavra de código pode ser representada por c(L,m)
4.3 – Códigos lineares de blocos.
Um código qualquer é linear quando:
1 – Inclui a palavra de código nula.
2 – A soma de duas palavras de código resulta numa outra palavra de código
Os códigos lineares subdividem-se em:
a) Códigos de blocos
b) Códigos convolucionais
Os códigos objecto de estudo, são os códigos de blocos, em que a palavra de código
c, é um vector de bits desse código. O vector m de mensagem com m bits é dado por:
m = [m 0
m1 ... m m −1 ]
O vector da palavra de código c, tem comprimento L > m bits e contêm os bits da
mensagem e os de verificação dado por:
c = [c 0
... c L −1 ]
O código de blocos pode ser sistemático ou não consoante a posição dos bits
redundantes.
Código sistemático: Os bits de verificação v após calculados são adicionados
todos juntos ao final ou ao início da mensagem e têm comprimento v=L-m
[
c = m0 m1
m1 m2
... m x −1
c =  v0 v1 ... v( L − m ) −1
m0 m1
b0 b1 ... b( L − x ) −1
]
m2 m3 ... mm−1 
Código não sistemático: Os bits redundantes após calculados são entrelaçados
com os bits da mensagem:
c =  m0 v0 m1v1 ... mm−1 ... b( L− m ) −1 
c =  v0 v1m0 m1 ... b( L − m ) −1 ... mm −1 
Note-se que a adição de bits redundantes, cria uma palavra de código e conduz ao
afastamento entre as 2m diferentes mensagens. A figura 4.4 ilustra este afastamento
para m = 2 e L = 3: Código do tipo c(3,2)
Pág 13 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Figura 4.4 Palavra de código para c(3,2).
4.3.1 – Distância de Hamming de um código linear de blocos
A diferença entre duas palavras de código é denominada distância de Hamming dH.
O seu nome deve-se a Richard Hamming, que juntamente com Claude Shannon
desenvolveram a base da teoria da informação (codificação de fonte e de canal) nos
anos 50, nos laboratórios da BELL nos EUA
Esta distância tem um papel fundamental na determinação das capacidades
correcção e detecção de erros de qualquer código.
de
Definição 4.2
Distância de Hamming – dH : É o número mínimo de bits que diferem 2 palavras
de código entre si ou por outras palavras: é o número de bits necessários para
transformar uma palavra de código noutra
A distância de Hamming é calculada pela operação “ou exclusivo” entre cada um dos
bits das palavras em análise, sendo o seu valor o número de bits a “1” do resultado.
Quando o conjunto de palavras de código sujeitas à avaliação da distância de
Hamming, é o universo de todo o alfabeto conhecido, então interessa encontrar a
distância mínima dmin de Hamming entre todas elas que é designada por: Distância de
Hamming do código completo.
Definição 4.3
Distância de Hamming do código completo– dmin : É a menor das distâncias de
Hamming dH entre todas as palavras de código
Como exemplo considere-se o alfabeto composto pelas seguintes palavras de código:
A = 110011011, B = 111100011 e C = 101110001
A distância de Hamming é calculada fazendo ou exclusivo entre cada uma delas.:
Pág 14 de 68
Departamento de Radiotecnia
Escola Náutica Infante Dom Henrique
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
A 1 1001 1011
B ⊕ 1 1110 0011
0 0111 1000
A 1 1001 1011
C ⊕ 1 0111 0001
0 1110 1010
V preliminar
B 1 1110 0011
C ⊕ 1 0111 0001
0 1001 0010
A diferença AB = 4, AC = 4 e BC = 3, sendo que a mínima distância entre toda as
palavras de código ocorre entre B e C.
A distância de Hamming de código completo é dmin = 3
Este assunto será novamente abordado e aprofundado no capitulo 6.
4.3.2 – Capacidade de controlo de erros dos códigos lineares de blocos
A distância de Hamming é um parâmetro fundamental para avaliar a capacidade de
um determinado bloco na detecção e correcção de erros.
Para que um código seja capaz de detectar e erros isolados de bit, a sua distância de
Hamming de código completo dmin deverá ser:
d min [det ecção ] = e + 1 [bit]
(4.1)
Para que um código seja capaz de corrigir e erros isolados de bit, a sua distância de
Hamming de código completo dmin deverá ser:
d min [correcção ] = 2e + 1 [bit]
(4.2)
Ou corrige:
e=
d min − 1
[erros] , com e arredondado para baixo.
2
(4.3)
Este assunto será novamente abordado e aprofundado no capitulo 6.
4.3.3 – Eficiência de um código de blocos c(L,m)
Quanto menor for o número de bits adicionados à mensagem mais eficiente será o
código, pois menos bits de overhead4 este contêm. Veremos no capítulo 6, que, de
um modo geral, quanto maior for o número de bits de verificação, maior será a
robustez do código, ou seja, maior será a sua capacidade de detecção ou correcção
de erros
Definição 4.4
Eficiência ou taxa do código (“code rate”). È a relação entre o número total de
bits da mensagem e o numero de total de bits que compõem a palavra de código
e é dada pela equação 4.14.
4
OverHead – Dados binários redundante enviados com a mensagem, que não são informação útil
Pág 15 de 68
Departamento de Radiotecnia
Escola Náutica Infante Dom Henrique
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
η=
m
L
V preliminar
(4.4)
O desafio está em construir o código mais eficiente possível, mantendo elevada
robustez.
5 – Detecção de erros
Neste capítulo iremos abordar diferentes metodologias para detecção de erros em
transmissão digital de dados. Serão estudados em detalhe códigos de paridade e
códigos cíclicos, que são um sub-conjunto dos códigos de lineares de blocos.
5.1 – Detecção de erros por paridade simples
O método de detecção por bit de paridade simples consiste na adição de 1 único bit de
verificação P pelo emissor, ao final da mensagem transmitida.
No caso de serem utilizada uma mensagem m de comprimento m = 8 bits, a palavra
de código final tem comprimento L = 9 bits c(9,8) é representada na figura 5.1.
O bit redundante P tem o valor 0 ou 1 consoante o número de 1’s existentes na
mensagem seja par ou ímpar respectivamente. (Daqui vem o nome de bit de
paridade).
O receptor vai efectuar novo cálculo de paridade P’ da mensagem recebida e compara
o resultado com o valor do bit P recebido. Caso P’ = P significa que não se detecta
erro.
.
Figura 5.1 Posição do bit de paridade na mensagem transmitida.
Na prática o resultado da contagem do número de “1’s” obtêm-se somando modulo 2
cada um dos bits da mensagem. A soma módulo 2 é efectuada através da operação
lógica binária “ou exclusivo”.
A tabela 5.1 representa a tabela de verdade do “ou exclusivo”, cujo operador tem o
símbolo ⊕ .
Entrada 1
Entrada 2
Saída
0
0
1
1
0
1
0
1
0
1
1
0
Tabela 5.1 Tabela de verdade “ou exclusivo”
Pág 16 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Como se pode observar, em aritmética modulo 2 (ou exclusivo), as somas não têm bit
de transporte (carry), e as subtracções não têm bit de empréstimo (borrow) o que torna
as operações soma e subtracção exactamente iguais.
O Algoritmo de cálculo de paridade pode ser:
1 - par caso o resultado seja directamente o da operação “ou exclusivo” de cada um
dos bits da mensagem
2 – ímpar, caso o resultado seja a inversão do resultado da operação “ou exclusivo”
de cada um dos bits da mensagem
A figura 5.2 ilustra o circuito lógico envolvido no cálculo do bit de paridade (tanto no
emissor como no receptor) usando o algoritmo de paridade par e ímpar.
Figura 5.2 Posição do bit de paridade na mensagem transmitida.
A palavra de código de bit de paridade é representada pelo vector:
c = [( m0 )
(m1 ) (...) (mm−1 ) (m0 ⊕ m1 ⊕ ... ⊕ mm−1 )]
Mensagem m
Bit de verificação v
5.1.1 – Robustez da detecção de erros por paridade simples
Para aferir a robustez deste método de detecção de erros, vamos validá-lo com alguns
casos práticos de ocorrências de erros.
Admita-se que se quer transmitir o carácter “a” do alfabeto ASCII 5 a 8 bit, utilizando o
algoritmo de paridade par. O valor do bit de paridade obtêm-se directamente da
operação ou exclusivo ( ⊕ )de cada um dos bits de “a”
P = 0 ⊕1⊕1⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕1 = 1
5
ASCII American Standard Code for Information Interchange
Pág 17 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
A mensagem enviada será constituída pela palavra de código da figura 5.3
Figura 5.3 Carácter “a” e respectivo bit de paridade par.
Teste 1: Erro num bit.
Admita-se que houve um erro no bit B0 (1º a contar da esquerda para a direita). Ao
receptor chega:
111000011
(P=1)
A operação de verificação de paridade no receptor consiste em calcular novamente a
paridade denominada agora P’ , a partir dos 8 primeiro bit da mensagem (b0-b7)que
correspondem ao carácter “a” e comparar o resultado com a paridade P que vem na
mensagem
P ' = 1⊕1⊕1⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕1 = 0
Como P’≠ P, o erro é detectado.
Teste 2: Erro em dois bit.
Admita-se que houve agora dois erros nos bit B0 e B1. Ao receptor chega:
1 0 1 0 0 0 0 1 1 (P=1), P ' = 1 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 = 1
P’= P, o erro não é detectado.
Teste 3: Erro em três bit.
Admita-se que houve agora três erros nos bit B0, B1 e B3. Ao receptor chega:
1 0 1 1 0 0 0 1 1 (P=1), P ' = 1 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 = 0
P’≠ P, o erro é detectado.
E assim sucessivamente. Facilmente se verifica que este método detecta erros de bit
em número ímpar, mas não é capaz de detectá-los em número par.
Pág 18 de 68
Departamento de Radiotecnia
Escola Náutica Infante Dom Henrique
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Conclusão:
O método de detecção por bit de paridade simples, detecta todos os erros de bit
em número par, mas não detecta erros de bit em número ímpar. A robustez deste
mecanismo é bastante limitada.
Nota:
Admitindo que se recorre, por exemplo, a mensagens constituídas por caracteres
ASCII com 8 bits, são possível codificar 28 = 256 caracteres diferentes. A palavra de
código (ver secção 4.2) tem comprimento L=9, m=8 e v=1,
Se colocarmos todas as combinações possíveis binárias numa tabela excel, verifica-se
que a distância mínima do código completo é dmin = 2.
Sendo assim, o código (L,m) abordado neste exemplo é do tipo (9,8), com dmin = 2.
De acordo com a equação 4.1, e = d min − 1 = 1, código detecta todos os erros simples
de 1 bit. Adicionalmente ainda é capaz de detectar erros se forem em número ímpar.
De acordo com a equação 4.4, e =
d min − 1
= 0.5 = 0 , logo não tem quaisquer
2
capacidades de correcção de erros.
A probabilidade de detecção deste mecanismo é igual à probabilidade de existirem
erros i em número ímpar e é dada pela equação 5.1, que não é mais do que a
equação 3.10 fazendo i = ímpar.
PDetecção (L, i ) =
L
∑
L
Ci Pe (1 − Pe )
i
L −i
(5.1)
i = ímpar
Inversamente, a probabilidade de não detecção é dada pela equação 5.2
__________
PDetecção (L, i ) = 1 − PDetecção (L, i ) =
L
∑
L
C i Pe (1 − Pe )
i
L −i
i = par
Pág 19 de 68
(5.2)
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
5.1.2 – Resumo do método de detecção por paridade simples
Resumo:
Na detecção de erros por paridade simples, a palavra de código transmitida é
formada pela adição de um único bit de verificação ao final de cada carácter
denominado “bit de paridade”. Este bit não é mais do que uma contagem dos
“1” existentes na mensagem através da operação “ou exclusivo”.
Existem dois tipos de paridade simples: Par e Ímpar:
-Paridade par: se o número de bits a “1” for par o bit de paridade é 0.
Qweqweqwe
se o número de bits a “1” for ímpar o bit de paridade é 1.
-Paridade ímpar: se o número de bits a “1” for par o bit de paridade é 1.
Qweqweqwe
se o número de bits a “1” for ímpar o bit de paridade é 0.
Este tipo de detecção é pouco robusta, pois apenas é capaz de detectar
ocorrências de erros em número ímpar de bits.
Principais Aplicações:
Este método aplica-se em ligações entre terminais e sistemas centrais em modo
interactivo (ou seja em modo de envio / recepção de caracteres de texto) que
não requerem grande fiabilidade, isto é, a ligações através da porta série de um
terminal (ou PC) a um qualquer outro sistema utilizando o protocolo RS-232 /
V.24
5.2 – Método de detecção de erros por paridade composta
O método de paridade composta tem como objectivo aumentar a robustez da detecção
de erros existente no mecanismo de paridade simples.
Este método tira partido do facto de uma trama de dados agrupar vários caracteres de
informação. Sendo assim, ficam agora disponíveis dois níveis de verificação. A
paridade simples ou horizontal por cada carácter (estudada anteriormente) e um novo
tipo denominado paridade vertical ou longitudinal que é calculada entre os vários
caracteres.
A figura 5.4, ilustra o conceito. Seja a trama construída pelos caracteres “a” e “b”.
O valor da paridade longitudinal (ou vertical) Pv é calculado através da operação “ou
exclusivo” de cada uma das correspondentes posições dos bit de cada carácter. O
resultado tem o mesmo numero de bits do que o comprimento dos caracteres e é
adicionado ao final da trama num campo específico denominado BCC6
A paridade horizontal (simples( PH é calculada pelo método estudado na secção 5.1 e
é a operação ou exclusivo de cada um dos bit de cada carácter.
6
BCC - Block CheCsum – Bloco de bits de verificação
Pág 20 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Figura 5.4 Trama com dois caracteres e paridade composta (PH e PV)
O valor dos bits do campo BCC são:
PV 0 = 0 ⊕ 0 = 0
PV 1 = 1 ⊕ 1 = 0
PV 2 = 1 ⊕ 1 = 0
PV 3 = 0 ⊕ 0 = 0
PV 4 = 0 ⊕ 0 = 0
PV 5 = 0 ⊕ 0 = 0
PV 6 = 0 ⊕ 1 = 1
PV 7 = 1 ⊕ 0 = 0
BCC= 0 0 0 0 0 0 1 0
O valor dos bit de paridade horizontal PH(A) e PH(B) são:
PH ( A) = 0 ⊕ 1 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 = 1
PH ( B ) = 0 ⊕ 1 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 0 = 1
Sem considerar as Flags de delimitação, a mensagem enviada pelo emissor seria a da
figura 5.5
Figura 5.5 Trama contendo a mensagem “ab” e paridade composta (PH + BCC)
Ao receber a mensagem, o receptor separar os bits de paridade horizontal e os do
campo BCC do resto da informação
De seguida efectua novamente o cálculo dos bits de paridade e BCC da trama
recebida e compara-os com os que vinham na trama.
Pág 21 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
A trama é considerada sem erros caso os bit de paridade horizontal e os bit do
bloco BCC calculados sejam iguais aos que vêm na trama recebida.
Note-se que agora o comprimento da palavra de código depende do número de
caracteres que compõem a trama. Admitindo n caracteres cada um com m bits, então
a palavra tem L = (m+1).n, m=n.m e v = m+n. Será genericamente do tipo:
((m+1).n , m.n)
5.2.1 – Robustez do método de detecção de erros por paridade composta
Para aferir a robustez deste método de detecção de erros, vamos validá-lo com alguns
casos práticos de ocorrências de erros.
Consideremos a trama de informação T2 representada na figura 5.6 contendo os
caracteres A a F e delimitada por STX-ETX. Recorre-se a paridade horizontal ímpar
e vertical par.
Figura 5.6 Trama T2 sob validação
Para facilitar a construção dos bits de paridade, colocamos os caracteres da trama
alinhados de cima para baixo com os bits organizados numa matriz. (Ver figura 5.7)
Figura 5.7 Trama T2 e respectivas paridades
Pág 22 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
O cálculo das paridades é feito da seguinte forma:
1 – Cálculo da paridade Horizontal Ímpar. Sendo paridade ímpar há que inverter o
resultado da operação ou exclusivo bit a bit (ver figura 4.5).
________________________________________
PH 0 = 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 0 = 0
________________________________________
PH 1 = 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 = 1
________________________________________
PH 2 = 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 0 = 1
________________________________________
PH 3 = 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 1 = 0
________________________________________
PH 4 = 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 0 = 1
________________________________________
PH 5 = 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 1 = 0
________________________________________
PH 6 = 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 0 = 1
________________________________________
PH 7 = 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 1 = 1
2 – Cálculo da paridade vertical par. Sendo paridade par, o resultado é a operação
ou exclusivo sem inversão.
PV 0 = 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 = 0
PV 1 = 0 ⊕ 1 ⊕ 1 ⊕ 1 ⊕ 1 ⊕ 1 ⊕ 1 ⊕ 0 = 0
PV 2 = 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 = 0
PV 3 = 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 = 0
PV 4 = 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 = 0
PV 5 = 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 1 ⊕ 0 = 1
PV 6 = 1 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 1 = 1
PV 7 = 0 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 1 = 0
O campo BCC da trama é: 0 0 0 0 0 1 1 0, O conjunto de paridades horizontais PH = 0
1 1 0 1 0 1 1 e a trama T2 transmitida é a da figura 5.7.
Pág 23 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Teste 1: Erro nos bits posição 0 e 3 do carácter A e erro no bit da posição 3 do
carácter B
A trama que chega ao receptor com erros está ilustrada na figura 5.8.
Figura 5.8 Trama T2 com erros
a) Cálculo das paridades horizontais de cada carácter da trama recebida.
________________________________________
PH 1 ' = 1 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 = 1
________________________________________
PH 2 ' = 0 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 0 = 0
Logo PH’ = 0 1 0 0 1 0 1 1
b) Cálculo das paridades verticais (BCC) de cada carácter da trama
PV 3 ' = 0 ⊕ 1 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 = 0
Logo BCC’ = 0 0 0 0 0 1 1 0
Verifica-se que BCC = BCC’, e P≠ P’, logo os erros são detectados pois apesar
de serem em número par na horizontal, são em número ímpar numa das
verticais.
Pág 24 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Teste 2: Erro nos bits posição 1 e 4 do carácter A e erro nos bits da posição 1 e 4
do carácter C
A trama que chega ao receptor com erros está ilustrada na figura 5.9.
Figura 5.9 Trama T2 com erros
a) Cálculo das paridades horizontais de cada carácter da trama recebida.
________________________________________
PH 1 ' = 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 1 = 1
________________________________________
PH 3 ' = 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 1 = 0
Logo PH’ = 0 1 1 0 1 0 1 1
b) Cálculo das paridades verticais (BCC) de cada carácter da trama
PV 1 ' = 0 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 1 ⊕ 0 = 0
PV 4 ' = 0 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 = 0
Logo BCC’ = 0 0 0 0 0 1 1 0
Verifica-se que BCC = BCC’, e PH = PH’, logo os erros não são detectados pois
são em número par e em simultâneo nas linhas e colunas.
Pág 25 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Teste 3: Erro nos bits posição 1 e 4 do carácter A e erro nos bits da posição 1 e 3
do carácter C
A trama que chega ao receptor com erros está ilustrada na figura 5.10.
Figura 5.10 Trama T2 com erros
a) Cálculo das paridades horizontais de cada carácter da trama recebida.
________________________________________
PH 1 ' = 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 1 = 1
________________________________________
PH 3 ' = 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 1 = 0
Logo PH’ = 0 1 1 0 1 0 1 1
b) Cálculo das paridades verticais (BCC) de cada carácter da trama
PV 1 ' = 0 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 1 ⊕ 0 = 0
PV 3 ' = 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 = 1
PV 4 ' = 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 = 1
Logo BCC’ = 0 0 1 1 0 1 1 0
Verifica-se que PH = PH’ e BCC ≠ BCC’, logo os erros apesar de serem em numero
par, não são simultâneos nas linhas e colunas pelo que são detectados.
Fazendo todas as combinações de erros possíveis, verifica-se que os estes só não
são detectados se ocorrerem em número par e em simultâneo nas mesmas
posições da linha e coluna.Sendo um acontecimento muito menos provável,
aumenta em muito a robustez relativamente ao método de detecção por paridade
simples.
Pág 26 de 68
Departamento de Radiotecnia
Escola Náutica Infante Dom Henrique
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Conclusão:
O método de paridade composta detecta os seguintes tipos de erros:
Todos os erros em número ímpar de bits independentemente da sua posição nas
linhas ou colunas
Todos os erros em número par de bits desde que estes não ocorram em
simultâneo na mesma linha e coluna.
Não detecta:
1 – Todos os erros em número par que ocorram simultaneamente em
linhas e colunas com por exemplo os das posições da figura 4.9.
A probabilidade de detecção deste mecanismo é igual à probabilidade de existirem
erros i em número ímpar em simultâneo no número de linhas e colunas. Admitindo
uma trama com n bits por linha e k bits por coluna
A equação 5.3 é derivada da equação 5.1 para cobrir ambos os acontecimentos.
PDetecção =
n
∑
n
Ci Pe (1 − Pe ) .
n −i
i
i = ímpar
k
∑
k
C i Pe (1 − Pe )
i
k −i
(5.3)
i = ímpar
Inversamente, a probabilidade de não detecção é dada pela equação 5.4
__________
PDetecção = 1 − PDetecção =
n
∑
i = par
n
k
C i Pe (1 − Pe ) . ∑ k C i Pe (1 − Pe )
i
n −i
i
k −i
(5.4)
i = par
5.2.2 – Resumo do método de detecção de erros por paridade composta
Resumo:
A detecção de erros por paridade composta tira partido do facto de serem
transmitidos vários caracteres numa única trama de informação. Desta forma,
além dos bits de paridade adicionados ao final de cada carácter (paridade
horizontal), serão adicionados novos bit de paridade referentes a cada uma das
posições de bit por cada carácter designados paridade longitudinal. A paridade
longitudinal irá ser depois adicionada ao final da trama num campo designado
BCC.
A probabilidade de detecção de erro aumenta consideravelmente relativamente
ao método de paridade simples pois agora só não são detectados os erros em
número par, que ocorrem simultaneamente nas linhas (paridade horizontal) e
nas colunas (paridade longitudinal)
Utilizam-se essencialmente em protocolos orientados ao carácter:
Príncipais aplicações comerciais:
1 - Protocolo Bysinc (BSC da IBM)
Pág 27 de 68
Departamento de Radiotecnia
Escola Náutica Infante Dom Henrique
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
5.3 – Método de detecção de erros por códigos polinomiais
O desempenho da detecção de erros pode ainda ser melhorado, recorrendo a um
método denominado CRC7. Este recorre a códigos cíclicos definidos por polinómios
para detectar o erro. Antes de entrarmos no algoritmo de cálculo de CRC iremos rever
algumas operações básicas com polinómios.
5.3.1 – Representação polinomiais de números binários
Um conjunto de k bits pode ser representado como um conjunto de coeficientes de um
polinómio de k termos e ordem k-1.
Por exemplo a sequência M = 1 0 1 1 1 0 0 0 representa um polinómio de 8 termos e
ordem 7.
M ( x) = 1 × X 7 + 0 × X 6 + 1 × X 5 + 1 × X 4 + 1 × X 3 + 0 × X 2 + 0 × X 1 + 0 × X 0 ⇔
M ( x) = X 7 + X 5 + X 4 + X 3 ⇔ M = 10111000
5.3.2 – Operações base 2 com polinómios
Toda a aritmética polinomial é modulo 2, não existindo bit de transporte (carry) ou
empréstimo – (borrow) o que torna somas iguais a subtracções (ver tabela 5.1 da
secção 5.1).
1 – Soma e subtracção de polinómios em base 2
Considere-se os seguintes polinómios a(x) e b(x).
a ( x) = X 5 + X 4 + X 2 + X 0 , b( x) = X 3 + X 2 + X 0
A sua soma módulo 2 (que é igual à subtracção) é:
X5
X4
⊕
X
5
X
4
X
3
X
3
X2
X0
2
0
X
X
1 1 0 1 0 1
,
=
⊕0 0 1 1 0 1
1 1 1 0 0 0
2 – Multiplicação modulo 2 de polinómios
A multiplicação modulo 2 de polinómios é feita recorrendo às regras aritméticas da
multiplicação de exponenciais. Sendo assim há que manter as bases e somar os
expoentes. no final eliminam-se os termos iguais (não esquecer que ou exclusivo de
dois números binários iguais = 0)
7
CRC – Ciclyc Redundancy Check
Pág 28 de 68
Departamento de Radiotecnia
Escola Náutica Infante Dom Henrique
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Considere-se os seguintes polinómios a(x) e b(x).
Se o polinómio a(x) tiver grau aj, e b(x) grau bi, o grau de a(x).b(x) será a(j+i)
a ( x) = X 5 + X 4 + X 2 + X 0 =110101
b( x) = X 3 + X 2 + X 0
(
)(
a ( x).b( x) = X 5 + X 4 + X 2 + X 0 X 3 + X 2 + X 0
)
(
a ( x).b( x ) = X 8 + X 7 + X 5 + X 7 + X 6 + X 4 + X 5 + X 4 + X 2 + X 3 + X 2 + X 0
)
a ( x).b( x ) = ( X 8 + X 6 + X 2 + X 0 ) = 101000101
Considere-se agora o seguintes polinómio c(x).
c( x) = ( X + 1) ⇔ c( x ) = X 2 + 2 X + 1 = X 2 + 1
2
3 – Divisão de polinómios em base 2
Para que a divisão de dois polinómios seja possível, eles terão que ser
divisíveis. Sejam dois polinómios quaisquer M(x) e G(x).
M(x) é divisível por G(x) (com G(x) ≠ 0) se existir um quociente da divisão Q(x)
que multiplicado por G(x) e somado do resto R(x) vai dar M(x). Ver equação 5.7
M ( x)
R( x)
= Q( x) ⊕
G ( x)
G ( x)
(5.5)
Com:
G ( x) > 0
(5.6)
M ( x) = Q ( x).G ( x) ⊕ R( x)
(5.7)
Com:
0 ≤ R ( x) < G ( x)
(5.8)
Isto significa que para que M(x) seja divisível por G(x) o grau de M(x) tem que ser
superior a G(x). Caso contrário o quociente Q(x) = 0 e a equação 4.7 não se
verificaria.
Caso o resto da divisão de M(x) por G(x) seja 0, então M(x) é múltiplo de G(x)
Nota: em polinómios base 2, “menor que” significa “com grau menor que”, logo
R(x) tem grau menor que G(x) é maior ou igual a 0.
Pág 29 de 68
Departamento de Radiotecnia
Escola Náutica Infante Dom Henrique
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
A divisão de M(x) por G(x) pode ser efectuada recorrendo a uma divisão normal
polinomial, tendo em conta que a subtracção e a soma são iguais e efectuam-se
através de “ou exclusivo” .
Como exemplo sejam M(x) = X4+X3+1 e G(x) = X2+1
X4
X3
0
⊕X4
0
X2
0
X3
X2
0
⊕
3
0
X1
0
X2
X1
X0
⊕
X2
0
X0
0
X1
0
X
0
X0
X2
0
X0
X2
X1
X0
O resto R(x) = X1 e o quociente Q(x) = X2+X1+X0
Para conferir a divisão, recorremos à equação 5.7
M ( x) = Q ( x).G ( x) + R ( x) ⇔
(
)(
)
Q ( x).G ( x) + R( x) = X 2 + X 1 + X 0 . X 2 + X 0 + X 1 = X 4 + X 2 + X 3 + X 1 + X 2 + X 0 + X 1
= X + X + X = M ( x)
4
3
0
Está assim provada a divisão.
Nota: A divisão efectuada em representação binária consiste na substituição dos
valores de X por “1”
4 – Multiplicação e divisão de um polinómio por um exponencial de base 2 (2n)
A multiplicação e divisão de um polinómio em base 2 por um exponencial 2n (com a
mesma base) consiste em adicionar ou retirar n zeros á direita do polinómio
Considere-se o polinómio a(x).
a ( x) = X 5 + X 4 + X 2 + X 0 ⇔ a ( x)2n = X 5+ n + X 4+ n + X 2+ n + X 0+ n
Exemplo:
c( x) = a ( x)2 3 = X 8 + X 7 + X 5 + X 3
Ou em representação binária: 1 1 0 1 0 1 x 23 = 1 1 0 1 0 1 0 0 0
Pág 30 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
A divisão:
c( x)
= c( x).2 −3 = X 8−3 + X 7 −3 + X 5 − 3 + X 3−3 = X 5 + X 4 + X 2 + X
23
Note-se que c(x) tem que ser divisível por 23para que a divisão seja possível.
5 – Múltiplos um polinómio em base 2.
Dado o polinómio D(x), se multiplicado por outro polinómio E(x) com apenas 1
coeficiente e de grau >0, o polinómio resultante F(x) é múltiplo de D(x).
Exemplo:
D(x) = X5+X4+X0)
E(x) = X1
F(x) = (X5+X4+X0). X1 = X6+X5+X1
Ou se G(x) = D(x).X2 = X7+X6+X2 , G(x) é outro múltiplo de D(x)
À semelhança da aritmética base 10, se somarmos a um múltiplo qualquer de D(x),
digamos F(x), outro múltiplo de D(x), por exemplo G(x) o resultado é ele também um
múltiplo de D(x)
6 – Polinómios primos.
Um polinómio primo ou irredutível é aquele que não pode ser decomposto em factores.
Por exemplo x 2 + 1 pode ser decomposto em factores ( x + 1)( x + 1) , logo não é primo:
Ou: (x + 1)( x + 1) são os factores primos de x 2 + 1
Segundo este raciocínio, qualquer polinómio que termine em 0, não é primo pois
contêm sempre x como factor.
Alguns exemplos de polinómios primos são
x
x +1
x2 + x +1
x3 + x + 1
x3 + x2 +1
etc.
Os polinómios primos como são irredutíveis têm um papel especial no cálculo do CRC
para detecção de erros como veremos adiante.
Pág 31 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
5.3.3 – Detecção de erros por CRC
Este método baseia-se nas propriedades dos códigos polinomiais estudados
anteriormente e aplica-se essencialmente em transmissão orientada ao bit.
Tal como descrito na secção 4.3, os bits redundantes, aqui denominados CRC, são
adicionados à mensagem num um campo específico denominado FCS8.
A figura 5.11, a palavra de código de comprimento L [bit] , com v = L-m [bit] de
verificação (campo FCS) e campo de informação com m bit.
Figura 5.11 Trama com informação e campo de controlo de erros
Para a geração do CRC, consideremos os seguintes dados:
M(x): É o polinómio mensagem, antes da adição do CRC. Tem grau m+1 ,
comprimento m.
G(x): É o polinómio gerador. Este é conhecido no emissor e no receptor e vai servir
para calcular o valor do CRC. Tem grau L-m e comprimento L-m+1.
L: É o comprimento total da trama que inclui o campo de verificação FCS
(comprimento L-m+1)e a mensagem a enviar (comprimento m)
m: É o comprimento da mensagem original sem o campo de verificação FCS
L-m: É o comprimento do campo de verificação FCS (v bits de verificação formados
pelo CRC).
A mensagem de código final produzida pelo mecanismo CRC tem o formato (L, L-m)
8
FCS – Frame Check Sequence- Campo que contêm os bits de verificação de erros denominados CRC
Pág 32 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
1 – Algoritmo para geração do CRC no emissor
1º Passo: Adicionar (L-m) zeros à direita de M(x) (L-m é o grau de G(x))
M(x).2L-m
2º Passo: Dividir M(x).2L-m pelo polinómio gerador. O resto da divisão R(x) é o
CRC
M(x).2L-m
G(x)
R(x)
Q(x)
3º Passo: Acrescentar o resto da divisão R(x) ao final da trama (campo FCS)
isto é feito recorrendo à soma mod2 da mensagem com o resto. A trama a ser
transmitida é denominada Tx(x).
Tx(x) = M(x).2L-m ⊕ R(x)
Note-se que R(x) tem comprimento igual à ordem de G(x). Acrescentar L-m zeros á
direita da mensagem no 1º passo teve como objectivo permitir que a soma modulo 2
de M(x) com R(x) seja o acrescento de R(x) à direita de M(x), pois R(x) tem L-m bits
de comprimento
2 – Representação de erros no canal
No canal de comunicação, os erros são também eles representados por um
polinómio de erro ε (x) .
O polinómio de erro ε (x) do canal, vai ser somado módulo 2 à mensagem transmitida
Tx(x), pelo que o número de coeficientes a 1 de ε (x ) representam os bit em erro.
4º Passo: Adicionar o polinómio de erros à mensagem transmitida. O resultado
será a mensagem que chega efectivamente ao receptor Rx(x)
Rx(x) = Tx(x) ⊕ ε (x) = M(x).2L-m ⊕ R(x) ⊕ ε (x)
3 – Algoritmo para validação dos dados pelo receptor
5º Passo: O receptor vai dividir a mensagem recebida pelo mesmo polinómio
gerador G(x) (conhecido no emissor e no receptor) e obter o resto da divisão
R(x).
Rx(x)
G(x)
R(x)
Q(x)
Pág 33 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Caso R(x) seja diferente de zero significa que foram detectados erros na mensagem
recebida. Caso R(x) seja zero significa que não foram detectados erros na
mensagem recebida.
Demonstração 1:
A trama transmitida Tx(x) é a seguinte:
Tx ( x) = M ( x).2 L − m ⊕ R ( x)
Logo, caso não haja erros, à recepção temos Rx(x) = Tx(x) que é dividido novamente
por G(x)
Rx ( x) =
Tx ( x) M ( x).2 L − m ⊕ R( x)
=
G ( x)
G ( x)
(5.9)
De acordo com a equação 5.5, a divisão à recepção da equação 5.9 é transformada
em:
Rx ( x) = Q( x) ⊕
M ( x).2 L − m ⊕ R ( x)
R ( x) R( x )
= Q( x) ⊕
⊕
= Q ( x)
G ( x)
G ( x) G ( x)
Valores iguais dão zero no “ou exclusivo”. A divisão da mensagem sem erros pelo
polinómio gerador G(x) no receptor, dá resto 0 e é igual a Q(x).
A figura 5.12, representa o diagrama blocos do sistema de geração e verificação do
CRC.
Figura 5.12 Diagrama blocos de um sistema CRC
Pág 34 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Exemplo de aplicação:
Admita-se que se pretende transmitir a sequência binária 100100. Admitindo que o
polinómio de erros do canal ε ( x) = 00101100 e que o polinómio gerador G ( x) = 101 ,
represente a mensagem enviada com o campo FCS e verifique se o receptor detecta
os erros na trama recebida.
1 - Adicionar 2 zeros à direita da mensagem, pois G(x) tem grau 2, dividi-la por G(x) e
somar o resto da divisão R(x).
M(x) = 10010000
100 1 0 0 00 101
101111
0011
⊕ 000
0110
⊕ 101
0110
⊕ 101
0110
⊕ 101
011 0
⊕ 10 1
0 1 1 <= R(x)
⊕ 101
Mensagem enviada = 10010000
⊕
11
Tx(x) = 10010011
A divisão pode ser conferida recorrendo à equação 5.7
M ( x) = Q ( x).G ( x) ⊕ R ( x)
Q(x) 101111
G(x)
* 101
101111
000000
⊕ 101111
Q(x).G(x) = 10010011
Q(x).G(x) 10010011
R(x) ⊕
11
M(x) = 10010000
Pág 35 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
2 – Contaminação da mensagem transmitida pelo polinómio de erros do canal. À
recepção vamos ter: Rx(x) = Tx(x) + ε (x)
Tx(x) => 10010011
ε (x) => ⊕ 00101100
Rx(x) =
10111111
3 – Ver se o receptor consegue detectar os 3 erros de Rx(x), dividindo-a por G(x) e
avaliando o resto R(x).
101 1 1 1 11 101
100110
0001
⊕ 000
0011
⊕ 000
0111
⊕ 101
010 1
⊕ 10 1
0001
⊕ 00 0
0 0 1<= R(x)
⊕ 101
R(x) ≠ 0 => O erro é detectado.
Mais uma vez a divisão pode ser conferida recorrendo à equação 5.7
R x ( x) = Q( x).G ( x) ⊕ R ( x)
Q(x) 100110
G(x)
* 101
100110
000000
⊕ 100110
Q(x).G(x) = 10111110
Q(x).G(x) 10111110
R(x) ⊕
01
Rx(x) = 10111111
Pág 36 de 68
Departamento de Radiotecnia
Escola Náutica Infante Dom Henrique
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
5.3.4 – Desempenho do método de detecção de erros por CRC
Para avaliar o desempenho deste método interessa re-capitular a operação de divisão
efectuada pelo receptor. De acordo com a figura 5.12, Rx(X) depois de afectado por
erros é dado por:
R x ( x) =
Tx ( x) ⊕ ε ( x )
G ( x)
(5.10)
De acordo com a mesma figura:
Tx ( x) = M ( x).2 L − m ⊕ R( x)
(5.11)
Substituindo 5.10 em 5.11
Rx ( x) =
M ( x).2 L − m ⊕ R ( x) ⊕ ε ( x) M ( x).2 L − m R ( x) ε ( x)
=
⊕
⊕
G ( x)
G ( x)
G ( x) G ( x)
(5.12)
Sabendo que de acordo com a equação 5.5, a divisão:
M ( x).2L − m
R ( x)
= Q( x ) ⊕
G ( x)
G ( x)
(5.13)
Substituindo 5.13 em 5.12:
R x ( x) = Q ( x) ⊕
ε ( x)
R( x) R( x) ε ( x)
⊕
⊕
= Q( x) ⊕
G ( x ) G ( x) G ( x)
G ( x)
(4.14)
O que não é mais do que a equação 5.13, onde o resto é o polinómio de erros.
A equação 4.14 permite concluir que na prática o que o receptor vai analisar é o resto
da divisão de
ε ( x)
G ( x)
. Caso seja 0, não detecta o(s) erro(s), caso contrário, detecta.
Conclusão 1:
Os erros não são detectados sempre que
ε ( x)
G ( x)
tem resto 0. Portanto os erros
não são detectados sempre que ε (x) é igual ou um múltiplo de G (x)
Pág 37 de 68
Departamento de Radiotecnia
Escola Náutica Infante Dom Henrique
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Teste 1 – Ocorrência de erros em rajada.
Exemplo: Ocorrência de erros em rajada (burst) r = 4 bit de comprimento
representado pelo polinómio de erros ε (x ) . A rajada começa no 1º bit e acaba no 4º
bit contando da esquerda para a direita
M ( x) = 1100101
G ( x) = 1011
ε ( x) = 1011000000 => Note-se que ε ( x) = G ( x).x 6 logo é múltiplo de G(x), o que
ε ( x)
significa que o resto da divisão de
G ( x)
é 0 logo o erro não é detectado.
Dito de outra forma, qualquer ε (x) que contenha G(x) em qualquer posição
sendo as outras posições = 0, cai dentro de uma rajada de erros não detectado.
Este efeito pode ser melhor observado através da tabela 5.2:
Mensagem enviada Tx(X)
Padrão de erros ε (x)
Mensagem recebida Rx(X)
1 1
1 0
0
1
0
1
1
0
0
0
1
0
0
0
1
0
0
0
0 1
1
1
1
0
1
0
1
0
Tabela 5.2 Padrão de erros não detectado pelo método CRC
Deslocando o padrão de erros para a direita (ou para a esquerda) encontramos 6
combinações possíveis onde, com este G(X), estes erros não seriam detectados
pelo receptor
Sugere-se que o leitor faça a divisão de Rx(X) por G(x) para qualquer posição
possível do padrão de erros ε (x) da tabela 5.2 e confirme que o resto é sempre
0.
Considerações adicionais sobre a detecção de erros em rajada:
O polinómio de erros ε (x) pode ser decomposto em factores:
ε ( x) = r ( x).x i = ( x r −1 + ... + 1) xi
e,
ε ( x)
G ( x)
=
(5.15)
r −1
i
r ( x) xi ( x + ... + x + 1) x
=
G( x)
( x n− x + ...x + 1)
(5.16)
Em que r(x)=(xr-1+..+1) é o polinómio correspondente à rajada de erros de
comprimento r e i representa a distância entre a rajada e o bit mais à direita da trama
recebida Rx(X)
Pág 38 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Pela equação 5.16,
para que o resto de
 xi 
 x r −1 + ... + x + 1 
= 0 ⇒ resto 
=
0
∨
resto


=0
G ( x)
G ( x)
 G ( x) 


ε ( x)
Ora como G(x), tem um termo em (x + 1), , nunca poderá ter xi como múltiplo, ou seja
xi dividido por G(x) =xn-x …+ x+1, nunca dará resto 0 quaisquer que sejam os outros
termos de G(x).
Resta então saber quando é que o resto da divisão de r(x)=xr-1+...+x+1 por G(x) é ou
não zero.
Caso 1: O grau de r(x) é inferior ao de G(x), (r-1 < L-m ou r < L-m+1 ou r ≤ L-m)
A divisão não é possível pelo os erros são detectados sempre que o grau
de r(x) for menor que o grau de G(x).
Caso 2: O grau de r(x) é igual ao de G(x), (r-1 = L-m => r = L-m+1)
A divisão de r(x) por G(x) dá resto 0, pelo que os erros não são detectados
sempre que ε (x) seja múltiplo de G(x). Foi o que sucedeu no exemplo da
tabela 4.1.
A probabilidade do caso 2 ocorrer, é reduzida e calcula-se da seguinte forma:
A rajada tem comprimento r. Por definição terá que começar em 1 e acabar em 1,
tendo os bit intermédios qualquer valor (ver figura 5.13).
Figura 5.13 Erros em rajada de comprimento r
O primeiro e último bit são sempre 1, tanto na rajada r(x), como G(x) que começa e
acaba sempre em 1. Então o padrão de bits que varia e que poderá ou não coincidir
com G(x) terá comprimento r-2=L-m-1:
Existem portanto 2r-2 combinações de bit possíveis que cabem dentro de r-2=L-m-1.
(Por exemplo caso r-2 seja 3, existem 8 combinações possíveis de bit desde 000 a
111).
Podemos então dizer que existem 2r-2 (ou 2L-m-1) diferentes polinómios G(x) que
poderão coincidir com r(x).
Nº de casos possíveis: 2r-2= 2L-m-1
Nº de casos favoráveis: 1, Pois existe apenas um polinómio G(x) que coincide com
r(x) (Este foi o exemplo da tabela 4.1)
Pág 39 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
A probabilidade de o padrão da rajada ser igual a G(x), admitindo que a probabilidade
de ocorrência do 0 é igual à do 1 é dada pela equação 5.17:
 1 
= 2− ( L − m −1)
r −2 
2


P(r(x) = G(x)) = 
(5.17)
E a probabilidade de não detecção de erros cuja rajada tem comprimento igual ao do
polinómio gerador é dada pela equação 5.18
P(não detecção quando r = G) = 1 − 2− ( L − m −1)
(5.18)
Caso 3: O grau de r(x) é maior que o de G(x), (r-1 > L-m )
Como se observa pela equação 5.16, a divisão de r(x) por G(x) dá resto 0, e
não detecta os erros se e só se r(x) for múltiplo de G(x) (ou seja se r(x) tiver
G(x) como factor).
Cálculo do nº de casos em que r(x) é múltiplo de G(x). (expressão 4.19).
r(x) = Q(x).G(x)
r ( x) = x r −1 + ... + 1 = ( x r −1−( L − m ) + .. + 1)( x L − m + ... + x + 1)
Q(x)
(5.19)
G(x)
A expressão 5.19 mostra que sendo Q(x) um factor de G(x), e tendo G(x) grau L-m,
então Q(x) tem que ter grau r-1-(L-m)
É o mesmo que dizer que Q(x) tem comprimento r-1-(L-m)-1 = r-2-(L-m)
Existem agora 2r-2-L-m polinómios que podem ser Q(x), o que causaria que os erros
não fossem detectados.
Nº de casos favoráveis: 2r-2-L-m -1
Nº de casos possíveis: 2r-2
A probabilidade do caso 3 ocorrer é então dado pela equação 5.20:
 2r − 2 −( L − m ) 
−( L−m)
=2
r −2
 2

P(r(x) > G(x)) = 
(5.20)
Consequentemente, a probabilidade de não detecção de erros cuja rajada tem
comprimento superior ao do polinómio gerador é dada pela equação 5.21
P(não detecção quando r > G) = 1 − 2− ( L − m )
Pág 40 de 68
(5.21)
Departamento de Radiotecnia
Escola Náutica Infante Dom Henrique
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Conclusão 2:
Desde que G(x) tenha um termo em (x+1), todos os erros em rajada de
comprimento menor que o nº de bits do polinómio gerador são detectados.
Quase todos os erros em rajada cujo comprimento r é maior ou igual ao nº de
bits do polinómio gerador são detectados.
A fracção de erros em rajada que não é possível detectar é:
1: 2-(L-m-1) se r = L-m+1, onde L-m+1 é o comprimento do polinómio gerador.
2: 2-(L-m) se r > L-m+1, onde L-m+1 é o comprimento do polinómio gerador.
Teste 2 – Ocorrência de erros em um bit isolado.
Caso haja erros simples de bit, então ε ( x) = x i , em que i representa o bit em erro.
Ora seguindo o raciocínio anterior, para que
ε ( x)
G ( x)
tenha resto 0, ε (x ) tem
obrigatoriamente que ser divisível por G(x).
Para garantir que ε (x) nunca é divisível por G(x) basta fazer G(x) > ε (x) (G(x) tenha
mais termos que ε (x) ). Ver secção 5.3.2 para mais detalhes dobre divisão de
polinómios. O polinómio mais simples com dois termos é x+1.
Conclusão 3:
Todos os erros de bit isolados são detectados deste que G(x) contenha 2 ou
mais termos.
Pág 41 de 68
Departamento de Radiotecnia
Escola Náutica Infante Dom Henrique
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Teste 3 – Ocorrência de erros de bit em número ímpar
Pode ser provado que em aritmética modulo 2, nenhum polinómio com número ímpar
de termos se dividido por x+1 terá resto 0.
É o mesmo que dizer que x+1 nunca é um múltiplo de um polinómio com número
ímpar de termos, pois o resultado é sempre outro polinómio com número par de
termos.
Demonstração:
Seja ε (x ) qualquer polinómio com número ímpar de termos: ε ( x) = x 2 + x + 1
Multiplicar ε ( x)( x + 1) = x 3 + x 2 + x + x 2 + x + 1 = x 3 + 1 resulta noutro polinómio com
número par de termos. Logo (x+1) não é múltiplo de um polinómio com número impar
de termos.
Seja ε ( x) = x 3 + x + 1 ⇔ ε ( x)( x + 1) = x 4 + x 2 + x + x 3 + x + 1 , resulta noutro com
número par de termos.
Seja ε ( x) = x 5 + x 4 + x 3 + x + 1 ⇔ ε ( x)( x + 1) = x 6 + x 3 + x 2 + 1 , resulta noutro com
número par de termos.
Seja ε ( x) = x 5 + x 3 + 1 ⇔ ε ( x)( x + 1) = x 6 + x 5 + x + 1 , resulta noutro com número par
de termos.
E assim sucessivamente.
Generalizando:
(
) (
Tente-se por hipótese dividir (x + 1) x k 1 + ... + x kn = x k 1+1 + ... + x kn +1 + x k 1 + ... + x kn
)
Caso todas as potências anteriores sejam diferentes, o polinómio resultante terá
sempre número par de termos.
Conclusão 4:
Se existirem erros em número ímpar, ε (x) tem número ímpar de termos e a sua
divisão por (x+1) não dá resto 0. Logo também não terá resto 0 a sua divisão por
um múltiplo qualquer de (x+1).
Se G(x) não for primo e múltiplo de x+1 então todos os erros em número ímpar
são detectados.
Pág 42 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Teste 4 – Ocorrência de erros de bit em número par
Erros em número par são representados genericamente pelo polinómio de erro
ε ( x) = x i + x j com i > j.
(
)
Factorizando ε ( x) = x i x i − j + 1 .
É assim suficiente afirmar que os erros serão detectados caso o resto da divisão de
x k + 1 por G(x) não dê resto 0, para qualquer valor de k até ao comprimento total da
(
)
trama (isto é até i-j)
Existem polinómios conhecidos como por exemplo G ( x ) = x 15 + x 14 + 1 que não
(
)
dividem x k + 1 .
A demonstração destes polinómios pode ser aprofundada em [PETER01], onde se
conclui que para detectar erros de bit isolados em número par G(x) tem que ter pelo
menos 3 termos.
Conclusão 5:
Existem polinómios que não dividem (xk+1), para qualquer k até ao valor do
comprimento da trama. Este tipo de polinómios com pelo menos 3 termos
protegem todos os erros de bit em número ímpar
5.3.5 – Capacidades de correcção de erros do algoritmo CRC
O mecanismo CRC também apresenta capacidades de correcção de erros. Este
assunto não será objecto exaustivo de estudo, mas aqui fica uma breve introdução:
1 – Cada padrão de erros ε (x ) para ser corrigível tem que gerar um resto único após
a divisão da mensagem recebida (com erros) por G(x).
Este resto pode ser denominado o síndrome da mensagem. (Ver capítulo 6, para
mais detalhes sobre o tema).
Por outras palavras, cada padrão de erros para se corrigível tem que gerar um
síndroma que seja único.
Pág 43 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Sendo assim, o procedimento para correcção de erros é o seguinte:
1 – Dividir de Rx(x) = Tx(x) ⊕ ε (x ) por G(x) e obter o resto R(x).
2 – Obter ε (x ) , por exemplo através de uma tabela de correspondências de
cada padrão de ε (x ) com cada um dos restos R(x) (Denominada tabela de
síndromes).
3 –Subtrair ε (x) de Tx(x), para obter a mensagem original transmitida sem os
erros.
Note-se que processo de correcção de erros é muito mais complexo que o de
detecção, pois o descodificador necessita de guardar e processar enormes tabelas de
síndrome durante o passo 2.
A correcção de erros simples de bit ou em rajada é, no entanto relativamente simples
através de um registo de deslocamento, mas a correcção de erros de bit aleatórios é
bastante complexa.
Adicionalmente, este processo implica que o receptor guarde temporariamente toda a
mensagem recebida Rx(X) durante o processo de cálculo e comparação do passo 2,
gerando atrasos que poderão em alguns casos, ser inaceitáveis.
5.3.6 – Hardware para implementação do algoritmo CRC
O Hardware necessário para implementar o CRC consiste em registos de
deslocamento e somadores módulo 2 (portas lógias ou exclusivo)
São necessários tantos registos de deslocamento quanto o grau do polinómio gerador
G(x). O dividendo é deslocado da esquerda para a direita começando pela ordem mais
elevada.
A figura 5.14 ilustra um divisor por um polinómio G(x) = 1 + X2 + X3 + X4 + X5
Figura 5.14 Estrutura de Hardware divisor por 1 + X2 + X3 + X4 + X5
Pág 44 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
A figura 5.15 ilustra um divisor polinomial genérico de grau n
1 + ... + c n −3 X n −3 + c n − 2 X n − 2 + c n −1 X n −1 + c n X n
O divisor é composto por n registos de deslocamento, somadores e multiplicadores
dos coeficientes de cada um dos termos.
Figura 5.15 Estrutura de Hardware divisor polinomial de grau n
5.3.7 – Polinómios padrão e implementações comerciais
De forma a garantir a robustez do método CRC, existem alguns polinómios
especialmente escolhidos e normalizados por diversas instituições de
telecomunicações internacionais. Relembre-se que o polinómio tem que ser conhecido
em todos os intervenientes na comunicação de dados.
CRC-8
X8+X2+X+1, cujos factores primos são (X+1)(X7+X6+X5+X4+X3+X2+1)
Utilização comercial: Em transmissão de dados via ondas electromagnéticas.
Protocolo 802.16 (Wi-MAX) em conjunto com outros métodos de correcção de erros.
CRC-CCITT
X16+X12+ X5+1 cujos factores primos são (X+1)(X15+X14+X13+X12+X4+X3+ X2+ X+1)
Utilização: Estes são protocolos utilizados em redes de abrangência alargada.
Protocolo HDLC, SDLC e PPP 9 por defeito.
9
HDLC – High Level Data Link Control
SDLC – Synchrounous data link control
PPP – Point to Point protocol
Pág 45 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
IBM-CRC-16 (ANSI10)
X16+X15+ X2+1 cujos factores primos são (X+1)(X15+X+ 1)
Utilização: Estes são protocolos utilizados em redes de abrangência alargada WAN
Protocolo HDLC e SDLC
802.3
x32+x26+x23+x22 +x16+x12+x11+x10 +x8+x7+x5+x4+x2+x+1 sendo um polinómio primo não
é factorizável.
Utilização: Estes são protocolos utilizados em redes de abrangência local (LAN) e
opcionalmente em protocolos de redes de abrangência alargada WAN
Protocolo Ethernet e também PPP opcionalmente.
5.3.8 – Resumo do mecanismo CRC
Resumo detecção de erros por CRC
O CRC, permite implementar um mecanismo poderoso de detecção e correcção de
erros baseado em códigos cíclicos (polinomiais). O mecanismo funciona adicionando o
resto da divisão da mensagem original por um polinómio gerador G(x). São assim
adicionados n+1 bit redundantes à trama, num campo denominado CRC ou FCS (n é
o grau do polinómio gerador).
O mecanismo CRC é bastante robusto e permite detectar os seguintes tipos de erros:
1 – Todos os erros simples de bit.
2 – Todos os erros de dois bit deste que G(x) tenha pelo menos 3 termos.
3 – Todos os erros de bit em número ímpar desde que G(x) termine em x+1
4 – Todos os erros em rajada desde que o comprimento da rajada seja menor que o
número de bits de G(x).
5 – Quase todos os erros em rajada com comprimento maior ou igual que G(x).
Não detecta:
1 – Erros em rajada cujo comprimento seja igual G(x) e que o padrão da rajada seja o
de G(x).
Adicionalmente o CRC permite corrigir erros simples de bit ou em rajada através de
estruturas de hardware relativamente simples
10
ANSI – American National Standards Institute
Pág 46 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
6 – Correcção de erros em transmissão de dados
Neste capítulo serão abordados códigos que permitem detectar e corrigir erros. Para
que um determinado código tenha capacidades de correcção de erros, tem em
primeiro lugar que ser capaz de detectar esse erro. Serão abordados códigos de
blocos do tipo repetição de de Hamming.
Os códigos correctores de erros, funcionam normalmente em modo FEC, não
excluindo no entanto a possibilidade de funcionarem no modo BEC, caso não
consigam corrigir os erros.
6.1 – Introdução.
Tal como os humanos, os computadores recorrem a um alfabeto de palavras de
código, para comunicarem entre si. Caso se percam algumas letras ou mesmo
palavras desse alfabeto durante a comunicação, a mensagem pode continuar a ser
entendida pelos interlocutores, pois é possível descodificar uma palavra sem alguns
dos caracteres desde que esta não coincida com outra palavra.
No caso dos humanos, mesmo que os erros transformem uma palavra noutra, pode
ser possível entender a mensagem pelo sentido da frase.
Por exemplo se o emissor enviar: “Olá! Está tudo bem contigo?”
E se devido ao ruído, ao receptor chegar: “Olá! Está tede bom contego?”
Apesar da troca e perda de caracteres, o ser humano, receptor, consegue, associar
cada uma das palavras à correspondente palavra mais próxima e válida do conjunto
de palavras que conhece.
Sendo assim, caso se construa um alfabeto binário cujas palavras de código sejam
suficientemente diferentes entre elas (distantes) pode ser possível que o receptor
seja capaz de associá-la univocamente à palavra do alfabeto binário mais próxima
que conhece.
Esta associação não é mais do que a capacidade de correcção do erro.
Para permitir a detecção e correcção de erros, são adicionados determinados número
de bits de paridade (verificação) de modo a aumentar a distância entre palavras de
código (Ver secção 4.3, figura 4.4) e garantir a distância adequada à outra palavra
mais próxima, ou seja para garantir que duas palavras não se confundam entre si após
ocorrência de determinado número de erros.
Pág 47 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
6.1.1 – Propriedades da codificação de blocos
A diferença entre duas palavras de código foi introduzida na secção 4.3.1 é chamada
distância de Hamming dH.que é calculada pela operação “ou exclusivo” entre cada
um dos bits das duas palavras em análise sendo o seu valor o número de bits a “1” do
resultado.
Quando temos mais do que duas palavras de código sujeitas a avaliação, interessa
encontrar a distância mínima dmin de Hamming entre todas elas e é designada:
Distância de Hamming do código completo.
Quanto maior for a distância de Hamming, mais distantes estão as palavras de código
entre si, o que significa que mais facilmente poderão ser corrigidas, pois são
necessários mais erros de bit para as transformar em outras palavras pertencentes ao
mesmo alfabeto.
Para palavras de comprimento fixo L, a distância de Hamming é uma métrica no
espaço vectorial das palavras desse comprimento.
A título de exemplo consideremos as palavras de código com comprimento L=3. Estas
podem ser representadas graficamente através de um cubo onde as distâncias entre
os vértices desse cubo representam as distâncias entra cada uma das palavras. Esta
representação está na figura 6.1 a)
Figura 6.1 Cubo de distâncias entre palavras de código de 3 bit
A figura 6.1 b) representa a distância entre cada uma destas palavras de código.
Estas são medidas pelo número de vértices no caminho entre a origem e o destino.
Por exemplo a distância entre 000 e 101 é 2 e o caminho possível está a vermelho
enquanto o que a distância entre 000 e 111 é 3 estando um dos caminhos possíveis
representados a azul.
Pág 48 de 68
Departamento de Radiotecnia
Escola Náutica Infante Dom Henrique
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Como introduzido na secção 4.3.2, a distância de Hamming necessário para que o
código consiga detectar e erros isolados de bit é dada pela equação 4.1:
d min [det ecção ] = e + 1 [bit]
Justificação: A ocorrência de e erros simples não conseguem transformar uma
palavra de código válida, noutra palavra válida, pois seriam necessários e = dmin bits
para que tal ocorresse.
Note-se que, no entanto, poderão existir duas palavras de código à mesma distância,
não sendo possível por isto determinar univocamente qual a correcta.
Na secção 4.3.2, foi também abordado que a distância de Hamming necessário para
que o código consiga corrigir e erros isolados de bit é dada pelas equações 4.2 e
4.3:
d min [correcção ] = 2e + 1 [bit], Ou corrige: e =
d min − 1
[erros] , com e arredondado para
2
baixo.
Justificação: As palavras de código válidas estão tão longe umas das outras, que
mesmo com e erros simples de bit a palavra de código original, está mais próxima de
qualquer outra palavra de código permitindo determiná-la de forma unívoca.
Note-se que a capacidade de detecção não é infinita, pois quanto maior e, maior d, o
que implica um maior número de bits redundantes a adicionar à mensagem,
diminuindo a eficiência e aumentando o processamento a efectuar no receptor.
Demonstração:
A figura 6.2 ajuda a ilustrar as capacidades de detecção e correcção de erros num
código.
Figura 6.2 capacidade de detecção e correcção de erros dmin = 3
Considere um alfabeto constituído exclusivamente pelas palavras de código C1 = 0110
e C2 = 1011 da figura 6.2.
A sua distância dH = dmin = 3. A ocorrência de 1 erro vai transformar C1 em 0111. O
receptor vai então escolher a palavra mais próxima que é C1.
No entanto, caso haja um segundo erro de bit, e a palavra recebida seja 1111, esta
agora dista 1 bit de C2 e 2 bit de C1. O receptor iria escolher erradamente C2
existindo erro de estimação.
Pág 49 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Se entretanto surgisse um terceiro erro de bit, que transformasse 1111 em 1011, então
o receptor iria aceitar C2 como sendo a palavra correcta, o que seria uma palavra em
erro não detectada, pois o que aconteceu foi que os erros foram em número suficiente
para transformar uma palavra de código válida noutra palavra de código válida.
Conclui-se que este código teve capacidade para detectar até 2 erros de bit (círculos a
branco), e capacidade para corrigir até 1 erro simples de bit.
Considere-se agora o alfabeto da figura 6.3, constituído pelas palavras de código:
B1 = 01111 e B2=10100.
Agora dmin = 4.
Figura 6.3 capacidade de detecção e correcção de erros dmin = 3
Seguindo o mesmo raciocínio, dois erros isolados de bit transformam C1 em 10111.
Ora 10111 dista 2 bit de C1 e 2 bit de C2. Sempre que a palavra recebida está
equidistante de duas palavras de código válidas, a correcção de erros não é possível.
Sendo assim, este alfabeto com dmin = 4 é capaz de detectar até 3 erros de bit
(círculos a branco), mas continua a não ser capaz de corrigir erros em mais do que 1
bit.
Observa-se também pelas figuras 6.2 e 6.3 que sempre que dmin é par, existe uma
palavra com erros equidistante de duas palavras de código válidas. Esta é a
justificação do arredondamento para baixo da equação 4.3
Estão então demonstradas as equações 4.1, 4.2 e 4.3
6.1.2 – Pesos de Hamming
O peso de Hamming (w) de uma palavra de código é o número de bits não nulos
dessa palavra.
Sejam as palavras de código cy e cz, duas palavras distintas de um código de blocos
linear, então a sua distância de Hamming é igual ao peso do seu vector soma
(módulo 2)
d H ( c y , cz ) = w ( c y ⊕ c z )
(6.1)
Pág 50 de 68
Departamento de Radiotecnia
Escola Náutica Infante Dom Henrique
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Por exemplo, dados cy = 00010 e cz = 01110,
dH = 2.
w (00010 ⊕ 01110) = w (01100) = 2
Consequentemente, a distancia de Hamming do código completo dmin desse código é
dada por:
d min = min y ≠ z  dH ( c y , cz ) 
(6.2)
Sendo o código linear, a soma modulo 2 de duas palavras resulta noutra palavra de
código diferente do vector nulo. Sendo assim, a distância mínima do código completo
é dada por:
d min = min w(c k )
(6.3)
Sendo ck qualquer palavra de código diferente do vector nulo.
Definição 6.1
O peso de Hamming w de uma palavra de código é o número de bits não nulos
dessa palavra. A distância mínima do código completo é igual ao valor mínimo
de w retirando o vector nulo
6.2 – Códigos de repetição (3,1).
Os códigos de repetição foram desenvolvidos de forma a provocarem um
espaçamento das palavras de código tal que a distância de Hamming de código
completo seja dmin = 3. (Foi com base nestes códigos que Hamming desenvolveu os
códigos de Hamming estudados adiante na secção 4.3)
De acordo com as equações 4.1 e 4.3, os códigos de repetição permitem detectar 2
bits errados e corrigir 1 único bit em erro.
A técnica de construção de código é bastante simples e consiste em repetir cada 0 ou
o 1 duas vezes transformando uma mensagem m de 1 bit de comprimento numa
palavra de código com 3 bits de comprimento.
A tabela 6.1 ilustra o mapeamento entre a mensagem m de 1 bit de comprimento e
apalavra de código c.
Mensagem Palavra de código
0
1
000
111
Tabela 6.1 Código de repetição (3,1)
Pág 51 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
A Figura 6.4 ilustra o espaçamento provocado pela repetição
Figura 6.4 Espaçamento das palavras do código de repetição (3,1)
No receptor, A descodificação é feita por maioria. O algoritmo é o seguinte:
1 - Caso a maioria dos bits de cada palavra de código seja 1, descodifica 1
2 - Caso a maioria dos bits de cada palavra de código seja 0, descodifica 0
Ou:
Número de bits a 1 >
L
, descodifica “1”, Caso contrário descodifica “0”
2
Este código pode funcionar nos modos FEC e ARQ.
A probabilidade de não ser capaz de correcção de erros é igual à probabilidade de
existirem i erros em número superior a
__________ _____
L
P (det ecção) = ∑ Pe (1 − Pe )
i
L
, com i ∈ N .
2
L −i
(6.4)
L
i>
2
6.3 – Código de Hamming.
Este tipo de códigos constitui uma família de códigos lineares de blocos e foram
desenvolvidos por Richard Hamming nos anos 50 nos laboratórios BELL nos EUA.
São códigos capazes de corrigir erros unitários de bit e detectar de 1 a 2 erros
isolados de bit.
Num canal binário simétrico, a probabilidade individual de erro de bit é Pe. Ora de
acordo com a equação 3.10, a probabilidade de existência de erros numa palavra de
comprimento L, é dada por:
Probabilidade de erros num único bit: P ( L,1) = C1L p1e (1 − pe )
Pág 52 de 68
L −1
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
Probabilidade de erros em 2 bits: P ( L, 2 ) = C2L p e2 (1 − pe )
Probabilidade de erros em 3 bits: P ( L,3) = C3L p 3e (1 − pe )
V preliminar
L−2
L −3
E assim sucessivamente. Demonstra-se é muito mais provável a ocorrência de erros
em 1 bit do que a ocorrência de erros em 2 ou mais bits.
Desta forma, justifica-se plenamente o critério seguido por Hamming [HAMM01]
Sendo assim, todos os códigos de Hamming têm dmin=3.
Os códigos de Hamming são ainda definidos por um parâmetro inteiro v ≥ 2 (v é o
número de bits de verificação) tal que:
( L, m ) = ( 2v − 1, 2v − 1 − v )
(6.5)
Definição 6.2
Códigos de Hamming (L,m) são códigos correctores de erros unitários definidos
pelo parâmetro inteiro v (número de bits de verificação) tal que:
asaasddmin = 3
asaasd ( L, m ) = 2v − 1, 2v − 1 − v
(
)
Os códigos também podem ser representados por 3 parâmetros: c(L,m,dmin), onde
dmin representa a distância de Hamming do código completo. Esta será a convenção
adoptada daqui em diante.
Os códigos de Hamming podem ainda ser sistemáticos ou não sistemáticos
6.3.1 – Desenho de um código de Hamming (7,4,3)
A lógica por detrás do desenho de um código de Hamming (7,4,3) sistemático não é
complexa. Recorde-se que num código sistemático os bits redundantes são
adicionados ao final da palavra de código (ver secção 4.2).
O código de Hamming (7,4,3) é composto por uma mensagem m com 4 bit de
comprimento (permite codificar todos os caracteres hexadecimais de 0 a F) e 3 bits de
verificação (comprimento total L = 7 )
A eficiência deste código, de acordo com a equação 4.4 é : η =
Pág 53 de 68
m 4
= = 0.57
L 7
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Procedimento:
1 – Dividir a mensagem em sub-conjuntos mais pequenos de bits chamados subconjuntos de paridades.
2 – Adicionar um bit de paridade por cada um dos sub-conjuntos. (A paridade pode ser
par ou ímpar não sendo relevante para este caso)
3 – Garantir que cada um dos bits da mensagem não pertença exclusivamente a um
sub-conjunto de paridades
Implica que sempre que existam erros em número par se não são detectados por um
sub-conjunto, sê-lo-ão por outro
O ponto 3 é muito importante, pois garante que quando há erros em número par num
dos sub-conjuntos, existem sempre erros em número ímpar noutro sub-conjunto,
ultrapassando a limitação da paridade simples.
Consideremos então a mensagem m, de comprimento m = 4 bits:
m = [ m0 m1 m 2 m 3 ]
De seguida serão criados 3 sub-conjuntos de paridade P0, P1 e P2 como ilustra o
diagrama de Venn da figura 6.5
Figura 6.5 Diagrama de Venn com sub-conjuntos de paridade de m
Os bits de m, são agora distribuídos pelas intersecções de cada conjunto de acordo
com a figura 6.6. Assim, garantimos que cada um dos bits de paridade cobre todas as
diferentes combinações ímpares de bit. Por outras palavras não existem grupos de
dois bits (incluindo P0,P1 eP2) que não sejam abrangidos por mais do que um subconjunto de paridade.
Figura 6.6 Diagrama de Venn com sub-conjuntos de paridade e bits de m
Pág 54 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
As equações dos bits de paridade são as seguintes:
P0 = m 0 ⊕ m 1 ⊕ m 3
P1 = m 0 ⊕ m 2 ⊕ m 3
P2 = m 1 ⊕ m 2 ⊕ m 3
(6.6)
Ora caso à recepção existam erros nos bit de paridade P1 e P2, o bit m2 está errado
pois é o único que é comum a P1 e P2.
E caso existisse um erro no bit de paridade P0? O erro só poderia estar no próprio bit
de paridade P0, pois qualquer um dos outros bit em erro causaria também inversões
em P1 ou P2.
6.3.2 – Síndrome de um código de blocos linear
Definição 6.3
Síndrome é um vector de código composto pela soma modulo 2 dos bits da
mensagem e o respectivo bit de paridade Os bits a “1” do vector síndrome
indicam os bit de paridade que foram trocados (que sinalizam erro)
Na prática, o receptor vai calcular a soma dos bits que pertencem a cada um dos subconjuntos de paridade (incluindo o de paridade). Este resultado é denominado
r
síndrome e é representado pelo vector E
No código de Hamming (7,4,3) objecto de estudo existem três bits de síndrome a
calcular (um por cada bit de paridade).
As equações do síndrome são as seguintes:
E0 = m0 ⊕ m1 ⊕ m3 ⊕ P0
E1 = m0 ⊕ m2 ⊕ m3 ⊕ P1
E2 = m1 ⊕ m2 ⊕ m3 ⊕ P2
(6.7)
r
Caso o vector síndrome E = [ E2
E1
E0 ] seja 000, significa que não existiram erros.
Caso contrário, vai indicar o bit onde existe o erro.
Com base no código anterior e olhando para o diagrama de Venn da figura 6.4,
podemos calcular as 8 combinações possíveis de valores do vector síndrome e
apresentá-los numa tabela (tabela 6.1)
Pág 55 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
E2E1E0
000
001
010
011
100
101
110
111
V preliminar
Correcção do erro unitário de bit
Não são detectados erros
P0 em erro. O erro localiza-se no próprio bit P0.
P1 em erro. O erro localiza-se no próprio bit P1.
P0 e P1 em erro. O bit comum a P0 e P1 é m0. O erro localiza-se em m0
P2 em erro. O erro localiza-se no próprio bit P2.
P0 e P2 em erro. O bit comum a P0 e P1 é m1. O erro localiza-se em m1
P1 e P2 em erro. O bit comum a P0 e P1 é m2. O erro localiza-se em m2
P1,P2 e P3 em erro. O bit comum a P0, P1 e P2 é B3. O erro localiza-se em m3
Tabela 6.1 Valores possíveis do vector síndrome e respectiva correcção de erros para
o código de Hamming (7,4,3)
r
O vector síndrome E , permite-nos obter 8 correcções possíveis: Sem erros, 4 bits da
mensagem em erro ou os 3 bit de paridade em erro.
O receptor tem que conhecer a tabela dos valores possíveis do vector síndrome para
descodificar a mensagem e corrigir o erro.
6.3.3 – Número mínimo de bits de paridade do código de Hamming
O número de mínimo de bits redundantes de um código de Hamming, calcula-se com
base no comprimento da palavra de código c
Tendo c, L bits de comprimento (incluindo v bits de verificação) significa que poderão
existir erros de bit unitários em L diferentes posições
Como cada posição do erro é identificada por uma combinação distinta dos bits do
síndrome (ver tabela 5.1) em que vector nulo implica que não há erros, tem que haver
tantas combinações diferentes de 0, quantas as posições do bit errado ou seja:
Têm que existir tantas combinações de bits possíveis do vector síndrome
diferentes do vector nulo, quantos o número de bits da palavra de código (L)
Em qualquer código temos:
2v diferentes combinações de síndrome
2v-1 diferentes combinações de síndrome, diferentes de 0.
L possíveis posições de erros unitários na palavra de código.
L ≤ 2v − 1
(6.8)
Pela equação 6.8, sendo v = L-m, fixando o valor da mensagem m, obtêm-se v
mínimo necessário para garantir a correcção do erro.
Pág 56 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
6.3.4 – Construção de um código de Hamming (7,4,3) sistemático
Dada a equação 6.6 de paridades, facilmente se constrói o universo do código de
Hamming sistemático denominado no nosso caso, α(7,4,3). Os pesos de Hamming
são obtidos recorrendo à definição 6.1
Teremos 8 palavras diferentes e 24 = 16 possíveis combinações de bits.
Os bits redundantes serão adicionados ao final da palavra pois o código é
sistemático.
Palavra de código α(7,4)
Nome
A
B
C
D
E
F
G
H
I
J
L
M
N
O
P
Q
m3m2m1m0
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
v2v1v0
000
011
101
110
110
101
011
000
111
100
010
001
001
010
100
111
Peso de
Hamming (w)
w
0
3
3
4
3
4
4
3
4
3
3
4
3
4
4
7
Tabela 6.2 Alfabeto completo e pesos de Hamming do código α(7,4,3)
6.3.5 – Controlo de erros do código de Hamming (7,4,3) sistemático
A capacidade de controlo de erros dependem da distância de Hamming do código
completo dmin e é dada pelas equações 4.1 e 4.2
A dmin pode ser facilmente obtida pelo peso de Hamming w (ver equação 6.3)
d min = min w (α ) = 3 , como seria de esperar.
Sendo assim, de acordo com as equações 4.1 e 4.3 confirma-se que este código é
capaz de detectar até 2 erros isolados de bit e corrigir 1 erro isolado de bit.
Pág 57 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Teste 1 – Recepção com erro num dos bits
Admitamos que ao receptor chega a seguinte palavra: 0110 111 (Palavra de código
“G” com o bit v2 errado)
O receptor vai calcular o vector síndrome da palavra de código recebida:
E0 = m0 ⊕ m1 ⊕ m3 ⊕ P0 = 0 ⊕ 1 ⊕ 0 ⊕ 1= 0
E1 = m0 ⊕ m2 ⊕ m3 ⊕ P1= 0 ⊕ 1 ⊕ 0 ⊕ 1 = 0
E2 = m1 ⊕ m2 ⊕ m3 ⊕ P2= 1 ⊕ 1 ⊕ 0 ⊕ 1 = 1
E = [1 0 0 ], ora de acordo com a tabela de descodificação do receptor (Tabela 6.1),
este síndrome corresponde ao bit de verificação v2 com erro, portanto a palavra é
facilmente corrigida invertendo esse bit.
Deixa-se ao critério do leitor fazer outras experiências com erros simples de bit noutras
palavras de código em qualquer posição e concluir que o erro é sempre corrigido.
6.3.6 – Construção de um código de Hamming (7,4,3) não sistemático
Caso se entrelace11 inteligentemente os bits de paridade pela palavra de código,
Hamming demonstrou que é possível que, em caso de erro, o vector síndroma
identifique o valor da posição do bit em erro, simplificando o processo de
descodificação.
As posições dos bits de verificação são as posições que são potências de base 2,
desde 1 até ao comprimento da mensagem m.
O número de bits de verificação v a utilizar é igual ao número de potências de base 2
desde 0 até ao comprimento da mensagem m.
v =  20
2...
2m 
A construção deste código é bastante simples. Considere-se um código do tipo (7,4,3)
em que a mensagem m = 1010
11
Ao entrelaçamento dos bits redundantes pela palavra de código designa-se código não sistemático (ver
secção 4.2)
Pág 58 de 68
Departamento de Radiotecnia
Escola Náutica Infante Dom Henrique
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Procedimento de codificação
Passo 1:
Numerar a palavra de código da direita para a esquerda com as posições de cada bit
começando em 1 até ao comprimento total L (neste caso L = 7). Assinalar com X as
posições dos bits redundantes (são as posições que são potências de base 2)
7
6
5
22= 4
3
X
21= 2
20= 1
X
X
Passo 2:
Preencher as posições diferentes de X com os bit da palavra m por ordem
7
6
5
22= 4
3
21= 2
20= 1
1
0
1
X
0
X
X
Passo 3:
Calculo dos bits de paridade: Efectuar a soma módulo 2 do valor das posições em
binário de cada um dos bit a “1”
r
111 (7) ⊕ 101 (5) = 010 => v = [ 0 1 0]
Passo 4:
Preencher as posições diferentes de X com os bits de paridade pela ordem obtida.
7
6
5
22= 4
3
21= 2
20= 1
1
0
1
0
0
1
0
A palavra de código a transmitir é c1 = 1010010
Procedimento de descodificação
No procedimento de descodificação, o receptor vai somar módulo 2, os valores das
posições dos bits de estão a 1. Este é o vector síndrome. Caso seja 0, não há erros.
Caso seja diferente de 0 indica a posição do bit errado.
Teste 1: Recepção sem erros:
c1‘= 1010010
r
O vector síndrome é : 111 (7) ⊕ 101 (5) ⊕ 010 (2) => E = [ 0
O que significa que não foram detectados erros.
Pág 59 de 68
0 0]
Departamento de Radiotecnia
Escola Náutica Infante Dom Henrique
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Teste 2: Recepção com erro num dos bits:
Admita-se que o bit da posição 3 vem com erro.
c1‘= 1010110
r
O vector síndrome é : 111 (7) ⊕ 101 (5) ⊕ 011 (3) ⊕ 010 (2) => E = [ 0 1 1]
Como se vê o resultado é 3, bastando ao receptor inverter o bit correspondente a
essa posição da palavra de código.
6.3.7 – Outras famílias de códigos de Hamming
De acordo com a equação 6.8 e definição 6.2, poderão ser derivadas outras famílias
de códigos de Hamming (L,m)
A tabela 6.3 ilustra cada uma das famílias de acordo com o parâmetro v=L-m, e
respectiva eficiência
L
4
11
26
57
120
247
501
m
7
15
31
63
127
255
511
η
0.57
0.73
0.84
0.91
0.94
0.968
0.982
Tabela 6.3 Diferentes famílias de códigos de Hamming
Verifica-se que a eficiência aumenta à medida que o tamanho da palavra de código
aumenta, no entanto este aumento implica um aumento de complexidade do
codificador, e a criação de atrasos que poderão ser intoleráveis ao ter que juntar e
processar elevados números de bits e combinações de palavras de código.
6.3.8 – Sub-conjuntos de famílias de códigos de Hamming
Vale a pena referenciar que é comum a codificação de Hamming aplicada a
mensagens de comprimento diferente dos referidos na tabela 6.3 Consideremos por
exemplo uma mensagem de 8 bit.
Neste caso, sendo m = 8, temos bits redundantes nas posições: 20, 21, 22, 23
Obtemos agora uma palavra de código de comprimento L = 12, m =8 e v = 4.
É importante referir que este é um conjunto reduzido (ou sub-conjunto) da família de
código (11,15).
Pág 60 de 68
Departamento de Radiotecnia
Escola Náutica Infante Dom Henrique
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
O algoritmo de codificação de Hamming não sistemático é exactamente igual ao
descrito na secção 6.3.6,
A título de exemplo, a codificação deste sub-conjunto para m = 10001101, é a
seguinte
Passo 1
Assinalar com X as posições dos bits redundantes
12
11
10
9
3
2 =8
7
6
5
X
2
2=4
3
X
1
0
2 =2
2=1
X
X
Passo 2
Preencher as posições diferentes de X com os bit da palavra m por ordem
12
11
10
9
23 = 8
7
6
5
22= 4
3
21 = 2
20= 1
1
0
0
0
X
1
1
0
X
1
X
X
Passo 3
Cálculo dos valores dos bits de verificação
r
1100 (12) ⊕ 0111 (7) ⊕ 0110 (6) ⊕ 0011 (7) = 1110 => v = [1 1 1 0]
12
11
10
9
23 = 8
7
6
5
22= 4
3
21 = 2
20= 1
1
0
0
0
1
1
1
0
1
1
1
0
Passo 4:
Preencher as posições diferentes de X com os bits de paridade pela ordem obtida.
A palavra de código a transmitir é c2 = 100011101110
Sugere-se que o leitor calcule o vector síndroma e confirme que este código corrige os
erros unitários de bit.
Pág 61 de 68
Departamento de Radiotecnia
Escola Náutica Infante Dom Henrique
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
6.4 – Representação matricial de um código de blocos linear.
Cada palavra de um código de blocos linear pode ser escrita na forma matricial:
1 - Codificação
A codificação não é mais do que a multiplicação do vector mensagem m de dimensões
[1,m] pela matriz geradora G de dimensões [ (m), (m+v)]
c = mG
(6.9)
A matriz geradora G designa-se por matriz geradora de código e é definida de forma
a cumprir os seguintes requisitos:
1 – Não possui o vector nulo
2 – Não tem duas linhas iguais
A matriz geradora G é sempre composta por duas sub-matrizes:
1 - Matriz identidade com dimensão mxm, ou seja com a mesma dimensão da
mensagem
2 Matriz de paridades P, com dimensões mxv, que contêm o sistema de equações
para cálculo dos bits de paridade.
G = [ I mxm | Pmxv ]
(6.10)
A título de exemplo é apresentada a matriz G1, geradora do código de Hamming
sistemático (7,4,3) estudado na secção 6.3.4.
m3 m2 m1 m0 P2 P1 P0
1

0
G1 = [ I 4 x 4 | P4 x 3 ] = 
0

0
0 0 0 0 1 1

1 0 0 1 0 1
0 1 0 1 1 0

0 0 1 1 1 1 
Repare-se como a matriz de paridades representada a vermelho implementa o
sistema de equações de paridade em cada uma das colunas, descrito pela equação
6.6.
P0 = m 0 ⊕ m 1 ⊕ 0 ⊕ m 3
P1 = m 0 ⊕ 0 ⊕ m 2 ⊕ m 3
P2 = 0 ⊕ m 1 ⊕ m 2 ⊕ m 3
Pág 62 de 68
Departamento de Radiotecnia
Escola Náutica Infante Dom Henrique
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
De acordo com a equação 6.9, o alfabeto de código de Hamming (7,4,3) que foi
representado na tabela 6.3, é obtido pela multiplicação do vector mensagem pela
matriz geradora G1.
α ( 7, 4,3) = [ m3 m2 m1
1

0
m0 ] 
0

0
0 0 0 0 1 1

1 0 0 1 0 1
0 1 0 1 1 0

0 0 1 1 1 1 
Note-se que qualquer outra sub-matriz geradora geradora de paridade P, que
contenha pelo menos dois bit a 1 por cada linha é uma matriz geradora de um código
de Hamming (7,4,3). Estes são os casos, por exemplo das matrizes geradoras G2 e
G3.
1

0
G2 = 
0

0
0 0 0 0 1 1
1


1 0 0 1 0 1
0
G
=
3
0
0 1 0 1 1 0 ,


0 0 1 1 1 1 
0
0 0 0 0 1 1

1 0 0 1 0 1
0 1 0 1 1 0

0 0 1 1 1 1 
Sugere-se que o leitor construa diferentes alfabetos de código com base em G2 e G3
e que verifique que o código resultante tem dmin = 3 e corrige erros de 1 bit.
2 - Descodificação
Em termos matriciais, a descodificação é semelhante à codificação. Agora a palavra
de código recebida é multiplicada por uma matiz de mxv dimensões designada por
matriz de teste de paridade : HT
O resultado deste multiplicação é o vector síndrome E de dimensões 1xv
E = cH T
(6.11)
A matriz HT tem a seguinte forma:
P 
HT =  
 Iv 
(6.12)
HT é ortogonal à matriz geradora G, de forma a que:
Pág 63 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
GH = [ I m
T
0 L 0 
P  
P]   =  M
M 
I
 v  0 L 0 


V preliminar
(6.13)
O resultado da equação 6.13 é a matriz nula de mxv bits:
De acordo com a equação 6.9, a palavra de código vem codificada na forma c = mG ,
então substituindo 6.9 em 6.11:
E = cH T = mGH T = [ 0 L 0]
(6.14)
O resultado da equação 5.15 é o vector nulo de dimensão 1xv.
A título de exemplo é apresentada a matriz H1T, de teste de paridades do código de
Hamming sistemático (7,4,3) estudado na secção 6.3.4.
Esta matriz tem o formato da equação 6.12, e é dada por:
0
1

1

T
H = 1
1

0
0

1 1
1 0

0 1

1 1
0 0

1 0
0 1 
Repare-se que a vermelho está a matriz geradora de paridades e a preto a matriz
identidade.
Pág 64 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Teste 1 – Recepção sem erros
Vamos admitir que é recebida a palavra de código denominada “G” na tabela 6.2.
G = 0110 011
O receptor vai calcular o vector síndrome (equação 6.14)
0
1

1

T
E = cH = [ 0 1 1 0 0 1 1] 1
1

0
0

1 1
1 0

0 1

1 1  = [ 0 0 0]
0 0

1 0
0 1 
Como seria de esperar, sem erros o síndrome é nulo
Teste 2 – Recepção sem erros
Vamos admitir que é recebida a palavra de código “G” com um bit errado.
G = 0110 111
O síndrome é agora:
0
1

1

T
E = cH = [ 0 1 1 0 1 1 1] 1
1

0
0

1 1
1 0

0 1

1 1  = [1 0 0]
0 0

1 0
0 1 
Este é exactamente o mesmo resultado obtido na secção 5.3.5 , teste 1, e sinaliza
correctamente o bit em erro.
Pág 65 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
6.4.1 – Considerações adicionais sobre o síndrome
Caso existam erros que possam ser corrigidos, ao receptor chegará uma palavra de
código Rx afectada pelo vector de erro ε
Rx = c ⊕ ε
(6.15)
O padrão de erro ε vai originar um síndrome não nulo:
E = Rx H T = ( c ⊕ ε ) H T = mGH T + ε H T
(6.16)
[0 ... 0]
Verifica-se que o síndrome apenas depende do padrão de erro ε , o que significa
que é possível construir uma tabela de síndromas a partir de uma associação do
padrão de erro com HT
Como exemplo considere-se uma palavra de código de 7 bit de comprimento, e
respectivo padrão de erro:
Caso o primeiro bit esteja errado, temos
ε = [1 0 0 0 0 0 0] .H T
= 1ª linha de HT
Caso o segundo bit esteja errado temos:
ε = [ 0 1 0 0 0 0 0] .H T
= 2ª linha de HT
E assim sucessivamente para todos os padrões de 1 bit em erro,. Para o caso do
código α ( 7, 4, 3) estudado na secção 6.3.5, a tabela de síndromas e correspondente
padrão de erro estão ilustrados na tabela 6.4
Desta tabela de síndromes obtêm-se a matriz HT com a ajuda da equação 6.16.
Padrão de erro ε
0000000
1000000
0100000
0010000
0001000
0000100
0000010
0000001
Observação
Sem erros
1º Bit em erro
2º Bit em erro
3º Bit em erro
4º Bit em erro
5º Bit em erro
6º Bit em erro
7º Bit em erro
Síndrome E =cHT
000
111
110
101
011
001
010
100
Tabela 6.4 Tabela de síndromes para cada padrão de erro
Pág 66 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Nota:
É possível fazer coincidir o valor do síndrome com a posição do bit em erro.
Para tal basta fazer uma lista equivalente à da tabela 6.4, com os síndromes
desejados para cada padrão do erro.
Após calcular a matriz HT retira-se a sub-matriz de paridades P.
Pela tabela 6.4, observamos ainda que cada padrão de erros de 1 bit gera um e
apenas um síndrome,
O número total de síndromas é dado pela equação 6.8: Neste exemplo de código com
3 bit de verificação temos
diferentes de 0.
2v − 1 = 23 − 1 = 7 diferentes
combinações de síndrome
Devido a esta particularidade, os códigos de Hamming são designados códigos
perfeitos
Definição 5.5
Um código perfeito é aquele em que cada erro de bit corresponde apenas um
síndrome.
Pág 67 de 68
Escola Náutica Infante Dom Henrique
Departamento de Radiotecnia
Interfaces e Transmissão de dados - 6222
Notas sobre detecção e correcção de erros
V preliminar
Referências
[PETER01] W.W. Peterson, D.T. Brown, Cyclic codes for error detection, Proceedings
of the IRE, Volume 49, pages 228-235, Jan 1961.
[HAMM01] R. W. Hamming, Error Detecting and Error Correcting Codes. Bell
System Technical Journal, vol. 29, pp. 147-160, April, 1950.
Pág 68 de 68
Download

Capítulo 2 Detecção e correcção de erros. Codificação de canal