Natureza da Informação Semana 7: Erros

Documentos relacionados
CAPÍTULO 2 SISTEMAS DE NUMERAÇÃO E CÓDIGOS

5. O Mapa de Karnaugh

7. Funções de Lógica Combinacional. 7. Funções de Lógica Combinacional 1. Somadores Básicos. Objetivos. Objetivos. Circuitos Digitais 03/11/2014

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Câmpus Ponta Grossa. Coordenação do Curso Superior de Tecnologia em. Automação Industrial

SOLUÇÕES N item a) O maior dos quatro retângulos tem lados de medida 30 4 = 26 cm e 20 7 = 13 cm. Logo, sua área é 26 x 13= 338 cm 2.

Detecção de erros de comunicação de dados CRC

Lista de Exercícios Critérios de Divisibilidade

Circuitos Aritméticos

2) Escreva um algoritmo que leia um conjunto de 10 notas, armazene-as em uma variável composta chamada NOTA e calcule e imprima a sua média.

A camada de Enlace. Serviços e Protocolos

Sistemas Digitais II. Interface com o mundo analógico. Prof. Marlon Henrique Teixeira Abril/2014

Capítulo VI Circuitos Aritméticos

a) 2 b) 3 c) 4 d) 5 e) 6

Universidade Federal do ABC Disciplina: Natureza da Informação Lista de Exercícios 02 Códigos e conversão A/D Prof. João Henrique Kleinschmidt

Exercícios: comandos de repetição

CONTROLE DE FLUXO. Redes de Computadores

Sistemas Numéricos. Tiago Alves de Oliveira

Modem e rede local Guia do usuário

Ciclo com Contador : instrução for. for de variável := expressão to. expressão do instrução

Eng.º Domingos Salvador dos Santos.

Arquitetura e Organização de Computadores

Professor: André Rabelo Curso: Engenharia da Computação Disciplina: Lógica Digital Período: 3º Data Entrega: 21/03/2012 Valor: 15 pts Objetivos:

III-2 Cyclic Redundancy Check

INTERFACE PARALELA. Área: Eletrônica Nível de conhecimento necessário: básico. Autor:

Parte 05 - Técnicas de programação (mapas de Veitch-Karnaugh)

- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula

Equilíbrio de um corpo rígido

II-6 Análise de ruído e capacidade de canal

Teoria da Informação: o legado de Shannon

BC-0504 Natureza da Informação

Lição 5 Medidas Descritivas Medidas de Dispersão

Técnicas Digitais A AULA 08. Prof. João Marcos Meirelles da Silva. Sala 425

Estruturas de Repetição

13/09/2011. Atividades. Aula 5: REDE PERT/CPM PRINCÍPIOS DO PERT-CPM

Metodologias de Programação

LISTA COMPLEMENTAR DE DAC E ADC DO LIVRO DO TOCCI

Fundamentos de Transmissão de Dados. Universidade Católica de Pelotas Curso de Engenharia da Computação Disciplina: Redes de Computadores I

Árvores de Decisão Matemática Discreta

Bem-vindo ao tópico sobre movimentos de mercadorias em estoque.

Comandos de Desvio 1

Exercícios: Vetores e Matrizes

Aula 5: determinação e simplificação de expressões lógicas

TOKEN RING & TOKEN BUS

XXXI OLIMPÍADA BRASILEIRA DE MATEMÁTICA PRIMEIRA FASE NÍVEL 2 (8º. ou 9º. anos) GABARITO

Arquitetura de Computadores - Módulos de E/S. por Helcio Wagner da Silva

Circuitos de Apoio. UEM/CTC Departamento de Informática Curso: Ciência da Computação Professor: Flávio Rogério Uber

Arquitetura de Computadores I

PUC-Rio Desafio em Matemática 23 de outubro de 2010

Organização e Arquitetura de Computadores I

Importação de Dados Raster no TerraView

Informática Aplicada

APOSTILA DE ELETRÔNICA DIGITAL II

MANUAL DE CONCEITOS, REGRAS GERAIS E HIPÓTESES EXEMPLIFICATIVAS:

Tolerância a falhas como produzir o serviço correcto na presença de falhas

Exercícios: Comandos de Repetição

Air Alert III: Um programa completo para saltos verticais

Olá! Você verá a seguir um importante treinamento que vai facilitar suas atividades diárias!

Tutorial Autodesk Inventor Sheet Metal

Calculando o comprimento de peças dobradas ou curvadas

Polos Olímpicos de Treinamento. Aula 6. Curso de Combinatória - Nível 2. Jogos. 1. Simetria. Prof. Bruno Holanda

Solução da prova da 2a fase OBMEP 2014 Nível 2. Questão 1. item a)

Vírgula flutuante Aula 6

Eletrônica Digital II. Exemplo de um CI com encapsulamento DIP. Diagrama do CI 74XX76.

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Prof. Adilson Gonzaga. Interface com Displays

Tabela Periódica. Este trabalho é uma apresentação sobre a tabela periódica destinada ao ensino básico ou

Escalas ESCALAS COTAGEM

Bem-vindo ao tópico sobre conceitos de determinação de preços.

FABIANO KLEIN CRITÉRIOS NÃO CLÁSSICOS DE DIVISIBILIDADE

Canguru Matemático sem Fronteiras 2014

Prof.ª: Dr. Maria Lúcia Pozzatti Flôres Organização: Gilberto Raitz Junior

Bases Matemáticas. Daniel Miranda de maio de sala Bloco B página: daniel.miranda

- não destrutiva é possível reconstruir EXACTAMENTE a imagem original antes de ter sido efectuada a compressão. = n C R

Lista de Exercícios - Subtração

Introdução a Banco de Dados. INTRODUÇÃO

6 - PROVAS CESGRANRIO(CONCURSOS BANCO CENTRAL E OUROS)

Polígonos e mosaicos

Interface com Displays de 7 Segmentos. Interface com Displays

Centro de gravidade de um corpo é o ponto onde podemos supor que seu peso esteja aplicado.

UNIVERSIDADE FEDERAL DO PARANÁ ENGENHARIA ELÉTRICA. Codificação de fala PCM & ADPCM

Problema da Árvore Geradora Mínima

Laboratório Wireshark ARP/ICMP 1

Lista 4 Introdução à Programação Entregar até 07/05/2012

Determinantes. Matemática Prof. Mauricio José

Comunicação RS232 e RS485 Vitor Amadeu Souza vitor@cerne-tec.com.br

Introdução à Informática. Alexandre Meslin

Árvores Parte 1. Aleardo Manacero Jr. DCCE/UNESP Grupo de Sistemas Paralelos e Distribuídos

Computadores. Redes de. redes de computadores. Exemplo: Grécia antiga. O problema básico de. Antonio Alfredo Ferreira Loureiro. Exemplo: Grécia antiga

Introdução à Aritmética Modular. George Darmiton da Cunha Cavalcanti CIn - UFPE

=...= 1,0 = 1,00 = 1,000...

Inspeção de Qualidade

CONCURSO DE ADMISSÃO AO COLÉGIO MILITAR DO RECIFE - 95 / 96 QUESTÃO ÚNICA. ESCORES OBTIDOS MÚLTIPLA ESCOLHA

TOM, SEMITOM, SUSTENIDO, BEMOL.

Lista de Exercícios MMC e MDC

Aritmética Computacional. Prof. Leonardo Barreto Campos 1

O QUE É O CALC PLANILHAS ELETRÔNICAS O Calc é um programa que trabalha com planilhas.

1.1 UFPR Rumo Curso Pré Vestibular Assistencial - RCPVA Disciplina: Matemática Professor: Vinícius Nicolau 04 de Novembro de 2014

Notas de aula de Lógica para Ciência da Computação. Aula 11, 2012/2

CAPÍTULO O Método Simplex Pesquisa Operacional

Transcrição:

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 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 é 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 informação?

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 vídeo pelo YouTube (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 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 ( símbolos ) Codificador de fonte (Arrays ( bits de Compressor Codificador de canal Canal ruidoso Decodificador de canal Saída ( símbolos ) Decodificador de fonte (Arrays ( bits de Expansor

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, 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 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 de reflexos dos 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 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 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 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 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 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 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, 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 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 1110? 0 1 0 0 = = 1 1 1 0 2 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 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 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ó 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 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, para canal introduzindo um bit de erro Entrada Codificador de fonte 0 Codificador de canal 000 Canal ruidoso 001 Decodificador de canal 0 Decodificador de fonte 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 Entrada Codificador de fonte 0 Codificador de canal 000 Canal ruidoso 101 Decodificador de canal 1 Decodificador de fonte Saída

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 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 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 Mas requer mais bits E é então menos eficiente

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 1s Bit de paridade é adicionado para tornar o número de 1s no grupo sempre par ou sempre ímpar Bit de paridade par: torna número de 1s par Bit de paridade ímpar: torna número de 1s í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 1s Se número de 1s for ímpar, houve erro

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 do projeto do sistema ATENÇÃO: Número total de 1s, incluindo bit de paridade, é sempre par 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 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 1s em uma paridade par Agora, se ocorrerem 2 erros (ex: receptor recebe 01111), não perceberá o erro, pois o numero de 1s será par

Paridade Decodificador de canal conta número de 1s Se é ímpar (na paridade par) há erro Número ímpar de erros Não consegue corrigir danos 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 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, é 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 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, precisamos que a distância mínima (d min ) 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, precisamos que a distância mínima (d min ) entre os padrões seja maior ou igual a 2L + 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 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 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 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 Suponha ter que proteger informação de um byte Oito bits D0 D1 D2 D3 D4 D5 D6 D7 Arranjá-los em uma tabela retangular e adicionar bits de paridade para cada uma das linhas e colunas: D0 D1 D2 D3 PL0 D4 D5 D6 D7 PL1 PC0 PC1 PC2 PC3 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 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, 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 Nas 3 linhas e nas 5 colunas Um único erro: uma das três paridades de linha e uma das cinco paridades de coluna estará errada 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 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 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 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 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 bits de dados for d, o número de bits de paridade p é determinado por: p 2 d p 1 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 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 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 P i é um bit de paridade em particular e D i é um bit de dado em particular

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 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 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 ( 7 1 na mesma posição nos números de posição em binário (bits 1, 3, 5 e

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 ( 7 na mesma posição (bits 2, 3, 6 e 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 ( 7 têm 1 na mesma posição (bits 4, 5, 6 e

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 1s, 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 110 010 100

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 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 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 n o de 1s ser par no grupo P 2 verifica bits das posições 2, 3, 6 e 7: tem que ser 0 para n o de 1s ser par no grupo P 3 verifica bits das posições 4, 5, 6 e 7: tem que ser 1 para n o de 1s ser par no grupo

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 usando paridade ímpar Passo 1: determinando número de bits de paridade necessários d = 5 Tentando p = 4 2 p = 2 4 = 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 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 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 n o de 1s ser ímpar no grupo P 2 verifica bits das posições 2, 3, 6 e 7: tem que ser 0 para n o de 1s ser ímpar no grupo P 3 verifica bits das posições 4, 5, 6 e 7: tem que ser 1 para n o de 1s ser ímpar no grupo P 4 verifica bits das posições 8 e 9: tem que ser 1 para n o de 1s ser ímpar no grupo

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 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 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 110 010 100

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 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 1s nesse grupo A verificação de paridade é correta 0

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 1s nesse grupo A verificação de paridade é correta 0

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 recebido Montar tabela de posição de bit Resultado: ( 4 Código de posição de erro é 100 (binário ( 1 Bit na posição 4 está errado (deveria ser ( transmitido Código corrigido = 0011001 (igual a

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 1s nesse grupo ( LSB ) A verificação de paridade é incorreta 1

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 1s nesse grupo A verificação de paridade é incorreta 1

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 1s nesse grupo A verificação de paridade é incorreta 1

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á quatro bits de paridade. Paridade usada é ímpar. Tabela de posição de bit: Resultado: ( 7 Código de posição de erro é 0111 (binário 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 Carga Taxa de código Tipo de bloco de código 2 3 1 0,33 ( 3 (3, 1, 3 7 4 0,57 ( 3 (7, 4, 4 15 11 0,73 ( 3 (15, 11, 5 31 26 0,84 ( 3 (31, 26, 6 63 57 0,90 ( 3 (63, 57, 7 127 120 0,94 ( 3 (127, 120, 8 255 247 0,97 ( 3 (255, 247,

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 (3, 1, 3 4 7 15 4 0,57 Redundância tripla 11 0,73 ( 3 (7, 4, ( 3 (15, 11, 5 31 26 0,84 ( 3 (31, 26, 6 63 57 0,90 ( 3 (63, 57, 7 127 120 0,94 ( 3 (127, 120, 8 255 247 0,97 ( 3 (255, 247,

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

Códigos de Hamming Conclusão cada bit de paridade adicional dobra o número de localizações codificadas ou ) erronão eerro: condições 1 único bit testa apenas 2 seja, apenas detecta se houve erro, mas não corrige) 2 bits: testa até 4 condições: 3 possíveis localizações de erro eacondição nãoerro 3 bits: testa até 8 condições: 7 possíveis localizações de erro eacondição nãoerro n bits: testa até 2 n condições: 2 n -1 localizações de erro e a condição nãoerro 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)