14
CÓDIGOS DE HAMMING UFSM-CTISM Comunicação de Dados Aula-17 CÓDIGOS DE HAMMING Professor: Andrei Piccinini Legg Santa Maria, 2012

Códigos de hamming

Embed Size (px)

Citation preview

Page 1: Códigos de hamming

CÓDIGOS DEHAMMING

UFSM-CTISM

Comunicação de DadosAula-17

CÓDIGOS DE HAMMING

Professor:Andrei Piccinini Legg

Santa Maria, 2012

Page 2: Códigos de hamming

CÓDIGOS DEHAMMING

CÓDIGOS DE HAMMING

Definição:

Um código de Hamming adiciona um bloco de paridade aum bloco de dados, de forma a que, caso ocorram erros detransmissão, seja possível detectar ou corrigir erros dobloco transmitido.

c – no bits transmitidos

d – no bits de dados

p – no bits de paridade

palavra código

dados paridade

A implementação do codificador e do decodificador é muitosimples, como se vai ver em seguida.

Page 3: Códigos de hamming

CÓDIGOS DEHAMMING

Ideia

De todas as possíveis palavras de código, considerar comoválidas apenas algumas.Exemplo: 000,111

PSfr

000 010

110100

001011

111101

A distância mínima entre as palavras de código é de 3 bits(distância de Hamming).Se um bit for corrompido, o receptor detecta uma palavra decódigo inválida e pode recuperar o original escolhendo apalavra de código válida mais próxima.

Page 4: Códigos de hamming

CÓDIGOS DEHAMMING

Algebra Linear e Aritmética Modulo 2

Aritmética modulo 2:

Adição = XOR Produto = AND

Algebra linear:

Seja A uma matriz n × m e x um vector de dimensão m.null(A), o espaço nulo de A, é o espaço gerado pelosvectores x que verificam Ax = 0.rank(A) é o no de linhas/colunas linearmenteindependentes. Temos que rank(null(A)) + rank(A) = m.

Exemplo:

H =

[

0 1 11 0 1

]

rank(H) = 2;null(H) = 000,111, rank(null(H)) = 1;rank(H) + rank(null(H)) = 2 + 1 = 3.

Page 5: Códigos de hamming

CÓDIGOS DEHAMMING

Código de Hamming

Um código de Hamming (c,d ) é formado da seguintemaneira:Constroi-se uma matriz H cujas colunas são formadas portodos os vetores não nulos de dimensão p = c − d .O código de Hamming consiste no espaço nulo da matrizH, i.e., as palavras de código verificam Hc = 0.

Exemplo:

Código (3,1) -> 1 bit dados + 2 bits redundância

H =

[

0 1 11 0 1

]

O espaço nulo de H é composto pelos vetores [000] e [111](Verifique!)

Page 6: Códigos de hamming

CÓDIGOS DEHAMMING

Detecção de erros

Como as palavras de código pertencem ao espaço nulo deH, é muito simples verificar se houve erro de transmissão:Basta verificar se a palavra recebida r pertence ao espaçonulo!Se Hr = 0, então r pertence ao espaço nulo → OK!Se Hr 6= 0, então r não pertence a null(H) → ERRO!Exemplo:Se c = 000 e r = 000, Hr = [00]′ → sem errosSe c = 000 e r = 001, Hr = [11]′ → erros detectadosSe c = 000 e r = 101, Hr = [10]′ → erros detectadosSe c = 000 e r = 111, Hr = [00]′ → sem errosNote que se existirem 3 erros é recebida uma palavra válidae não são detectados erros (não há milagres!)

Page 7: Códigos de hamming

CÓDIGOS DEHAMMING

Correção de erros

Detecta-se um erro quando Hr 6= 0. Como se pode saberqual o erro que ocorreu?Suponhamos que ocorreu um erro na posição i.Usando um vector ei = [0 . . . 010 . . .0] para representar aposição onde ocorre o erro, temos que r = c + ei . Então,Hr = H(c + ei) = Hc + Hei = Hei .Mas Hei corresponde à i-ésima coluna de H.Portanto, calculando Hr e procurando em H, obtemos aposição i onde ocorreu o erro. Para o corrigir, bastainvertê-lo.

Page 8: Códigos de hamming

CÓDIGOS DEHAMMING

Como escolher o número de bits de paridade?

O número de colunas de H é igual a 2p − 1, que deve sercompatível com a dimensão do vector r . Entãod + p = 2p − 1

Regra de Hamming

d + p + 1 ≤ 2p

Se a igualdade se verificar, diz-se que é um códigoperfeito .Os códigos de Hamming designam-se pelo par (c,d)

Exemplos:

p d c código3 4 7 (7,4)4 11 15 (15,11)5 26 31 (31,26)

Page 9: Códigos de hamming

CÓDIGOS DEHAMMING

Exemplo: Código de Hamming (7,4)

Palavras de código:0000 000 0100 101 1000 011 1100 1100001 111 0101 010 1001 100 1101 0010010 110 0110 011 1010 101 1110 0000011 001 0111 100 1011 010 1111 111

Codificação:

Pesquisar na tabela a palavra de código cujos 4 primeirosbits são os dos dados que se pretendem codificar.Adicionar a paridade correspondente.

Fonte Cod. Canal Decod.1011 1011010 1010010 1011

Hr = [100]′

Page 10: Códigos de hamming

CÓDIGOS DEHAMMING

Exemplo: Código de Hamming (7,4)

Palavras de código:0000 000 0100 101 1000 011 1100 1100001 111 0101 010 1001 100 1101 0010010 110 0110 011 1010 101 1110 0000011 001 0111 100 1011 010 1111 111

Codificação:

Pesquisar na tabela a palavra de código cujos 4 primeirosbits são os dos dados que se pretendem codificar.Adicionar a paridade correspondente.

H =

0 0 0 1 1 1 10 1 1 0 0 1 11 0 1 0 1 0 1

Page 11: Códigos de hamming

CÓDIGOS DEHAMMING

Desempenho dos códigos de Hamming

O Taxa de transmissão é: R =dc=

2p − p − 12p − 1

Aumentando o tamanho das palavras de código, é possívelfazer R → 1.No entanto, a probabilidade de erro na decodificaçãotambém converge para 1:A probabilidade de a decodificação ser correta corresponde ahaver até um erro numa palavra de comprimento c. Num canalbinário simétrico com probabilidade de erro pe a probabilidade dedecodificação correta de um código (c, d), é dada por:

(1 − pe)c + cpe(1 − pe)

c−1

cujo limite é zero quando c → ∞.

Page 12: Códigos de hamming

CÓDIGOS DEHAMMING

Desempenho dos códigos de Hamming

Distância minima de uma código de Hamming

pode ser determinado através da matriz H ou com umaanalise das palavras código.

Calculando a distância minima através da matriz H:A distancia mínima do código será determinada pelo numeromínimo de colunas da matriz H que devem ser somadas para seobter o vetor nulo.Exemplo:

H =

0 0 0 1 1 1 10 1 1 0 0 1 11 0 1 0 1 0 1

A distancia mínima para o código cuja matriz H foi dada acima é3, porque são necessaria a soma de no mínimo 3 colunas paraobtermos o vetor nulo.

Page 13: Códigos de hamming

CÓDIGOS DEHAMMING

Desempenho dos códigos de Hamming

Distância minima de uma código de Hamming

pode ser determinado através da matriz H ou com umaanalise das palavras código.

Calculando a distância minima através das palavras código:

A distancia mínima do código será determinada pela menosdistancia entre duas palavras código lembrando que o vetor nulosempre corresponde a uma palavra código.

Exemplo:

0000000 0100101 1000011 11001100001111 0101010 1001100 11010010010110 0110011 1010101 11100000011001 0111100 1011010 1111111

Se calcularmos as distâncias entre todas as palavras código omenor valor obtido corresponde a distância minima para ocódigo. Nesse exemplo igual a 3.

Page 14: Códigos de hamming

CÓDIGOS DEHAMMING

Desempenho dos códigos de Hamming

capacidade de detecção

o número de erros que podem ser detectados utilizando umcódigo de Hamming dependerá da distancia minima (dMIN)do código utilizado. e o número máximo de errosdetectados será dado por:

dMIN = ed + 1 ⇒ ed = dMIN − 1

capacidade de correção

o número de erros que podem ser corrigidos utilizando umcódigo de Hamming também dependerá da distanciaminima (dMIN) do código utilizado. e o número máximo deerros corrigidos será dado por:

dMIN = 2ec + 1 ⇒ ec =dMIN − 1

2