CÓDIGOS CORRETORES DE ERROS
CODIGOS BCH
Evelio M. G. Fernández - 2007
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 primitivo e 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.
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 ,,,,
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) contendo
como 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 ,,,,
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
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
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
Especificações para o CIRC
Comprimento máximo de surto corrigível
4000 bits (2.5 mm no disco)
Comprimento máximo de surto interpolável
12000 bits (8 mm)
Taxa de ocorrência de amostras interpoladas
Uma amostra a cada 10 horas para PB = 104. 1000 amostras por minuto para PB = 103
Amostras com erros não detectáveis (clicks)
Menor que uma a cada 750 amostras para PB = 103. Desprezível para PB ≤ 104.
Cross-Interleave Reed-Solomon Code
Codificador para Disco Compacto (CD)
6 pares de amostras (24 símbolos ou bytes)
Embaralha erros de byte detectáveis (mas não corrigíveis) para facilitar a interpolação
Para correção de surtos e padrões de erros que C1 não pode corrigir
Para correção da maior parte dos erros simples de byte aleatórios e a detecção dos surtos de erro mais longos
Decodificador para Disco Compacto (CD)
Efeito do Entrelaçamento
25