Universidade de Pernambuco
Escola Politécnica de Pernambuco
TV Analógica e Digital
Motivação
• Crescente demanda por eficientes e confiáveis
sistemas de transmissão de dados digital e sistemas de
armazenagem (Uma das principais preocupações do
pesquisador é o controle de erros para que a
reprodução segura de dados possa ser obtida).
• Desenvolvimentos recentes têm contribuído para
alcançar a confiabilidade necessária para sistemas
digitais de alta velocidade (utilização de códigos de
controlo de erros tornou-se parte integrante da
concepção dos modernos sistemas de comunicação
digitais e computadores).
2
Introdução
Motivação
Introdução
Fonte de Informação Codificador de Fonte Seqüência de Informação (bits) Codificador de Canal Palavra-código Modulador Demodulador RUÍDO Decodificador de Fonte Decodificador de Canal Palavra recebida Seqüência estimadaMotivação
• Existem dois tipos diferentes de códigos:
– códigos de bloco
– códigos convolucionais.
• Código de Bloco
• O codificador de um código de bloco divide as seqüências de informações em blocos de mensagem de k bits de informação cada. Um blocos de
mensagem é representada por
chamada mensagem. Há um total de 2k possíveis mensagens diferentes.
O codificador transforma cada mensagem u independente num
de símbolos discretos chamado de palavra-código.
4
Introdução
Motivação
• Código de Bloco
• Um exemplo de um código de bloco binário com k = 4 e n = 7 é mostrado na tabela ao lado.
Introdução
Motivação
• A relação R = k/n é chamado de taxa do código, e pode ser interpretado como o número de bits de informação que entram no codificador por símbolo transmitido.
• Considerando que os n símbolos de saída depende somente da palavra-código correspondente a k mensagens de entrada, o codificador é sem
memória (memory-less), e podem ser implementados por uma
combinações de circuitos lógicos.
• Código Convolucional
• Também aceita k blocos de bits de seqüências de informação u e produz uma seqüência codificado (palavra-código) n blocos de símbolos. No entanto, cada bloco codificado depende não apenas blocos de mensagem de k bits correspondente, mas também de m blocos mensagem anteriores. Assim, o codificador tem uma memória de ordem m.
6
Introdução
Códigos de Bloco Lineares
– Considerações:
• Assume-se que a saída de uma fonte de informação é uma
seqüência de dígitos binários “0” ou “1”.
Introdução a Códigos de Bloco
Fonte de Informação
(“0” ou “1”)
– Definição:
• A seqüência de informação é segmentada em blocos de
mensagens de comprimento fixo (determinado).
Códigos de Bloco Lineares
• Existem um total de 2k mensagens distintas.
8
Introdução a Códigos de Bloco
– Definição:
• O codificador, de acordo com certas regras, transforma cada mensagem de entrada u em uma n-upla binária v com
n > k.
• Essa n-upla binária v é chamada de palavra-código (ou
vetor código) da mensagem u, correspondendo a 2k
mensagens possíveis, existem 2k palavras-código.
Codificador
vu
Esse conjunto de 2
kpalavras-código é chamado
Códigos de Bloco Lineares
• Para um código de bloco ser prático, as 2k palavras-código
precisam ser distintas. Portanto, deve haver uma
correspondência única entre a mensagem u e a palavra-código v.
Introdução a Códigos de Bloco
• Para um código de bloco com 2k palavras-código e
comprimento n, a menos que haja uma estrutura especial, o aparato de codificação seria complexo para um k e n grande,
visto que é preciso armazenar 2k palavras- código de
comprimento n em um dicionário.
Codificador
vCódigos de Bloco Lineares
10
Introdução a Códigos de Bloco
– Definição 1.1:
Código de Bloco Linear• Um código de comprimento n e 2k palavras-código é chamado
de código linear (n, k) se e somente se suas 2k
palavras-código formam um subespaço de k dimensões de um vetor espaço de todas as n -uplas sobre o corpo GF(2).
• De fato, um código de bloco binário é linear se e somente se o adição módulo 2 de duas palavra-código é também uma palavra-código.
Codificador
vCódigos de Bloco Lineares
Introdução a Códigos de Bloco
• O código de bloco dado na Tabela 1.1 é um código linear (7, 4). Qualquer um pode, facilmente, checar que a adição
de quaisquer duas palavras-código
nesse código é também uma palavra-código.
Códigos de Bloco Lineares
12
Matriz Geradora (G)
• Como um código linear (n, k) C é um subespaço de k dimensões
de um vetor espaço Vn de todas as n-uplas binárias, é possível
encontrar k palavras-código linearmente independente,
em C tal que cada palavra-código v em C é uma combinação linear de todas essas k palavra-código, isto é
em que ui= 0 ou 1 para 0 i < k. Fazendo um arranjo dessas k
palavras-código linearmente independentes em linhas de uma matriz k × n como segue:
Códigos de Bloco Lineares
Matriz Geradora (G)
em que , para
Se \ é a mensagem a ser codificada, a
Códigos de Bloco Lineares
14
Matriz Geradora (G)
– Conclusões:
• As linhas de G geram o código linear (n, k) C. Por esta razão, a matriz G é chamada de uma matriz geradora de C. • Quaisquer k palavras-código linearmente independente de
um código linear (n, k) podem ser usadas para formar a matriz geradora do código. Um código linear (n, k) é completamente especificado pelas k linhas da matriz geradora G.
• O codificador só precisa armazenar as k linhas de G e formar a combinação linear dessas k linhas baseadas na mensagem de entrada
Códigos de Bloco Lineares
Matriz Geradora (G)
Exemplo 1. O código linear (7, 4) dado na Tabela 1 tem a seguinte
matriz como geradora, Tabela 1. Código de Bloco Linear com k = 4 e n = 7.
Se u = (1 1 0 1) é a mensagem a ser codificada, sua palavra-código, seria
Códigos de Bloco Lineares
16
Códigos de Bloco Linear Sistemático
Código de bloco linear sistemático:
• Uma palavra-código é dividida em duas partes, a parte de
mensagem e a parte da redundância de checagem.
• A parte da mensagem consiste em k dígitos de informação inalterados (ou mensagem) e a parte da redundância de
checagem consistem de n−k dígitos de paridade (parity-check
digits), os quais são somas lineares dos dígitos de informação.
Um código de bloco linear com essa estrutura é referido como um código de bloco sistemático.
Códigos de Bloco Lineares
Códigos de Bloco Linear Sistemático
O código (7, 4) dado na Tabela 1 é um
código de bloco sistemático, os quatro dígitos mais a direita de cada palavra-código são
idênticos aos dígitos de informação correspondentes.
Códigos de Bloco Lineares
18
Códigos de Bloco Linear Sistemático
• Um código linear sistemático (n, k) é especificado completamente por uma matriz Gk×n da seguinte forma:
em que pi j = 0 ou 1. Faça com que Ikdenote a matriz identidade k × k.
Então G = [P Ik]. Faça ser a mensagem a
Códigos de Bloco Lineares
Códigos de Bloco Linear Sistemático
• As componentes de v são
k dígitos mais a direita da palavra-código v são idênticos aos dígitos
de informação u0, u1, . . . , uk−1 a serem codificados, e
para 0 j < n−k, mostra que os n−k dígitos redundantes mais a
esquerda são a somas linear dos dígitos de informação.
As n−k equações são chamadas de equações de
Códigos de Bloco Lineares
20
Códigos de Bloco Linear Sistemático
Faça com que u = (u0, u1, u2, u3) seja a mensagem a ser codificada e v = (v0,
v1, v2, v3, v4, v5, v6) ser a palavra-código correspondente. Então
Pela multiplicação da matriz, obtém-se os seguintes dígitos da palavra-código v :
Códigos de Bloco Lineares
Matriz Paridade (H)
Há outra matriz útil associada com cada código de bloco linear. Para qualquer matriz G, k × n, com k linhas linearmente independentes, existe uma matriz H, (n−k) × n, com n−k linhas linearmente independentes tal que qualquer vetor no espaço vetorial de G é ortogonal as linhas de H e qualquer vetor que é ortogonal as linhas de
H esta no espaço vetorial de G.
Por isso, pode-se descrever o código linear (n, k) gerado por G de uma forma alternativa como segue:
• Uma n -tupla v é uma palavra-código no código gerado por G se e somente se
Códigos de Bloco Lineares
22
Matriz Paridade (H)
As 2n-kcombinações lineares das linhas da matriz H formam um código
linear dual (n, n − k) Cd.
• Esse código é o espaço nulo do código linear (n, k) C gerado pela matriz G (i.e., para qualquer v Î C e qualquer w Î Cd, v · w = 0). Cd é chamado de código dual de C. Conseqüentemente, uma matriz de paridade para um código linear C é uma matriz geradora para seu código dual Cd .
Códigos de Bloco Lineares
Matriz Paridade (H)
Se a matriz geradora de um código linear (n, k) esta na forma sistemática da, a matriz de paridade deve ter a seguinte forma:
Códigos de Bloco Lineares
24
Matriz Paridade (H)
Faça hj ser a j-ésima linha de H. Pode-se checar facilmente que o
produto interno da i-ésima linha de G e a j-ésima linha de H é para 0 i < k e 0 j < n − k.
Isso implica que
As equações de paridade também podem ser obtidas pela matriz de
paridade H. Faça ser a mensagem a ser
codificada. Em uma forma sistemática a palavra-código correspondente seria
Códigos de Bloco Lineares
Matriz Paridade (H)
Sabe-se que a matriz geradora do Exemplo 1 é
logo
Exemplo 3. Encontrar a matriz de paridade do código dado no
Códigos de Bloco Lineares
26
Matriz Geradora (G)
– Resumo:
• Para qualquer código de bloco linear (n, k) C, há uma matriz
G, k × n, cujo espaço vetorial dá C.
• Há uma matriz H, (n, n – k) × n, tal que uma n-tupla v é uma
palavra-código em C se e somente se v · HT = 0. Se G é da
forma
então H deve ter a forma
Códigos de Bloco Lineares
Considere um código linear (n, k) com a matriz geradora G e a matriz de paridade H. Seja v = (v0, v1, . . . , vn – 1) a palavra-código transmitida por um canal ruidoso. Seja r = (r0, r1, . . . , rn – 1) o vetor recebido na saída do canal. Por causa do canal ruidoso, r deve ser diferente de v. O vetor soma
é uma n-upla em que ei = 1 para ri vi e ei = 0 para ri = vi.
Essa n-upla é chamada de vetor erro ou erro padrão. Os 1's em
e
são os erros de transmissão causados pelo canal ruidoso.
Códigos de Bloco Lineares
O vetor recebido r é o vetor soma da palavra-código transmitida e o vetor erro, isto é,
É evidente, que o receptor desconhece v ou e. Ao receber r, o decodificador deve determinar primeiro se r contém erros de transmissão.
• Se a presença de erros é detectada, o decodificador fará ações para localizar e corrigir os erros então (FEC- forward error
correction ) ou requisitará uma retransmissão de v (ARQ
-automatic repeat request ).
28
Síndrome e Detecção de Erro
Códigos de Bloco Lineares
Quando r é recebido, o decodificador calcula a seguinte (n − k)-upla:
a qual é chamada de síndrome de r. Então:
• s = 0 se e somente se r é uma palavra-código,
• s ≠ 0 se e somente se r não é uma palavra-código.
Conseqüentemente, quando s ≠ 0, sabe-se que r não é uma palavra-código e a presença de erros é detectada. Quando s = 0, r é uma palavra-código e o receptor aceita r como a palavra-código transmitida.
Códigos de Bloco Lineares
É possível que erros em certos vetores erros não sejam detectáveis (i.e. , r contem erros, mas s = r · HT = 0) ?
Isso acontece quando o comportamento do erro padrão e é idêntico ao de uma palavra código não nula. Nesse evento, r é a soma de duas palavras-código que é uma palavra-código, e
conseqüentemen-te r · HT = 0. Erros padrões desse tipo são chamados de erros padrão
indetectáveis.
• Uma vez que há 2k−1 palavras-código não nulas (diferentes de
zero), há 2k−1 erros padrão indetectáveis. Quando um erro padrão
indetectável ocorre, o decodificador faz uma decodificação do
erro.
30
Síndrome e Detecção de Erro
Códigos de Bloco Lineares
É possível que erros em certos vetores erros não sejam detectáveis (i.e. , r contem erros, mas s = r · HT = 0) ?
Isso acontece quando o comportamento do erro padrão e é idêntico ao de uma palavra código não nula. Nesse evento, r é a soma de duas palavras-código que é uma palavra-código, e
conseqüentemen-te r · HT = 0. Erros padrões desse tipo são chamados de erros padrão
indetectáveis.
• Uma vez que há 2k−1 palavras-código não nulas (diferentes de
zero), há 2k−1 erros padrão indetectáveis. Quando um erro padrão
indetectável ocorre, o decodificador faz uma decodificação do
erro.
Códigos de Bloco Lineares
32
Exemplo 4. Considere que o código linear (7, 4) cuja matriz de
paridade é
Faça r = (r0, r1, r2, r3, r4, r5, r6) o vetor recebido. Então a síndrome é dada por
Códigos de Bloco Lineares
Os dígitos da síndrome são
O circuito da síndrome para esse código é mostrado na Figura
Códigos de Bloco Lineares
A síndrome s calculada a partir do vetor recebido r de fato depende somente do comportamento do erro e, e não da palavra-código transmitida v. Desde que r seja o vetor soma de v e e, segue
•No entanto, v · HT = 0. Conseqüentemente, se obtém a seguinte
relação entre a síndrome e o erro padrão:
Os dígitos da síndrome são simplesmente combinações lineares dos dígitos de erro.
A idéia de usar a síndrome para a correção de erros pode ser esclarecida por um exemplo.
34
Síndrome e Detecção de Erro
Códigos de Bloco Lineares
Exemplo 5. Novamente, considera-se o código (7, 4) cuja matriz de
paridade é dada
Seja v = (1 0 0 1 0 1 1) ser a palavra-código a ser transmitida e r = (1 0 0 1 0 0 1) ser o vetor recebido. Ao receber r, o receptor calcula a síndrome:
Depois, o receptor determina o verdadeiro vetor erro e = (e0, e1, e2, e3, e4,
e5, e6), o qual resulta na síndrome acima. A partir de
Códigos de Bloco Lineares
36
A partir de
os dígitos de erro estão relacionados aos da síndrome pelas seguintes equações lineares:
Existem 24 = 16 erros padrão que satisfazem as equações acima. Eles
são
Códigos de Bloco Lineares
O vetor erro e = (0 0 0 0 0 1 0) tem o menor número de componentes diferentes de zero. Se o canal é um BSC, e = (0 0 0 0 0 1 0) é o vetor erro mais provável que satisfaz a equação acima. Tomando o vetor r = (1 0 0 1 0 0 1) como o vetor erro verdadeiro, o receptor decodifica o vetor recebido r = (1 0 0 1 0 0 1) na seguinte palavra-código:
Vê-se que v é a verdadeira palavra código. Conseqüentemente, o re-ceptor fez uma correta decodificação.
Códigos de Bloco Lineares
Este parâmetro determina a detecção de erros aleatórios e a
capaci-dade de correção de erros aleatórios de um código.
Faça v = (v0, v1, . . . , vn−1) ser uma n-upla binária. O peso de Hamming (ou simplesmente peso) de v, denotado por ω(v). É definido como o número de componentes não nulas de v.
Por exemplo, o peso de Hamming de v = (1 0 0 1 0 1 1) é 4.
Faça v e w ser duas n-uplas. A distância de Hamming (ou Simples-mente distância) entre v e w, denotada por d(v, w), é definida como o número de lugares em que diferem.
Por exemplo, a distância de Hamming entre
v = (1 0 0 1 0 1 1) w = (0 1 0 0 0 1 1)
é 3; elas diferem no zero, primeiro, e no terceiro lugar.
38
Distância Mínima de um Código de Bloco
Códigos de Bloco Lineares
Decorre da definição da distância de Hamming e a definição da adição módulo 2 que a distância de Hamming entre duas n-upIas, v e w, é igual ao peso de Hamming da soma de v e w, isto é,
Por exemplo, a distância de Hamming entre v = (1 0 0 1 0 1 1) e w = (1 1 1 0 0 1 0) é de 4 e o peso de v + w = (0 1 1 1 0 0 1) também é 4.
Códigos de Bloco Lineares
40
Código de Hamming
A matriz de paridade H desse código consiste de todas as m-uplas não nulas como suas colunas. Na forma sistemática, as colunas de H são ordenadas da seguinte forma:
em que Im é uma matriz identidade m × n e a submatriz Q consiste de
2m − m − 1 colunas as quais são as m-tuplas de peso 2, ou maior. Por exemplo, seja m = 3. A matriz paridade do código de Hamming de
comprimento 7 pode ser colocada da seguinte forma
Códigos de Bloco Lineares
Arranjo Padrão e Decodificação por Síndrome
Um esquema para decodificação de códigos de bloco linear será apresentado.
Inicialmente: Faça C ser um código linear (n, k). Seja
ser o vetor código de C.
Não importa que vetor código seja transmitido pelo canal ruidoso, o
vetor recebido r deve ser qualquer uma das 2n n-uplas sobre corpo
binário GF(2). Qualquer esquema de decodificação usado no
receptor é uma regra para dividir (particionar) os 2n possíveis
vetores recebidos em 2k subconjuntos disjuntos:
Códigos de Bloco Lineares
42
Arranjo Padrão e Decodificação por Síndrome
Conseqüentemente, cada subconjunto Di tem uma correspondência
biunívoca a um vetor vi. Caso o vetor recebido r seja encontrado
no subconjunto Di, r é decodificado em vi. A correta decodificação
é feita se e somente se o vetor recebido r está no subconjunto Di
que corresponde ao verdadeiro vetor código transmitido.
Códigos de Bloco Lineares
Exemplo 6. Considere o código linear (6, 3) gerado pela seguinte matriz:
O arranjo padrão do código é
Códigos de Bloco Lineares
44
Arranjo Padrão e Decodificação por Síndrome
Algoritmo de decodificação
O esquema de decodificação descrito acima é chamado de
Códigos de Bloco Lineares
Exemplo 7. Considere o código
linear (7, 4) dado na Tabela 1. A matriz de paridade, como dada
Capacidade de Detecção e Correção
Tabela de decodificação para o código linear (7, 4) dado na Tabela 1.
Códigos de Bloco Lineares
46
O circuito da síndrome para esse código é exibido na Figura. A tabela de decodificação é dada pela Tabela. A partir dessa tabela forma-se a tabela verdade
Capacidade de Detecção e Correção
Tabela verdade para os dígitos de erro dos erros padrão corrigíveis do código linear (7, 4) dado na Tabela 1.1.
Códigos de Bloco Lineares
A construção da Matriz Verdade é simples, basta associar os pos-síveis erros com as linhas da matriz HT. Para provar esse fato,
lembre-se de que
Logo, para o exemplo podemos calcular para síndrome possível, associada a ao erro, assim:
Códigos de Bloco Lineares
48
Capacidade de Detecção e Correção
Códigos de Bloco Lineares
Capacidade de Detecção e Correção
Logo, no caso em que o código corrige só um erro, obter a matriz verdade é muito simples. Contudo, quando é capaz de corrigir mais erros é necessário um cuidado maior.
Códigos de Bloco Lineares
50 Circuito de decodificação para o código (7, 4) dado na Tabela 1.Códigos de Bloco Lineares
Código de Hamming
Códigos de Hamming são a primeira classe de códigos lineares desenvolvidos para correção de erros.
Para qualquer inteiro positivo m ≥ 3, existe um código de Hamming com os seguintes parâmetros:
– Comprimento do código: n = 2m − 1;
– Número de símbolos de informação: k = 2m − m − 1; – Número de símbolos de paridade: n − k = m;
Códigos de Bloco Lineares
52
Matriz Geradora (G)
Exemplo 1. Suponha na Transmissão de TV Digital esta usando o
código linear (7, 4) dado na Tabela 1 tem a seguinte matriz como geradora,
Tabela 1. Código de Bloco Linear com k = 4 e n = 7.
Deseja-se transmitir a seuqencia u = (1 1 0 1) é a mensagem a ser codificada, sua
Códigos de Bloco Lineares
Códigos de Bloco Linear Sistemático
Faça com que u = (u0, u1, u2, u3) seja a mensagem a ser codificada e v = (v0,
v1, v2, v3, v4, v5, v6) ser a palavra-código correspondente. Então
Pela multiplicação da matriz, obtém-se os seguintes dígitos da palavra-código v :
Códigos de Bloco Lineares
54
Matriz Paridade (H)
Sabe-se que a matriz geradora do Exemplo 1 é
logo
Na recepção é necessário encontrar a matriz de paridade do código
Códigos de Bloco Lineares
Na recepção, para o código linear (7, 4) cuja matriz de paridade é
É necessário o calculo da síndrome para sabermos se existe erro ou não na palavra-código recebida. Dessa forma é necessário calcular a síndrome.
Códigos de Bloco Lineares
56
Faça r = (r0, r1, r2, r3, r4, r5, r6) o vetor recebido. Então a síndrome é dada por
Síndrome e Detecção de Erro
Os dígitos da síndrome são
Códigos de Bloco Lineares
O circuito da síndrome para esse código é mostrado na Figura
Códigos de Bloco Lineares
58
O vetor erro e = (0 0 0 0 0 1 0) tem o menor número de componentes diferentes de zero. Se o canal é um BSC, e = (0 0 0 0 0 1 0) é o vetor erro mais provável que satisfaz a equação acima. Tomando o vetor r = (1 0 0 1 0 0 1) como o vetor erro verdadeiro, o receptor decodifica o vetor recebido r = (1 0 0 1 0 0 1) na seguinte palavra-código:
Vê-se que v é a verdadeira palavra código. Conseqüentemente, o re-ceptor fez uma correta decodificação.
Contudo é necessário definir uma implementação para o calcula da síndrome.
Códigos de Bloco Lineares
Considere o código linear (6, 3) gerado pela seguinte matriz:
O arranjo padrão do código é
Códigos de Bloco Lineares
60
A construção da Matriz Verdade é simples, basta associar os pos-síveis erros com as linhas da matriz HT. Para provar esse fato,
lembre-se de que
Logo, para o exemplo podemos calcular para síndrome possível, associada a ao erro, assim:
Códigos de Bloco Lineares
Capacidade de Detecção e Correção
Códigos de Bloco Lineares
62
Capacidade de Detecção e Correção
Logo, no caso em que o código corrige só um erro, obter a matriz verdade é muito simples. Contudo, quando é capaz de corrigir mais erros é necessário um cuidado maior.
Códigos de Bloco Lineares
Circuito de
decodificação para o código (7, 4) dado na Tabela 1.
Códigos Cíclicos
64
Os códigos cíclicos formam uma importante subclasse de códigos lineares. Estes códigos são atrativos por duas razões:
• primeiro, a codificação e o cálculo da síndrome são facilmente
implementadas usando registradores de deslocamento com
realimentação (ou circuito seqüencial linear);
• segundo, como eles têm considerável estrutura algébrica inerente, é possível encontrar vários métodos práticos para decodificá-los.
Os códigos cíclicos foram primeiro estudados por Prange, em 1957. Daí então, progressos no estudos dos códigos cíclicos para ambas correções de erros aleatórios e correções de erros em surto tem sido feito por muito teóricos de codificação algébrica.
Códigos Cíclicos
Se as componentes de uma n-upla v = (v0, v1, . . . , vn – 1) são
deslocadas ciclicamente uma coordenada (posição) para direita,
obtém-se uma outra n-upla
que é chamada um deslocamento cíclico de v. Se as componentes de v são deslocadas i coordenadas para a direita, a n-upla resultante será
Pode-se observar que deslocando cíclico de v em i coordenadas para a direita é equivalente à deslocar ciclicamente v em n − i coordenadas para a esquerda.
Códigos Cíclicos
66
Um código linear (n, k) C é chamado código cíclico se todo
deslocamento cíclico de uma palavra do código C é também uma palavra do código.
O código linear (7, 4) dado na Tabela 1 é um código cíclico. Os códigos cíclicos formam uma importante subclasse dos códigos lineares e
possuem muitas propriedades algébricas que simplificama
implementação da codificação e decodificação.
Para desenvolver as propriedades algébricas de um código cíclico, trata-se as palavras código v = (v0, v1, . . . , vn – 1) como os coeficientes de um polinômio, como segue:
Códigos Cíclicos
Definição
Códigos Cíclicos
68
O polinômio X 7 + 1 pode ser fatorado como segue:
Há dois fatores de grau 3; cada um gera um código cíclico (7, 4). O código cíclico (7, 4) gerado por g(X) = X 3 + X + 1 tem distância mínima
igual a 3 e é um código corretor de erros simples. Cada polinômio
código é o produto de um polinômio mensagem de grau menor ou
igual a 3 e o polinômio gerador g (X) = 1 + X + X3.
Por exemplo, seja u = (1 0 1 0) a mensagem a ser codificada. O
polinômio mensagem correspondente é u(X) = 1 + X 2. Multiplicando
u(X) por g(X) resulta no seguinte polinômio código:
ou a palavra código (1 1 1 0 0 1).
Códigos Cíclicos
Considere um código cíclico (n, k) C com polinômio gerador
Se as k n-uplas correspondendo a estes k polinômios código são
usadas como as linhas de uma matriz k × n, obtém-se a seguinte matriz geradora para C:
Códigos Cíclicos
70
Em geral, G não está na forma sistemática. Contudo, pode-se colocál-a ncolocál-a formcolocál-a sistemáticcolocál-a c Por exemplo, o código cíclico (7, 4) dcolocál-ado ncolocál-a
Tabela 4.1, com polinômio gerador g(X) = X 3 + X + 1, tem a seguinte
matriz como uma matriz geradora:
Códigos Convolucionais
Introdução
• A Codificação dos Códigos Convolucionais pode ser estudados de várias pontos de vista diferentes, em que serão apresentadas três definições:
– Matriz Polinomial; – Matriz Escalar;
– Registrador de Deslocamento.
• Outras duas definições serão apresentados – Diagrama de Estado;
– Treliça.
Códigos Convolucionais
72
Descrição pela Matriz Polinomial
• Código de Bloco Linear (n, k) pode ser caracterizada por uma matriz geradora G = (gij), k x n, sobre o corpo finito GF(q), em que q é uma potência de um número primo, e.g., q = 23.
• Um código convolucional (CC) é caracterizado por uma matriz geradora G, k x n, contudo defere em que para os códigos
convolucionais os elementos gij são polinômios sobre GF(q), em
particular, sobre GF(2).
Exemplo: CC1(2,1)
2
1
,
2
1
x
x
x
Códigos Convolucionais
Descrição pela Matriz Polinomial
Definições:
i. Memória
ii. Comprimento de Restrição
iii. Taxa
)]
(
grau
max[
g
ijM
1
M
K
n
k
R
/
Códigos Convolucionais
74
Descrição pela Matriz Polinomial
Exemplo: CC1(2,1)
M = 2, K = 3 e R = 1/2
Exemplo: CC2(3,2)M = 1, K = 2 e R = 2/3
x
x
1
0
1
0
1
G
2
1
,
2
1
x
x
x
G
Códigos de Bloco
são um caso
particular dos
códigos
convolucionais?
Códigos Convolucionais
Descrição pela Matriz Polinomial
Codificação:
Informação: I = (I
0(x), I
1(x), ..., I
k-1(x)) - k-upla
Palavra-código: C = (C
0(x), C
1(x), ..., C
n-1(x)) - n-upla
Definição:
Exemplo: CC1(2,1)
Informação: I = (x3+x+1) - 1-uplaG
I
C
2
1
,
2
1
x
x
x
G
Códigos Convolucionais
76
Descrição pela Matriz Polinomial
Exemplo: CC2(3,2)
Informação: I = (x2+x, x3+1) - 2-uplaG
I
C
x
x
1
0
1
0
1
G
Palavra-código: C = (x2+x, x3+1, x4+x3) - 3-uplaCódigos Convolucionais
Descrição pela Matriz Escalar
A representação escalar é mais natural.
Seja C = (C0(x), C1(x), ..., Cn-1(x)) - n-upla, assim cada polinômio, j-ésimo polinômio, é da forma
E a representação escalar da palavra-código C pode ser da forma
Exemplo: CC1(2,1) Informação: I = (x3+x+1) - 1-upla Palavra-código: C = (x5+x2+x+1, x5+x4+1) - 2-upla
2
2 1 0C
x
C
x
C
x
C
j j j j
00,
10,
,
1,0,
01,
,
1,1,
C
C
C
nC
C
nC
Códigos Convolucionais
78
Descrição pela Matriz Escalar
Pode-se definir a Matriz Geradora Escalar, da mesma forma que a palavra-código
1
1
1
0
1
1
1
1
1
0
1
1
1
1
1
0
1
1
1
1
1
0
1
1
1
1
1
0
1
1
G
110111
1
,
1
2 2
G
G
x
x
x
x = n Exemplo: CC1(2,1) Bloco BásicoCódigos Convolucionais
Descrição pela Matriz Escalar
Por questões práticas, o grau do polinômio informação é I limitado, dessa forma, defini-se
em que i = 0,1, ..., K – 1. L é o L-ésimo truncamento. Assim, o grau do polinômio código é limitado da seguinte forma
(
)
1
grau
I
ix
L
(
)
1
Códigos Convolucionais
80
Descrição pela Matriz Escalar
Pode-se definir a Matriz Geradora Escalar, da mesma forma que a palavra-código
1
1
1
0
1
1
0
0
0
0
0
0
0
0
1
1
1
0
1
1
0
0
0
0
0
0
0
0
1
1
1
0
1
1
0
0
0
0
0
0
0
0
1
1
1
0
1
1
G
110111
1
,
1
2 2
G
G
x
x
x
Exemplo: CC1(2,1) Bloco Básico L = 4 KL x n(M+L) = 4 x 12Códigos Convolucionais
Descrição pela Matriz Escalar
Pode-se definir a Matriz Geradora Escalar, da mesma forma que a palavra-código 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 G 1 0 0 0 1 0 1 0 0 1 0 1 1 0 1 0 1 G G x x Exemplo: CC2(3,2) Bloco Básico
Códigos Convolucionais
82
Descrição por Registradores de Deslocamento
Suponha que se deseja construir um codificador para o CC1, que aceite a informação I = (I0(x), I1(x), ..., Ik-1(x)) como entrada e produzirá a palavra-código: C = (C0(x), C1(x), ..., Cn-1(x)) = (C00, C10, C01, C11, ...) como saída, em I e C que são relacionadas da forma
e
00 01 0(
x
)
C
C
C
)
(
)
1
(
x
2
I
x
)
)(
1
(
2
0
1
x
I
I
x
10 11 1(
x
)
C
C
C
)
(
)
1
(
x
2
x
I
x
)
)(
1
(
2
0
1
x
x
I
I
x
Códigos Convolucionais
Descrição por Registradores de Deslocamento
A multiplicação pode ser realizada através de Registradores de deslocamento, para o código CC1, da seguinte forma:
Multiplicando por x2 + 1 e multiplicando por x2 + x + 1 saída entrada x 1 x2 saída entrada 2 1 1 2 0 ) ( ) ( j j j j j j j I I I x C I I x C j = 0, 1, ...
Códigos Convolucionais
84
Descrição por Registradores de Deslocamento
Logo, para obter a palavra-código Ci pela convolução da entrada I,
para o CC1, faça entrada Ij – 1 Ij Ij – 2 2 1 1 2 0 ) ( ) ( j j j j j j j I I I x C I I x C j = 0, 1, ... saída saída