A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Códigos de Detecção e Correcção de erros"— Transcrição da apresentação:

1 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

2 Objectivos Código de Hamming; Definição Codificação Descodificação
Exemplos Código de Redundância Cíclica; Código de Berger

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 Se queremos enviar uma mensagem através de um canal de transmissão é necessário acrescentar redundância, ou seja codificar. Permite verificar se os dados são transmitidos correctamente. A codificação essencialmente fornece verificações estruturais, onde 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 Existem várias formas de introduzir redundância na mensagem de um modo eficiente.

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: Palavra código: 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 de erro Bit de paridade/verificação CRC - Código de Redundância Cíclica Código de Berger Código de Hamming Correcção de erro Bit de paridade – consiste em acrescentar á palavra de dados um bit adicional. Caso o número de bits 1 seja ímpar o bit de paridade é igual a 1. E caso seja par o bit de paridade será 0. Uma palavra de dados possui m bits de dados; Acrescentam-se k bits adicionais que serão utilizados no controle de erros;

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. A detecção e correcção de erros dependem da distância de Hamming do código completo; Dado um conjunto de símbolos (palavras de código) válidos, determina-se a distância de Hamming do conjunto como sendo a menor distância de Hamming entre duas palavras de código válidas do conjunto.

9 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

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 [00000] 2 [01011] 1 [10101] 3 [11110] 4
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

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. A distância de Hamming é 5, permite a detecção de erros em quatro bits.

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) Algoritmo que permite proteger primitivas1 da informação a enviar, contra erros de comunicação.

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; A ideia central consiste em não incluir bits somente de paridade à palavra, mas também em organizar estes bits de tal forma que diferentes bits errados produzam diferentes resultados errados. Para corrigir um bit errado, tem que se determinar a posição do bit errado

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) 12 11 10 9 8 7 6 5 4 3 2 1 Os bits de paridade são calculados usando a paridade par ou ímpar. Para calcular os bits de verificação é feito um XOR entre os números das posições dos bits iguais a 1. Os bits resultantes desta operação são numerados da direita para a esquerda e este número indica a posição em que esse bit será colocado;

17 Código de Hamming- Detecção
Recepção sem erros Transmissão: Recepção: 1100 (12) xor 1000 (8) xor 0111 (7) xor 0110 (6) xor (4) xor 0011 (3) xor 0010 (2) = 0000 A verificação é feita pela soma XOR (ou exclusivo) do peso de cada bit da palavra codificada que se encontrar a 1. O resultado da operação equivale á posição do bit com erro; Neste caso o resultado é zero o que indica que não há erro; Caso seja diferente de zero indica a posição onde ocorreu o erro;

18 Código de Hamming - Detecção
Recepção com erros Transmissão: Recepção: 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 A verificação é feita pela soma XOR (ou exclusivo) do peso de cada bit da palavra codificada que se encontrar a 1. Resultado da operação XOR. O número indica a posição do bit com erro 6 (0110).

19 Código de Hamming - Correcção
A correcção é feita pela adição do bit complementar. Transmissão: Recepção: Recepção após correcção:

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) (x^10+x^9+x^7+x^5+x^4) Este código é aplicado a um bloco de dados e não a palavras independentes M (x) é a mensagem a transmitir;

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 : (x^4+x^3+1) G(x) Grau do Polinómio Gerador (n)=4 A mensagem a transmitir será: 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) -1010  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 O emissor e o receptor concordam num polinómio gerador G (x) = x4 + x de grau n ; M (x) = x^7 + x^6+x^5+x^2+ x A mensagem a transmitir será : M (x) x 2^n + R (x) Acrescentam-se 0s no fim da cadeia; o número de 0s é o grau de G (x). A cadeia T (x) torna-se ; Divide-se T (x) por G (x) ;

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). Nos erros unidireccionais (todos os bits errados trocam ou de 1 para 0 ou de 0 para 1, nunca para os dois) os bits errados mudam de 1 para 0 e vice – versa. Se a modificação for de 1 para 0 então o número de 0 aumenta, mas o numero de bits contados diminui.

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 é

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

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 Detectar todos os erros isolados, mas não os pode corrigir. Pode também detectar erros seguidos (burst errors ou erros em rajada) para palavras com comprimento menor que k Burst error – erro que ocorre quando dois bits adjacentes são corrompidos por uma única perturbação

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!!!


Carregar ppt "Códigos de Detecção e Correcção de erros"

Apresentações semelhantes


Anúncios Google