Upload
tala
View
38
Download
8
Embed Size (px)
DESCRIPTION
Fiabilidade de Sistemas Informáticos. Códigos de Detecção e Correcção de erros. Trabalho realizado por: Clara Dimene nº15589. Objectivos. Código de Hamming; Definição Codificação Descodificação Exemplos Código de Redundância Cíclica; Definição Codificação Descodificação - PowerPoint PPT Presentation
Citation preview
Códigos de Detecção e Correcção de erros
Trabalho realizado por:
Clara Dimene nº15589
Fiabilidade de Sistemas Informáticos
Objectivos Código de Hamming;
o Definiçãoo Codificaçãoo Descodificaçãoo Exemplos
Código de Redundância Cíclica; o Definiçãoo Codificaçãoo Descodificação
Código de Bergero Definiçãoo Codificação
Codificação
Para enviar uma mensagem através de um canal de transmissão é necessário acrescentar redundância, ou seja codificar.
É uma das técnicas que suporta a tolerância a falhas em hardware,
É a adição de bits de verificação aos bits que contêm a informação de modo que os erros ocorridos em alguns bits possam ser detectados e se possível corrigidos;
O erro é detectado através da inconsistência na integridade estrutural dos dados
Codificação
Códigos comuns usados na
tolerância a falhas em hardware:
Código de Hamming; Código de Redundância Cíclica; Código de Berger
Descodificação Depois das palavras de código
calculadas ou seja, depois das mensagens terem
sido codificadas e transmitidas no canal;
Têm de ser descodificadas Temos que ver se a palavra recebida é
uma palavra de código válida; Se não for é porque a palavra contém
erros; Então temos que eliminar esses erros e
obter a palavra de código transmitida;
Detecção e Correcção de Erros
É baseada na redundância - acréscimo do número de bits;
Exemplo: Palavra de dados: 01 11 Palavra código: 011 110
A sequência de bits a ser transmitida terá então um tamanho n = m + k. Esta sequencia é conhecida como palavra de código;
Detecção e Correcção de Erros
Se o número k de bits redundantes for suficientemente grande, alem da correcção é possível também a detecção;
A detecção e correcção de erros dependem da distância de Hamming do código completo;
Detecção e Correcção de Erros
Distância de Hamming
É o número mínimo de bits que diferem entre si quaisquer duas palavras do código.
Quando uma palavra de código chega ao destino é comparada com uma tabela contendo todas as possíveis instruções tabela de descodificação.
A comparação é feita entre a palavra recebida e as palavras contidas na tabela de descodificação.
Detecção e Correcção de Erros
Palavra de código Binária enviada
Acção efectuada no destino
[00000] Abre comporta da represa
[01011] Fecha comporta
[10101] Liga motor
[11110] Desliga motor
Detecção e Correcção de Erros Suponhamos que é enviada num
determinado instante a instrução [01011] fecha comporta;
E por acção da interferência seja recebida no receptor a palavra binária [01001] ;
O descodificador no receptor calcula as distâncias de Hamming entre a palavra recebida e todas as possíveis instruções válidas da tabela de descodificação.
Detecção de Erros
Palavra de código Binária
Distância de Hamming da palavra de código
recebida[01001]
[00000] 2
[01011] 1
[10101] 3
[11110] 4
Detecção e Correcção de Erros A instrução originalmente
transmitida é aquela que tem a menor distância de Hamming da palavra recebida com erro é mais parecida com a palavra recebida.
Logo o descodificador infere que a palavra originalmente transmitida é [01011] menor distância de Hamming.
Detecção e Correcção de Erros Detecção de n bits errados: é
possível caso a distância de Hamming entre a palavra de dados e a palavra de código seja d = n+1.
Correcção de n bits errados : possível caso a distância de Hamming entre a palavra de dados e a palavra de código seja igual a d=2n +1.
Código de Hamming
Correctores de erros simples, ou seja permitem correcção automática de 1 bit errado;
Ou detectores de erros duplos;
A distância mínima é sempre 3(corrige um erro ou detecta 2 erros)
Código de Hamming
Os bits de verificação/paridade são potências de 2;
Bits de verificação são colocados de modo que a palavra recebida indique onde ocorreu o erro;
Todas as outras posições são bits de dados;
Bits da palavra de código são enumerados da esquerda para a direita;
Um bit de dados pode contribuir em diversos bits de verificação;
Código de Hamming
Exemplo prático: Mensagem: 10001101(8 bits) Palavra de código origem:
Bits de paridade: 1,2,4 e 8 Bits a 1: 12,7,6,3 Código de correcção (representado em binário): 1100(12) xor 0111(7) xor 0110(6) xor 0011(3) = 1110 3210 (posição)
12 11 10 9 8 7 6 5 4 3 2 1
1 0 0 0 1 1 0 1
Código de Hamming- Detecção
Recepção sem erros Transmissão: 100011101110 Recepção: 100011101110
1100 (12) xor 1000 (8) xor 0111 (7) xor 0110 (6) xor 0100 (4) xor 0011 (3) xor 0010 (2) = 0000
Código de Hamming - Detecção
Recepção com erros
Transmissão: 100011101110 Recepção: 100011001110
1100 (12) xor 1000 (8) xor 0111 (7) xor 0100 (4) xor 0011 (3) xor 0010 (2) = 0110(6) indica a posição do bit errado
Código de Hamming - Correcção
A correcção é feita pela adição do bit complementar.
Transmissão: 100011101110 Recepção: 100011001110 Recepção após correcção: 100011101110
Código de Redundância Cíclica È usado para a detecção de erros
durante a comunicação de dados.
O CRC também é conhecido como código polinomial, pois as strings de bits são tratadas como representações de polinómios com coeficientes 0 e 1.
Representa-se uma mensagem x com k-1 bits por um polinómio M (x) de grau n;
Exemplo: M(x) 1101011
(x^10+x^9+x^7+x^5+x^4)
Código de Redundância Cíclica
G (x) é o polinómio gerador de grau n com n+1 bits;
A escolha de G (x) determina quais os tipos de erros que são detectados.
Polinómio Gerador : 11001 (x^4+x^3+1) G(x)
Grau do Polinómio Gerador (n)=4
A mensagem a transmitir será: 110100110000 obtida pela relação B (x)=M (x) x 2^n + R (x)
Divide-se B (x) por G (x);
CRC- Cálculo do Código no Transmissor O resto R (x) é obtido pela relação:B (x) = G(x)*Q (x) + R (x)
A mensagem a ser enviada é obtida através da seguinte relação:
T (x)= B (x) - R (x) (XOR)
110100110000 -1010 110100111010 mensagem
a enviar
CRC- Cálculo do Código no Transmissor
CRC- Detecção de Erros
Na recepção podem ocorrer duas situações:
a)Caso chegue o polinómio – T(x)
Ao dividir T (x) por G (x) no receptor o resto é zero
Neste caso não houve erro de transmissão; Note-se que uma cadeia com erros pode dar
resto 0; mas se G(x) for bem escolhido isto é muito improvável
CRC- Detecção de Erros
CRC- Detecção de Erros
b) Se houver um erro, a invés de chegar o polinómio T(x) chega T(x)+E (x)
Ao dividir T(x) + E (x) /G(x) o resto é diferente de zero;
Neste caso houve erro de transmissão;
Cada bit 1 em E (x) corresponde a um bit invertido;
T(x)/G(x) é sempre zero. O resultado é E (x)/G(x)
Todos os erros de bit isolado serão detectados porque E (x)= xi, onde i indica o bit com erro.
CRC- Detecção de Erros
Código de Berger
Contam-se os zeros que cada palavra contém, e adiciona-se o número aos bits de verificação para formar o código;
Se o comprimento da palavra for do tamanho k, o esquema de codificação precisa de log2 (k) extra bits.
O código de Berger detecta todos os códigos unidireccionais, inclusive aqueles que corrompem os bits de verificação.
Seja I o numero de bits de informação e k o número de bits de verificação;
Então k=log2(I+1).
Código de Berger
Exemplo:
Código de Berger para a palavra 0111010 Seja I= 7 bits de informação Se k = log2(7 + 1)= 3 bits de verificação
(valor absoluto) 4 bits em binário 100 Complemento de 100 011 Bits de verificação obtidos = 011
O código de Berger para 0111010 é 0111010011
Conclusão
Distância de Hamming;
A distância mínima dmin de um código é a mais pequena distância de Hamming entre duas palavras de código válidas.
A detecção de erros é sempre possível quando o número de erros de transmissão numa palavra de código é menor que dmin.
Se número de erros é maior ou igual a dmin, a palavra com erros pode corresponder a palavras válidas e os erros não são detectados.
Conclusão
Código de Hamming;
Prevê a criação de bits redundantes, inserindo-os em determinadas posições do byte.
Este código é capaz de detectar erros duplos e corrigir erros simples. Muitos chips de memória para semicondutores usam estes códigos.
O uso deste código torna-se eficiente, em termos do número de bits necessários relativamente ao número de bits de dados, á medida que o comprimento da palavra aumenta.
ConclusãoCódigo de Redundância Cíclica;
Todos os erros de 1 bit;
Todos os erros de 2 bits se o grau de C (x) é superior a 3;
Todas as situações em que há um número ímpar de erros, desde que C (x) tenha os termos k + 1;
Todos os “burst errors” até m bits se C (x) é de grau m
“Burst errors” de comprimento maior ou igual a 16 bits
Conclusão
Código de Berger;
Detecta erros unidireccionais de entre todos os códigos nos quais a informação e os bits de verificação possam ser separados.
Este código apresenta o menor número de bits de verificação comparado com outros códigos separáveis.
Uma alternativa a este código pode ser obtida pela contagem do número de 1s em cada palavra e acrescentar o complementar um a um como bits de verificação.
Thanks!!Questions!!!