1 / 34

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

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

tala
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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 • Código de Berger • Definição • Codificação

  3. 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

  4. 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

  5. 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;

  6. 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;

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

  8. 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.

  9. Detecção e Correcção de Erros

  10. 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.

  11. Detecção de Erros

  12. 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.

  13. 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.

  14. 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)

  15. 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;

  16. 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)

  17. 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

  18. 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

  19. 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

  20. 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)

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

  22. 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

  23. CRC- Cálculo do Código no Transmissor

  24. CRC- Detecção de Erros • Na recepção podem ocorrer duas situações: • 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

  25. CRC- Detecção de Erros

  26. CRC- Detecção de Erros • 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.

  27. CRC- Detecção de Erros

  28. 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).

  29. 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

  30. Conclusão • Distância de Hamming; • A distância mínimadmin de um código é a mais pequena distância de Hamming entre duaspalavras 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.

  31. 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.

  32. Conclusão • Có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

  33. 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.

  34. Thanks!! Questions!!!

More Related