Códigos Cíclicos

12
1 TÉCNICAS DE CODIFICAÇÃO DE SINAIS CÓDIGOS CÍCLICOS Evelio M. G. Fernández - 2010 Códigos Cíclicos: Definição Um código de bloco linear é um código cíclico se cada deslocamento cíclico das palavras-código é também uma palavra-código. Vantagens: Descrição algébrica elegante c(x) = m(x)g(x), g(x) polinômio gerador c(x)h(x) = 0 mod (x n 1) h(x) polinômio de verificação de paridade c(β 1 ) = 0, ..., c(β t ) = 0, onde β i GF(p m ) Codificação e cálculo de síndromes utilizando registradores de deslocamento Correção de surtos de erros Correção de erros aleatórios através da solução de equações de polinômios C: (n, k), C: SubEsp Vn Se ( ) C v v v v n = 1 1 0 , , , K : código cíclico, então deslocamentos cíclicos de v também pertencem a C, isto é: ( ) ( ) ( ) C v v v v v v v v v v v v v v v n n n n n n n 0 1 2 2 1 3 1 0 1 2 2 2 1 0 1 , , , , , , , , , , , , , , K K M M K K Representação Polinomial: ( ) 1 1 0 , , , = n v v v v K () 1 1 2 2 1 0 + + + + = n n x v x v x v v x v L onde: x = variável auxiliar vi GF(q); q primo. Deslocamentos Cíclicos de n-uplas e Polinômios x·v(x): deslocamento cíclico no tempo ou rotação à direita sujeita à condição, 0 1 ou 1 = = n n x x ( ) { () C x v x v x v x v v x x v x v x v x v x n n n n n = + + + + = + + + = = 1 1 2 2 1 0 1 1 1 1 2 1 0 L L multiplicação módulo 1 n x ( ) ( ) { () Cíclico Código : 2 1 3 3 1 2 0 1 2 1 2 1 3 3 1 2 0 1 1 2 C x v x v x v x v x v v x v x v x v x v x v x xv x v x n n n n n n n n n = + + + + + = + + + + + = = = L L ( ) ( ) ( ) { } C x x v x x xv x v n 1 mod , , , 2 K Isto é, para i o polinômio ( ) C x x v x n i 1 mod . Deslocamentos Cíclicos de n-uplas e Polinômios

description

Estrutura algébrica de códigos cíclicos

Transcript of Códigos Cíclicos

1

TÉCNICAS DE CODIFICAÇÃO DE SINAIS

CÓDIGOS CÍCLICOS

Evelio M. G. Fernández - 2010

Códigos Cíclicos: Definição

• Um código de bloco linear é um código cíclico se cada deslocamento cíclico das palavras-código é também uma palavra-código. Vantagens:– Descrição algébrica elegante

• c(x) = m(x)g(x), g(x) → polinômio gerador• c(x)h(x) = 0 mod (xn − 1) → h(x) polinômio de verificação de

paridade• c(β1) = 0, ..., c(βt) = 0, onde βi ∈ GF(pm)

– Codificação e cálculo de síndromes utilizando registradores de deslocamento

– Correção de surtos de erros– Correção de erros aleatórios através da solução de equações de

polinômios

C: (n, k), C: SubEsp Vn

Se ( ) Cvvvv n ∈= −110 ,,, K : código cíclico, então deslocamentos

cíclicos de v também pertencem a C, isto é:

( )( )

( )

C

vvvvv

vvvvvvvvvv

nn

nnn

nn

⎪⎪⎭

⎪⎪⎬

−−

−−−

−−

01221

31012

22101

,,,,

,,,,,,,,,,

KK

MM

K

K

Representação Polinomial:

( )110 ,,, −= nvvvv K ↔ ( ) 11

2210

−−++++= n

n xvxvxvvxv L

onde: x = variável auxiliar

vi ∈ GF(q); q primo.

Deslocamentos Cíclicos de n-uplas e Polinômios

x·v(x): deslocamento cíclico no tempo ou rotação à direita sujeita à condição,

01ou 1 =−= nn xx

( ) {

( ) Cxvxvxvxvv

xxvxvxvxvx

nnn

nn

∈=++++=

+++=⋅→

−−−

=

−−

11

22

101

1

11

210

L

L

multiplicação módulo 1−nx

( ) ( ){

( ) Cíclico Código :2

13

31

2012

12

13

31

201

12

Cxvxvxvxvxvv

xvxvxvxvxv

xxvxvx

nnnn

nn

nnn

∈=+++++=

+++++=

=

−−−−

=−

−−−

L

L

( ) ( ) ( ){ } Cxxvxxxvxv n ∈−1mod,,, 2 K

Isto é, para ∀i o polinômio ( ) Cxxvx ni ∈−1mod .

Deslocamentos Cíclicos de n-uplas e Polinômios

2

Corpos Finitos

• Um corpo finito com q elementos é chamado de GF(q) (Galois Field)

• GF(p) = inteiros com aritmética módulo um número primo, p

• GF(pm) = polinômios sobre GF(p) com aritmética módulo um polinômio primo de grau m (extension field)

• Todo corpo finito é o espaço vetorial de m-uplas sobre o corpo GF(p) de inteiros com aritmética módulo um número primo p. Portanto, GF(q) = GF(pm)

Corpos Finitos

• Teorema: A característica, λ, de um corpo finito é um número primo

• Teorema: Seja a um elemento diferente de zero em GF(q). Então, a(q−1) = 1

• Teorema: Seja a um elemento diferente de zero em GF(q). Seja n a ordem de a. Então, n divide q−1

• Resultado: Se a ordem de a for q−1, então a é um elemento primitivo de GF(q)

Aritmética de Corpos Finitos

• Polinômios com uma variável X e coeficientes em um corpo F (denotados por F[x]), são expressões da forma

• O grau de f(X) é a maior potência de X (com coeficiente de X ≠ 0)

• Polinômio mônico: O coeficiente da maior potência de X é1 ⇒ Todos os polinômios diferentes de zero sobre GF(2) são mônicos

• Para qualquer dividendo f(X) ∈ F[x] e divisor diferente de zero, g(X) ∈ F[x] existirão um par de polinômios únicos q(X), cociente e r(X), resto, tal que

( ) nn XfXfXffXf ++++= L2

210

( ) ( ) ( ) ( ) ( ) ( )XgXrXrXgXqXf degdegonde, <+=

Definição:

Seja p(X) um polinômio de grau m sobre GF(2). Se p(X) não for divisível por nenhum polinômio sobre GF(2) de grau m – 1 ou menos, então p(X) é irredutível sobre GF(2).

Resultado:

Qualquer polinômio irredutível sobre GF(2) de grau m divide

112 +−m

X

Aritmética de Corpos Finitos

3

Definição:

Seja p(X) um polinômio irredutível de grau m sobre GF(2);

então, p(X) divide Xn + 1 para n = 2m – 1. Se este valor de n

for o menor inteiro positivo para o qual p(X) divide xn + 1,

então p(X) é um polinômio primitivo de grau m sobre GF(2)

Aritmética de Corpos Finitos

65432107754321076643210765532107654421076543310765432207654321176543210076543210+

12345670724602460636147250540404040416301630364206420276543210100000000076543210×

Soma Módulo-8 Produto Módulo-8

000001010011100101110111111001000011010101100111110110010011000001110111100101101011010001000111110101100100100101110111000001010011011101100111110001000011010010

110111100101010011000001001111110101100011010001000000111110101100011010001000

Soma Módulo-2 (Bit-a-Bit)

011100110001010101111111100010011101001111110110110011111010100001101101001101010110111011100100010001100111101110011011101111001011110100010010

111110101100011010001001

111110101100011010001

Operação de “Multiplicação” das 3-uplas

4

00001001

0101011

1001101

1101111

2

2

2

2

⇔⇔⇔

+⇔⇔

+⇔

+⇔

++⇔

ααα

α

αα

αα

RepresentaçãoDefinição:

Um elemento de GF(2m) de ordem 2m – 1 é um elemento primitivo.⇒ se α é um elemento primitivo em GF(2m), então as potências distintas de α geram todos os elementos (diferentes de zero) de GF(2m).

Definição:

Um polinômio irredutível, p(x), de grau m sobre GF(2) é um polinômio primitivo se tiver como raiz um elemento primitivo de GF(2m)

Construção de GF(2m)

Teorema:

Seja f(X) um polinômio com coeficientes em GF(2). Seja βum elemento de GF(2m). Se β é uma raiz de f(X), então para qualquer l ≥ 0 ,

é também uma raiz de f(X)

O elemento é chamado de conjugado de β. l2β

l2β

Propriedades de GF(2m)

Teorema:

Os 2m – 1 elementos diferentes de zero de GF(2m) compõem

todas as raízes de

→ O elemento 0 de GF(2m) é a raiz de X. Portanto,

Corolário:

Os elementos de GF(2m) compõem todas as raízes de

⇒ β pode ser uma raiz de um polinômio sobre GF(2) de grau

menor que 2m

112 +−m

X

Propriedades de GF(2m)

XXm

+2

5

Definição:

Seja β um elemento de GF(2m). O polinômio minimal, φ(X), de β é o polinômio de menor grau com coeficientes em GF(2) tal que φ(β) = 0.

Teorema:

Sejam φ(X) o polinômio minimal de um elemento β em GF(2m) e e o menor inteiro tal que . Então:ββ =

e2

( ) ( )∏−

=

+=1

0

2e

i

i

XX βφ

Propriedades de GF(2m) Polinômio Gerador

Seja C um código cíclico (n, k) sobre GF(q)

• Existe um polinômio mônico g(x), chamado de polinômio gerador, tal que uma n-upla c(x) é uma palavra-código se e somente se g(x) for um divisor de c(x).

• O polinômio gerador é único.• O grau do polinômio gerador é n − k.• g(x) é o polinômio código de menor grau entre todos os

polinômios código.• O polinômio gerador é um divisor de xn − 1.

( ) knkn xgxgxgxg −

−++++= L2211

),(:1mod)()()( knCxxgxaxc n ∈−=

onde:

Grau [c(x)] ≤ n – 1.

Grau [g(x)] = n – k.

Grau [a(x)] ≤ k – 1.

a(x): polinômio em x associado à mensagem a ser codificada em c(x).

Seja 11

2210)( −

−++++= kk xaxaxaaxa L

{ 43421L

321C

kk

CC

xgxaxxgaxgaxgxa∈

−−

∈∈

+++= )()()()()( 1110

Portanto:

a(x)g(x) = combinação linear de palavras código que resulta em uma outra

palavra código de C.

Polinômio Gerador Matriz Geradora não Sistemática

• Código cíclico C: (n, k) gerado por g(x) de grau r = n − k

( )( )

( )( ) ⎥

⎥⎥⎥

⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

=

r

r

r

r

k

k

gggggg

gggggg

xgxxgx

xxgxg

G

LL

MOOLOOMML

L

M

10

10

10

10

1

2

00000000

00000000

6

⎟⎟⎟⎟

⎜⎜⎜⎜

= −

−− 44 344 21K

44 344 21K

mensagemdebitsk

k

paridadedechequedebitskn

kn mmmbbbv 110110 ,,,,,,,

Seja m(x): polinômio-mensagem,

1110)( −−+++= k

k xmxmmxm L

→ v(x): polinômio código de código sistemático.

44444 344444 21

L4444 34444 21

L

)(

11

110

)(

1110)(

xmx

kk

knkn

xb

knkn

kn

xmxmxmxbxbbxv−

−−

+−−−−−− ++++++=

Se v(x) = a(x)g(x)

⇒ )()()(

)()(

xgxbxa

xgxmx kn

−=−

Código Cíclico Sistemático

1. ?)( =−knxxm

2. Resto da divisão ?)()(

)( xbxg

xmx kn

=−

3. )()()( xvxmxxb kn =+ −

EXEMPLO:

31)( xxm += , 31)( xxxg ++= , código cíclico C: (7, 4).

Palavra código correspondente à m(x)?

a(x) tal que a(x)g(x) = v(x)?

Procedimento para Codificação Sistemática

)()(1 xgxhxn =−

ou: ( ) 01mod)()( =−nxxgxh

g(x): polinômio gerador de C: (n, k)

h(x): polinômio de verificação de paridade de C: (n, k)

Grau [g(x)] = n – k

Grau [h(x)] = k

Teorema 4.7 (Lin & Costelo, pág. 94):

Seja C: (n, k) um código cíclico q-ário com polinômio gerador g(x), em

GF(q). O código dual de C é também cíclico e é gerado pelo polinômio

( )1)( −= xhxxh kk , onde )(xhk é o polinômio recíproco do polinômio de

verificação de paridade do código C.

Polinômio de Verificação de Paridade Codificador de um Código Cíclico (n, k)

b0 b1 b2 bn-k-1bn-k-2

( )xmx kn−

7

Codificador do Código Cíclico (7, 4) Circuito de Cálculo das Síndromes

s0 s1 sn-k-1

r(x)

Cálculo de Síndromes Código (7, 4)

• Um código cíclico (n, k) é capaz de detectar qualquer surto de erros de comprimento n − k ou menor, incluindo surtos do tipo end-around.

• A fração de surtos não detectáveis de comprimento n − k +1 é 2 − (n − k − 1)

• Para l > n − k +1, a fração de surtos não detectáveis de comprimento l é 2 − (n − k)

Capacidade de Detecção de Erros

8

Decodificação de Códigos Cíclicos• Passo 1: Calcular a síndrome de r(x) e armazenar r(x) no registrador

• Passo 2: Determinar padrão de erro. A saída do detector é 1 se e somente se a síndrome no registrador corresponde a um padrão de erro corrigível contendo um erro na posição xn − 1

• Passo 3: O buffer e o registrador de síndrome são deslocados uma posição à direita. A saída do detector faz a correção do primeiro símbolo (se en − 1 = 1) e também é realimentada no registrador de síndrome. Nova síndrome corresponde à r(x) deslocado

• Passo 4: Detectar se xn − 2 (agora na última posição) é um símbolo errado. Repetir passos 2 e 3. O segundo símbolo é corrigido da mesma forma que o anterior.

• Passo 5: Decodificar o vetor recebido símbolo a símbolo da forma descrita anteriormente

Decodificação de Códigos Cíclicos

Decodificador de Meggitt para o Código Cíclico (7, 4)

Processo de Correção de Erros

9

Códigos Cíclicos Binários vistos a partir de GF(2m)

• Teorema: Seja g(x) o polinômio gerador de um código cíclico binário de comprimento n = 2m − 1 com zeros β1,..., βrem GF(2m). O polinômio c(x) sobre GF(2) é um polinômio código se e somente se

c(β1) = c(β2) = ··· = c(βr) = 0

onde c(βi) é avaliado em GF(2m)

BCH bound

Se um código cíclico linear é construído de forma que:

• Cada palavra-código tem n bits;• β é um elemento de ordem n em GF(2m);• O polinômio gerador do código, g(x), inclui, entre suas

raízes, (δ - 1) potências consecutivas de β.

Então,

• É garantido que o código tem distância mínima igual a δ ou maior.

Construção de Códigos BCH

• Para cada raiz βr incluída em g(x), existe um polinômio minimal f(r)(x) que tem βr como raiz [i.e., f(r)(βr) = 0] e com coeficientes em GF(2).

• O polinômio gerador, com coeficientes binários, que contém todas as raízes necessárias pode ser obtido como sendo o mínimo comum múltiplo (LCM) de todos os polinômios minimais correspondentes às raízes utilizadas:

g(x) = LCM{f(b+1)(x), f(b+2)(x), ..., f(b+δ-1)(x)}

Tipos de Códigos BCH

• Se β é um elemento primitivo de GF(2m), o código BCH resultante é chamado de código BCH primitivo e as suas palavras-código têm comprimento 2m – 1 bits.

• Se β não é um elemento primitivo de GF(2m), o código BCH resultante é chamado de código BCH não primitivoe as suas palavras-código têm comprimento igual à ordem de β.

• Se b = 0, a primeira das (δ - 1) potências de β será β1 = β, ⇒ código BCH no sentido estrito.

• Se b ≠ 0, ⇒ código BCH no sentido amplo.

10

Códigos BCH Binários Primitivos

Para qualquer m ≥ 3 e t ≤ 2m − 1, existe um código BCH com os seguinte parâmetros:

n = 2m − 1,n − k ≤ mt,dmin ≥ 2t + 1

O polinômio gerador do código, g(x), é o polinômio de menor grau sobre GF(2) contendo

como raízes, onde α é um elemento primitivo de GF(2m)

t232 ,,,, αααα L

Elementos de GF(24)

Decodificação de Códigos BCH

1. Computar as síndromes S = (S1, S2, ..., S2t) a partir de r(x)

2. Determinar σ(x) a partir de S1, S2, ..., S2t

3. Determinar as localizações dos erros, β1, β2, ..., βυencontrando as raízes de σ(x) e corrigir os erros em r(x)

Códigos BCH Primitivos sobre GF(q)

Seja α um elemento primitivo em GF(qm ).O polinômio gerador, g(x), de um código BCH q-ário primitivo corretor de t erros é o polinômio de menor grau sobre GF(q) contendocomo raízes. Seja φi(x) o polinômio minimal de αi, 1 ≤ i ≤ 2t. Então,

g(x) = LCM{φ1(x), φ2(x), ..., φ2t(x)}

t232 ,,,, αααα L

11

Códigos de Reed-Solomon

Um código de Reed-Solomon (ou código RS) éum código BCH primitivo (não binário) de comprimento n = q – 1 sobre GF(q). O polinômio gerador desse código tem a forma

onde α é um elemento primitivo de GF(q), d é a distância mínima do código e gi ∈ GF(q)

( ) ( )( ) ( )tt

t

t

xxgxgxggxxxxg

21212

2210

22

+++++=−−−=

−−L

L ααα

Desempenho de Códigos RS sobre GF(26) comn = 31, considerando modulação 32-FSK

Desempenho de Códigos RS sobre GF(26) comn = 31, considerando modulação 32-FSK

Desempenho de Códigos RS com R = 7/8

12

Desempenho de Códigos RS com n = 64 Desempenho de Códigos RS com n = 31 e Modulação BPSK

Decodificador de Códigos BCH q-ários Desempenho de Códigos de Reed-Solomon