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

Slides:



Advertisements
Apresentações semelhantes
O Modelo OSI O RM-OSI é um modelo de referência p/ interconexão de sistemas abertos (open systems interconection) Padrão ISO 7498, publicado em 1984 Sistemas.
Advertisements

Aula 3 – Transmissão Digital
Tecnologias da Informação e Comunicação
CRC – Cyclic Redundancy Check
Operações Aritméticas no Sistema Binário
Representação de Números
Transmissão de pacotes
Aritmética Computacional
1- É O CRIADOR DA TEORIA DA INFORMAÇÃO George Boole Blase Pascal V
A informação e sua representação
Eletrônica Digital Operações Aritméticas Binárias
Modelo de Referência OSI
FAFIMAN – Prof. Flávio Uber FAFIMAN – Departamento de Informática Curso: Ciência da Computação Professor: Flávio Rogério Uber Arquitetura e Organização.
TRANSMISSÃO E RECEPÇÃO
Técnicas de Comunicação de Dados Digitais
Comunicação local Assíncrona
Endereçamento de hardware e identificação de quadros
Soma de Produtos Soma de produtos é uma forma padrão de representação de funções Booleanas constituida pela aplicação da operação lógica OU sobre um conjunto.
Tolerância a Falhas em redes Intra-Chip
TÉCNICAS DE CODIFICAÇÃO DE SINAIS
MODULAÇÃO Conceito de Modulação
Camada de Enlace Redes de Computadores.
Camada de Enlace - LLC.
Modelo OSI OSI é um modelo de referência para interligação de sistemas abertos (open systems interconection) Padrão ISO 7498, publicado em 1984 Sistemas.
Hierarquia de Memória Organização da cache
Universidade do Vale do Rio dos Sinos - São Leopoldo -
CODIFICAÇÃO Prof. Sérgio Lima.
Conversão entre base decimal e binária
Escola Secundária Filipa de Vilhena Ano Lectivo 2010/ Turma IGR1
Sistemas Numéricos Sistemas Numéricos de Interesse
Técnica de modelagem de Máquina de Estados em VHDL
Software de Rede Willamys Araújo.
Licenciatura Plena em Computação Camada de Enlace Professor Ivan Pires.
Informática Teórica Engenharia da Computação
Mestrado em Telecomunicações
Circuitos combinatórios típicos: circuitos aritméticos
Cálculo Numérico / Métodos Numéricos
Representação Digital da Informação
Formadora: Patrícia MateusArquitectura de Computadores – Técnico de Sistemas Nível 3 1 Sistemas de Numeração ARQUITECTURA INTERNA DE COMPUTADORES.
Computador Simplificado Conceitos p.ex. FLUXO de execução
Arquitectura de Computadores – Técnico de Sistemas Nível 3
Infra-Estrutura de Hardware
Tópicos em Arquitetura de Computadores João Angelo Martini Universidade Estadual de Maringá Departamento de Informática Mestrado em Ciência.
O Problema Do Acordo Distribuído (Acordo Bizantino)
Campus de Caraguatatuba Aula 8: Noções Básicas sobre Erros (2)
Representação de dados
Redes de Computadores Prof. Msc. Wellington W. F. Sarmento
Organização dos sistemas de computadores rr-09-r.01 UC: Organização de Computadores Docente: Prof. MSc. Marcelo Siedler.
1 Pacotes, Quadros e Detecção de Erros Nathalie e Renan Copyright 2002 ©
ARQUITETURA DE COMPUTADORES II
Comunicação de dados Protocolos básicos de enlace de dados.
Protocolos de Janela Deslizante
Sistemas Operacionais
Tecnologias da Informação e Comunicação
Subtrator e Somador BCD
Operações Aritméticas no Sistema binário
PACOTES, QUADROS E DETECÇÃO DE ERRO. Pontifícia Universidade Católica de São Paulo - PUC Aula de Redes - Prof. Victor Fabiana Bernardes e Karen Niglio.
Fundamentos de Comunicação de Dados e Protocolos de Rede
SEC (Single Error Correction) Código de Hamming
Reed-Solomon Error Correction
Fundamentos de Redes de Computadores
8088 Assembly Software Básico Mitsuo Takaki.
Protocolo MODBUS [ Slide de Abertura com a presença de outras logomarcas ] A segunda opção é a mais apropriada para a presença de mais de duas marcas.
Universidade Federal de Uberlândia
Redes e Manutenção de Computadores
SISTEMAS DE NUMERAÇÃO 1. SISTEMAS DE NUMERAÇÃO 2. ARITMÉTICA BINÁRIA
Detecção e Correção de Erros
Rede de Computadores MAT164 – Redes de Computadores I Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação.
PUCC 1 Agenda Memória Correção de Erros. PUCC 2 Tipos de Erros Graves: –Defeito físico permanente. Células perdem a capacidade de armazenar dados com.
Prof. Ivair Teixeira Redes de Computadores.
Transcrição da apresentação:

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; Código de Berger

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.

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.

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

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

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

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

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.

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

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;

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

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

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

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: 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 + x3 + 1 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 111001100000; Divide-se T (x) por G (x) ;

CRC- Detecção de Erros

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.

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

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

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