Códigos cíclicos - Parte 2 Luis Henrique Assumpção Lolis 22 de novembro de 203 Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2
Conteúdo Cálculo da síndrome e computação de erros 2 Decodificando códigos cíclicos 3 Códigos cíclicos perfeitos 4 Códigos reduzidos 5 Códigos BCH e Reed-Solomon Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 2
Sumário Cálculo da síndrome e computação de erros 2 Decodificando códigos cíclicos 3 Códigos cíclicos perfeitos 4 Códigos reduzidos 5 Códigos BCH e Reed-Solomon Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 3
s = r H T r(x) = r 0 + r X + r 2 X 2 +... + r n X n Dividindo r(x) por g(x) r(x) = a(x)g(x) + s(x) () O resto s(x) é um polinômio de ordem n k ou menos. Os n k coeficientes são a síndrome s. Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 4
O resto da divisão Xs(X) por g(x) é síndrome de uma versão deslocada de r(x), r () (X): X i v(x) = q(x)(x n + ) + v (i) (X) (2) Xr(X) = r n (X n + ) + r () (X) (3) r () (X) = r n (X n + ) + Xr(X) (4) Dividindo os dois lados de (4) e aplicando () para r(x) e também a relação X n + = g(x)h(x): c(x)g(x)+ρ(x) = r n g(x)h(x)+x [a(x)g(x) + s(x)] (5) Sendo ρ(x) o resto resultante de dividir r () (X) por g(x). Rearranjando (5): Xs(X) = [c(x) + r n h(x) + Xa(X)] g(x) + ρ(x) Sendo assim: ρ(x) = s () (X) Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 5
A resto s (i) (X) da divisão X i s(x) pelo polinômio gerador g(x) é a síndrome de r (i) (X) sendo o deslocamento de número i de r(x) Dessa maneira para obter a síndrome s (i) (X) de r (i) (X) basta deslocar o registro da síndrome i vezes. Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 6
ρ é a síndrome de r (n k) (X) X (n k) r(x) = a(x)g(x) + ρ(x) (6) X (n k) r(x) = b(x)(x n + ) + r (n k) (X) (7) Combinando (6) e (7) e também a relação X n + = g(x)h(x): r (n k) (X) = [b(x)h(x) + a(x)] g(x) + ρ(x) Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 7
A síndrome é também o resto da divisão do erro por g(x) Sendo v(x) a palavra código transmitida de tal maneira que; r(x) = v(x) + e(x) (8) Unindo () com (8), obtemos: e(x) = [a(x) + b(x)]g(x) + s(x) (8) Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 8
Propriedades A síndrome do polinômio da palavra recebida é a síndrome do polinômio do erro. 2 Se s(x) é a síndrome da palavra recebida r(x), então a síndrome de Xr(X) que é um deslocamento cíclico de r(x), é Xs(X) Xr(X) = Xv(X) + Xs(X) 3 O polinômio da síndrome s(x) é idêntico ao polinômio do erro e(x) se os bits de erros estiverem dentro dos (n k) bits de verificação de paridade da palavra código recebida. Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 9
Circuito de cálculo da síndrome Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 0
Exercı cio Desenhe de ca lculo de sı ndrome para g(x) = + X + X 3. A seque ncia recebida e r = (0000) Identifique o conteu do dos registros em cada etapa e a sı ndrome identificada. Agora calcule a palavra co digo usando o me todo da divisa o polinomial. Luis Henrique Assumpc a o Lolis Co digos cı clicos - Parte 2
Exercı cio Desenhe de ca lculo de sı ndrome para g(x) = + X + X 3. A seque ncia recebida e r = (0000) Identifique o conteu do dos registros em cada etapa e a sı ndrome identificada. Agora calcule a palavra co digo usando o me todo da divisa o polinomial. Ciclo Entrada Valor 000 Luis Henrique Assumpc a o Lolis Co digos cı clicos - Parte 2
Exercı cio Desenhe de ca lculo de sı ndrome para g(x) = + X + X 3. A seque ncia recebida e r = (0000) Identifique o conteu do dos registros em cada etapa e a sı ndrome identificada. Agora calcule a palavra co digo usando o me todo da divisa o polinomial. Luis Henrique Assumpc a o Lolis Co digos cı clicos - Parte 2 Ciclo Entrada 0 Valor 000 000
Exercı cio Desenhe de ca lculo de sı ndrome para g(x) = + X + X 3. A seque ncia recebida e r = (0000) Identifique o conteu do dos registros em cada etapa e a sı ndrome identificada. Agora calcule a palavra co digo usando o me todo da divisa o polinomial. Luis Henrique Assumpc a o Lolis Co digos cı clicos - Parte 2 Ciclo Entrada 2 0 Valor 000 000 00
Exercı cio Desenhe de ca lculo de sı ndrome para g(x) = + X + X 3. A seque ncia recebida e r = (0000) Identifique o conteu do dos registros em cada etapa e a sı ndrome identificada. Agora calcule a palavra co digo usando o me todo da divisa o polinomial. Luis Henrique Assumpc a o Lolis Co digos cı clicos - Parte 2 Ciclo Entrada 2 3 0 Valor 000 000 00 0
Exercı cio Desenhe de ca lculo de sı ndrome para g(x) = + X + X 3. A seque ncia recebida e r = (0000) Identifique o conteu do dos registros em cada etapa e a sı ndrome identificada. Agora calcule a palavra co digo usando o me todo da divisa o polinomial. Luis Henrique Assumpc a o Lolis Co digos cı clicos - Parte 2 Ciclo Entrada 2 3 4 0 0 Valor 000 000 00 0 0
Exercı cio Desenhe de ca lculo de sı ndrome para g(x) = + X + X 3. A seque ncia recebida e r = (0000) Identifique o conteu do dos registros em cada etapa e a sı ndrome identificada. Agora calcule a palavra co digo usando o me todo da divisa o polinomial. Luis Henrique Assumpc a o Lolis Co digos cı clicos - Parte 2 Ciclo Entrada 2 3 4 5 0 0 Valor 000 000 00 0 0 0
Exercı cio Desenhe de ca lculo de sı ndrome para g(x) = + X + X 3. A seque ncia recebida e r = (0000) Identifique o conteu do dos registros em cada etapa e a sı ndrome identificada. Agora calcule a palavra co digo usando o me todo da divisa o polinomial. Luis Henrique Assumpc a o Lolis Co digos cı clicos - Parte 2 Ciclo Entrada 2 3 4 5 6 0 0 0 Valor 000 000 00 0 0 0
Exercı cio Desenhe de ca lculo de sı ndrome para g(x) = + X + X 3. A seque ncia recebida e r = (0000) Identifique o conteu do dos registros em cada etapa e a sı ndrome identificada. Agora calcule a palavra co digo usando o me todo da divisa o polinomial. Luis Henrique Assumpc a o Lolis Co digos cı clicos - Parte 2 Ciclo Entrada 2 3 4 5 6 7 0 0 0 0 Valor 000 000 00 0 0 0 0
Exercı cio Desenhe de ca lculo de sı ndrome para g(x) = + X + X 3. A seque ncia recebida e r = (0000) Identifique o conteu do dos registros em cada etapa e a sı ndrome identificada. Agora calcule a palavra co digo usando o me todo da divisa o polinomial. Luis Henrique Assumpc a o Lolis Co digos cı clicos - Parte 2 Ciclo Entrada 2 3 4 5 6 7 8 0 0 0 0 - Valor 000 000 00 0 0 0 0 00
Exercı cio Desenhe de ca lculo de sı ndrome para g(x) = + X + X 3. A seque ncia recebida e r = (0000) Identifique o conteu do dos registros em cada etapa e a sı ndrome identificada. Agora calcule a palavra co digo usando o me todo da divisa o polinomial. Luis Henrique Assumpc a o Lolis Co digos cı clicos - Parte 2 Ciclo Entrada 2 3 4 5 6 7 8 9 0 0 0 0 - Valor 000 000 00 0 0 0 0 00 00
Com divisão polinomial X 2 +X + X 3 +X + X 5 +X 4 +X 2 X 5 +X 3 +X 2 +X 4 +X 3 +X 4 +X 2 +X X 3 +X 2 X X 3 +X X 2 + Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 2
Circuito alternativo de cálculo de síndrome Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 3
Circuito alternativo de cálculo de síndrome O resultado da síndrome é s (n k) (X), que é a síndrome de r (n k) (X) Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 4
Sumário Cálculo da síndrome e computação de erros 2 Decodificando códigos cíclicos 3 Códigos cíclicos perfeitos 4 Códigos reduzidos 5 Códigos BCH e Reed-Solomon Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 5
Projeto de decodificação de códigos cíclicos Cálculo da síndrome. Associação da síndrome à um padrão de erro. Correção do erro. Em códigos lineares é uma tabela que é usada para associação síndrome ao erro. Devido as propriedades algébricas dos códigos cíclicos, existe uma maneira cíclica de corrigir um erro. Existe uma série de etapas que vão atualizando r(x) e s(x), e se ao final dessas etapas o valor da síndrome s (X) for 0, então o padrão de erro era corrigível e r (X) no final é a palavra código enviada. Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 6
Decodificando r(x): Uma vez calculada s(x), verifica-se se corresponde a um erro corrigível e(x) = e 0 + e + X +... + e n X n Se e n = 0, então se desloca r(x), r () (X) = r n + r 0 X +... + r n 2 X n e também se desloca a síndrome s () (X) = s n k + s 0 X +... + s n k 2 X (n k ) Se e n = então se adiciona r n en. O resultado é um polinômio recebido modificado: r (X) = r 0 +r X +...+r n n 2X n 2 +(r n en )X n E se soma a síndrome de e (X) = X n com a síndrome de origem s(x). Essa soma é igual a síndrome de r (X), que não precisa ser recalculada. Agora se desloca r (X): r () (X) = (r n en ) + r 0 X +... + r n n 2X n E continua se verificando se o ultimo dígito de e(x) é igual a um até se completar os n deslocamentos. Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 7
Algoritmo de decodificação Formar a síndrome, deslocando o vetor recebido inteiramente no circuito de registro de síndrome. 2 A síndrome é lida no detector, e se houver um padrão de erro com um erro no último bit a direita, esse erro tem de ser corrigido. Senão o bit a extrema direita da palavra código é considerado correto. 3 O primeiro símbolo recebido é lido para fora do buffer enquanto o registro da síndrome é deslocado uma vez. A saída do detector corrige o símbolo se ele continha erro. A saída do detector também muda a síndrome. 4 A nova síndrome formada na fase 3 é usada para verificar se o segundo símbolo recebido (agora na extrema direita) está errado. 5 O decodificador decodifica símbolo por símbolo até que o vetor inteiro recebido é lido para fora do buffer. Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 8
Algoritmo de decodificação Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 9
Exemplo de decodificador cíclico Considere o código (7, 4) com g(x) = + X + X 3 Qual é a distância mínima do código? Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 20
Exemplo de decodificador cíclico Considere o código (7, 4) com g(x) = + X + X 3 Qual é a distância mínima do código? d min = 3 Quantos padrões de erro ele é capaz de corrigir? Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 20
Exemplo de decodificador cíclico Considere o código (7, 4) com g(x) = + X + X 3 Qual é a distância mínima do código? d min = 3 Quantos padrões de erro ele é capaz de corrigir? 7 com um bit de erro por padrão. Eles são os primeiros conjuntos complementares principais na tabela de decodificação. Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 20
Exemplo de decodificador cíclico Considere o código (7, 4) com g(x) = + X + X 3 Qual é a distância mínima do código? d min = 3 Quantos padrões de erro ele é capaz de corrigir? 7 com um bit de erro por padrão. Eles são os primeiros conjuntos complementares principais na tabela de decodificação. Montar a tabela com os padrões de erro corrigíveis e as possíveis síndromes: Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 20
Exemplo de decodificador cíclico Considere o código (7, 4) com g(x) = + X + X 3 Qual é a distância mínima do código? d min = 3 Quantos padrões de erro ele é capaz de corrigir? 7 com um bit de erro por padrão. Eles são os primeiros conjuntos complementares principais na tabela de decodificação. Montar a tabela com os padrões de erro corrigíveis e as possíveis síndromes: e(x) = [a(x) + b(x)]g(x) + s(x) Construindo o circuito calculador da síndrome e aplicando os padrões de erro na entrada. Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 20
Padrão de erro Syndrome Syndrome vector e(x) s(x) (s 0, s, s 2 ) e 6 (X) = X 6 s(x) = + X 2 (0) e 5 (X) = X 5 s(x) = + X + X 2 () e 4 (X) = X 4 s(x) = X + X 2 (0) e 3 (X) = X 3 s(x) = + X (0) e 2 (X) = X 2 s(x) = X 2 (00) e (X) = X s(x) = X (00) e 0 (X) = s(x) = (00) Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 2
A única síndrome necessária detectar é (0) onde se corrige o e 6, pois o erro e n = aparece em versões deslocadas de r(x). É só contar em que ponto do deslocamento ocorreu a síndrome (0), corrigir o erro e deslocar o que sobrou até n. Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 22
Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 23
Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 24
Sumário Cálculo da síndrome e computação de erros 2 Decodificando códigos cíclicos 3 Códigos cíclicos perfeitos 4 Códigos reduzidos 5 Códigos BCH e Reed-Solomon Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 25
Código cíclico de Hamming Um código de Hamming de tamanho 2 m, m 3 é gerado por um polinômio primitivo de grau m Exs: Com m = 3, n = 7. O polinômio (X 7 + ) tem dois polinômios primitivos de grau m = 3 g(x) = + X + X 3 g(x) = + X 2 + X 3 Sendo t = basta considerar um único erro no circuito para correção. Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 26
Código cíclico de Golay Golay (23,2) tem os seguintes polinômios geradores. g (X) = + X 2 + X 4 + X 5 + X 6 + X 0 + X g 2 (X) = + X + X 5 + X 6 + X 7 + X 9 + X A decodificação de um padrão de erro de único bit já não serve. Os decodificadores de armadilhamento de erro são aplicados: Decodificador de Kasami Decodificador de pesquisa sistemática Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 27
Sumário Cálculo da síndrome e computação de erros 2 Decodificando códigos cíclicos 3 Códigos cíclicos perfeitos 4 Códigos reduzidos 5 Códigos BCH e Reed-Solomon Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 28
Aplicados para identificação de erros no lugar de correção. Considere um código (n,k) que iremos reduzir em l bits: (n l, k l) Retirando o l bits de maior ordem iguais a zero das palavras código. Sem alterar a computação de checagem de paridade e de síndrome, os mesmos circuitos do código inicial podem ser utilizados. Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 29
Códigos de verificação de redundância cíclica- CRC Cyclic Redundancy Check - Bons para detecção, mas não para correção, pois são códigos reduzidos. Identifica na síndrome. Serve para o ARQ. É capaz de detectar os seguintes padrões de erro: (). Todas rajadas de erro de tamanho n k ou inferior. (2). Uma fração de erros de tamanho igual ou superior a n k +. (3). Todas as combinações de d m in (ou menos) erros. (4). Todos padrões de erros com um número ímpar de erros se o polinômio gerador g(x) tem um número par de coeficientes não nulos. Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 30
Padrões internacionais de CRC - Polinômios geradores k = 6 para CRC-2 e k = 8 para CRC-6(EUA) e o CRC-ITU Código Polinômio gerador n-k CRC-2 + X + X 2 + X 3 + X + X 2 2 CRC-6 (EUA) + X 2 + X 5 + X 6 6 CRC-ITU + X 5 + X 2 + X 6 6 Aplicações: (Bisync, Modbus, USB, ANSI X3.28, ZigBee, Wi-Fi,...) Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 3
Sumário Cálculo da síndrome e computação de erros 2 Decodificando códigos cíclicos 3 Códigos cíclicos perfeitos 4 Códigos reduzidos 5 Códigos BCH e Reed-Solomon Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 32
Códigos BCH - Bose-Chaudhuri-Hocquenghem m 3, t < (2 m )/2 n = 2 m k n mt d min 2t + BCH detecta t erros. Hamming podem ser considerados como códigos BCH. Da tabela BCH, quando t =, é um código de Hamming. Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 33
g(x) que corrige t erros em um código de tamanho 2 m é o polinômial de menor grau que tem como raízes α, α 3,, α 2t Se φ i (X) é o polinômio mínimo de α i então g(x) é o mínimo multiplo comum de φ (X), φ 2 (X),, φ 2t (X) Ex: m = 4, t = 2. O polinômio tem como raízes α, α 3 e os polinômios mínimos são φ (X) = + X + X 4, φ 3 (X) = + X + X 2 + X 3 + X 4 Então g(x) = MMC{φ (X), φ 3 (X)}, sendo assim g(x) = φ (X)φ 3 (X) = X 4 + X 6 + X 7 + X 8, é o polinômio gerador (5,7) de distância mínima d min = 5. Já se formos fazer t = 3 ele é MMC de g(x) = MMC{φ (X), φ 3 (X), φ 5 (X)}. Então g(x) = + X + X 2 + X 4 + X 5 + X 8 + X 0 e o código é (5,5), com d m in 7 Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 34
BCH m=6, n=63 Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 35
Códigos Reed-Solomon É um código não binário Trabalha com k símbolos de m bits na entrada e n = 2 m símbolos, ou seja m(2 m ) bits na saída. Usa propriedades algébricas que fazem definir o valor t, a capacidade de correção. Para uma capacidade de correção de t: Tamanho do bloco Tamanho da mensagem Tamanho da checagem de paridade Distância mínima n = 2 m símbolos k símbolos n k = 2t símbolos d min = 2t + símbolos Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 2 36