You are on page 1of 6

CÓDIGOS CORRETORES DE ERRO

Como vimos antes, uma forma de reduzir a probabilidade de erro (BER) em um canal de
comunicação, sem necessidade de reduzir a taxa de bits, R b, consiste em introduzir bits
redundantes de uma forma apropriada (controlada), desde que R b < C, onde C é a capacidade do
canal dada por Shannon:
S

C  BT log 2  1  
N

onde BT é a largura de banda ( faixa ) de transmissão e S/N é a relação sinal-ruído na entrada do
receptor.
Os códigos corretores de erro compreendem duas famílias:

Códigos de bloco
Códigos convolucionais

Em códigos de bloco, um bloco de dados de comprimento k é codificado por uma palavra de código
(codeword) de comprimento n dígitos (n > k). Para cada seqüência de n bits de dados há uma
palavra de código distinta com n dígitos. Será tratado aqui somente seqüências de dígitos binários.
Em códigos convolucionais, a seqüências codificada de n dígitos depende não somente dos k bits de
dados, mas também, de N – 1 dígitos anteriores (N > 1). Em códigos de bloco, cada k bits são
acumulados e então, codificados com uma palavra de código de n bits. Em códigos convolucionais a
codificação é feita continuamente (running) em vez de acumular k bits de dados.
Se k bits de dados são codificados com palavra de código de comprimento n, o número de dígitos de
verificação de erro (check) é igual a m, onde
m nk

A eficiência do código, também conhecida como taxa de código (code rate) é
k /n

Assim, se a taxa de bits da fonte é igual a Bfonte então a taxa de bits do canal, Bcanal, é
 n
 B fonte
 k

Bcanal  

Tal código é conhecido como código (n,k).

bps

Uma forma de representar os blocos de dados d 1 , d 2 ,  , d k e as palavras de código ,
c1 , c 2 ,  , c n é a forma matricial, ou seja,
d  (d1 , d 2 ,    , d k )
c  (c1 , c 2 ,    , c k ,  , c n )

O número t de dígitos que podem ser corrigidos é relacionado à distância de Hamming mínima,

1

d Hmin através da relação d Hmin  2t  1 onde a distância de Hamming.0.0) e b  (0. capaz de corrigir t bits tem que satisfazer a condição m nk n n n! 22    onde    jj0   j j!(nj)! t Esta condição é conhecida como limite de Hamming ( Hamming bound ).1.1) então d H  2 . O número de bits de paridade (check). entre duas palavras de código é  1 para a  b dH  a . d H .0. Nesta tabela usa-se a notação alternativa ( n. diz-se que o código é um código perfeito. bi ) onde (a. se a  (0. a distância de Hamming entre duas palavras de código é igual ao número de dígitos binários distintos entre as duas palavras.0. b    (ai . b)   i1  0 para a  b n Portanto. Ela é necessária e suficiente para t =1. A Tabela 1 mostra alguns exemplos de códigos corretores de erro e suas eficiências . m. Por exemplo. d Hmin ) para identificar o código. k . 2 . Quando a igualdade é satisfeita. Tabela 1 – Alguns exemplos de códigos corretores de erro.

52 Códigos de Hamming Um código perfeito.3) (31. com capacidade de correção de um único erro ( t = 1 ) é chamado de Código de Hamming.33 0.3) (7.8.4 0. k . e a distância de Hamming mínima é dada por d Hmin  t  1 CÓDIGOS DE BLOCOS LINEARES 3 .5.7) (15.3) (4.4. binário.73 0.838 2 10 15 4 8 (10. d Hmin ) 1 3 4 5 6 7 15 31 1 1 2 3 4 11 26 (3.26.12.57 0.5) 0.11. Neste caso d Hmin  3 e  n m 2   1n  n  12 j o  j  m 1 Uma forma alternativa de corrigir erro consiste na detecção do erro e pedido de retransmissão da palavra de código (codeword) errada (técnica ARQ).4 0.5) (15.3) Taxa de Cód igo 0.2.4.5 0.33 0.2 0.3) (5.7) (23.3) (15. Neste caso (apenas detecção de erro) a relação entre o número de dígitos binários errados que podem ser detectados.533 3 10 15 23 2 5 12 (10.25 0.7) 0.3) (6.1.2.3.1. t.t n k (n.

como segue: c1  d1 c2  d 2 M ck  d k ck 1  p11d1  p12 d 2  L  p1k d k ck  2  p21d1  p22 d 2  L  p2 k d k M cn  pm1d1  pm 2 d 2  L  pmk d k c d G ou onde 1 0 0 1  0  0 p11 p 21  0   0 p12 p 22    1  G  0 0    0  Ik p1k (k  k ) p2k  P  p m1  p m 2     Ik .Exemplo 1 4 . Tabela 2 .Em códigos lineares os m = n – k bits de paridade são obtidos através de uma combinação linear dos k bits de dados contidos na palavra de código (codeword) de comprimento n. seja a matriz G :  1 G   0  0 0 1 0 0 1 0 0 1 0 1 1 1 1 1   c p   d 1 0  1 d 3   0  1 d2 0 1 1 1 1 0 Substituindo todas as palavras de dados (datacode) na equação acima. resulta a tabela a seguir. d P  d . P  p mk    ( k  m)  A matriz G é a geradora ( generator matrix ) do código.3 ). Códigos de Blocos Lineares Sistemáticos Neste caso particular de blocos lineares os ck primeiros bits da palavra de código (codeword) coincidem com os bits de dados. cp  onde cp  d P Exemplo 1 – Para um código ( 6. Uma forma alternativa da equação de geração é:    c  d G  d .

A matriz H é chamada de matriz de cheque de paridade T (parity-check matrix) e tem a forma: H  P I m   SÍNDROME Seja r a palavra de código recebida. Caso contrário: s  r HT e HT 5 . Lembrando que a soma de módulo-2 de qualquer seqüência com ela mesma é nula. Se não houve erro de transmissão. Em geral tem-se: r  c e onde e representa o vetor erro.palavra de dad o 111 110 101 100 011 010 001 000 palavra de códi go 111000 110110 101011 100101 011101 010011 001110 000000 Decodificação com Correção de Erro no Receptor. tem-se: P P T cp dP  d cP p 0  cd p   0  c  0 cH 0 I m  Im  onde I m é uma matriz m  m . então e  0 e r H T  0 .

As posições dos bits 1 no vetor erro indicam as posições dos bits errados na palavra de código. Assim. aquele que tem o número mínimo de bits 1. Nesse exemplo é possível corrigir mais de um erro por que temos folga no limite de Hamming . A decisão a ser tomada é c j  r j  e j Tabela 3 . Prepara-se então uma tabela contendo e versus s com peso mínimo. isto é. para decodificação sistemática.4) é possível corrigir apenas um erro. Para o caso do código do Exemplo 1 tem-se os dados da Tabela 3. A solução aqui é escolher o vetor erro com menor peso. Um mesmo vetor síndrome pode levar a mais de uma solução do vetor erro.Tabela de Decodificação e s 000000 000 100000 101 010000 011 001000 110 000100 100 000010 010 000001 001 100010 111 6 . Para o caso do código de Hamming (7. prepara-se uma tabela e versus s para erro com menor peso usando-se s  e H T Ao receber a palavra de código r j calcula s j através de s  r H T . Agora usa-se a tabela para obter e j .onde o vetor s é denominado de síndrome.