16.36: Engenharia de Sistemas de Comunicação Aula 14: Códigos cíclicos e detecção de erros Eytan Modiano
Códigos Cíclicos Um código cíclico é um código de bloco linear onde c é uma palavra-chave, e também todos os deslocamentos cíclicos de c Ex.: {000,110,101,011} é um código cíclico Códigos cíclicos podem ser tratados da mesma forma que todos os outros do CBL Matriz geradora e de verificação de paridade podem ser encontradas Um código cíclico pode ser descrito de forma completa por meio de um gerador de seqüência G Todas as palavras-chave são múltiplas do gerador de seqüência Na prática, os códigos cíclicos são muitas vezes usados na detecção de erro (CRC) Utilizado em redes de pacotes Quando um erro é detectado pelo receptor, ele solicita a retransmissão
Técnicas de detecção de erro Utilizadas pelo receptor para descobrir se um pacote contém erros Se um pacote contém erros, o receptor solicita ao transmissor o reenvio do pacote Técnicas de detecção de erros Verificação de paridade Ex.: um bit simples Cyclic redundancy check (CRC) - (Verificação Cíclica de Redundância)
Códigos de Verificação de Paridade bits de dados k bits de verificação r Cada verificação de paridade é um módulo para calcular alguns dos bits de dados Exemplo: c 1 = x 1 + x 2 + x 3 c 2 = x 2 + x 3 + x 4 c 3 = x 1 + x 2 + x 4
Código Simples de Verificação de Paridade O bit de verificação é 1, se o quadro contiver números ímpares de 1; caso contrário ele é 0 1011011 -> 1011011 1 110 -> 110 0 Assim, o quadro codificado contém números pares de 1 O receptor calcula o número de 1s no quadro Um número par de 1 é interpretado como sem erro Um número ímpar de 1 significa que deve ter ocorrido um erro Um erro simples (ou um número ímpar de erros) pode ser detectado Um número par de erros não consegue ser detectado Nada pode ser corrigido Propababilidade de erros não-detectados (erros independentes) Pu n det ected) = N N = tamanho do pacote ( p i (1 p) N i i par i p = probab. de erro
Verificação Cíclica de Redundância (CRC) M R Bits de dados k Bits de verificação r T T = M 2 r + R M = bits de informação R = bits de verificação T = palavra-chave CRC é implementado usando uma realimentação do registro de deslocamento Entrada de bits Saída de bits
Verificação Cíclica de Redundância T = M 2 r + R Como calculamos R (os bits de verificação)? Escolha um gerador de seqüência G de extensão r+1 bits Escolha R tal que T seja um múltiplo de G (T = A*G, para qualquer A) Agora, quando T for dividido por G não haverá nenhuma lembrança => sem erros Tudo usando aritmética de mód 2 T = M 2 r + R = A*G => M 2 r = A*G + R (aritmética de 2) Permita que R = lembrança de M 2 r /G e T será um múltiplo de G A escolha de G é um parâmetro importante para o desempenho de uma CRC
Exemplo r = 3, G = M = 110101 => M2 r = 110101000 11 110101000 01000 0001100 01010 011 = R (3 bits) Módulo 2 Divisão
Verificação de erros Permita que T seja a seqüência recebida Divida T por G Se a lembrança = 0 presume-se que não há erros Se a lembrança for diferente de zero, deve ter havido erros Exemplo: Envie T = 110101011 Receba T = 110101011 (sem erros) Não há jeito de saber quantos erros ocorreram ou quais bits estão com erro 110101011 01000 0001101 0 000 => Sem erros
Divisão de Mod 2 como Divisão polinomial
Implementando uma CRC
Eficácia das técnicas de detecção de erro A eficácia de um código de detecção de erro normalmente é medida através de três parâmetros: 1) distância mínima de código (d) (quantidade mínima de erros de bit não-detectados) A distância mínima de um código é a quantidade menor de erros que podem associar uma palavra-chave a outra. Se ocorrerem menos erros do que d, eles sempre serão detectados. Mais erros do que d freqüentemente serão detectados (mas nem sempre!) 2) capacidade de detectar aumento repentino de sinal (B) (aumento máx da extensão sempre detectada) 3) probabilidade de padrão de erro de bit aleatório como livre de erro (boa estimativa, se a quantidade de erros em um quadro for >> d ou B) Útil quando o enquadramento estiver perdido Bits de informação k => palavra-chave 2k válidas Com bits de verificação r, a probabilidade de uma seqüência aleatória de extensão k+r se associar a uma das palavras-chave 2 k v álidas é de 2 k /2 k+r = 2 -r
Desempenho da CRC Para os bits de verificação r por quadro e um quadro de extensão menor que 2 r-1, pode-se detectar o seguinte: 1) Todos os padrões de erros de 1,2, ou 3 (d > 3) 2) Todas as rajadas de erros de r ou poucos bits 3) Grandes quantidades de erro aleatórias com prob. 1-2 -r O padrão de DLC usa uma CRC com r=16 com opção de r=32 CRC-16, G = X 16 + X 15 + X 2 +1 = 11000000000000101
Características de Erro da Camada Física A maioria das Camadas Físicas (canais de comunicação) não são bem descritas por um simples parâmetro BER A maioria dos processos de erro físico tendem a criar uma combinação de aleatoriedade e rajada de erros Um canal com um BER de 10-7 e um tamanho médio de rajada de 1.000 bits é muito diferente de um com erros aleatórios independentes Exemplo: Para uma extensão média de quadro de 10 4 bits canal aleatório: E[taxa de erro de quadro] ~ 10-3 canal de rajada: E[taxa de erro de quadro] ~ 10-6 Melhor para caracterizar um canal através de sua Taxa de Erro de Quadro Este é um problema difícil para os sistemas reais