Código Reed-Solomon

Propaganda
Códigos de Blocos: Código Reed-Solomon
Reed
Universidade Federal de Goiás (UFG)
Escola de Engenharia Elétrica e de Computação (EEEC)
Bruno Lessa, Carlos Alberto, Cássio Rubens, Eduardo Cavalcante, Ítalo Milhomem
Organizador da Exposição: Prof. Dr. Getúlio Antero de Deus Júnior
Introdução:
Os códigos Reed-Solomon, criados em 1960 por Irving S. Reed e Gustave Solomon, são um subconjunto dos blocos lineares BCH [1, 2]. São cíclicos e
podem ser construídos de forma a corrigir erros múltiplos. São usados em telecomunicações, tanto em meios de armazenamento, como em compact
disc (CD), assim como em transmissões distantes, como no caso do satélite Voyager 2. Sua vantagem é corrigir um elevado número de erros dentro de
uma mesma palavra [1].
O código Reed-Solomon:
Um código Reed-Solomon é especificado com RS (n, K, t), onde n é o número de símbolos de saída, k é o número de símbolos de entrada, e t é a
capacidade de correção do código. Assim, esse código pode corrigir até t símbolos errados em uma palavra código, onde 2t = n – k, como mostra a
Figura 1 [1].
Figura 1: Estrutura de um dado codificado com código Reed-Solomon
Reed
[1].
Como exemplo, para o código Reed-Solomon (255, 223, 16)
16 com símbolos de 8 bits, cada palavra código possui um comprimento de 255 bytes dos
quais 223 são dados e 32 são bytes de paridade. Nos códigos Reed-Solomon, os bytes de paridade correspondem a 2t, onde t é a capacidade de
correção do código; neste caso t = 16 [1]. Desse modo, o decodificador pode corrigir até 16 erros na sequência de 255 bytes. O comprimento máximo
da palavra-código n é definido em função do tamanho dos símbolos em bits, ou seja, n = 2n – 1 [1, 3]. Neste exemplo, temos os símbolos de uma
palavra-código com s = 8 e, portanto, o comprimento máximo da palavra-código é 255 [1].
As palavras-códigos Reed-Solomon são geradas no codificador através de um polinômio gerador. No processo de decodificação, o decodificador de
Reed-Solomon procura identificar a posição e a magnitude de até t erros e corrigi-los [1]. A decodificação é realizada em dois passos: encontrar o
localizador polinomial e as raízes deste polinômio. Para encontrar o localizador polinomial, é possível usar o algoritmo de Euclides ou Berlekamp-Massey
[1, 3]. Para encontrar as raízes do polinômio, utiliza-se o algoritmo de busca de Chiem. A Figura 2(a) mostra o método para codificação Reed-Solomon e
a Figura 2(b) mostra o fluxo de execução do módulo de decodificação do código Reed-Solomon [3].
Figura 2: (a) Codificação de Reed-Solomon;
Solomon; (b) Fluxo de execução do módulo de decodificação Reed-Solomon
Reed
[2].
Aplicação:
Os códigos Reed-Solomon são utilizados para decodificar os erros em um CD. CD´s de áudio usam o Red Book Standard, que foi desenvolvido em 1980
pela Sony e Philips para padronizar como as informações em um disco seriam armazenadas. Para um som ser considerado “qualidade CD” , ele deve ter
uma taxa de amostragem de 44,1 KHZ em dois canais, com uma taxa de dados de 1.441.200 bits/seg. Os dados de áudio são divididos em 6 quadros
de 16 bits. Esses dados são então convertidos a 24 quadros de 8 bits [3].
Os CD´s players usam o CIRC (do inglês: Cross-Interleaved
Interleaved Reed-Solomon Coding) [2, 3]. Este começa tomando os 24 quadros de 8 bits e codificandoos em um RS (28, 24, 2). Os dados são intercalados. Este tipo de processo distribui a informação destes quadros para mais de 109 quadros. Isso
permite que erros de uma parte do disco sejam distribuídos em pequenas partes do disco, permitindo uma maior correção de erros e impedindo que um
bloco inteiro de informações seja danificado. Após a intercalação dos dados, os dados são codificados em um código RS (32, 28, 2) (ver Figura 3) [3].
O primeiro código do processo [ RS(28,24,2) ] é chamado de nível C2 de codificação. Ele corrige erros devido ao estado físico do CD e da maneira com
a qual ele foi gravado. O segundo código [ RS(32,28,2) ] é chamado de nível C1 de codificação e corrige erros devido a impressões digitais e arranhões
existentes no CD [3].
Figura 3: Padrão para intercalar os dados no CIRC [3].
Conclusão
Os códigos de Reed-Solomon são importantes, pois possuem alta capacidade de correção de erros dentro de um mesmo dado. São comercialmente
conhecidos por sua aplicação em CD’s, em que é usado o código CIRC, garantindo música de alta qualidade de forma consistente e confiável.
Referências bibliográficas:
1. PEREIRA, Z. C. Esquema de Proteção Desigual Usando Códigos Reed-Solomon para Dados Compactados com LZSS. Universidade Tecnológica
Federal do Paraná, maio 2007.
2. ALMEIDA, G. M. Algoritmo de Reed-Solomon Visando Implementação em SOC. Pontifícia Universidade Católica do Rio Grande do Sul. Disponível em:
http://www.inf.pucrs.br/~eduardob/pucrs/research/students/GabrielAlmeida/PNM/renovacao/relatorio_
br/~eduardob/pucrs/research/students/GabrielAlmeida/PNM/renovacao/relatorio_132870_2005_3.pdf. Acesso: 17 de junho de
2010.
3. JOYNER, David. Reed-Solomon Codes and CD Encoding. United States Naval Academy, abril de 2002.
Download