Natureza da Informao Semana 7 Erros Prof Joo

  • Slides: 85
Download presentation
Natureza da Informação Semana 7: Erros Prof. João Henrique Kleinschmidt Material elaborado pelos professores

Natureza da Informação Semana 7: Erros Prof. João Henrique Kleinschmidt Material elaborado pelos professores de NI

Comunicação Até agora trabalhamos com informações e suas representações por meio de códigos Informações

Comunicação Até agora trabalhamos com informações e suas representações por meio de códigos Informações são armazenadas e/ou transmitidas Como garantimos que não ocorrem erros no armazenamento ou na transmissão das informações?

Códigos Compressão: representamos mensagens com menos bits Com vs sem perda Frequentemente compressão é

Códigos Compressão: representamos mensagens com menos bits Com vs sem perda Frequentemente compressão é combinada à codificação Menos bits carregando a mesma informação cada bit é mais importante Consequência de erros em um único bit é mais séria Queremos códigos pequenos e pouco suscetíveis a erros Veremos técnicas de detecção/correção de erros para geração de representações menos suscetíveis a erros

Comunicação Quando transmitimos informações, como temos certeza que o lado receptor recebeu corretamente a

Comunicação Quando transmitimos informações, como temos certeza que o lado receptor recebeu corretamente a informação?

Comunicação A perda de informação pode ocorrer em todos os processos de comunicação, mas

Comunicação A perda de informação pode ocorrer em todos os processos de comunicação, mas é possível convivermos com ela? Depende!!! Existem situações nas quais é possível convivermos com perdas de informações e outras situações isso não é possível

Comunicação Ex. : transmissão de imagem por uma rede de computadores: Quando transmitimos um

Comunicação Ex. : transmissão de imagem por uma rede de computadores: Quando transmitimos um vídeo pelo You. Tube (ou baixamos uma música pela Internet), se alguma mensagem é perdida não há problema, pois o volume de dados de uma mensagem é tão grande que a falta de informação de um frame (quadro) geralmente não fará diferença Mesmo se fizer, a consequência geralmente não é nem significativa e nem relevante

Comunicação Quando transmitimos uma imagem médica, como uma ressonância magnética, através de uma rede

Comunicação Quando transmitimos uma imagem médica, como uma ressonância magnética, através de uma rede de computadores, a perda de um único quadro pode representar a detecção de um tumor! Portanto, existem situações e aplicações nas quais os erros no processo de comunicação são tolerados e outras não E como detectar esses erros?

Modelo de sistema de comunicação Modelo estendido Entrada (Arrays de bits) Compressor (Ar r

Modelo de sistema de comunicação Modelo estendido Entrada (Arrays de bits) Compressor (Ar r de ays bits ) Codificador de canal Ar (símbolos) Codificador de fonte de ray bi s ts Saída Decodificador de fonte (Arrays (símbolos) de bits) Expansor ys ra ts Ar bi de Canal ruidoso Decodificador de canal ays ) r r (A bits de

Detecção/correção de erros Codificador de canal: Adiciona bits à mensagem para possibilitar detecção/reparos de

Detecção/correção de erros Codificador de canal: Adiciona bits à mensagem para possibilitar detecção/reparos de eventuais ruídos introduzidos Decodificador de canal: Realiza a decodificação da mensagem transmitida pelo canal ruidoso Canal: Ar, fibra ótica, cabo, satélite, telefone, barramentos de computador, etc.

Como ocorrem os erros? Diferentes sistemas diferentes dispositivos como canal Ex. link de comunicação,

Como ocorrem os erros? Diferentes sistemas diferentes dispositivos como canal Ex. link de comunicação, pendrive, computador, etc Vários efeitos físicos podem causar erros Ex. riscos em CD e DVD, memória pode falhar, linha telefônica pode estar ruidosa, quedas de energia, etc

Erros Para nossos propósitos, erros serão modelados como mudanças em um ou mais bits

Erros Para nossos propósitos, erros serão modelados como mudanças em um ou mais bits De 0 para 1 e vice-versa Em cadeias de bits: assumiremos que erros são independentes Embora em alguns casos erros em bits adjacentes não sejam independentes uns dos outros Ex. quando risca um CD

Erros Abordagens para o tratamento de erros: Ignorar o erro; Eco (transmissão à origem

Erros Abordagens para o tratamento de erros: Ignorar o erro; Eco (transmissão à origem de reflexos dados recebidos); Sinalizar o erro; Detectar e solicitar a retransmissão em caso de erro; Detectar e corrigir os erros na recepção de forma automática

Detecção vs Correção Duas abordagens gerais: Detectar o erro Corrigir o erro Decodificador de

Detecção vs Correção Duas abordagens gerais: Detectar o erro Corrigir o erro Decodificador de canal tenta reparar a mensagem Em ambos os casos, bits são adicionados à mensagem, tornando-as maiores (adiciona redundância) para informar como obter a informação original

Ideia Fazer com que a maioria dos padrões de bits dos códigos não corresponda

Ideia Fazer com que a maioria dos padrões de bits dos códigos não corresponda a mensagens válidas Efeito de erro será então mudar mensagem para um padrão inválido Decodificador de canal pode então detectar o erro e tomar alguma ação Se cada padrão ilegal é mais próximo de uma das mensagens válidas do que de todas as outras, o decodificador pode substituí-lo pela mensagem válida mais próxima, corrigindo o erro

Erros e códigos de detecção/correção Intuição: cada código válido (pontos vermelhos) está suficientemente separado

Erros e códigos de detecção/correção Intuição: cada código válido (pontos vermelhos) está suficientemente separado dos outros códigos válidos Células rosas: códigos inválidos, indicam erro As bordas são equidistantes dos centros

Erros e códigos de detecção/correção Intuição: fazer com que exista uma região próxima de

Erros e códigos de detecção/correção Intuição: fazer com que exista uma região próxima de cada código válido, desenhadas como células Se recebemos código inválido em uma célula, sabemos que o correto é o centro da célula

Erros e códigos de detecção/correção Intuição: por causa da necessidade de se codificar regiões

Erros e códigos de detecção/correção Intuição: por causa da necessidade de se codificar regiões inválidas, precisamos de bits extras Ou seja, apenas um subconjunto das possíveis cadeias recebidas é válida

Erros e códigos de detecção/correção Intuição: se recebermos um código inválido na borda da

Erros e códigos de detecção/correção Intuição: se recebermos um código inválido na borda da célula, ele é equidistante a dois centros Não sabemos corrigir Mas sabemos que está errado Detecção é mais fácil do que correção

Erros e códigos de detecção/correção Intuição: usando um bit a mais para detectar erro,

Erros e códigos de detecção/correção Intuição: usando um bit a mais para detectar erro, só há centros e bordas Toda palavra errada é equidistante a mais de uma correta Detecção é mais fácil do que correção Correção precisa de mais bits extras

Distância de Hamming Como dizer se duas cadeias de bits são diferentes? Pelo número

Distância de Hamming Como dizer se duas cadeias de bits são diferentes? Pelo número de bits que são diferentes entre as duas cadeias Distância de Hamming Richard W. Hamming (1915 -1998)

Distância de Hamming Ex. : Qual é a distância de Hamming entre 0100 e

Distância de Hamming Ex. : Qual é a distância de Hamming entre 0100 e 1110? 0 1 0 0 ≠ = 11 1 0 2 bits

Distância de Hamming Definida somente entre duas cadeias com o mesmo número de bits

Distância de Hamming Definida somente entre duas cadeias com o mesmo número de bits Efeito de erros introduzidos pelo canal pode ser descrito pela distância de Hamming entre Cadeia de entrada e Cadeia de saída Sem erros distância = 0 Um erro distância = 1 Dois erros distância = 2

Redundância Consideremos primeiro a transmissão de um único bit Maneira de proteger: mandá-lo mais

Redundância Consideremos primeiro a transmissão de um único bit Maneira de proteger: mandá-lo mais de uma vez Na maioria das vezes espera-se que o valor não mude Ex. mandar duas vezes Mensagem 0 é substituída por 00 pelo codificador de canal Mensagem 1 é substituída por 11 pelo codificador de canal Decodificador alerta erro quando os dois bits recebidos são diferentes Mas se dois erros ocorrem? erro não é detectado

Redundância Se múltiplos erros são prováveis, uma maior redundância pode ajudar Ex. para detectar

Redundância Se múltiplos erros são prováveis, uma maior redundância pode ajudar Ex. para detectar erros duplos, mandar o mesmo bit 3 vezes 000 e 111 A menos que os 3 bits recebidos sejam iguais, ocorreu erro detecta Detecta erros simples e duplos Mas quantos erros podem ter ocorrido? Ex. em 011, primeiro errado bit enviado foi 1 Dois últimos bits errados bit enviado foi 0 E erros triplos? Ainda podem não ser detectados

Redundância E se queremos que o decodificador de canal corrija os erros, não só

Redundância E se queremos que o decodificador de canal corrija os erros, não só detecte? Vamos assumir que há 1 erro no máximo e o bit é enviado 3 vezes Se um erro ocorreu (os 3 bits não são iguais), decodificador pode dizer: O valor original é o bit que ocorre um maior número de vezes (lógica de maioria) Chamada técnica de tripla redundância Pode ser usada para proteger canais de comunicação, memórias, computação arbitrária

Redundância Tripla redundância pode ser usada para corrigir um único erro ou detectar erros

Redundância Tripla redundância pode ser usada para corrigir um único erro ou detectar erros duplos Mas não corrige erros duplos! Correção pressupôs ocorrência de um único erro Para corrigir erros duplos, deve-se aumentar a redundância

Redundância Codificação de canal por redundância tripla e decodificação por correção de um erro,

Redundância Codificação de canal por redundância tripla e decodificação por correção de um erro, para canal introduzindo um bit de erro 0 Decodificador de fonte 001 Decodificador de canal 000 Canal ruidoso 0 Codificador de canal Codificador de fonte Entrada Saída Codificação de canal por redundância tripla e decodificação por correção de um erro, para canal introduzindo dois bits de erro 1 Decodificador de fonte 101 Decodificador de canal 000 Canal ruidoso 0 Codificador de canal Codificador de fonte Entrada Saída

Redundância Eficiência de redundância (taxa de código) Número de bits antes da codificação de

Redundância Eficiência de redundância (taxa de código) Número de bits antes da codificação de canal Número de bits após a codificação de canal Valor entre 0 e 1 Ex. redundância dupla = 0, 5 Tripla redundância = 0, 33 Maiores eficiências (taxas de código) são melhores Representam menos acréscimos à mensagem

Redundância Efetividade de redundância Se erros são improváveis: Pode ser razoável ignorar o caso

Redundância Efetividade de redundância Se erros são improváveis: Pode ser razoável ignorar o caso ainda mais raro de dois erros ocorrerem juntos e próximos E redundância tripla é bastante efetiva Consegue corrigir um erro Mas erros podem ser concentrados Ex. risco em CD Neste caso, um erro é então provavelmente acompanhado de erros similares em bits adjacentes Redundância tripla não é efetiva nesse caso

Múltiplos bits Há várias técnicas para detectar erros em uma sequência de vários bits

Múltiplos bits Há várias técnicas para detectar erros em uma sequência de vários bits Algumas também realizam correção de erros Exemplos: Paridade Códigos retangulares Códigos de Hamming

Detecção vs correção de erros Correção de erros é mais útil que apenas detecção

Detecção vs correção de erros Correção de erros é mais útil que apenas detecção Mas requer mais bits E é então menos eficiente

Paridade Permite detecção de erro em um único bit de uma mensagem Qualquer grupo

Paridade Permite detecção de erro em um único bit de uma mensagem Qualquer grupo de bits tem um número par ou ímpar de 1 s Bit de paridade é adicionado para tornar o número de 1 s no grupo sempre par ou sempre ímpar Bit de paridade par: torna número de 1 s par Bit de paridade ímpar: torna número de 1 s ímpar Um sistema opera com paridade par ou ímpar Ex. operando com paridade par, verifica-se em grupos de bits recebidos se eles possuem número par de 1 s Se número de 1 s for ímpar, houve erro

Paridade Ex. : código BCD com bits de paridade

Paridade Ex. : código BCD com bits de paridade

Paridade Bit de paridade pode ser acrescentado ao início ou fim do código Depende

Paridade Bit de paridade pode ser acrescentado ao início ou fim do código Depende do projeto do sistema ATENÇÃO: Número total de 1 s, incluindo bit de paridade, é sempre para a paridade par e sempre ímpar para a paridade ímpar

Paridade Detecção de erro: Bit de paridade provê detecção de erro em um único

Paridade Detecção de erro: Bit de paridade provê detecção de erro em um único bit Ou mais genericamente: número ímpar de erros Não pode detectar dois (ou qualquer número par de) erros em um grupo Imagine um sistema com paridade par e transmitindo a sequência: 0101 Com o bit de paridade fica 00101 Supondo que ocorra um erro no 3 o bit, o receptor receberá 00001 e apontará um erro, pois perceberá um número ímpar de 1 s em uma paridade par Agora, se ocorrerem 2 erros (ex: receptor recebe 01111), não perceberá o erro, pois o numero de 1 s será par

Paridade Decodificador de canal conta número de 1 s Se é ímpar (na paridade

Paridade Decodificador de canal conta número de 1 s Se é ímpar (na paridade par) há erro Não consegue corrigir danos Número ímpar de erros Não consegue sequer dizer se o erro foi no bit de paridade Não detecta erros duplos Mais genericamente, não detecta número par de erros

Paridade É eficiente Taxa de código no exemplo de um byte = 8/9 Usada

Paridade É eficiente Taxa de código no exemplo de um byte = 8/9 Usada em muitas aplicações de hardware (onde uma operação pode ser repetida em caso de dificuldade, ou onde é útil a simples detecção de erros) Ex. barramento PCI Mas é pouco efetiva Mais usada quando probabilidade de erro é muito pequena E quando não há razão para supor que erros em bits adjacentes irão ocorrer em conjunto

Por que bit de paridade funciona? Para que seja detectado um único erro, é

Por que bit de paridade funciona? Para que seja detectado um único erro, é preciso que todos os códigos válidos tenham entre si uma distância de Hamming maior ou igual a 2 No caso da proteção de 1 bit com bit de paridade temos: Paridade par: 00 e 11 têm d = 2 Paridade ímpar: 10 e 01 têm d = 2 E no caso da proteção de 2 bits: Paridade par: 000, 101, 110 e 011 têm d = 2 Paridade ímpar: 100, 001, 010 e 111 têm d = 2 etc. Se a distância fosse 1, um erro faria com que um código válido se transformasse em outro válido Ex. 00 e 01

Paridade (conclusão) Um único bit de paridade: detecção de erro em um único bit

Paridade (conclusão) Um único bit de paridade: detecção de erro em um único bit em uma cadeia Pode indicar que existe um erro em um certo grupo de bits Porém, não temos informação para descobrir onde foi o erro (ou seja, sua localização) Para corrigir um erro detectado, mais informação é necessária Posição (localização) do bit errado tem que ser identificada Precisa de mais do que um bit de paridade

Detectando múltiplos erros No caso geral, para criar um código que detecte L erros,

Detectando múltiplos erros No caso geral, para criar um código que detecte L erros, precisamos que a distância mínima (dmin) entre os padrões seja maior ou igual a L + 1 Exemplo: Para detectar 3 erros, é preciso uma distância mínima de 4 entre códigos válidos

Corrigindo múltiplos erros No caso geral, para criar um código que corrija L erros,

Corrigindo múltiplos erros No caso geral, para criar um código que corrija L erros, precisamos que a distância mínima (dmin) entre os padrões seja maior ou igual a 2 L + 1 Exemplo: Para detectar 1 erro, é preciso uma distância mínima de 3 No código de paridade para 1 bit, podemos apenas detectar o erro: 00 e 11 Mas se colocarmos 1 bit a mais, teremos: 000 e 111 Neste caso, podemos saber qual era o bit original Os códigos válidos 000 e 111 estão à distância 3

Mágica 1 - Vocês colocam as cartas aleatoriamente • 2 - Quando coloco as

Mágica 1 - Vocês colocam as cartas aleatoriamente • 2 - Quando coloco as fileiras extras para “dificultar”, faço todas as colunas e linhas terem um número ímpar de cartas de “frente”

O Segredo da Mágica 3 – Mudo uma carta, qual foi? 4 – O

O Segredo da Mágica 3 – Mudo uma carta, qual foi? 4 – O assistente apenas tem que procurar a linha e coluna onde há um número par de cartas de frente Isso é um algoritmo real de detecção e correção de erros! Paridade em blocos

Mágica Colocando uma só fileira (paridade simples) Decodificador de canal Entrada Codificador de canal

Mágica Colocando uma só fileira (paridade simples) Decodificador de canal Entrada Codificador de canal Dá para saber qual linha está errada, mas não que carta nela está virada

Códigos retangulares Provêm correção de um único erro e detecção de erro duplo simultaneamente

Códigos retangulares Provêm correção de um único erro e detecção de erro duplo simultaneamente Suponha ter que proteger informação de um byte Oito bits D 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7 Arranjá-los em uma tabela retangular e adicionar bits de paridade para cada uma das linhas e colunas: D 0 D 1 D 2 D 4 D 5 D 6 PC 0 PC 1 PC 2 D 3 PL 0 D 7 PL 1 PC 3 P 8 bits de dados (carga) 7 bits de paridade Há outros códigos geométricos também, baseados em arranjar os bits em triângulos, cubos, pirâmides, cunhas ou estruturas de maior dimensão

Códigos retangulares Cada bit de paridade de linha e coluna é ajustado tal que

Códigos retangulares Cada bit de paridade de linha e coluna é ajustado tal que paridade total na linha ou coluna seja par (ou ímpar, dependendo do sistema adotado)

Códigos retangulares No exemplo dos 8 bits de dados + 7 bits de paridade,

Códigos retangulares No exemplo dos 8 bits de dados + 7 bits de paridade, os 15 bits são então enviados pelo canal Decodificador de canal os analisa na recepção Faz um total de 8 checagens de paridade Um único erro: uma das três paridades de linha e uma das cinco paridades de coluna estará errada Nas 3 linhas e nas 5 colunas Esse bit pode então ser identificado e corrigido Na intersecção da linha e coluna com paridades incorretas Dois erros: haverá um padrão diferente de falhas de paridade Erros duplos podem ser detectados, mas não corrigidos

Códigos retangulares A idéia é dispor os bits de dados na forma mais próxima

Códigos retangulares A idéia é dispor os bits de dados na forma mais próxima possível de um quadrado perfeito Exemplo: 24 bits de dados Maneiras de arranjá-los em um retângulo 24 X 1 (requer 26 bits de paridade) 12 X 2 (requer 15 bits de paridade) 8 X 3 (requer 12 bits de paridade) 6 X 4 (requer 11 bits de paridade) 6 X 4 é o melhor arranjo (mais próximo de um quadrado perfeito) M X N (requer M + N + 1 bits de paridade)

Códigos retangulares Conclusão: o número de bits de paridade necessários cresce linearmente com o

Códigos retangulares Conclusão: o número de bits de paridade necessários cresce linearmente com o perímetro do retângulo utilizado (M+N+1) Pergunta: dá para produzir códigos mais eficientes (com o menor número de bits de paridade possível) para o mesmo propósito de corrigir 1 erro? Sim: Códigos de Hamming

Códigos de Hamming Richard Hamming inventou um método para corrigir 1 erro com número

Códigos de Hamming Richard Hamming inventou um método para corrigir 1 erro com número mínimo de bits de paridade extra Cada bit de paridade adicional pode ser usado para ajudar a localizar o erro

Códigos de Hamming Ex. 3 bits extra 3 testes podem identificar até 8 condições

Códigos de Hamming Ex. 3 bits extra 3 testes podem identificar até 8 condições Uma delas será a condição de “não erro” (correto) 7 condições restantes para identificar a localização de até 7 posições onde erro possa estar Bloco transmitido pode então ter 7 bits 3 para checagem de erros 4 para carregar os dados (carga) Ex. 4 bits de paridade blocos com 15 bits 11 bits para carregar mensagem (carga)

Códigos de Hamming • Número de bits de paridade – Se o número de

Códigos de Hamming • Número de bits de paridade – Se o número de bits de dados for d, o número de bits de paridade p é determinado por: não é necessário decorar essa fórmula: ela pode ser facilmente deduzida!!! • Ex. : 4 bits de dados (mensagens com 4 bits) – p = 2 2 p = 2 2 = 4 e d + p + 1 = 4 + 2 + 1 = 7 » 4 < 7, relação não é satisfeita – p = 3 2 p = 2 3 = 8 e d + p + 1 = 4 + 3 + 1 = 8 » 8 8, relação é satisfeita Precisa de 3 bits de paridade para proporcionar correção de um único erro em quatro bits de dados

Códigos de Hamming Detecção e correção são proporcionados por todos os bits no grupo

Códigos de Hamming Detecção e correção são proporcionados por todos os bits no grupo De paridade e de dados bits de paridade também são verificados

Códigos de Hamming Inserção de bits de paridade no código: Arranjar os bits adequadamente

Códigos de Hamming Inserção de bits de paridade no código: Arranjar os bits adequadamente no código Ex. com 4 bits de dados e 3 bits de paridade Bit mais à esqueda é designado como bit 1, próximo como 2 e assim por diante bit 1, bit 2, bit 3, bit 4, bit 5, bit 6, bit 7 Bits de paridade são colocados nas posições numeradas em correspondência às potências de 2 (1, 2, 4, 8, . . . ) P 1 , P 2 , D 1 , P 3 , D 2 , D 3 , D 4 Pi é um bit de paridade em particular e Di é um bit de dado em particular

Códigos de Hamming Determinação dos valores de bits de paridade Designar apropriadamente o valor

Códigos de Hamming Determinação dos valores de bits de paridade Designar apropriadamente o valor 0 ou 1 a cada bit de paridade Cada bit de paridade provê verificação em outros determinados bits no código total Deve saber valor desses outros bits para determinar o de paridade

Códigos de Hamming Determinação dos valores de bits de paridade Para determinar o valor

Códigos de Hamming Determinação dos valores de bits de paridade Para determinar o valor do bit, primeiro numere cada posição de bit em binário Escreva o binário equivalente a cada decimal da posição Segunda e terceira linhas da tabela:

Códigos de Hamming Determinação dos valores de bits de paridade Em seguida, indique a

Códigos de Hamming Determinação dos valores de bits de paridade Em seguida, indique a localização dos bits de dados e de paridade Primeira linha da tabela: Número da posição em binário do bit de paridade P 1 tem 1 no dígito mais à direita: esse bit verifica as posições de todos os bits, incluindo ele, que têm 1 na mesma posição nos números de posição em binário (bits 1, 3, 5 e 7)

Códigos de Hamming Determinação dos valores de bits de paridade Número da posição em

Códigos de Hamming Determinação dos valores de bits de paridade Número da posição em binário do bit de paridade P 2 tem 1 no dígito do meio: esse bit verifica as posições de todos os bits, incluindo ele, que têm 1 na mesma posição (bits 2, 3, 6 e 7) Número da posição em binário do bit de paridade P 3 tem 1 no dígito mais à esquerda: esse bit verifica as posições de todos os bits, incluindo ele, que têm 1 na mesma posição (bits 4, 5, 6 e 7)

Códigos de Hamming Determinação dos valores de bits de paridade Em cada caso, é

Códigos de Hamming Determinação dos valores de bits de paridade Em cada caso, é designado ao bit de paridade o valor que torna a quantidade de 1 s, no conjunto de bits que ele verifica, par ou ímpar Dependendo do que for especificado

Determinação do código p 3 p 2 p 1 001 011 101 111 010

Determinação do código p 3 p 2 p 1 001 011 101 111 010 100

Códigos de Hamming Ex. 1: Determine o código de Hamming para o 1001, usando

Códigos de Hamming Ex. 1: Determine o código de Hamming para o 1001, usando paridade par Passo 1: determinar número de bits de paridade necessários p = 3 são suficientes (visto em slide anterior) Total de bits do código = 4 (dados) + 3 (paridade) = 7

Códigos de Hamming Ex. 1: Determine o código de Hamming para o 1001, usando

Códigos de Hamming Ex. 1: Determine o código de Hamming para o 1001, usando paridade par Passo 2: construir tabela de posições de bits e inserir os bits de dados

Códigos de Hamming Ex. 1: Determine o código de Hamming para o 1001, usando

Códigos de Hamming Ex. 1: Determine o código de Hamming para o 1001, usando paridade par Passo 3: Determinar os bits de paridade • P 1 verifica bits das posições 1, 3, 5 e 7: tem que ser 0 para no de 1 s ser par no grupo • P 2 verifica bits das posições 2, 3, 6 e 7: tem que ser 0 para no de 1 s ser par no grupo P 3 verifica bits das posições 4, 5, 6 e 7: tem que ser 1 para no de 1 s ser par no grupo

Códigos de Hamming Ex. 1: Determine o código de Hamming para o 1001, usando

Códigos de Hamming Ex. 1: Determine o código de Hamming para o 1001, usando paridade par Passo 4: Código resultante = 0011001

Códigos de Hamming Ex. 2: Determinar código de Hamming para bits de dados 10110

Códigos de Hamming Ex. 2: Determinar código de Hamming para bits de dados 10110 usando paridade ímpar Passo 1: determinando número de bits de paridade necessários d=5 Tentando p = 4 2 p = 24 = 16 d + p + 1 = 5 + 4 + 1 = 10 4 bits são suficientes Total de bits do código = 5 + 4 = 9

Códigos de Hamming Ex. 2: Determinar código de Hamming para bits de dados 10110

Códigos de Hamming Ex. 2: Determinar código de Hamming para bits de dados 10110 usando paridade ímpar Passo 2: construir tabela de posições de bits e inserir bits de dados P 4 está na posição 8

Códigos de Hamming Ex. 2: Determinar código de Hamming para bits de dados 10110

Códigos de Hamming Ex. 2: Determinar código de Hamming para bits de dados 10110 usando paridade ímpar Passo 3: determinar bits de paridade • P 1 verifica bits das posições 1, 3, 5, 7 e 9: tem que ser 1 para no de 1 s ser ímpar no grupo • P 2 verifica bits das posições 2, 3, 6 e 7: tem que ser 0 para no de 1 s ser ímpar no grupo • P 3 verifica bits das posições 4, 5, 6 e 7: tem que ser 1 para no de 1 s ser ímpar no grupo P 4 verifica bits das posições 8 e 9: tem que ser 1 para no de 1 s ser ímpar no grupo

Códigos de Hamming Ex. 2: Determinar código de Hamming para bits de dados 10110

Códigos de Hamming Ex. 2: Determinar código de Hamming para bits de dados 10110 usando paridade ímpar Passo 4: código combinado = 101101110

Códigos de Hamming Detecção e correção de erro com o código de Hamming: Cada

Códigos de Hamming Detecção e correção de erro com o código de Hamming: Cada bit de paridade e seus grupos de bits correspondentes tem que ser verificado Se possui paridade adequada Se há 3 bits de paridade 3 verificações são feitas Se há 4 bits de paridade 4 verificações são feitas Etc. Cada verificação de paridade produz um resultado bom ou ruim

Códigos de Hamming Detecção e correção de erro com o código de Hamming: Resultado

Códigos de Hamming Detecção e correção de erro com o código de Hamming: Resultado de todas as verificações indica o bit, se houver algum, que está errado: Passo 1: começar com o grupo verificado por P 1 Passo 2: Verifique o grupo quanto à paridade correta 0 representa verificação de paridade correta 1 representa verificação de paridade incorreta Passo 3: repetir passo 2 para cada grupo de paridade Passo 4: Número binário formado pelo resultado de todas as verificações de paridade determina a posição do bit do código que está errado Código de posição de erro Primeira verificação de paridade gera o bit menos significativo Todas as verificações corretas indicam que não há erro

Determinação do código p 3 p 2 p 1 001 011 101 111 010

Determinação do código p 3 p 2 p 1 001 011 101 111 010 100

Código de Hamming Ex. 1: Considere que transmitiu 0011001 (exemplo 1) e 0010001 foi

Código de Hamming Ex. 1: Considere que transmitiu 0011001 (exemplo 1) e 0010001 foi recebido Receptor não sabe o que foi transmitido Tem que testar as paridades para determinar se o código está correto Determinar erro usando paridade par

Código de Hamming Ex. 1: Considere que transmitiu 0011001 (exemplo 1) e 0010001 foi

Código de Hamming Ex. 1: Considere que transmitiu 0011001 (exemplo 1) e 0010001 foi recebido Montar tabela de posição de bit • Primeira verificação de paridade: Bit P 1 verifica as posições 1, 3, 5 e 7 Há dois 1 s nesse grupo A verificação de paridade é correta 0

Código de Hamming Ex. 1: Considere que transmitiu 0011001 (exemplo 1) e 0010001 foi

Código de Hamming Ex. 1: Considere que transmitiu 0011001 (exemplo 1) e 0010001 foi recebido Montar tabela de posição de bit • Segunda verificação de paridade: Bit P 2 verifica as posições 2, 3, 6 e 7 Há dois 1 s nesse grupo A verificação de paridade é correta 0

Código de Hamming Ex. 1: Considere que transmitiu 0011001 (exemplo 1) e 0010001 foi

Código de Hamming Ex. 1: Considere que transmitiu 0011001 (exemplo 1) e 0010001 foi recebido Montar tabela de posição de bit • Terceira verificação de paridade: Bit P 3 verifica as posições 4, 5, 6 e 7 Há um 1 nesse grupo A verificação de paridade é incorreta 1

Código de Hamming Ex. 1: Considere que transmitiu 0011001 (exemplo 1) e 0010001 foi

Código de Hamming Ex. 1: Considere que transmitiu 0011001 (exemplo 1) e 0010001 foi recebido Montar tabela de posição de bit • Resultado: Código de posição de erro é 100 (binário 4) Bit na posição 4 está errado (deveria ser 1) Código corrigido = 0011001 (igual a transmitido)

Código de Hamming Ex. 2: O código 101101010 é recebido. Corrija qualquer erro. Há

Código de Hamming Ex. 2: O código 101101010 é recebido. Corrija qualquer erro. Há quatro bits de paridade. Paridade usada é ímpar. Tabela de posição de bit: • Primeira verificação de paridade: Bit P 1 verifica as posições 1, 3, 5, 7 e 9 Há dois 1 s nesse grupo A verificação de paridade é incorreta 1 (LSB)

Código de Hamming Ex. 2: O código 101101010 é recebido. Corrija qualquer erro. Há

Código de Hamming Ex. 2: O código 101101010 é recebido. Corrija qualquer erro. Há quatro bits de paridade. Paridade usada é ímpar. Tabela de posição de bit: • Segunda verificação de paridade: Bit P 2 verifica as posições 2, 3, 6 e 7 Há dois 1 s nesse grupo A verificação de paridade é incorreta 1

Código de Hamming Ex. 2: O código 101101010 é recebido. Corrija qualquer erro. Há

Código de Hamming Ex. 2: O código 101101010 é recebido. Corrija qualquer erro. Há quatro bits de paridade. Paridade usada é ímpar. Tabela de posição de bit: • Terceira verificação de paridade: Bit P 3 verifica as posições 4, 5, 6 e 7 Há dois 1 s nesse grupo A verificação de paridade é incorreta 1

Código de Hamming Ex. 2: O código 101101010 é recebido. Corrija qualquer erro. Há

Código de Hamming Ex. 2: O código 101101010 é recebido. Corrija qualquer erro. Há quatro bits de paridade. Paridade usada é ímpar. Tabela de posição de bit: • Quarta verificação de paridade: Bit P 4 verifica as posições 8 e 9 Há um 1 nesse grupo A verificação de paridade é correta 0

Código de Hamming Ex. 2: O código 101101010 é recebido. Corrija qualquer erro. Há

Código de Hamming Ex. 2: O código 101101010 é recebido. Corrija qualquer erro. Há quatro bits de paridade. Paridade usada é ímpar. Tabela de posição de bit: • Resultado: Código de posição de erro é 0111 (binário 7) Bit na posição 7 está errado Código correto = 101101110

Códigos de Hamming • Alguns códigos de Hamming: Bits de paridade Tamanho de bloco

Códigos de Hamming • Alguns códigos de Hamming: Bits de paridade Tamanho de bloco Carga Taxa de código Tipo de bloco de código 2 3 1 0, 33 (3, 1, 3) 3 7 4 0, 57 (7, 4, 3) 4 15 11 0, 73 (15, 11, 3) 5 31 26 0, 84 (31, 26, 3) 6 63 57 0, 90 (63, 57, 3) 7 120 0, 94 (127, 120, 3) 8 255 247 0, 97 (255, 247, 3)

Códigos de Hamming • Alguns códigos de Hamming: Bits de paridade Tamanho de bloco

Códigos de Hamming • Alguns códigos de Hamming: Bits de paridade Tamanho de bloco Carga Taxa de código Tipo de bloco de código 2 3 1 0, 33 (3, 1, 3) 3 7 4 0, 57 (7, 4, 3) 4 15 11 0, 73 (15, 11, 3) 5 31 26 0, 84 (31, 26, 3) 6 63 57 0, 90 (63, 57, 3) 7 120 0, 94 (127, 120, 3) 8 255 247 0, 97 (255, 247, 3) Redundância tripla

Códigos de Hamming • Alguns códigos de Hamming: Bits de paridade Tamanho de bloco

Códigos de Hamming • Alguns códigos de Hamming: Bits de paridade Tamanho de bloco Carga Taxa de código Tipo de bloco de código 2 3 1 0, 33 (3, 1, 3) 3 7 4 0, 57 (7, 4, 3) 4 15 11 0, 73 (15, 11, 3) 5 31 6 Código de Hamming mais simples 26 0, 84 (31, 26, 3) com eficiência razoável (visto 63 57 anteriormente) 0, 90 (63, 57, 3) 7 120 0, 94 (127, 120, 3) 8 255 247 0, 97 (255, 247, 3)

Códigos de Hamming Conclusão cada bit de paridade adicional dobra o número de localizações

Códigos de Hamming Conclusão cada bit de paridade adicional dobra o número de localizações codificadas 1 único bit testa apenas 2 condições: erro e “não erro” (ou seja, apenas detecta se houve erro, mas não corrige) 2 bits: testa até 4 condições: 3 possíveis localizações de erro e a condição “não erro” 3 bits: testa até 8 condições: 7 possíveis localizações de erro e a condição “não erro” n bits: testa até 2 n condições: 2 n -1 localizações de erro e a condição “não erro” Ou seja, o número de bits de paridade necessários para corrigir 1 erro cresce logaritmicamente (log 2 M) com o tamanho da mensagem (M)