• Nenhum resultado encontrado

TV Analógica e Digital - 10 - Introdução a Codificação de Canal

N/A
N/A
Protected

Academic year: 2021

Share "TV Analógica e Digital - 10 - Introdução a Codificação de Canal"

Copied!
88
0
0

Texto

(1)

Universidade de Pernambuco

Escola Politécnica de Pernambuco

TV Analógica e Digital

(2)

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

(3)

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 estimada

(4)

Motivaçã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

(5)

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

(6)

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

(7)

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).

(8)

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

v

u

Esse conjunto de 2

k

palavras-código é chamado

(9)

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

v

(10)

Có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

v

(11)

Có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.

(12)

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:

(13)

Códigos de Bloco Lineares

Matriz Geradora (G)

em que , para

Se \ é a mensagem a ser codificada, a

(14)

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

(15)

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

(16)

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.

(17)

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.

(18)

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

(19)

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

(20)

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 :

(21)

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

(22)

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 .

(23)

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:

(24)

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 0j < 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

(25)

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

(26)

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

(27)

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 rivi 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.

(28)

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

(29)

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.

(30)

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

(31)

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.

(32)

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

(33)

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

(34)

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

(35)

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

(36)

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

(37)

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.

(38)

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

(39)

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.

(40)

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

(41)

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:

(42)

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.

(43)

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 é

(44)

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

(45)

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.

(46)

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.

(47)

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:

(48)

Códigos de Bloco Lineares

48

Capacidade de Detecção e Correção

(49)

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.

(50)

Códigos de Bloco Lineares

50 Circuito de decodificação para o código (7, 4) dado na Tabela 1.

(51)

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;

(52)

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

(53)

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 :

(54)

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

(55)

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.

(56)

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

(57)

Códigos de Bloco Lineares

O circuito da síndrome para esse código é mostrado na Figura

(58)

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.

(59)

Códigos de Bloco Lineares

Considere o código linear (6, 3) gerado pela seguinte matriz:

O arranjo padrão do código é

(60)

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:

(61)

Códigos de Bloco Lineares

Capacidade de Detecção e Correção

(62)

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.

(63)

Códigos de Bloco Lineares

Circuito de

decodificação para o código (7, 4) dado na Tabela 1.

(64)

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.

(65)

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.

(66)

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:

(67)

Códigos Cíclicos

Definição

(68)

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).

(69)

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:

(70)

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:

(71)

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.

(72)

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

(73)

Códigos Convolucionais

Descrição pela Matriz Polinomial

Definições:

i. Memória

ii. Comprimento de Restrição

iii. Taxa

)]

(

grau

max[

g

ij

M

1

M

K

n

k

R

/

(74)

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?

(75)

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-upla

G

I

C

2

1

,

2

1

x

x

x

G

(76)

Códigos Convolucionais

76

Descrição pela Matriz Polinomial

Exemplo: CC2(3,2)

Informação: I = (x2+x, x3+1) - 2-upla

G

I

C

x

x

1

0

1

0

1

G

Palavra-código: C = (x2+x, x3+1, x4+x3) - 3-upla

(77)

Có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 0

C

x

C

x

C

x

C

j j j j

00

,

10

,

,

1,0

,

01

,

,

1,1

,

C

C

C

n

C

C

n

C

(78)

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ásico

(79)

Có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

i

x

L

(

)

1

(80)

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 12

(81)

Có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

(82)

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

(83)

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, ...

(84)

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

00 01 0

C

C

C

10 11 1

C

C

C

Memória do Código (M)

I

j – 1

e I

j – 2

(85)

Códigos Convolucionais

Diagrama de Estados

Logo, entrada Ij – 1 Ij Ij – 2 saída saída 11 10 01 00 0 / 00 1 / 11 Ij Ij-1 Ij-2 C0j C1j 0 0 0 0 0 1 0 0 1 1 0 1 0 0 1 1 1 0 1 0 0 1 1 1 0 1 1 1 0 1 0 0 1 1 1 2 1 1 2 0 ) ( ) (         j j j j j j j I I I x C I I x C j = 0, 1, ... 0 / 01 1 / 10 1 / 00 0 / 10 0 / 11

(86)

Códigos Convolucionais

86

Diagrama de Estados

Diagrama em Treliça 11 10 01 00 0 / 00 1 / 11 0 / 01 1 / 10 1 / 00 1 / 01 0 / 10 0 / 11 a b c d

(87)

Códigos Convolucionais

Diagrama de Estados

Diagrama em Treliça 11 10 01 00 0 / 00 1 / 11 0 / 01 1 / 10 1 / 00 1 / 01 0 / 10 0 / 11 a b c d

(88)

Códigos Convolucionais

88

Diagrama de Estados

Diagrama em Treliça 11 10 01 00 0 / 00 1 / 11 0 / 01 1 / 10 1 / 00 1 / 01 0 / 10 0 / 11 a b c d

Referências

Documentos relacionados