Você está na página 1de 8

Códigos Convolucionais

Thiago Duarte de paula


Sistemas de Comunicações Digitais
1
Engenharia de Telecomunicações – Universidade Federal do Ceará (UFC)

thiagoduartedepaula@gmail.com

Resumo. Este trabalho introduz um entendimento sobre a história dos códigos


convolucionais. Apresenta as principais aplicações dos códigos convolucionais
na época de criação e nos dias atuais. Define o que são os códigos convolucio-
nais e como se dá sua forma de codificação. E por final é mostrado suas outras
formas representativas como: máquina de estados, diagrama em árvore e de
treliça.

Introdução
A teoria teve inicio em 1940 quando os computadores eram máquinas muito caras e ape-
nas instituições de grande porte como o governo ou as universidades tinham condições de
manté-los. O Laboratório Bell de Tecnologia possuía tal tecnologia e Richard W. Ham-
ming trabalhava com estas máquinas em 1947, porém, para ele o acesso estava restrito
apenas aos fins de semana. Na época, os programas eram gravados em cartões perfurados
cuja leitura pelo computador permitia detectar erros de digitação. Caso um erro fosse
detectado, a leitura era interrompida e o computador passava automaticamente a ler o
programa seguinte.
Hamming desenvolveu um código capaz de detectar até dois erros e corrigir um
erro, se ele for o único.
Durante os três anos desde a elaboração destes códigos até a publicação de seu tra-
balho, Hamming publicou diversos memorandos internos do Laboratório Bell conforme
sua pesquisa evoluía. Nestes artigos se questionava sobre a possibilidade de criar códigos
mais eficientes que aquele proposto inicialmente. A questão foi respondida indiretamente
em outubro de 1948, por C. E. Shannon num artigo intitulado "A Mathematical Theory of
Communication", publicado no "The Bell System Technical Journal". O artigo de Shan-
non deu inicio a dois novos campos de pesquisa em matemática: a teoria de códigos (em
conjunto com o trabalho de Hamming) e a Teoria da Informação.
Nos anos seguintes:
• John McReynolds Wozencraft - Descreveu o primeiro algoritmo de uso prático
de decodificação para os códigos convolucionais. Decodificação rápida porém
sub-ótima. (1961).
• Massey -propusera um menos eficiente mas simples de implementar, método cha-
mado decodificador de limiar(1963).
• Viterbi - Descobriu outra forma de decodificar, levando seu nome: decodificador
de Viterbi(1967). Decodificador assintoticamente ótimo (próximo ao limite de
Shannon) e provado efetivamente por George David Forney, em 1973, a máxima
verossimilhança para decodificação.
Aplicações
Inicialmente utilizou-se para aplicações espaciais durante o período da guerra fria, onde
podemos citar:
• The Pioneer 9 (1968) - Missão de orbita Solar: primeira missão espacial a utilizar
corretor de erro convolucional. Os parâmetros utilizados foram:
A(2,1,20) = 2 Output / 1 Input / 20 Memory
• Voyage Mission (79-81) - Missão de exploração de Júpter e Saturno. Os parâme-
tros utilizados foram:
A(2,1,6) = 2 Output / 1 Input / 6 Memory
A(3,1,6) = 3 Output / 1 Input / 6 Memory
Outra aplicação que foi bastante difundida na Europa, Ásia, Austrália, Améri-
cas, que utilizava os códigos convolucionais foram as redes GSM 2a geração da telefonias
celulares.

Especificações GSM
Freq. de transmissão 890-915 MHz e 1.850-1910 Mhz
Freq. de recepção 935-960MHz e 1.930-1990 Mhz
Modulação GMSK
Sep. da portadora 200 kHz
Voz/portadora 8

Tabela 1. Especificações do GSM (Rappaport)

Nas redes Wimax que é uma tecnologia wireless desenvolvida para oferecer acesso
banda larga a distâncias típicas de 6 a 9 Km. Esse padrão é similar ao padrão Wi-Fi,
porém agrega conhecimentos e recursos mais recentes, visando a um melhor desempenho
de comunicação, permitindo velocidades maiores que 1 Gbit/s.

Figura 1. Rede Wimax em Fortaleza - Concedido pela EMBRATEL


Atualmente, estes códigos são amplamente utilizados em programas espaciais da
NASA (National Aeronautics and Space Administration) e do JPL(Jet Propulsion Labo-
ratory). Por exemplo na missão Galileo para Júpiter,na missão Cassini para Saturno e
na missão Marte, mais especificamente, fora utilizado o sistema AICS (Advanced Ima-
ging Communication System), que combina técnicas dos códigos Reed-Solomon com o
método padrão código convolucional.

Código Convolucional

Introdução

Muitos sistemas modernos de comunicações digitais devem oferecer uma transmissão


livre de erros. Pois existem sistemas que são intolerantes ao erro como:
• Sistemas bancários;
• Comunicações espaciais;
• Comunicações militares ...;
Os códigos corretores de erros são utilizados para suprir essa necessidade. Exis-
tem, basicamente, dois tipos de codificadores, onde são desenvolvidos os codificadores
de erro:
• Codificadores de fonte - tem como objetivo eliminar a redundância de uma pala-
vra código. Idéia: transformar as mensagens de uma fonte em um conjunto de
símbolos em um modo que seja "ocupado menos espaço"ou que a informação da
fonte "demore menos tempo a ser transmitida".
• Codificadores de canal - tem como objetivo acrescentar redundância em uma pa-
lavra código. Assegurando a veracidade da informação transmitida.

Definição

O código convolucional é um código corretor de erro para um codificador de canal, onde


possui as seguintes características:
• Um codificador convolucional é um sistema com: k-entradas, n-saídas, invariante
no tempo, causal e com memória na ordem m.
• São comumente definidos por 3 parâmetros: (n,k,m)

(n, k, m)
Núm. Reg. de Memória

Número de entradas
Número de saídas

Figura 2. Codigo Convolucionais - Parâmetros


Características:

• A taxa de codificação é dada por nk e mede a eficiência do código.


• Normalmente K e N variam de 1 a 8 (com N maior que K), M varia de 2 a 10 e
a taxa de codificação de 1/8 até 7/8. Exceto para aplicações espaciais onde a taxa
de codificação são menores que 1/100.
• Os fabricantes, também, podem especificar como parâmetros: (n,k,L). A quanti-
dade de L é chamado o comprimento de restrição do código e é definido por:

L = k(m − 1) (1)

• O comprimento de restrição L representa o número de bits no codificador de me-


mória que afetam a geração dos N bits de saída.

Figura 3. Cod. Convolucional (3,1,3) - 3 memorias / 1 entrada / 3 saídas

A estrutura do código convolucional é fácil de desenhar a partir dos seus parâme-


tros:
• m caixas representando os m registradores de memórias;
• Desenhar n somadores modulo-2 para representar as n bits de saídas;
• Conectar as memórias com os somadores de acordo o polinômio gerador.

Polinômio (ou Matriz) gerador(a):


Os polinômios trazem uma qualidade de proteção ao código, ou seja, o codificador pode
ter outros polinômios completamente diferentes.
Existem muitas escolhas do polinômio gerador dependendo dos parâmetros es-
colhidos contudo, nem todos trazem uma boa proteção contra erros. No livro Error-
Correcting Codes (W Wesley Peterson e E J. Weldon) contém uma lista completa desse
polinômios geradores, gerados por simulação computacional. Abaixo, uma tabela exem-
plo para bons polinômios geradores para uma taxa de codificação = 12 :
Comp. de restrição G1 G2
3 110 111
4 1101 1110
5 11010 11101
6 110101 111011
7 110101 110101
8 110111 1110011
9 110111 111001101
10 110111001 1110011001

Tabela 2. Bons polinômios Geradores para taxa de codificação 1/2

Saída do decodificador:
Para a codificação polinomial, a convolução no tempo pode ser representada como multi-
plicação no domínio da transformada (Transformada D (delay)). O resultado codificação
convolucional se resume na multiplicação:

Y [D] = X[D].G[D] (2)

Onde:
 
(1) (2) (n)
G1 (D) G1 (D) ... G1 (D)
(1) (2) (n)
G2 (D) G2 (D) ... G2 (D)
 
G[D] =  (3)
 
: : ... :

 
(1) (2) (n)
Gk (D) Gk (D) ... Gk (D)

Considerando um vetor genérico:

A = [a0 a1 a2 ...al ]
finito, então a transformada e dada por:

A[D] = [a0 D0 + a1 D1 + a2 D2 + ... + al Dl ]


.
Para uma melhor compreensão, segue um exemplo:
(1) (2)
Dada um entrada X = [1 0 1 1], G1 = [1 0 1] e G1 = [1 1 1]. Encontrar a saída
codificada:
• Criar matriz de polinômios para X[D] e G[D].

X[D] = X.D0 = [1 ∗ D0 + 0 ∗ D1 + 1 ∗ D2 + 1 ∗ D3 ] =

X[D] = [1 + D2 + D3 ]
(1) (2)
G[D] = [G1 [D] G1 [D]]
ou seja:

G[D] = [1 ∗ D0 + 0 ∗ D1 + 1 ∗ D2 1 ∗ D0 + 1 ∗ D1 + 1 ∗ D2 ]

G[D] = [1 + D2 1 + D + D2 ]

Y[D] = X[D]G[D]
= [1 + D2 + D3 ][1 + D2 1 + D + D2 ]
= [(1 + D2 ) + (D2 + D4 ) + (D3 + D5 )...
...(1 + D + D2 ) + (D2 + D3 + D4 ) + (D3 + D4 + D5 )]
= [1 + D3 + D4 + D5 1 + D + D5 ]
= [y (1) (D) y (2) (D)]
por dedução Y = [11 01 00 10 ...]

Maquina de estados
Outra forma de compreender a codificação e decodificação dos códigos convolucionais é
pela maquina de estado. O numero de estados é dado por:

N S = 2L

N S = 2(K(m−1))
Por exemplo, para um código convolucional: A(2,1,3)

N S = 22 = 4
S = [00 01 10 11]

0/00
0/11
00 1/11

1/01
01 10
0/01

1/10
1/10 11
1/01

Figura 4. Maquina de estados


Diagrama de Árvore
O diagrama de árvore tenta mostrar a passagem do tempo a medida que aprofunda nos
galho da árvore. Ele é um pouco melhor do que um diagrama de estado mas ainda não é a
abordagem preferida para representar códigos convolucionais. Aqui, em vez de saltar de
um estado para outro, vamos para baixo ou cima nos ramos da árvore, dependendo se um
1 ou 0 é recebida.
00
00

11
00

01
11

0 10
00 X = [1 0 1 1]

1 11
01 Y = [11 01 00 10]

00
11

10
10

01

Figura 5. Diagrama de Árvore

Diagrama de treliça
Diagramas de treliça são desorganizados, mas geralmente preferidos em relação ao di-
grama em árvore e as maquinas de estado porque representam um seqüenciamento de
eventos em tempo linear. O eixo x representa tempo discreto e os possíveis estados são
mostrados no eixo dos y.
O diagrama de treliça é desenhado alinhando todos os estados possíveis (2L ) no
eixo vertical. Então, conecta-se cada estado para o próximo pelas palavras de código
permitidos para esse estado. Há apenas dois escolhas possíveis em cada estado. Estes são
determinadas pela chegada de um bit 0 ou 1. As setas mostram o bit de entrada e os bits
de saída são mostrados entre parênteses. As setas que vai para cima representar o bit 0
e indo para baixo representam o 1 bit. O diagrama de treliça é único para cada código.
Cada período repete as possíveis transições.

image/trellis2.jpg

Figura 6. Diagrama de Treliça


Referências
[1] L. H. Charles Lee, Convolutional Coding: Fundamentals And Aplications. Artech House,
1997.
[2] MIT, http://web.mit.edu/6.02/www/f2010/handouts/lectures/L8.pdf. - Ultimo Acesso
2016.
[3] ComplexToReal,http://complextoreal.com/wp-content/uploads/2013/01/convo.pdf - Ul-
timo Acesso 2016.

Você também pode gostar