You are on page 1of 12

Cdigos Convolucionais

Mauro Tapajs Santos (1/1996)


Introduo
Existem duas classificaes bsicas para codigos corretores de erro: cdigos de bloco e cdigos de "rvore". Um cdigos de bloco o mapeamento de k smbolos de entrada em n smbolos de sada. O nmero n pode ser maior ou igual a k, se for maior, os smbolos a mais so redundantes com finalidades de prover deteo e/ou correo de erros. Este codificador no possue memria, pois a cada grupo de k smbolos gerado um grupo de n smbolos definido. Cdigos de rvore so caracterizados por serem gerados num codificador que possua memria. Os cdigos convolucionais so um subconjunto dos cdigos de rvore. O codificador convolucional aceita k smbolos na entrada e produz n smbolos na sada que so gerados em funo de v + k smbolos de entrada. O sistema possui memria em funo de v ser maior que zero. O valor R = k / n definido como a taxa de cdigo.

Esquema do codificador convolucional

Um exemplo dado a seguir.

Exemplo: Codificador Convolucional com k = 1, n = 2 e memria de 3 smbolos (m = 3)

o cdigo gerado inserindo-se um bit de dado no circuito e o comutador da sada efetua uma rotao completa. Este cdigo apresenta taxa de R = k/n =. A decodificao feita continuamente. Uma outra maneira de se entender a decodificao o percurso atravs de uma rvore de cdigo. Cada ramo percorrido associado a um bit ou grupo de bits. No final, os bits decodificados estaro nas "folhas" da rvore. A matriz "check" de paridade H de um cdigo convolucional (mn0,mk0) com distncia mnima d pode ser associado com a matriz H de um cdigo de blocos linear de mesmo comprimento e com o mesmo nmero de smbolos.

Cronologia
1955 - Elias ("Coding for noisy channels"): primeira idia sobre cdigos convolucionais. 1959 - Hagelbarger: primeira idia sobre cdigos convolucionais corretores de erros em salva. 1961/63 - Wozencraft, Reiffen e Fano: desenvolveram e aprimoraram o primeiro algoritmo decodificador para cdigos convolucionais.

1963 - Wyner e Ash: definiram cdigos com capacidade de correo de erros em salva B2 e seus limites. 1965 - Pinsker ("On the complexity of decoding"): refutou a hiptese de que, para cdigos com taxa maior que Rcomp (terica taxa limite para se limitar a mdia de computaes), no se poderia desenvolver algoritmos que funcionassem adequadamente no intervalo entre Rcomp e a capacidade do canal. 1967 - Viterbi ("Error bounds for convolutional codes and an asymptotically optimum decoding algorithm"): desenvolveu um algoritmo efetivo na decodificao de cdigos convolucionais com pequeno K (constraint length). Este algoritmo ficou conhecido como "algoritmo de Viterbi".

Cdigos Convolucionais para Correo de Erros em Salva


Definies Capacidade de correo de salvas tipo-B2 : um cdigo convolucional (mn0,mk0) dito ter capacidade de correo de salvas tipo-B2 (B2 = rn0) se todas as salvas de comprimento B2 confinadas em r blocos consecutivos so corrigveis e pelo menos uma salva de comprimento (r+1)n0 no corrigvel. A Capacidade de Correo de Salvas (b) destes tipos de cdigos respeita a relao b2 ( n0 1) b b2 ( n0 1) , o que pode ser checado a partir da definio acima. Este valor est limitado a ( m 1)( n 0 k 0 ) n0 1 k0 (1 ) n0

Quanto maior este nmero, maior ser a capacidade de correo de erros em salvas (salvas de maior comprimento). Espao de guarda do cdigo (g) : uma salva de comprimento l < b corrigvel desde que seja sucedida por um conjunto mnimo de smbolos. O maior nmero necessrio 3

para corrigir qualquer salva corrigvel chamado de Espao de guarda do Cdigo. Este valor funo de como o cdigo decodificado e prefervel minimizado ao mximo, pois erros durante este perodo podem causar decodificao errada. Para qualquer cdigo (n,k), este nmero est limitado a g n 1 , para muitos cdigos g = n - b. Interleaving : os cdigos normalmente so desenvolvidos para a correo de erros isolados dentro de um certo bloco de smbolos. Alguns canais podem apresentar rudos que se traduzem em grandes sequncias de erros seguidos (salvas), gerando sequncias de erros tambm na sada do decodificador. Uma forma de minimizar esta situao a tcnica de Interleaving, onde os smbolos de um determinado bloco so "embaralhados" dentro do fluxo de smbolos, de maneira que, no decodificador, estes possam ser reagrupados. Desta maneira, os erros em salva produzidos pelo rudo do canal se transformaro em vrios erros isolados dentro de blocos de smbolos independentes, e podero ser corrigidos. Grau de Interleaving (i) : a quantidade de "subfluxos" no qual o fluxo de dados real efetivamente dividido. Existem dois tipos de Interleaving: de smbolos e de blocos. No primeiro o 0 smbolo, o (i+1)-simo, o (2i+1)-simo, etc.. so codificados independentemente dos outros smbolos. No caso por blocos, blocos de n0 smbolos separados por i blocos formam um fluxo independente de dados. Note que se b < n0 ser impossvel efetuar interleave de blocos, visto que, o cdigo no ter capacidade de corrigir salvas maiores que o tamanho do bloco. Proceder "Interleaving" sobre um cdigo convolucional (mn0,mk0) com capacidade de correo de erros em salva b gerar um cdigo (mn0(i-1)+n0 , mk0(i-1)+k0) com bi = bi. A taxa de cdigo antes e depois exatamente a mesma. Cdigos Berlekamp-Preparata-Massey Estes cdigos apresentam 1 bit de paridade por bloco. Os cdigos bsicos possuem capacidade de correo de salvas tipo-B2 com b2 = n0 para qualquer valor escolhido de n0. Cdigos com capacidades maiores podem ser construdos por meio de "Interleaving". 4

2 2 Os cdigos bsicos tem relao ( 2 n0 ,2 n0 2n0 ) e matriz "check" de paridade na

forma: H [ B0 B1 B2 ... B2 N 0 1 ] onde Bi relacionada com Bi-1 da seguinte forma:


0 0 0 ... 0 1 0 0 ... 0 Bi 0 1 0 ... 0 0 0 1 ... 0 0 0 0 0 1 0 Bi1

Para este cdigo ter b2 = n0, nenhuma palavra diferente de zero pode ter todos os seus 1's confinados ao bloco 0 e outro bloco qualquer. Uma palavra deste tipo pode ser representada por: E = E0 0 0 0 ... Ei 0 0 ... 0 onde E0 diferente de zero. Se B0 pode ser escolhido de maneira que EHt seja no-zero para todos os valores de E0 0, Ei e i, ento o cdigo ter b2 = n0. Para que isto ocorra, devemos ter: E0 Ei [B0 Bi]t 0 ; 1 i 2n0 1 Para n0 i 2n0 1 , o quadrante superior direito de [B0 Bi] a matriz de zeros de ordem n0. Assim, escolhemos a metade superior de B0 no-singular para a equao acima valer. Para simplificao da decodificao escolhemos esta como a matriz identidade, chamada de In0. Para 1 i n0 1 , as matrizes [B0 Bi] devem ser simultaneamente no-singulares para a equao acima valer. Procedimentos matriciais elementares reduzem esta matriz a:
I n0 0 Xi Yi

Nesta forma, [B0 Bi] s ser no-singular se, e somente se, Yi for no-singular. J existem matrizes Yi calculadas para vrios valores de n0. Note que, cdigos deste tipo necessitam que o bit de paridade seja transmitido antes dos bits de informao do bloco. Os cdigos com k0 = n0 - 1 construdos segundo acima chegam ao limite de b2. Cdigos com k0 < n0 - 1 podem ser construdos da mesma forma ou segundo um artifcio: fazendo "interleave" de bloco de dois cdigos com capacidades b1 e b2 ,de forma a termos um terceiro cdigo com n03 = n01 + n02, k03 = k01 + k02 e m3 = max(m1,m2). Este artifcio constri cdigos onde nem k0, nem n0 - k0 sejam 1. A decodificao de cdigos BPM funciona da seguinte maneira: assuma uma salva no 0-simo bloco, os primeiros n0 bits da sndrome sero iguais ao padro de erro adicionado ao bloco, por que a metade superior da matriz a matriz identidade de ordem n0. A segunda parte da sndrome dever ser: s2 = E0 [ B02 ]t onde s2 a segunda metade da sndrome, E0 a salva e B02 a metade inferior de B0. J que s1 idntica a E0, se for verdade: s2 + s1 [ B02 ]t = 0 ento a salva ocorreu no 0-simo bloco. Procedendo "Interleave" sobre um cdigo BPM bsico, chega-se aos seguintes parmetros: m = (2n0 - 1)i + 1 n = mn0 = (2n0 - 1)n0i + n0 k = mk0 b2 = in0 b = b2 - (n0 - 1) = n0(i - 1) + 1

g = n - 1 ou n - b2 Para grandes valores de m, a capacidade de correo de salvas destes cdigos aproximam do limite. A decodificao bsicas para cdigos BPM "Interleave" decodificar independentemente os i fluxos de bits. O tempo de guarda de n - 1 bits

Cdigos Iwadare Cdigos deste tipo so definidos com k0 = n0 - 1. Comparados aos cdigos BPM so mais simples de serem implementados ao preo de um espao de guarda maior. O cdigo Iwadare bsico apresenta: n0 ( n0 1) ( 2 n0 1) 2 k0 n0 1 b n0 g n 1 m para qualquer escolha de n0 2. Estes cdigos bsicos corrigem todas as salvas de comprimento n0. A matriz "check" de paridade especificada pela matriz B0:

0 0 . 0 0 0 0 B0 0 0 0

... 0 0 0 1 ... 0 0 0 0 . . 0 ... 0 0 0 0 ... 0 0 1 0 ... 0 0 1 0 ... 0 1 0 0 ... 0 0 0 0 ... 0 1 0 0 1 ... 0 0 0 0

1 0 ... 0 0 0 0 0 0 ... 0 0 0 0 1 0 ... 0 0 0 0

a j-sima coluna de B0 ( 1 j n0 1 ), tem 1's somente nas posies:

n0

( n 0 j )( n0 j 1) ( n j )( n0 j 1) e n0 0 n0 j 2 2

A decodificao feita de maneira diferenciada onde cada smbolo decodificado em tempos diferentes. A decodificao do (n0 - 1)-simo smbolo feita depois de serem recebidos n0 + 2 blocos; a decodificao do (n0 - 2)-simo smbolo feita depois de serem recebidos n0 + 2 + 3 blocos; e o primeiro smbolo depois de n0 + 2 + 3 + ... + n0 blocos. Assim, a decodificao efetuada em n0 - 1 passos. Exemplo: n0 = 3, a matriz H para um cdigo Idaware (24,16) com capacidade de correo de erros em salva b = 3 ser

001 000 001 000 H 000 000 100 000 100 100 010 100 010 010 001 001 001 001 001 001

onde os vazios so preenchidos com zeros. O circuito decodificador para este cdigo mostrado a seguir:

Circuito decodificador para o cdigo Iwadare (24,16)

"Interleave" sobre um cdigo Iwadare com grau i resulta na insero de i - 1 linhas nulas na matriz B0 imediatamente aps sua segunda linha e suas linhas originais no-nulas com exceo da ltima. O cdigo resultante do processo de "interleave" ter:

m ( 2n0 1)i k0 n0 1 b in 0 g n 1

n 0 ( n0 1) 2

O espao de guarda ser o mesmo que o caso sem "interleave": n - 1.

Cdigos de Baixa Taxa Os melhores cdigos corretores de salvas com taxas baixas possuem os seguintes parmetros: m3 n n0 m 3n0 n 1 n 1 b[ ] n0 [ 0 ] 2 2 k0 1 g n 1

A matriz B0 para estes cdigos tem a forma: a I n 0 1 B0 b On0 1 c On0 1 onde a a coluna nula de tamanho n0 - 1, b a coluna de tamanho n0 - 1 formada por zeros e um nico 1 na posio n0 / 2 e c formada de zeros exceto na posio n0 - 1. A decodificao direta: se ocorrer uma salva de comprimento b ou menor, os dois "check" do bit de informao do primeiro bloco estaro errados. Caso contrrio, um dos, ou ambos estaro corretos. Se o bit de informao do segundo bloco estiver em erro,

10

ele ser corrigido da mesma maneira depois que o primeiro bloco for deslocado para fora do decodificador. Se procedermos "Interleaving" nos cdigos mostrados teremos: m 2i 1 n n0 m n 1 n 1 b[ ] in0 [ 0 ] 2 2 k0 1 g n 1 para qualquer escolha de n0 e i.

Cdigos Para Correo de Erros em Salvas e Erros Aleatrios Estes cdigos visam a correo de erros no restritos a uma salva somente. As tcnicas utilizadas podem ser divididas em: 1. 2. 3. Proceder "interleaving" sobre um cdigo corretor de erros de pequeno comprimento. Construir um cdigo com certa capacidade de correo de erros em salva e de erros randmicos. decodificao "adaptativa", onde o decodificador tenta determinar o tipo de erro que ocorreu e tenta corrigi-lo. "Interleave" de blocos com grau i sobre um cdigo convolucional com capacidade t de correo de erros randmicos produz um cdigo convolucional mais longo com capacidade de corrigir salvas de comprimento at [t/n0]i alm dos erros randmicos. Um exemplo de cdigo "misto" que combina ambas as capacidades so os cdigos auto-ortogonais difusos. Estes esto no meio termo entre os extremos dos cdigos autoortogonais que possuem capacidade de correo de erros randmicos t, porm com capacidade de correo de salvas pouco maior que t; e os cdigos Idaware que apresentam grande capacidade de correo de salvas porm com t = 1. 11

Forney e outros apresentaram um procedimento "adaptativo" para correo de erros mistos baseado num cdigo com capacidade de correo de erros randmicos t. O decodificador ter um circuito que detectar a ocorrncia de uma salva de erros passando para um modo "salva". Aps este circuito ter notado o fim da salva de erros, ele chaveia o decodificador para voltar ao seu "modo natural randmico". Para este esquema, a razo da maior capacidade de correo de erros em salva com o espao de guarda :

b 2N g 2N m
Note que, nem todas as salvas de comprimento menor ou igual a 2N so corrigidas.

12