Códigos Cíclicos
-
Upload
wallef-januario -
Category
Documents
-
view
224 -
download
2
description
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