Académique Documents
Professionnel Documents
Culture Documents
Autores:
Alzemiro Henrique Lucas da Silva
Taciano Ares Rodolfo
Orientador:
Prof. Dr. Fernando Gehm Moraes
ii
ndice
1
INTRODUO............................................................................................................................ 1
1.1
1.2
1.3
1.4
MOTIVAO.............................................................................................................................. 2
OBJETIVOS ................................................................................................................................ 2
CONTRIBUIES ........................................................................................................................ 3
ORGANIZAO DO DOCUMENTO ............................................................................................... 3
PADRO OTN............................................................................................................................. 4
2.1 TAXAS DE TRANSMISSO .......................................................................................................... 4
2.2 ESTRUTURA DO FRAME G.709 OTN ......................................................................................... 5
2.3 OVERHEAD................................................................................................................................ 5
2.3.1 Alinhamento ....................................................................................................................... 5
2.3.2 OTU Overhead................................................................................................................... 6
2.3.3 ODU Overhead .................................................................................................................. 6
2.3.4 OPU Overhead................................................................................................................... 7
2.4 FEC .......................................................................................................................................... 7
iii
INTEGRAO .......................................................................................................................... 55
REFERNCIAS BIBLIOGRFICAS..................................................................................... 59
iv
ndice de Figuras
FIGURA 1 ESTRUTURA FRAME G.709 OTN. .......................................................................................5
FIGURA 2 CAMPOS DO ODU OVERHEAD............................................................................................6
FIGURA 3 ELEMENTOS DE UM CAMPO DESENVOLVIDO EM GF(2). ...................................................10
FIGURA 4 CIRCUITO LFSR GERADOR DO CAMPO GF(23), S0 ESTADO INICIAL................................13
FIGURA 5 CODIFICADOR REED-SOLOMON PARA RS(7,3). ................................................................15
FIGURA 6 DIAGRAMA DE BLOCOS DO DECODIFICADOR REED-SOLOMON..........................................17
FIGURA 7 MULTIPLICADOR GENRICO PARA GF(28)........................................................................24
FIGURA 8 ARQUITETURA DO CODIFICADOR DESENVOLVIDO.............................................................25
FIGURA 9 INCIO DO PROCESSO DE CODIFICAO. ............................................................................25
FIGURA 10 ENVIO DOS SMBOLOS DE PARIDADE...............................................................................26
FIGURA 11 ARQUITETURA DO DECODIFICADOR RS(255,239) DESENVOLVIDO. ................................28
FIGURA 12 ARQUITETURA DO BLOCO DESENVOLVIDO PARA O CLCULO DA SNDROME...................29
FIGURA 13 FUNCIONAMENTO DO MDULO DE CLCULO DA SNDROME. ..........................................30
FIGURA 14 IMPLEMENTAO DO MDULO BERLEKAMP-MASSEY....................................................33
FIGURA 15 FUNCIONAMENTO DA PARTE INFERIOR DO MDULO BERLEKAMP-MASSEY....................34
FIGURA 16 FUNCIONAMENTO DA PARTE SUPERIOR DO MDULO BERLEKAMP-MASSEY. ..................35
FIGURA 17 MQUINA DE CONTROLE DO MDULO BERLEKAMP-MASSEY.........................................36
FIGURA 18 CLCULO DO POLINMIO AVALIADOR DE ERROS. ...........................................................36
FIGURA 19 ARQUITETURA DO MDULO CHIEN SEARCH LOCATION..................................................37
FIGURA 20 ARQUITETURA DO MDULO CHIEN SEARCH VALUE. ......................................................38
FIGURA 21 ESTRUTURA DO MDULO FORNEY ALGORITHM. ............................................................39
FIGURA 22 FUNCIONAMENTO DO LTIMO ESTGIO DE DECODIFICAO. .........................................40
FIGURA 23 VISO GERAL DO FUNCIONAMENTO DO DECODIFICADOR................................................41
FIGURA 24 ESTRUTURA DE SIMULAO DO CODIFICADOR E DECODIFICADOR. .................................43
FIGURA 25 ARQUIVOS TEXTO SUBFRAME.TXT E ERROR.TXT.............................................................44
FIGURA 26 VERIFICAO DO FEC GERADO PELO CODIFICADOR. .....................................................44
FIGURA 27 ERROS DO SUB-FRAME CORRIGIDOS NO DECODIFICADOR................................................45
FIGURA 28 SIMULAO COM ATRASO DO CODIFICADOR RS NO DISPOSITIVO XCV4FX100-10. ......46
FIGURA 29 INTERFACE DE COMUNICAO DO MDULO MB_TARGET. .............................................48
FIGURA 30 INTERFACE DE COMUNICAO DO MDULO SLAVE.........................................................48
FIGURA 31 EXECUTANDO O TERMINAL VISUAL STUDIO 2005 COMMAND PROMPT..........................50
FIGURA 32 ESTRUTURA DE TESTE PARA VALIDAO EM HARDWARE. ..............................................50
FIGURA 33 INTERFACE DE COMUNICAO DO MDULO FSM_IN. ...................................................51
FIGURA 34 MQUINA DE ESTADOS FINITA DO MDULO FSM_IN.....................................................51
FIGURA 35 FEC GERADO PELO CODIFICADOR...................................................................................52
FIGURA 36 ERROS DO SUB-FRAME CORRIGIDOS PELO DECODIFICADOR. ...........................................52
FIGURA 37 CAMINHO CRTICO DO SUB-MDULO BERLEKAMP_MASSEY. .............................................53
FIGURA 38 INTEGRAO DOS MDULOS DO TRANSPONDER...............................................................55
FIGURA 39 MDULOS DECODER RS E ENCODER RS........................................................................56
ndice de Tabelas
TABELA 1 TAXAS DE TRANSMISSO PREVISTAS PELA RECOMENDAO G.709. ...............................4
TABELA 2 DIVISO DO FRAME EM SUB-FRAMES. ................................................................................8
TABELA 3 POLINMIOS PRIMITIVOS.................................................................................................11
TABELA 4 CONSTRUO DO CAMPO GF(23).....................................................................................12
TABELA 5 ADIO E MULTIPLICAO SOBRE O CAMPO GF(23)........................................................13
TABELA 6 CONTEDO DOS REGISTRADORES DO CIRCUITO LFSR DURANTE A CODIFICAO............16
TABELA 7 - FREQNCIA MXIMA DE OPERAO DE TODOS OS MDULOS E SUB-MDULOS...............53
TABELA 8 OCUPAO DE REA NO FPGA VIRTEX4 XCV4FX100. .................................................54
vi
Lista de Siglas
APS/PCC
ATM
CD
CRC
DMA
DVD
ECC
FAS
FEC
FPGA
FTFL
GAPH
GCC
GF
GFP
HD
ITU-T
JC
LFSR
LUT
MFAS
NJO
ODU
OPU
OTN
OTU
PJO
PM
PSI
RS
SDH
SM
SONET
TCM
WAN
vii
1 Introduo
Observa-se, no cenrio mundial, uma crescente demanda por largura de banda e qualidade
de servio, principalmente em redes de longo alcance (WANs). Esta demanda evidenciada, cada
vez mais, pelo uso de tcnicas de transmisso de voz e vdeo em tempo real, o que proporciona
economia e aumento de rendimento para diversas instituies.
A crescente necessidade de banda incentivou a criao da recomendao G.709 OTN
(Optical Transport Network), pela ITU-T (International Telecommunications Union
Telecomunications), que define interfaces de rede para enlaces de fibra ptica de at 40Gbps [1]. A
recomendao G.709 foi construda a partir da experincia e dos benefcios dos protocolos SONET
e SDH, para proporcionar a base para as redes de fibra ptica da prxima gerao [2]. Porm,
alguns elementos foram adicionados para aumentar o seu desempenho e reduzir custos. O elemento
mais importante e mais justificativo para a criao desta nova recomendao a incluso de um
mecanismo de controle de erros mais robusto, o que aumenta o desempenho e possibilita enlaces
mais longos de fibra ptica.
Codificao de deteco de erros um mecanismo onde o receptor capaz apenas de
detectar a presena de erros em uma mensagem recebida. Coletivamente, a codificao de deteco
de erros e a codificao de correo de erros, so chamadas de codificao de controle de erros. A
codificao de controle de erros tem um papel significativo na evoluo dos sistemas de
telecomunicaes e de armazenamento digital.
A recomendao G.709 define um frame dividido em trs campos: overhead, payload e
FEC. O campo overhead prov funes de monitoramento, gerenciamento e proteo de roteamento
em canais pticos, o campo payload pode transportar dados teis provenientes de diversos
protocolos, e o campo FEC possui informaes redundantes codificadas para realizar a correo de
erros no momento da recepo da mensagem. A codificao de canal adotada pela recomendao
G.709 o Reed-Solomon (RS), que possui excelentes propriedades de correo de erros e usado
na maioria dos sistemas que aplicam correo de erro na atualidade.
O algoritmo RS utiliza o conceito de campos finitos, tambm conhecidos como campos de
Galois, e seus algoritmos funcionam basicamente atravs de clculos sobre polinmios, uma vez
que as mensagens so vistas como polinmios pertencentes a um campo finito pr-determinado.
Cdigos Reed-Solomon pertencem a uma classe de cdigos corretores de erro, chamada de cdigos
cclicos no binrios [3], pois sua construo orientada a smbolos de m bits, onde m pode ser
qualquer inteiro positivo maior que 2, normalmente 8 para aplicaes de comunicao de dados,
onde cada smbolo representa um byte.
O algoritmo RS serve tanto para a correo de alguns bits com erro em lugares aleatrios,
quanto para a correo de erros em rajada, desde que a quantidade de smbolos com erro no
ultrapasse a capacidade de correo do cdigo. Desta forma, possvel melhorar significativamente
a relao sinal rudo de um canal, inclusive aumentando a distncia de um enlace sem que seja
necessria regenerao [4].
Cdigos RS tm sido utilizados no somente em sistemas de transmisso de dados, mas
tambm em comunicao wireless, sistemas de armazenamento de grandes volumes de dados, tais
como Hard Disk (HD), Compact Disc (CD) e Digital Video Disc (DVD), e tambm em TV digital e
sistemas espaciais.
1.1
Motivao
Objetivos
Este trabalho tem como principal objetivo desenvolver uma arquitetura de codificador e
decodificador Reed-Solomon, capaz de fazer deteco e correo de erro em um sistema de
transmisso de dados em alta velocidade, sendo completamente compatvel com a recomendao
G.709, para interoperabilidade com equipamentos de diferentes fabricantes. Os mdulos
desenvolvidos devem ser capazes de operar em conjuno com o framer, trabalho que est sendo
desenvolvido paralelamente, responsvel por fazer o alinhamento e a montagem dos frames OTN.
Outro importante objetivo do presente trabalho colocar em prtica alguns dos
conhecimentos adquiridos ao longo do curso, tais como estruturas algbricas para a construo dos
cdigos, redes de comunicao dados, arquiteturas de sistemas computacionais, desenvolvimento
em linguagem de descrio de hardware e prototipao em FPGAs.
1.3
Contribuies
Este trabalho prope o desenvolvimento de uma arquitetura de Reed-Solomon capaz de
realizar a deteco e correo de erros de acordo com o padro OTN. A arquitetura desenvolvida
baseada nas vantagens e desvantagens das implementaes propostas em diversos artigos sobre o
assunto.
As principais contribuies deste trabalho se do no estudo das diversas arquiteturas
existentes que implementam o algoritmo RS em hardware e no desenvolvimento de uma arquitetura
que satisfaz os requisitos de desempenho de um sistema de transmisso de dados em 10.7 Gbps,
aplicando paralelismo e utilizando uma alta freqncia de operao.
1.4
Organizao do Documento
Este trabalho dividido em 8 captulos. Alm da presente introduo, h 2 captulos
tericos: um sobre o padro OTN e o outro sobre o algoritmo de Reed-Solomon, 3 captulos sobre o
projeto desenvolvido, um captulo de concluso e, por ltimo, as referncias bibliogrficas
utilizadas.
No captulo 2 feito um levantamento terico do padro OTN, pois a arquitetura alvo de
Reed-Solomon que desenvolvida ao longo deste trabalho deve ser compatvel com este padro.
Neste captulo apresentada a estrutura do frame OTN, um resumo sobre as funes dos subcampos que compem o frame, bem como uma breve explicao de como realizada a correo de
erros neste padro. O captulo 3 aborda a teoria de campos finitos utilizada na construo dos
cdigos Reed-Solomon, bem como os algoritmos de codificao e decodificao, explicados de
maneira terica.
No captulo 4 feito um pequeno levantamento bibliogrfico sobre as implementaes
existentes de Reed-Solomon em hardware que puderam ser encontradas na literatura, onde so
discutidas as vantagens e desvantagens de cada uma destas implementaes. Neste captulo tambm
apresentamos os mdulos desenvolvidos atravs de esquemticos e formas de onda, justificando
tambm a escolha da arquitetura que foi desenvolvida. O captulo 5 trata da validao dos mdulos
tanto em simulao quanto em hardware, utilizando uma FPGA como arquitetura alvo. No captulo
5 tambm so apresentados os resultados obtidos com o presente trabalho. O captulo 6 apresenta
alguns dados sobre a integrao com o framer, mdulo que faz a interface com a rede de fibra
ptica. Para finalizar, no captulo 7 discutiremos as concluses obtidas pelo grupo ao trmino do
trabalho, bem como os trabalhos futuros que podero ser realizados.
2 Padro OTN
O padro OTN inclui uma srie de recomendaes criadas a partir da necessidade de
aumentar o desempenho e padronizar o funcionamento das redes de comunicao de dados em fibra
ptica. A ITU-T define uma rede OTN como um conjunto de elementos de redes pticas,
conectados atravs de enlaces de fibra ptica, capazes de prover funcionalidades de transporte,
multiplexao, roteamento, gerenciamento, superviso e sobrevivncia de canais pticos,
transportando sinais de diversos protocolos.
Este trabalho tem como foco a recomendao G.709 do padro OTN, que define as
interfaces para o transporte de dados em redes pticas, sem especificar o comportamento eltrico e
mecnico do padro. Esta recomendao define principalmente a estrutura do frame que trafega na
rede, as taxas de transmisso suportadas pelo padro e a definio da codificao de canal, que o
foco do presente trabalho.
A principal vantagem do padro OTN em relao aos seus antecessores, SONET e SDH,
reside justamente na melhoria das tcnicas de correo de erro, que permitem enlaces mais longos,
reduo na potncia de transmisso e uma melhora significativa na taxa de erros de um canal.
Outras vantagens que tornam este padro mais evoludo em relao aos anteriores so: a
transparncia no transporte de diferentes protocolos e algumas melhorias realizadas para facilitar o
gerenciamento de canais ticos. A nica desvantagem que pode ser citada a sua maior
complexidade de implementao [4].
2.1
Taxas de Transmisso
A recomendao G.709 oferece atualmente trs diferentes taxas de transmisso: OTU-1,
OTU-2 e OTU-3. Essas velocidades so derivadas das taxas j existentes nos padres SONET e
SDH. A Tabela 1 lista as taxas de transmisso de acordo com a interface G.709 e a interface
correspondente em SONET e SDH [5].
Tabela 1 Taxas de Transmisso Previstas Pela Recomendao G.709.
Interface
Taxa de
Interface
G.709
Transmisso
Total
OTU-1
2.666 Gbps
OC-48
STM-16
2.488 Gbps
OTU-2
10.709 Gbps
OC-192
STM-64
9.953 Gbps
OTU-3
43.018 Gbps
OC-768
STM-256
39.813 Gbps
Interface
Taxa de
2.2
e FEC. Dois destes campos, overhead e payload, j faziam parte dos protocolos SONET e SDH. A
novidade do padro OTN a incluso de um campo exclusivo para FEC, pois seus antecessores
utilizavam apenas alguns bytes do overhead para realizar esta tcnica, o que limitava a capacidade
de correo de erro.
A Figura 1 apresenta a estrutura detalhada do frame G.709 OTN, destacando seus campos
e ilustrando sua organizao em linhas e colunas.
Overhead
As sesses a seguir apresentaro uma breve explicao sobre os campos que compem o
alguns campos do overhead de acordo com seu valor. O sinal de alinhamento (FAS) reconhecido
pelo valor 0xF6F6F6282828, e a nica parte do pacote que enviada sem a tcnica de
embaralhamento (scrambling). O propsito da tcnica de embaralhamento impedir longos pulsos
de 0s ou 1s, permitindo a regenerao do clock e perodos mais longos de transmisso sem
alinhamento.
O receptor precisa achar o incio do frame antes de comear a processar os dados de
controle, e ainda deve ter a capacidade de identificar ausncia de sinal, ausncia de frame e perda de
frame.
2.3.2 OTU Overhead
OTU significa unidade de transporte do canal ptico, do ingls Optical channel Transport
Unit. Este campo prov funes de superviso entre dois pontos conectados por um nico canal
ptico, que possuem em suas extremidades elementos chamados de 3R (Regenerao,
Reformatao e Retemporizao), responsveis pela regenerao do sinal. Est localizado no
primeiro frame, entre as colunas 8 e 14.
O OTU overhead consiste em um campo de trs bytes para monitoramento de sesso (SM),
dois bytes para o campo GCC0 (General Communication Channel 0), utilizado para troca de
mensagens entre duas terminaes OTU, e um campo de dois bytes reservado para uso futuro. O
propsito do campo GCC ainda no est completamente definido, porm provavelmente ser usado
para gerenciamento de rede ou para sinalizao completa de protocolos como o G-MPLS (Generic
Multi Protocol Label Switching).
2.3.3 ODU Overhead
O campo ODU overhead est localizado entre as colunas 1 e 14, nos frames 2, 3 e 4 de um
multi-frame. A informao contida neste campo prov funes de gerenciamento de rede e
superviso fim-a-fim de canais pticos. A Figura 2 ilustra os campos que constituem o ODU
overhead.
A maioria dos campos contidos no ODU overhead traz uma funcionalidade chamada TCM
(Tandem Connection Monitoring). Existem seis campos TCM definidos no ODU overhead para uso
FEC
OVERHEAD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
1
2
3
4
5
12
13
14
15
16
2
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
...
239
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
PAYLOAD
240
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
...
FEC
255
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
importante observar que cada sub-frame corresponde a uma linha da tabela e possui um
clculo independente de FEC. Os dados so transmitidos na mesma ordem em que esto numerados
na tabela, ou seja, coluna por coluna.
3 Algoritmo de Reed-Solomon
Em 1960, Irving Reed e Gus Solomon publicaram o artigo Polymonial Codes Over
Certain Finite Fields, no Journal of the Society for Industrial and Applied Mathematics [6]. Este
artigo apresentou uma nova classe de cdigos corretores de erro que hoje so chamados de cdigos
Reed-Solomon. Estes cdigos tornaram-se muito teis devido a sua baixa complexidade e alto
poder de correo, e hoje so utilizados em diversas aplicaes de armazenamento e transmisso de
dados.
Os cdigos RS so representados na forma RS(n,k), onde n o nmero total de smbolos
em uma seqncia e k nmero de smbolos teis de uma seqncia. Outra varivel importante em
uma seqncia a capacidade de correo do cdigo, representada pela letra t. O total de smbolos
de paridade dado por 2t. A equao (1) apresenta algumas equivalncias na construo de cdigos
RS.
n = 2m 1
k = 2 m 1 2t
n k = 2t
(1)
A norma G.709 utiliza smbolos de 8 bits (m=8), o que resulta em n=255. O cdigo
utilizado o RS(255,239) (k=239). Portanto, existem 16 smbolos de paridade para cada 239 bytes
de dados, e a capacidade de correo de 8 smbolos em uma seqncia de 255 (t=8).
3.1
Campos Finitos
O processo de codificao e decodificao de cdigos no binrios utiliza matemtica de
campos finitos, tambm conhecidos como Campos de Galois (GF), em homenagem ao matemtico
francs variste Galois, que postulou a teoria de campos finitos. Para cada nmero primo, p, existe
um campo finito denominado GF(p) que contm p elementos. possvel estender GF(p) em um
campo contendo pm elementos, chamando de campo estendido de GF(p), denominado GF(pm). A
construo de cdigos RS utiliza somente campos estendidos, uma vez que se trata de um cdigo
no binrio [3].
O campo binrio GF(2) um subcampo do campo estendido GF(2m). Alm de 0s e 1s os
campos estendidos possuem uma srie de elementos representados por potncias de , onde n
apenas uma representao abstrata de um dos elementos do campo. Um conjunto infinito de
elementos pode ser formado iniciando-se com os elementos {0,1,,2,...}, onde o prximo elemento
da seqncia gerado atravs da multiplicao do ltimo elemento obtido por . Entretanto, para
obter um conjunto finito de elementos devemos impor as seguintes condies: um campo finito
deve conter apenas 2m elementos1 e deve ser fechado nas operaes de soma e multiplicao, isto ,
uma soma ou produto de um elemento do campo por qualquer outro elemento do campo, deve
resultar sempre em um elemento que tambm pertena ao campo. Desse modo, qualquer elemento
de um campo que tiver potncia maior que 2m-1, pode ser reduzido a um elemento com potncia
menor que 2m-1, conforme a equao (2).
(2
+n)
= (2
1)
(2)
n +1 = n +1
Portanto, podemos dizer genericamente que um campo definido por GF(2m) possui os
seguintes elementos:
GF (2 m ) = {0, 0 , 1 2 ,..., 2
(3)
Cada um dos 2m elementos de um campo GF(2m), pode ser representado por um polinmio
distinto com grau menor ou igual a m-1. Os coeficientes deste polinmio podem ser 0 ou 1, e o grau
do polinmio corresponde ao maior expoente com coeficiente igual a 1.
Considerando m=3, temos um campo denotado por GF(23). Este campo possui 8
elementos, sendo um elemento nulo e 7 elementos no nulos. A Figura 3 mostra o desenvolvimento
deste campo em funo do polinmio f(x)=x+x+1. O mtodo de obteno desta seqncia ser
apresentado ao longo desta seo.
Como podemos ver, o elemento denotado por 7 igual ao elemento 0, isto comprova a
equao (3), que mostra que um expoente mximo de em um campo 2m-2, no caso de m=3, o
campo deve terminar em 6.
Para gerar um campo finito necessrio utilizar uma classe especial de polinmios,
denominada de polinmios primitivos. Existe uma srie de regras matemticas que definem se um
10
m
3
4
5
6
7
8
9
10
11
12
m
13
14
15
16
17
18
19
20
21
22
1+X+X
1+X+X4
1+X2+X5
1+X+X6
1+X3+X7
1+X2+X3+X4+X8
1+X4+X9
1+X3+X10
1+X2+X11
1+X+X4+X6+X12
1+X+X3+X4+X13
1+X2+X3+X4+X8
1+X+X15
1+X+X3+X12+X16
1+X3+X17
1+X7+X18
1+X+X2+X5+X19
1+X3+X21
1+X2+X22
1+X+X23
f ( ) = 0
1+ + 3 = 0
(4)
3 = 1
Em campos binrios, a soma de dois elementos pode ser obtida atravs da operao XOR.
Portando, a seguinte igualdade vlida: -1=+1. Logo, a igualdade obtida na equao (4) pode ser
escrita da seguinte forma:
3 = 1+
11
(5)
Desta forma 3 definido como uma soma de elementos de menor ordem, e a partir de 3
possvel obter os demais elementos do campo atravs de multiplicaes por , como mostram as
equaes a seguir:
4 = 3 = (1 + ) = + 2
5 = 4 = ( + 2 ) = 2 + 3 = 2 + + 1
(6)
6 = 5 = ( 2 + + 1) = 3 + 2 + = 1 + + 2 + = 1 + 2
A equao (7) apresenta algumas definies feitas para os elementos de ordem menor
que 3.
0 =1
(7)
1 = x
2 = x2
A partir das definies apresentadas na equao (7) e das igualdades encontradas nas
equaes (5) e (6), possvel obter o campo completo, como mostra a Tabela 4.
Tabela 4 Construo do campo GF(23).
Potncia de
0
0
1
2
3
4
5
6
Polinmio
0
1
X
X2
X+1
X2+X
X2+X+1
X2+1
Valor
000
001
010
100
011
110
111
101
Decimal
0
1
2
4
3
6
7
5
12
X1
X0
S0=1
X2
X3
S0=0
S0=0
Uma importante propriedade dos campos finitos a definio das operaes de adio e
multiplicao, pois um campo finito deve ser fechado para estas operaes. A Tabela 5 apresenta os
resultados para as operaes de adio e multiplicao dos elementos do campo GF(23), somente
para elementos no nulos. A soma pode ser obtida atravs da operao XOR quando os elementos
encontram-se na representao binria, j o produto obtido atravs da soma dos expoentes de
mdulo (2m-1), neste caso mdulo 7.
Tabela 5 Adio e multiplicao sobre o campo GF(23).
0
0
1
2
3
4
5
6
0
3
6
1
5
4
2
3
0
4
0
2
6
5
Adio
2 3
6 1
4 0
0 5
5 0
1 6
3 2
0 4
5
2
1
6
0
0
3
4
6
3
2
0
0
1
2
5
0
4
3
1
0
0
1
2
3
4
5
6
0
1
2
3
4
5
6
Multiplicao
2 3 4
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 0
5 6 0 1
6 0 1 2
0 1 2 3
1
5
5
6
0
1
2
3
4
6
6
0
1
2
3
4
5
Codificao Reed-Solomon
g ( X ) = g 0 + g1 X + g 2 X 2 + ... + g 2t 1 X 2t 1 + X 2t
(8)
13
obteno de um polinmio gerador para o cdigo RS(7,3), que possui 4 smbolos de paridade, logo
seu polinmio gerador ter 4 razes.
g ( X ) = ( X )( X 2 )( X 3 )( X 4 )
g ( X ) = ( X 2 ( + 2 ) X + 3 )( X 2 ( 3 + 4 ) X + 7 )
g ( X ) = ( X 2 4 X + 3 )( X 2 6 X + 0 )
4
g ( X ) = X ( + ) X + ( +
4
10
g( X ) = X X + X X +
(9)
2
+ ) X ( + ) X +
(10)
g( X ) = ( X n )
(11)
n =0
(12)
(13)
14
atravs de registrador de deslocamento (LFSR), que consiste numa operao bastante simples. Por
este motivo, o processo de diviso no ser demonstrado neste trabalho.
A seqncia completa de um cdigo obtida atravs da soma do polinmio de mensagem
deslocado para a direita, 1X4+3X5+ 5X6, e do polinmio de paridade, apresentado na equao
(13), o que resulta no seguinte polinmio:
U(X ) = 0 + 2 X + 4 X 2 + 6 X 3 +1X 4 + 3 X 5 + 5 X 6
(14)
15
4) Nos ciclos de clock restantes (n-k), os smbolos de paridade contidos nos registradores so
deslocados para a sada e os valores dos registradores so zerados.
A tabela abaixo mostra o processo de gerao dos smbolos de paridade a partir do LFSR,
detalhando o contedo dos registradores durante o processo de entrada dos 3 smbolos de
mensagem utilizados anteriormente: 1 3 5.
Tabela 6 Contedo dos registradores do circuito LFSR durante a codificao.
Input Queue
1 3 5
1 3
1
-
Ciclo de Clock
0
1
2
3
Realimentao
5
0
4
-
(15)
Decodificao Reed-Solomon
e( X ) = e n X n
n =0
Supondo que para este exemplo o padro de erro da mensagem corrompida seja:
16
(16)
e( X ) = 0 + 0 X + 0 X 2 + 2 X 3 + 5 X 4 + 0 X 5 + 0 X 6
= (000) + (000) X + (000) X 2 + (100) X 3 + (111) X 4 + (000) X 5 + (000) X 6
(17)
Podemos dizer que um smbolo de paridade foi corrompido em 1 bit (2), e um smbolo da
mensagem foi corrompido em 3 bits (5). A seqncia recebida, r(X), pode ser representada como a
soma da seqncia transmitida e do padro de erro, como mostra a equao (18).
r ( X ) = U ( X ) + e( X )
(18)
(19)
Neste exemplo existem quatro incgnitas: duas localizaes de erro e dois valores de erro.
Esta uma diferena importante de cdigos no binrios em relao a cdigos binrios. Em cdigos
binrios basta achar a localizao do erro, enquanto em cdigos no binrios necessrio descobrir
tambm o valor do erro.
O processo de decodificao Reed-Solomon possui diversas etapas, tais como: o clculo da
sndrome, o clculo dos coeficientes do polinmio localizador de erro, o clculo das localizaes de
erro e dos valores dos erros. Como existe um tempo de processamento em cada uma das etapas da
decodificao, necessrio tambm um bloco de atraso para sincronizar a gerao dos valores de
erro com a mensagem recebida. Desta maneira podemos representar a arquitetura simplificada de
um decodificador Reed-Solomon da seguinte maneira:
Uma sndrome o resultado da verificao das razes do polinmio gerador como entrada
do polinmio r(x), para determinar se a mensagem recebida pertence ao conjunto de seqncias
vlidas de um cdigo. Se uma seqncia pertence ao conjunto de seqncias vlidas, o valor da
17
sndrome deve ser 0. Qualquer valor diferente de zero indica a presena de erros. Uma sndrome
composta de n-k smbolos. Logo o cdigo RS(7,3) possui sndromes de 4 smbolos.
A equao (20) mostra que qualquer seqncia vlida mltipla do polinmio gerador
(equao (10)), e por este motivo as razes de g(X) devem tambm ser razes de U(X).
U ( X ) = m( X ) g ( X )
(20)
Como r(X)=U(X)+e(X), o polinmio r(X) avaliado para cada raiz do polinmio g(X), s vai
retornar zeros se a seqncia recebida no conter erros. O clculo da sndrome pode ser descrito da
seguinte forma:
i = 1,..., n k
S i = r ( X ) X = i = r ( i )
(21)
(22)
S1 = 3
S 2 = r ( 2 ) = 0 + 4 + 8 + 6 + 14 + 13 + 17
S2 = 0 + 4 + 1 + 6 + 0 + 6 + 3
S2 = 5
(23)
S 3 = r ( 3 ) = 0 + 5 + 10 + 9 + 18 + 18 + 23
S3 = 0 + 5 + 3 + 2 + 4 + 4 + 2
S3 = 6
(24)
S 4 = r ( 4 ) = 0 + 6 + 12 + 12 + 22 + 23 + 29
S4 = 0 + 6 + 5 + 5 + 1 + 2 + 1
S4 = 0
(25)
Este exemplo confirma que existem erros em r(X), pois trs smbolos da sndrome so
diferentes de zero.
18
Supondo que existem v erros em uma seqncia, nas localizaes Xj1, Xj2,..., Xjv, o
polinmio de erro e(X) apresentado na equao (16) pode ser representado da seguinte maneira:
e ( X ) = e j1 X
j1
+ e j2 X
j2
+ ... + e jv X
jv
(26)
Para corrigir uma seqncia corrompida necessrio encontrar os valores dos erros,
denotados por ejl, e as localizaes dos erros, denotadas por Xjl, onde l=1,2,...,v. Primeiramente
definimos uma varivel correspondente a uma localizao de erro como l = jl. Em seguida,
obtemos os 2t smbolos da sndrome substituindo i no polinmio de erro e(X), para i=1,2,...,2t,
como mostra a equao (27). importante observar que as sndromes podem ser tanto avaliadas
atravs da mensagem recebida r(X), quanto atravs do padro de erro e(X), pois como mostra a
equao (18) o polinmio r(X) uma soma de U(X) e e(X), e a sndrome de U(X) sempre ser zero.
S1 = e( ) = e j1 1 + e j 2 2 + ... + e jv v
S 2 = e( 2 ) = e j1 12 + e j 2 22 + ... + e jv v2
(27)
( X ) = (1 + 1 X )(1 + 2 X )...(1 + v X )
( X ) = 1 + 1 X + 2 X 2 + ... + v X v
(28)
As razes de (X) so 1/1, 1/2,...,1/ v. Logo, o inverso das razes de (X) indicam as
localizaes de erro de do padro de erro e(X). Para determinar os coeficientes 1, 2,..., v,
necessrio utilizar uma tcnica denominada modelagem auto-regressiva, que utiliza uma matriz de
sndromes, onde as t primeiras sndromes so utilizadas para prever a prxima sndrome, como
mostra a equao abaixo:
19
S1
S
2
...
St
S2
S3
...
S t +1
...
S t t S t +1
... S t +1 t 1 S t + 2
=
... ... ... ...
... S 2t 1 1 S 2t
(29)
(30)
(31)
3 5 6 2
5
=
6
0 1
1 0 6 0
0
= 6
5
0
(32)
(X ) = 0 + 6 X + 0 X 2
(33)
As razes do polinmio (X) so as inversas das localizaes de erro. Uma vez que estas
razes so encontradas, as localizaes de erro sero conhecidas. As razes de (X) podem ser um
ou mais elementos do campo. Estas razes podem ser encontradas atravs de um teste exaustivo do
polinmio (X) para todos os elementos do campo, como mostram as equaes abaixo. Qualquer
elemento X que resultar em (X)=0 uma raiz e corresponde a uma localizao de erro.
20
( 0 ) = 0 + 6 + 0 = 6 0
( 1 ) = 0 + 7 + 2 = 2 0
( 2 ) = 0 + 8 + 4 = 6 0
( 3 ) = 0 + 9 + 6 = 0 ERRO
4
10
(34)
( ) = + + = 0 ERRO
( 5 ) = 0 + 11 + 10 = 2 0
( 6 ) = 0 + 12 + 12 = 0 0
Podemos ver que os elementos 3 e 4 so razes do polinmio (X). Isto significa que
existem erros nas localizaes 1=1/4=3 e 2=1/3=4, pois as razes de (X) equivalem ao inverso
das localizaes de erro.
3.3.3 Valores dos Erros
Um erro foi definido como ej1, onde o ndice j se refere a localizao e o ndice l identifica
a ordem do erro. Como cada valor de erro vinculado a uma localizao particular, a notao pode
ser simplificada para el. Para determinar os valores de erro associados as localizaes encontradas
na sesso anterior, 1=3 e 2=4, qualquer uma das quatro equaes de sndromes podem ser
utilizadas. A partir da equao (27) vamos usar S1 e S2.
S1 = e( ) = e1 1 + e2 2
S 2 = e( 2 ) = e1 12 + e2 22
(35)
1 2 e1 S1
2 2 e = S
2 2
1
2
3
4
e1 3
6
=
1 e2 5
(36)
Para resolver a equao (36) e encontrar os valores de erro, e1 e e2, podemos utilizar a
mesma tcnica apresentada na equao (32), como mostram as equaes a seguir:
1
3 4 S1 e1
6
=
1 S 2 e 2
=
4 5 5
5
21
(37)
j1
+ e2 X
j2
( X ) = 2 X 3 + 5 X 4
(38)
( X ) = r ( X ) + ( X )
(39)
Extraindo r(X) da equao (19) e (X) da equao (38), encontramos o seguinte polinmio
(X):
( X ) = 0 + 2 X + 4 X 2 + ( 0 + 2 ) X 3 + ( 6 + 5 ) X 4 + 3 X 5 + 5 X 6
(X ) = 0 + 2 X + 4 X 2 + 6 X 3 +1X 4 + 3 X 5 + 5 X 6
(40)
A partir das equaes (14) e (40) podemos constatar que (X)=U(X), o que indica que a
mensagem foi decodificada corretamente, aps a corrupo de dois smbolos.
3.4
Concluses
22
4 Arquitetura desenvolvida
No captulo anterior estudamos o algoritmo de Reed-Solomon com nfase na matemtica
de campos finitos e na demonstrao matemtica das etapas de codificao e decodificao. Porm,
na prtica, o algoritmo de Reed-Solomon implementado de uma maneira um pouco diferente, pois
no estamos mais no domnio de campos finitos e sim no domnio binrio. Por estar trabalhando no
nvel lgico e utilizando a matemtica de campos finitos foi necessrio desenvolver um
multiplicador especial. O projeto do multiplicador utilizado neste trabalho apresentado na seo
4.1.
O processo de codificao normalmente segue o mesmo princpio de registrador de
deslocamento apresentado na Figura 5. Entretanto, a arquitetura do decodificador pode variar
bastante dependendo das necessidades de cada projeto. Diversas propostas de implementao foram
estudadas para definir qual a mais adequada para este trabalho, sendo avaliadas as vantagens e
desvantagens de cada uma delas.
No padro OTN, um frame dividido em 16 sub-frames de 255 bytes, e cada sub-frame
corresponde a uma mensagem que deve ser codificada ou decodificada paralelamente, como foi
descrito no captulo 2. O mdulo responsvel por fornecer os dados para o decodificador deve ser
capaz de realizar esta tarefa a uma freqncia de 200Mhz e 64 bits por ciclo de clock. Portanto, a
replicao dos mdulos, tanto do codificador quanto do decodificador, obrigatria, pois cada
mdulo pode tratar um dado de 8 bits por ciclo.
4.1
23
uma multiplicao por constante, um multiplicador celular utiliza apenas 10. Para uma
multiplicao genrica utiliza-se 360 blocos lgicos para um multiplicador implementado em
tabela, enquanto que um celular utiliza 60.
Este multiplicador composto de uma matriz de m 2 clulas combinacionais idnticas
conectadas entre si em cadeia. Na Figura 7 observa-se a clula e o multiplicador juntamente com
suas linhas, ou registradores, de entrada e sada.
4.2
Codificador
(41)
25
O codificador possui duas entradas principais: valid e input. O sinal valid, quando em nvel
lgico 1, indica que os dados de 8 bits presentes no sinal input so dados vlidos e devem ser
utilizados para o clculo de paridade. As duas entradas so armazenadas nos registradores valid_reg
e input_reg. Este armazenamento sincroniza as entradas aos registradores (rs_registers) evitando-se
um caminho combinacional entre a entrada input com os multiplicadores. O registrador rs_registers
subdividido em 16 registradores de 8 bits que armazenam os valores temporrios para o clculo
dos smbolos paridade. Cada registrador alimentado pela soma de seu registrador vizinho com a
multiplicao do sinal feedback pelo respectivo coeficiente do polinmio gerador. Durante o
recebimento dos dados vlidos, enquanto o sinal valid estiver em 1, o codificador apenas repassa
os dados da entrada diretamente para a sada do circuito atravs do sinal output.
Aps 239 ciclos de clock com o sinal valid em 1, os 16 bytes de paridade
correspondentes ao pacote recebido encontram-se armazenados em rs_registers. Nos 16 ciclos de
clock seguintes estes dados so enviados para a sada como mostra a forma de onda apresentada na
Figura 10.
Como podemos observar na Figura 10, imediatamente aps a transio de valid para 0, o
sinal feedback passa a ser 00 e a sada recebe o ltimo byte de rs_registers, que deslocado a
cada ciclo de clock, de maneira que todos os smbolos contidos nos registradores so enviados para
a sada e os registradores do mdulo so zerados.
4.3
Decodificador
26
( X ) S ( X ) = ( X ) mod x 2t
(42)
27
S ( X ) = Si x i
i =0
254
Si = rj
(43)
j i
j =0
28
(44)
29
calculadas a cada incio de mensagem, caso contrrio seu valor ser perdido. O vetor de sndromes
armazenado pelo mdulo seguinte, Berlekamp-Massey, que utiliza este vetor para realizar sua
operao. A forma de onda apresentada na figura a seguir ilustra o funcionamento do mdulo de
clculo da sndrome.
Esta figura mostra o trmino do clculo do vetor de paridade de uma mensagem e o incio
do clculo para outra mensagem. O sinal input fica ativo durante o envio do primeiro byte da
segunda mensagem. Neste instante, os valores presentes nos registradores do mdulo, representados
contm a sndrome correta da primeira mensagem recebida, sendo os demais valores, apenas
resultados intermedirios. No ciclo de clock seguinte, todos os registradores recebem o valor de
input para iniciar o clculo da sndrome para a prxima mensagem. A partir desta forma de onda
possvel concluir que a primeira mensagem recebida possui erros, pois o vetor de sndromes
calculado diferente de zero.
Para facilitar o entendimento da estrutura de pipeline, tambm inserimos na Figura 13 o
sinal interno do mdulo Berlekamp-Massey responsvel pelo armazenamento da sndrome.
Podemos ver que este vetor recebe os valores presentes nos registradores das sndromes no
momento em que o sinal clear est ativo. Como podemos ver, os valores do vetor de sndromes
armazenados pelo mdulo Berlekamp-Massey so todos diferentes de zero, o que indica a presena
de erros na mensagem recebida.
4.3.2 Mdulo Berlekamp-Massey
30
questo da freqncia de operao que se obter com este circuito, pois seu caminho crtico mais
longo se comparado a implementaes baseadas no algoritmo Euclideano.
4.3.2.1 O Algoritmo de Berlekamp-Massey
S j = i S j i j = v + 1, v + 2,...,2t
i =1
(45)
31
Lk
S k = ki 1 S k i
(46)
i =1
Caso k seja igual Sk, no necessrio atualizar o polinmio k-1(X), que passa a ser
k(X), e Lk=Lk-1. Caso contrrio, existe uma discrepncia associada com k-1(X), que calculada
Lk 1
i =1
i =0
d k = S k S k = S k + ki 1 S k i = ki 1 S k i
(47)
(48)
d k' = ki S k i
i =0
Lk 1
k 1
i
Lm 1
(49)
S k i + A
i =0
m 1
i
S k i l
i =0
Sendo l=k-m, ou seja, a diferena entre o estgio atual e ltimo estgio que o polinmio de
conexo foi modificado, e relacionado a equao (49) com a definio de discrepncia apresentada
na equao (47), temos a seguinte expresso:
Lm 1
A mi 1 S m i = A d m
(50)
i =0
d k' = d k d m1 d k d m = 0
(51)
32
Entradas: S1,S1,...,SN
Inicializao:
L=0 (Grau atual do polinmio de conexo)
c(x)=1 (Polinmio de conexo atual)
p(x)=1 (Polinmio de conexo antes da ltima alterao)
l=1 (k-m, quantidade de ciclos sem alterao de c(x))
dm=1 (Ultima discrepncia antes da alterao)
d=0 (discrepncia atual calculada)
for k=1 to N
L
d=Sk+ i =1 ci S k 1 (calcula a discrepncia)
if(d=0) (no altera o polinmio c(x))
l=l+1
elsif(2L>=K) then (no
muda o grau do polinmio c(x))
c(x)=C(x)-d.dm-1.xl.p(x) (atualiza c(x))
l=l+1;
else
t(x)=c(x)
c(x)=C(x)-d.dm-1.xl.p(x)
L=k-L
p(x)=t(x)
dm=d
l=1
end
end
4.3.2.2 Implementao do Berlekamp-Massey
34
35
(X), para isso utiliza-se uma pequena mquina de estados de controle. A Figura 17 apresenta o
IDLE
ready<=1'
clear=1'
store
comp_l
reg_i=8
reg_k=16
comp_v
clear_
syn
Ao receber um sinal de clear, a mquina passa para o estado comp_l. Neste estado
realizado o clculo do polinmio localizador de erros em 16 ciclos de clock. Aps este tempo, o
estado passa a ser clear_syn, onde os registradores de deslocamento da sndromes so zerados para
o clculo do polinmio avaliador de erros. Aps o estado clear_syn, a mquina passa diretamente
para o estado comp_v, onde feito o clculo do polinmio avaliador de erros, em 8 ciclos. Aps
este perodo, a mquina fica um ciclo no estado store, onde indica para os mdulos seguintes que os
polinmios esto calculados.
A figura a seguir mostra como feito o calculo do polinmio avaliador de erros.
36
Como podemos ver na Figura 18, tendo c_reg calculado, basta deslocar as sndromes
novamente que a cada ciclo de clock teremos em reg_dn um dos coeficientes do polinmio
avaliador de erros. Ao final do clculo dos 8 coeficientes do polinmio gerador, o mdulo
Berlekamp-Massey gera um sinal de ready, alertando aos mdulos seguintes a finalizao do
clculo dos polinmios.
4.3.3 Chien Search e Forney
Os mdulos Chien search location, Chien search value e Forney Algorithm pertencem ao
ltimo estgio do processo de decodificao Reed-Solomon e operam paralelamente. Neste estgio,
inicia-se o processo de correo de erro.
Uma vez que o polinmio (X) est calculado, o mdulo Chien search location utilizado
para achar suas razes. O algoritmo Chien search avalia um determinado polinmio para todos os
255 elementos no nulos do campo GF(28). No caso do polinmio localizador de erro, se (-i)=0
significa que existe um erro no i-simo byte recebido. A Figura 19 apresenta a arquitetura do
mdulo chien search location.
bm_ready
input
CHIEN SEARCH
LOCATION
lambda_x
mux_sel
00000001
0
+
chien_regs(1)
1
0
+
lambda_x(1)
lambda_x(0)
chien_regs(0)
1
chien_regs(3)
1
0
+
lambda_x(3)
lambda_x(2)
0
+
lambda_x(4)
lambda_x(6)
chien_regs(4)
chien_regs(6)
chien_regs(7)
lambda_x(7)
chien_regs(5)
lambda_x(5)
chien_regs(2)
1
result
result_odd
Podemos observar que a estrutura deste mdulo bastante regular. Basicamente temos 8
clulas contendo um registrador, um multiplicador e um multiplexador. Cada clula calcula um
37
valor intermedirio para um dos coeficientes do polinmio (X), esses valores so todos somados,
inclusive levando em conta a constante 01, que corresponde sempre ao coeficiente de x0, e o
resultado (-i). Cada registrador funciona como um acumulador. Inicialmente os registradores
recebem os coeficientes do polinmio localizador de erros. No ciclo seguinte os registradores
passam a ser realimentados pelo seu prprio valor multiplicado por i, onde i representa o grau do
coeficiente do polinmio que cada registrador est calculando. Atravs desta operao possvel
calcular (0), (1), (2) e assim sucessivamente, graas a matemtica de campos finitos.
Tomando como exemplo o oitavo coeficiente do polinmio localizador de erros, denotado por 8,
teremos aps um ciclo de clock, no registrador chien_reg(7) o resultado de 88, que equivale a
8x8 com x=1. No ciclo de clock seguinte o contedo deste registrador passa a ser 888, que
igual a 828, ou seja, 8x8 quando x=2. Este o mtodo utilizado pelo algoritmo chien search
para avaliar um dado polinmio para todos elementos de um campo finito. Podemos ver tambm na
Figura 19, alm da sada result, uma outra sada denominada result_odd. O valor visualizado nesta
sada corresponde apenas soma dos resultados dos coeficientes de grau impar, e utilizado para
ajudar a encontrar o valor do erro, uma vez que result seja zero.
A ttulo de informao apresentaremos tambm, na Figura 20, a arquitetura do mdulo
chien search value.
bm_ready
input
CHIEN SEARCH
VALUE
omega_x
mux_sel
omega_x(1)
omega_x(0)
chien_regs(1)
chien_regs(3)
1
0
+
omega_x(3)
omega_x(2)
0
+
omega_x(4)
omega_x(6)
chien_regs(4)
chien_regs(6)
0
1
chien_regs(7)
omega_x(7)
chien_regs(2)
1
chien_regs(5)
omega_x(5)
chien_regs(0)
result
38
( i )
' ( i )
(52)
odd ( x)
x
(53)
( i ) i
odd ( i )
(54)
Esta equao implementada pelo mdulo Forney Algorithm, que recebe os resultados dos
mdulos Chien search value e Chien search location e gera o valor de correo para ser adicionado
ao pacote recebido, neste caso corrigindo os erros da mensagem recebida. A Figura 21 mostra a
estrutura do mdulo que implementa esta equao.
Este basicamente um circuito combinacional que detecta quando o sinal l_result igual a
zero e coloca na sada o valor do erro calculado. O valor de erro calculado pela diviso do sinal
v_result pelo sinal l_result_odd. Esta diviso tambm implementada atravs de um circuito
inversor e um multiplicador, a exemplo do clculo feito no mdulo Berlekamp-Massey. Caso o
sinal l_result seja diferente de zero, significa que no h erros na posio atual da mensagem
39
recebida, logo a sada do mdulo deve ser zero, pois esse valor ser sempre somado ao valor atual
da mensagem, como pode ser visto na Figura 11.
Na Figura 22 ser apresentada uma forma de onda que ilustra o funcionamento dos
mdulos Chien search location, Chien search value e Forney Algorithm.
40
Podemos observar na Figura 23 as trs latncias principais do decodificador ReedSolomon desenvolvido. A latncia nmero 1 corresponde ao tempo total de processamento do
decodificador. So computados, ao todo, 286 ciclos de clock da entrada do primeiro byte de uma
mensagem at a sada deste byte j decodificado. A latncia nmero 2 corresponde ao tempo de
clculo da sndrome. Este tempo de 255 ciclos de clock, que correspondem ao recebimento de
uma mensagem completa. A terceira latncia representada na Figura 23 relativa ao mdulo
Berlekamp-Massey, e esta corresponde a 28 ciclos de clock.
Contando a latncia de 255 ciclos adicionada pelo clculo da sndrome, mais os 28 ciclos
correspondentes resoluo da equao chave pelo mdulo Berlekamp-Massey, e levando em conta
o tempo que os mdulos seguintes tm para armazenar os polinmios e adicion-los em seus
registradores antes de iniciar o clculo, chega-se no total de 286 ciclos de latncia.
importante observar que os dados so recebidos sempre em rajada pelo decodificador,
no h intervalo entre os pacotes de 255 bytes. Dessa maneira, o mdulo que calcula a sndrome
est sempre em funcionamento. Como podemos observar, o nico mdulo que fica ocioso durante o
processo de decodificao o Berlekamp-Massey, pois ele recebe um vetor de sndromes a cada
255 ciclos, e resolve a equao chave em apenas 28 ciclos. Esta situao abre precedentes para
41
diferentes implementaes deste algoritmo, que podem aproveitar esta sobra de tempo para se obter
alguma vantagem, em troca de um pequeno aumento na latncia total do decodificador.
42
Validao Funcional
CODIFICADOR
error.txt
DECODIFICADOR
Esta estrutura gera os sinais de reset, clock, valid, clear_syn alm do sinal input. Para
enviar os dados aos mdulos, recorreu-se ao uso de dois arquivos texto: subframe.txt, que contm
diversos sub-frames do padro G.709 OTN, e error.txt que utilizado para permitir a insero de
erros em quaisquer posies dos sub-frames. Tais arquivos possuem o mesmo formato: dois
caracteres em hexadecimal por linha. Ou seja, lido e enviado aos dois mdulos um byte por ciclo
de relgio. Na Figura 25 apresenta-se o formato dos dois arquivos texto. Esses arquivos foram
gerados atravs de um software, desenvolvido no contexto deste trabalho, denominado fecGEN.
Este software foi implementado pelos autores e realiza o clculo da paridade a partir da gerao
aleatria de sub-frames. Os resultados obtidos nesta ferramenta foram validados a partir da
comparao com ferramentas disponibilizadas na internet, tais como o schifra [18] e a biblioteca de
FEC desenvolvida por Phil Karn [19].
43
Atravs do seu sinal input, so enviados ao codificador os 239 bytes referentes a um subframe sem o campo de FEC. Aps a finalizao do envio destes bytes, verifica-se a validade do
novo FEC gerado. Isto feito comparando-o com o FEC gerado pelo software fecGEN. Na Figura
26 verifica-se a validade do FEC gerado pelo codificador.
44
Os mdulos no foram testados exaustivamente, porm, foram feitos diversos testes para
verificar o funcionamento dos mesmos em seus limites. Alm de erros adicionados em posies
aleatrias, foram inseridos erros em rajada no inicio e no fim dos sub-frames, onde a possibilidade
de falhas mais elevada. Tambm realizou-se testes com apenas um erro por sub-frame em locais
distintos e testes com mais de um erro, incluindo a presena de 8 erros, que a capacidade mxima
de correo da arquitetura desenvolvida. Aps a finalizao dos mdulos, nenhuma falha foi
verificada nos testes realizados.
5.2
A ferramenta ISE de verso 9.1i da Xilinx Inc. permite, aps a sntese fsica, criar os dois
arquivos necessrios para a simulao com tempos de atraso. Um dos arquivos, de nome
timesim.vhd, contm o mapeamento dos blocos lgicos, que so utilizados para a implementao
do codificador e decodificador no FPGA, incluindo informaes de posicionamento e roteamento.
O outro arquivo, de nome timesim.sdf, contm os valores dos tempos de atraso de todos os blocos
lgicos utilizados no timesim.vhd. Estes dois arquivos so utilizados em uma nova simulao na
ferramenta Modelsim, permitindo uma verificao mais acurada dos mdulos. Toda a estrutura de
teste e modo de validao permanecem os mesmos da simulao anterior. Na Figura 28 podemos
45
observar, a ttulo de exemplo, uma simulao do codificador com todos os atrasos inseridos pelas
portas e pelos fios utilizados na sntese realizada.
Nesta simulao utilizamos um clock de 100MHz para ilustrar o tempo de clculo dos
valores intermedirios de paridade. Podemos ver a transio do sinal de entrada valid e
respectivamente, um ciclo de clock aps, a transio do sinal interno valid_reg, indicando o fim do
clculo de paridade. A partir desta transio no h mais atrasos por clculos e a paridade calculada
enviada para a sada. Como podemos ver, existem linhas verticais na figura que indicam
intervalos de 5 nanossegundos, sendo que estas coincidem com as transies do clock.
O processamento de todos os multiplicadores presentes na arquitetura pode ser observado
no sinal mult_out. possvel observar que existe um pequeno intervalo de tempo entre a subida do
sinal de clock e o incio do clculo realizado pelos multiplicadores. Este tempo corresponde
propagao do sinal de entrada at a sada do registrador input_reg, acrescido ao tempo de
estabilizao do sinal feedback mais o atraso dos fios. Podemos ver tambm que a sada de todos os
multiplicadores esto estabilizadas antes da descida do clock, sendo que o tempo de clculo, aps a
estabilizao do sinal feedback, de aproximadamente 3,3 nanossegundos. Para ilustrar o caminho
crtico deste mdulo, apresentamos tambm na Figura 28 o sinal q_xor0009, que uma das sadas
das portas XOR existentes no codificador, sendo este o ltimo resultado que deve estar estvel antes
de uma nova borda de clock para garantir o funcionamento do circuito. Como podemos ver, este
sinal se estabiliza em menos de 5 nanossegundos aps a subida do clock, garantindo o
funcionamento do circuito a 100MHz com certa folga.
5.3
Validao em Hardware
que no ser utilizado aqui, o acesso direto fazendo uso de DMA e interrupo. O segundo o
acesso por intermdio da Spartan2 utilizando uma estrutura criada pela The Dini Group denominada
MainBus [21].
5.3.1 MainBus
Na funo mb_write o parmetro data, de 32 bits, o dado que se deseja enviar ao FPGA.
Nas duas funes o parmetro addr, tambm de 32 bits, possui o formato ilustrado abaixo.
fpga
31
escravo
28 27
endereo
24 23
O primeiro campo, denominado fpga, utilizado para selecionar o FPGA entre todos os
disponveis. No caso da plataforma DN8000k10PCI que possui somente um FPGA este campo deve
ser sempre igual a 2. O segundo campo destinado seleo do mdulo escravo slave.v
desejado. Este campo possui um tamanho de quatro bits e, portanto possvel utilizar at 16
escravos. O ltimo campo, endereo, utilizado para enderear alguma estrutura interna do mdulo
escravo, como um banco de registradores, por exemplo.
5.3.1.2 MB_target.v e Slave.v
47
MB_sel
MB_write_strobe
MB_read_strobe
MB [31:0]
MB_target.v
MB_address [31:0]
MB_data_in [31:0]
MB_data_out [31:0]
MB_done
MB_sel
MB_write_strobe
MB_read_strobe
MB_address [31:0]
MB_data_in [31:0]
MB_data_out [31:0]
Slave.v
data_valid
data_in [31:0]
MB_done
O software AETest deve ser alterado para realizar a transferncia de dados entre o
computador e o FPGA. A seguir, apresentamos algumas linhas de cdigo que demonstram a
utilizao das funes mb_write e mb_read.
scanf("%X",&dado_escrito);
mb_write(2|5|10, dado_escrito);
Neste exemplo, solicita-se primeiro o dado a ser escrito. Aps, a funo mb_write o
escreve no endereo 10 do escravo 5, que por sua vez encontra-se no FPGA 2.
dado_lido=mb_read(2|5|10);
printf("Dado lido: %X do FPGA 2.", dado_lido);
48
J neste exemplo, a funo mb_read retorna o mesmo dado que foi escrito anteriormente
pela funo mb_write, ou seja, o dado do endereo 10, do escravo 5, do FPGA 2.
Abaixo se encontra a funo implementada para o presente trabalho. Tal funo utilizada
no software AETest e tem por objetivo ler dados de um arquivo texto e envi-los ao FPGA.
if (!(p = fopen("packet.txt","r")))
{
printf("Erro! Arquivo inexistente!\n");
}
else
{
quad_byte=0;
num_byte=0;
while (!feof(p))
{
fscanf(p,"%X",&byte);
quad_byte+=byte;
if(num_byte<3)
{
quad_byte<<=8;
num_byte++;
}
else
{
//send quad_byte mb_write
mb_write(MB_FPGA_C | 0x00000000 | 1, quad_byte);
num_byte=0;
quad_byte=0;
}
}
fclose (p);
}
Feito isso, executa-se o terminal Visual Studio 2005 Command Prompt, apresentado na
Figura 31. Deve-se alterar o diretrio presente para o diretrio de trabalho criado (por exemplo,
49
MAINBUS
software
AETest
chipscope
Para a validao em hardware, foi necessria a criao de uma estrutura de teste capaz de
receber os bytes dos sub-frames provenientes do barramento PCI e envi-los ao codificador e
decodificador. Os mdulos foram testados e validados separadamente na plataforma de
prototipao. A estrutura criada pode ser observada de forma simplificada na Figura 32.
subframe.txt
Barramento PCI
XC4VFX100
fpga.v
FSM_IN
PCI
Quicklogic
5064
Spartan2
MB_target.v
slave.v
CODIFICADOR
OU
DECODIFICADOR
DN8000k10PCI
50
data_valid
data_in [31:0]
valid
FSM_IN
clear_syn
data_in [7:0]
O mdulo FSM_IN uma mquina de estados finita que recebe os bytes de um sub-frame
e armazena-os em uma memria temporria antes de serem enviados ao mdulo sob teste. Os dados
so enviados atravs do sinal data_in. Os sinais valid e clear_syn so utilizados, dependendo do
mdulo que est sendo testado, respectivamente codificador ou decodificador. Na Figura 34
encontra-se a mquina de estados finita do mdulo FSM_IN.
51
5.3.3 Resultados
52
Mdulo
Codificador
Decodificador
- syndrome_unit
- berlekamp_massey
- chien_value
- chien_location
- forney
- delay
276,67
83,87
374,79
83,87
340,66
307,11
429,52
Como a freqncia mnima de 100MHz no foi atingida pelo sub-mdulo BerlekampMassey, implementamos ao final da redao deste documento, a partir de modificaes na
53
Mdulo
Lgica
Usados
Codificador
FlipFlop
LUT
FlipFlop
LUT
FlipFlop
LUT
FlipFlop
LUT
FlipFlop
LUT
132
214
883
2633
908
3192
1015
2847
1040
3406
Decodificador
BM original
Decodificador
BM modificado
Total
BM original
Total
BM modificadol
Disponveis
Utilizao
84352
0,15%
0,25%
1,04%
3,12%
1,08%
3,78%
1,20%
3,37%
1,23%
4,04%
54
6 Integrao
Como comentado na seo 1.2, um dos objetivos da atual parceria entre a TERACOM
Telemtica Ltda e o Grupo de Apoio ao Projeto de Hardware (GAPH) a integrao dos mdulos
codificador e decodificador Reed-Solomon com os mdulos do framer, responsvel por alinhar e
montar os frames do padro OTN. Na Figura 38 pode-se observar a integrao de todos os mdulos
do projeto entre a TERACOM e GAPH.
1 bit
10.7Gbps
64bits
200Mhz
Alinhador
de quadro
SerDes
1 bit
10.7Gbps
64bits
200Mhz
SerDes
Embaralhador
Desembaralhador
Encoder
RS
Decoder
RS
Ajuste dos
cabealhos
Extrao de
cabealhos
Insero/
Remoo
Dados
Dados do
cliente
55
200 MHz
200 MHz
Decoder RS
64 bits
REG
Desembaralhador
8 mdulos
DECODIFICADOR
64
64
Extrao dos
Cabealhos
64
Ajuste dos
cabealhos
64 bits
REG
8 mdulos
DECODIFICADOR
Encoder RS
64 bits
8 mdulos
CODIFICADOR
Embaralhador
REG
64
64 bits
8 mdulos
CODIFICADOR
REG
56
57
58
8 Referncias Bibliogrficas
[1] International Telecommunication Union, ITU-T G.709. Maro, 2003.
[2] Agilent
Tecnologies.
An
overview
of
ITU-T
G.709.
Capturado
em:
http://cp.literature.agilent.com/litweb/pdf/5988-3655EN.pdf, Setembro de 2001, Estados
Unidos.
[3] Sklar, B. Reed-Solomon Codes (Digital Communications: Fundamentals and Applications).
Upper Saddle River, NJ: Prentice-Hall, 2001, 1070p.
[4] Walker, T. Optical Transport Network (OTN) Tutorial. Capturado em: www.itu.int/ITUT/studygroups/com15/otn/OTNtutorial.pdf. Janeiro de 2007, Estados Unidos.
[5] Barlow, G. A G.709 Optical Transport Network Tutorial, Innocor Ltd. Capturado em:
http://www.innocor.com/pdf_files/g709_tutorial.pdf. Outubro de 2003, Almonte, ON, Canad.
[6] Reed, I.; Solomon G. Polymonial Codes Over Certain Finite Fields. SIAM Journal of
Applied Math, vol. 8, Junho de 1960, pp. 300-304.
[7] Laws, B.; Rushforth, K. A Cellular-Array Multiplier for GF(2m). IEEE Transactions on
Computers, Vol. C-20, No 12. Dezembro de 1971, pp. 1573- 1578.
[8] Wai, K.; Yang S. Field Programmable Gate Array Implementation of Reed-Solomon Code,
RS(255,239). Capturado em: www.ce.rit.edu/~sjyeec/papers/nyworkshop-rs-codec.pdf,
Outubro de 2005.
[9] Wilhelm, W. A New Scalable VLSI Architecture for Reed-Solomon Decoders. IEEE
Journal of Solid State Circuit, Vol. 34, No 2. Maro de 1999, pp. 388-396.
[10] Sarwate, D.; Shanbhag, N. High-Speed Architecture for Reed-Solomon Decoders. IEEE
Transactions on Very Large ScaleIintegration Systems. Vol. 9, No 5. Outubro de 2001, pp.
641-655.
[11] Park, T. Design of the (248,216) Reed-Solomon Decoder with Erasure Correction for Blu-ray
Disc. IEEE Transactions on Consumer Eletronics, Vol. 51, No 3. Agosto de 2005, pp. 872878.
[12] Massey, J. Shift-register syntesis and BCH decoding.. IEEE Transactions on Information
Theory, Vol. IT-15, No 1. Janeiro de 1969, pp. 122-127.
[13] Liu, K. Architecture for VLSI Design of Reed-Solomon Decoders. IEEE Transactions on
Computers, Vol. C-33, No 2. Fevereiro de 1984, pp. 178-189.
[14] Chang, H.; Shung, C.; Lee, C. A Reed-Solomon Product-Code (RS-PC) Decoder Chip for
DVD Aplications, IEEE Journal of Solid State Circuits, Vol. 36, No 2. Fevereiro de 2001, pp.
229-238.
[15] Reed, I.; Shih, M.; Truong, T. VLSI design of inverse-free Berlekamp-Massey. IEEE
Computer and Digital Techniques, Vol. 138, No 5. Setembro de 1991, pp. 295-298.
[16] Lee, H. A High-Speed Low-Complexity Reed-Solomon Decoder for Optical
Communications. IEEE Transactions on Circuits and Systems II: Express Briefs, Vol. 52,
No 8. Agosto de 2005, pp. 461-465.
[17] Moon, T. Error Correction Coding: Mathematical Methods and Algorithms. Hoboken, NJ:
Wiley, 2005, 794 p.
59
em:
60