• Nenhum resultado encontrado

Aula6 parte2

N/A
N/A
Protected

Academic year: 2021

Share "Aula6 parte2"

Copied!
52
0
0

Texto

(1)

Natureza da Informação

Profª Ana Carolina Lorena

Bacharelado em Ciência e Tecnologia Universidade Federal do ABC

Outubro 2010

(2)

Códigos retangulares

Provêm

correção de um único erro

e

detecção de erro duplo

simultaneamente

Supor 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

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

(3)

Códigos retangulares

Cada bit de paridade de linha e coluna é ajustado

tal que paridade total na linha ou coluna é par (ou

ímpar, dependendo do sistema adotado)

PL0, PL1, PC0, PC1, PC2, PC3

Paridade total P é ajustada tal que coluna de bits de

paridade mais à direita também tenha número par

de 1s

Já garante que a linha mais abaixo também tem

(4)

Códigos retangulares

No ex., 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

(5)

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

(6)

Códigos de Hamming

Supor correção de um único erro

Ignorando a possibilidade de erros múltiplos

Richard Hamming inventou conjunto de códigos

com número mínimo de bits de paridade extra

Cada bit adicionado no codificador permite uma

checagem de paridade no decodificador

Um bit de informação pode ser usado para ajudar a

(7)

Códigos de Hamming

Ex. 3 bits extra

3 testes podem identificar até 8

condições

Uma delas será “não erro”

7 remanescentes para identificar a localização de até 7

locais 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

(8)

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:

• Ex.: 4 bits de dados (mensagens com 4 bits)

– p = 2 2p = 22 = 4 e d + p + 1 = 4 + 2 + 1 = 7

» 4 < 7, relação não é satisfeita

– p = 3 2p = 23 = 8 e d + p + 1 = 4 + 3 + 1 = 8

» 8 ≥ 8, relação é satisfeita

1

2

p

d

+

p

+

Precisa de 3 bits de paridade para proporcionar correção de um único erro em quatro bits de dados

(9)

Códigos de Hamming

Detecção e correção são proporcionados por

todos os bits no grupo

De paridade e de dados

(10)

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 1, 2, 4, 8, ...:  P1, P2, D1, P3, D2, D3, D4

 Pi é um bit de paridade em particular e Di é um bit de dado em particular

(11)

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

(12)

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

(13)

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 P1 tem 1 no dígito mais à direita: esse bit verifica as posições de todos os bits, incluindo ele, que têm

(14)

Códigos de Hamming

Determinação dos valores de bits de paridade

Número da posição em binário do bit de paridade P2 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 P3 tem 1 no dígito mais à esquerda: esse bit verifica as posições de todos os bits, incluindo ele, que

(15)

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

(16)

Códigos de Hamming

Ex. 1: Determine o código de Hamming para

o número BCD 1001, usando paridade par

Passo 1

: determinar número de bits de paridade

necessários

p = 3 são suficientes (visto em slide anterior)

(17)

Códigos de Hamming

Ex. 1: Determine o código de Hamming para

o número BCD 1001, usando paridade par

Passo 2

: construir tabela de posições de bits e

inserir os bits de dados

(18)

Códigos de Hamming

Ex. 1: Determine o código de Hamming para

o número BCD 1001, usando paridade par

Passo 3

: Determinar os bits de paridade

• P1 verifica bits das posições 1, 3, 4 e 7: tem que ser 0 para no de 1s ser par no grupo

• P2 verifica bits das posições 2, 3, 6 e 7: tem que ser 0 para no de 1s ser par no grupo

(19)

Códigos de Hamming

Ex. 1: Determine o código de Hamming para

o número BCD 1001, usando paridade par

(20)

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

 2p = 24 = 16

d + p + 1 = 5 + 4 + 1 = 10  ⇒ 4 bits são suficientes

(21)

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

(22)

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

•P1 verifica bits das posições 1, 3, 5, 7 e 9: tem que ser 1 para no de 1s ser ímpar no grupo

• P2 verifica bits das posições 2, 3, 6 e 7: tem que ser 0 para no de 1s ser ímpar no grupo

• P3 verifica bits das posições 4, 5, 6 e 7: tem que ser 1 para no de 1s ser ímpar no grupo

(23)

Códigos de Hamming

Ex. 2: Determinar código de Hamming para

bits de dados 10110 usando paridade ímpar

(24)

Exercícios

Determinar o código Hamming para o

número BCD 1000 usando paridade par

Determinar o código de Hamming para

(25)

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

(26)

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 P1

 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

(27)

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

(28)

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 P1 verifica as posições 1, 3, 5 e 7 Há dois 1s nesse grupo

(29)

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 P2 verifica as posições 2, 3, 6 e 7 Há dois 1s nesse grupo

(30)

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 P3 verifica as posições 4, 5, 6 e 7 Há um 1 nesse grupo

(31)

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)

(32)

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 P1 verifica as posições 1, 3, 5, 7 e 9 Há dois 1s nesse grupo

(33)

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 P2 verifica as posições 2, 3, 6 e 7 Há dois 1s nesse grupo

(34)

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 P3 verifica as posições 4, 5, 6 e 7 Há dois 1s nesse grupo

(35)

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 P4 verifica as posições 8 e 9 Há um 1 nesse grupo

(36)

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

(37)

Exercícios

O código 101111001 é recebido. Corrija

qualquer erro se a paridade ímpar for usada.

Repetir o processo ilustrado no exemplo 1 se

(38)

Códigos de Hamming

• Alguns códigos de Hamming:

(255, 247, 3)

0,97

247

255

8

(127, 120, 3)

0,94

120

127

7

(63, 57, 3)

0,90

57

63

6

(31, 26, 3)

0,84

26

31

5

(15, 11, 3)

0,73

11

15

4

(7, 4, 3)

0,57

4

7

3

(3, 1, 3)

0,33

1

3

2

Tipo de bloco de

código

Taxa de

código

Carga

Tamanho

de bloco

Bits de

paridade

(39)

Códigos de Hamming

• Alguns códigos de Hamming:

(255, 247, 3)

0,97

247

255

8

(127, 120, 3)

0,94

120

127

7

(63, 57, 3)

0,90

57

63

6

(31, 26, 3)

0,84

26

31

5

(15, 11, 3)

0,73

11

15

4

(7, 4, 3)

0,57

4

7

3

(3, 1, 3)

0,33

1

3

2

Tipo de bloco de

código

Taxa de

código

Carga

Tamanho

de bloco

Bits de

paridade

Redundância tripla

(40)

Códigos de Hamming

• Alguns códigos de Hamming:

(255, 247, 3)

0,97

247

255

8

(127, 120, 3)

0,94

120

127

7

(63, 57, 3)

0,90

57

63

6

(31, 26, 3)

0,84

26

31

5

(15, 11, 3)

0,73

11

15

4

(7, 4, 3)

0,57

4

7

3

(3, 1, 3)

0,33

1

3

2

Tipo de bloco de

código

Taxa de

código

Carga

Tamanho

de bloco

Bits de

paridade

Código de Hamming mais simples com eficiência razoável

(41)

Códigos de bloco

É conveniente prover proteção de correção de erros

para uma certa quantidade de dados e enviar o

resultado como um bloco de tamanho n

Se número de bits de dados no bloco é k, então o número

de bits de paridade é n – k

Costuma-se chamar tal código como código de bloco (n,k)

 Ex. código de Hamming dos slides anteriores é (7,4)

 É também comum incluir a distância de Hamming mínima

entre dois códigos válidos quaisquer (dados originais), na forma (n,k,d)

(42)

Códigos de Hamming

Todos permitem:

Correção de erros isolados ou

Detecção de erros duplos

(43)

Códigos avançados

Códigos de bloco com distância de Hamming

mínima maior que 3 são possíveis

Podem lidar com mais de um erro

Alguns são conhecidos como códigos BCH

 Bose-Chaudhuri-Hocquenhem

Códigos Reed-Solomon

 Lidam com bytes de dados ao invés de bits

 Ex. (256, 224, 5) e (224, 192, 5) são usados em tocadores de CD

e podem proteger contra longas sequências de erros

Difícil produzir códigos que sejam eficientes, protejam

contra grandes números de erros, sejam fáceis de

programar e executem rapidamente

(44)

Códigos avançados

 Nas missões espaciais e comunicações com satélites

 Código binário de detecção e correção de erros de Golay e

Reed-Solomom

 Na TV digital

 Códigos de Reed-Solomom e Viterbi

 Nas redes locais (LANS) utilizam-se

 Códigos de redundância cíclica (CRC-25)

 Em armazenamento de dados

 Códigos Reed-Solomom para resolver os problemas de

(45)

Dígitos de checagem

Detecção de erros é rotineiramente usada

para reduzir erros humanos

Lidar com longos números ou sequências de

caracteres, que devem ser digitadas

Ex. números de cartão de crédito, de RG, de registros

de software

Sujeito a erros

Dígitos ou caracteres adicionais podem ser incluídos

para detectar erros

 Como bits de paridade em cadeias de bits

(46)

Cartões de crédito

Têm dígito de checagem extra

Calculado como especificado em 1954 por H. P. Luhn

(IBM)

 Protege contra tipo comum de erro: transposição de bits

adjacentes

 Algoritmo funciona para qualquer número de dígitos

Números de cartão têm tipicamente 15 ou 16 dígitos

 6 primeiros dígitos: organização que emitiu o cartão

 O primeiro denota o setor econômico associado ao cartão

Ex. 1 e 2 para companias aéreas, 3 para viagem e lazer, 4, 5,

e 6 para bancos e lojas

 O último dígito é o dígito de checagem

(47)

Cartões de crédito

Cada emissor de cartão tem seu prefixo

American Express: começa com 34 ou 38

Visa: começa com 4

Mastercard: começa com 51, 52, 53, 54 ou 55

Procedimento de Luhn:

Testa se o número do cartão, incluindo dígito de

checagem, é válido

(48)

Cartões de crédito

Procedimento de Luhn:

 Primeiro, seleciona dígitos do cartão que aparecem em posições

alternadas, começando pelo dígito próximo ao último  Ex. cartão de número 1234 4567 7891

 Esses dígitos são 9, 7, 6, 4, 3 e 1

 Verifica quantos desses dígitos são maiores que 4

 Ex. há 3 deles (9, 7 e 6)

 Adiciona os dígitos alternados:

 Ex. 9 + 7 + 6 + 4 + 3 + 1 = 30

 Adiciona todos dígitos do número do cartão

 Ex. 57

 Soma 3 números anteriores

 Ex. 3 + 30 + 57 = 90

 Se resultado é múltiplo de 10, número passa no teste e pode ser

(49)

Cartões de crédito

Procedimento de Luhn detecta todos erros de um

dígito e quase todas transposições de dígitos

adjacentes

Ex. digitando 1243 ao invés de 1234

Mas muitos outros erros de transcrição não são

detectados

Ex. digitando 3412 ao invés de 1234

Tem alta taxa de código

1 dígito de checagem para 14 ou 15 dígitos de carga

(50)

Exercícios

Considerando que o número do cartão é

1234 4567 7891

Usar procedimento de Luhn para os casos:

1243 4567 7891

3412 4567 7891

(51)

Detecção/correção de erros

 Como vimos, a detecção e a correção de erros implica em um

aumento de numero de bits a serem transmitidos

 Implica em um aumento de processamento na comunicação

 Em algumas situações, não é viável a verificação de erros em

todas as transmissões

 Ex.: as mensagens transmitidas na Internet pelo protocolo IP têm

no cabeçalho da sua mensagem um campo para verificação de erro, o campo checksum

 As estações e os roteadores da rede só verificam erro nos

cabeçalhos dessas mensagens e deixam para as aplicações verificarem os erros,quando isso for necessário

 Ex: transmissão de um programa (FTP)

(52)

Referências

Material de:

Prof Dr Francisco Javier Ropero

Profa Dra Itana Stiubiener

Prof Dr Raphael Camargo

Prof Dr Luiz Mirisola

Prof Dr Rogério Neves

Wikipedia

Aula MIT (capítulo 4, no site do curso)

Livro Sistemas Digitais, Floyd

Referências

Documentos relacionados

§ 2º Os cursos técnicos de nível médio autorizados pela Secretaria de Estado de Educação do Distrito Federal, após deliberação do Conselho de Educação do Distrito Federal,

Os processos que contribuem mais directamente para a erosão na área de estudo são a precipitação e o gelo, enquanto que, indirectamente, são o relevo e os incêndios florestais e,

publicado no DOE de 11/05/2011, torna público, para conhecimento dos interessados que fará realizar licitação, na modalidade CONVITE, tipo MENOR PREÇO GLOBAL,

SISTEMA DE VIGILÂNCIA EM SERVIÇO – VIGISERV Esse sistema de informação encontra-se implantado, desde 2002, nas 15 unidades de assistência às pessoas vivendo com o HIV da

Para obter a melhor qualidade de imagem e som, conecte o dispositivo externo usando um cabo HDMI... No entanto, se o dispositivo não suportar, o mesmo pode não

V- praticar ato de abuso, maus-tratos, ferir ou mutilar animais silvestres, domésticos ou domesticados, nativos ou exóticos.. Considerando-se o direito constitucional ao meio

Nos municípios SEM a presença de Backhaul de Fibra, mais de 50% dos acessos são de PROVEDORES REGIONAIS.. Nos municípios COM fibra, esse percentual é bem

Assim, Continentes: Revista de Geografia do Departamento de Geociências da UFRRJ – Universidade Federal Rural do Rio de Janeiro reafirma seu papel de oferecer