códigos de detecção e correcção de erros

34
Códigos de Detecção e Correcção de erros Trabalho realizado por: Clara Dimene nº15589 Fiabilidade de Sistemas Informáticos

Upload: tala

Post on 10-Jan-2016

35 views

Category:

Documents


8 download

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

TRANSCRIPT

Page 1: Códigos de  Detecção e Correcção de erros

Códigos de Detecção e Correcção de erros

Trabalho realizado por:

Clara Dimene nº15589

Fiabilidade de Sistemas Informáticos

Page 2: Códigos de  Detecção e Correcção de erros

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

Page 3: Códigos de  Detecção e Correcção de erros

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

Page 4: Códigos de  Detecção e Correcção de erros

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

Page 5: Códigos de  Detecção e Correcção de erros

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;

Page 6: Códigos de  Detecção e Correcção de erros

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;

Page 7: Códigos de  Detecção e Correcção de erros

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;

Page 8: Códigos de  Detecção e Correcção de erros

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.

Page 9: Códigos de  Detecção e Correcção de erros

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

Page 10: Códigos de  Detecção e Correcção de erros

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.

Page 11: Códigos de  Detecção e Correcção de erros

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

Page 12: Códigos de  Detecção e Correcção de erros

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.

Page 13: Códigos de  Detecção e Correcção de erros

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.

Page 14: Códigos de  Detecção e Correcção de erros

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)

Page 15: Códigos de  Detecção e Correcção de 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;

Page 16: Códigos de  Detecção e Correcção de erros

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

Page 17: Códigos de  Detecção e Correcção de erros

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

Page 18: Códigos de  Detecção e Correcção de erros

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

Page 19: Códigos de  Detecção e Correcção de erros

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

Page 20: Códigos de  Detecção e Correcção de erros

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)

Page 21: Códigos de  Detecção e Correcção de erros

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);

Page 22: Códigos de  Detecção e Correcção de erros

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

Page 23: Códigos de  Detecção e Correcção de erros

CRC- Cálculo do Código no Transmissor

Page 24: Códigos de  Detecção e Correcção de erros

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

Page 25: Códigos de  Detecção e Correcção de erros

CRC- Detecção de Erros

Page 26: Códigos de  Detecção e Correcçã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.

Page 27: Códigos de  Detecção e Correcção de erros

CRC- Detecção de Erros

Page 28: Códigos de  Detecção e Correcçã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).

Page 29: Códigos de  Detecção e Correcção de erros

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

Page 30: Códigos de  Detecção e Correcção de erros

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.

Page 31: Códigos de  Detecção e Correcção de erros

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.

Page 32: Códigos de  Detecção e Correcção de erros

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

Page 33: Códigos de  Detecção e Correcção de erros

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.

Page 34: Códigos de  Detecção e Correcção de erros

Thanks!!Questions!!!