A decodificação dos códigos LDPC no padrão DVB-S2 é uma decodificação do tipo soft-decision (LIN & COSTELLO, Error Control Coding, 1983). O algoritmo utilizado para a decodificação dos códigos LDPC é um algoritmo de passagem de mensagem, onde as mensagens (números reais) são passadas entre os dois conjuntos de nodos CN e BN. Essas mensagens são atualizadas nos nodos através de operações matemáticas. Para simplificar os
cálculos, as entradas do sistema são valores de log-likelihood ratio (LLR). Seja
P = [P., PB, ⋯ , P# B] a palavra-código transmitida e ƒ a sequência soft-decision
recebida. O valor LLR, denotado ¬”, para cada bit da sequência é dado por
¬”= log -)(P)(P”= 0|ƒ)
”= 1|ƒ)® (3.19)
Um valor negativo de ¬” indica que a probabilidade do evento "bit recebido = 1" é maior que a probabilidade do evento "bit recebido = 0". Um valor positivo para ¬” indica o contrário. Quanto maior for o valor absoluto de ¬”, maior a probabilidade do evento.
A saída do decodificador LDPC é uma estimativa da palavra binária correspondente à mensagem originalmente transmitida e, adicionalmente, um valor lógico indicando se a decodificação foi terminada com sucesso ou se um erro ainda existe na mensagem decodificada. Tal decisão é determinada pelas equações de paridade da Matriz €. O processo de decodificação pode ser visualizado também através de gráficos de Tanner.
Um dos algoritmos mais conhecidos para decodificar os códigos LDPC é o Algoritmo Soma-Produto (SPA) (LIN & COSTELLO, Error Control Coding, 2nd Ed, 2004). O SPA é um algoritmo de troca de passagem de mensagem, onde as mensagens, que são valores reais, são passadas entre os nodos de validação e os nodos de bits. Os algoritmos descritos na sequência são similares aos apresentados por Masera et al. (MASERA, QUAGLIO, & VACCA, 2005), exceto pela função B no passo de atualização dos nodos de validação, a qual é substituída pela função no passo de atualização dos nodos de bits. Os passos da decodificação seguem de acordo com Eroz et al. (EROZ, SUN, & LEE, 2004), ilustrados pelo diagrama de fluxo apresentado na Figura 3.2 e a seguir descritos.
Figura 3.2 - Diagrama de fluxo do SPA
Fonte: o autor.
1. Inicialização:
Seja o tamanho do bloco e ¬S o LLR do sinal recebido, com W = 0, 1, … , − 1. Seja ¯Sh`[‘] a mensagem a ser enviada do nodo de bit S para o h` durante a ‘-ésima iteração, onde °J é o índice do nodo de validação que tem uma linha conectando-o ao nodo de bit S, = 0, 1, … , T‹− 1 e T‹ é o grau de nodo de bit
S. A Figura 3.3 ilustra o gráfico de Tanner no passo da inicialização do
Figura 3.3 - Passo de Inicialização do SPA
Fonte: Loi, Kung (2010).
Utilizando a matriz €, esse passo é equivalente a atribuir ¬S a todos os elementos não-zero na coluna W da matriz €
€[0]‹ = p q q r ℎℎ..∙ ¬. ℎ.B∙ ¬B ⋯ ℎ.,# B∙ ¬# B B.∙ ¬. ℎBB∙ ¬B ⋯ ℎB,# B∙ ¬# B ⋮ ⋮ ℎ# G B,.∙ ¬. ℎ# G B,B∙ ¬B ⋯ ℎ# G B,# B∙ ¬# Bt u u v , (3.20)
onde ℎJS = 0 ou 1 é o elemento na -ésima linha e W-ésima coluna em € e €[0]‹ é a matriz € inicializada.
2. Atualização do Nodo de Validação:
Seja Jh±[‘] a mensagem a ser enviada de J para h± durante a ‘-ésima iteração, onde °S é o índice do nodo de bit que tem uma linha conectando-o ao
J, W = 0, 1, … , T•− 1 e T• é o grau de nodo de checagem de J. Seja [ ] o
conjunto dos índices de de todas as mensagens que chegam no J dos conectados a eles, ou seja, o conjunto de todos os °S índices de J. O conjunto
Jh±[‘] = ²∑Y∈5[J] (¯YJ[‘])− (¯h±J[‘])´ ∙ ²∏Y∈5[J]sgn(¯YJ[‘]) × sgn(¯h±J[‘])´, (3.21) onde (A) = − ln tanh »@»$ = ln -„Bš¼„B ¼½|¾|½|¾|……®, (3.22) e
sgn(A) = ¿−1 se A < 00 se A = 0
1 se A > 0. (3.23) ¯YJ[‘] é o conjunto dos nodos de bit h± que chegam ao nodo de validação J
e ¯h±J[‘] é o nodo de bit h±.
Em outras palavras, a atualização dos nodos de validação é definida em duas etapas: o cálculo da magnitude e a definição do sinal. No cálculo da magnitude, para cada , é realizado o somatório dos valores de (¯YJ[‘]) e subtraído o valor de (¯h±J[‘]) correspondente. Similarmente, a parte do sinal é computada pelo produtório de sgn(¯YJ[‘]), multiplicado por sgn(¯h±J[‘]). A Figura 3.4 ilustra esse passo graficamente.
Figura 3.4 - Passo da Atualização do Nodo de Validação do SPA
Utilizando a matriz € como referência, esse passo utiliza todos os elementos não-zero de cada linha de €[‘]‹ para o cálculo de Jh±[‘], conforme
(3.21), para a -ésima linha e °S-ésima coluna da matriz €[‘]•, onde €[‘]• é a matriz € resultante após a ‘-ésima iteração da atualização do nodo de checagem.
3. Passo de Atualização do Nodo de Bit:
Seja [W] o conjunto de índices de de todas as mensagens que chegam ao
S dos conectados a ele, ou seja, o conjunto de todos os índices °J de S.
A atualização do nodo de checagem ¯Sh`[‘] é dada por
¯Sh`[‘] = ¬S+ Á sgn„ YS[‘ − 1]…
Y∈Â[S]
∙ „ YS[‘ − 1]… −
sgn( h`S[‘ − 1]) ∙ ( h`S[‘ − 1]),
(3.24)
onde YS[‘ − 1] é o conjunto de nodos de validação h`S que chegam ao nodo de bit S e h`S[‘ − 1] é o nodo de validação h±.
Essa equação é similar à equação de atualização do nodo de checagem, exceto que os cálculos da magnitude e do sinal estão dentro do somatório, e que este resultado é adicionado ao valor LLR ¬S. A Figura 3.5 mostra graficamente este passo.
Utilizando a matriz € como referência, este passo utiliza todos os elementos não-zero de cada coluna de €[‘]• para o cálculo de ¯Sh`[‘], conforme a Equação 3.24, para a °J-ésima linha e W-ésima coluna da matriz €[‘]‹, onde
€[‘]‹ é a matriz € resultante após a ‘-ésima iteração do passo de atualização do
Figura 3.5 - Passo da Atualização do Nodo de Bit do SPA
Fonte: Loi, Kung (2010)
4. Tomada de Decisão:
Após a atualização do nodo de bit, a sequência da palavra-código candidata
˜[‘] = g˜., ˜B, ⋯ , ˜S, ⋯ , ˜# B i, no formato de soft-decision é computado da
seguinte forma
˜S = ¬S+ ∑Y∈Â[S]sgn„ YS[‘ − 1]…∙ „ YS[‘ − 1]…. (3.25)
A Equação 3.25 é equivalente à primeira parte da Equação 3.24. Subsequentemente, a sequência ¡ é decodificada em uma sequência de hard- decision, ([‘] = g(., (B, ⋯ , (S, ⋯ , (# B i, conforme segue
(S = Ã0 C ˜1 C ˜SS ≥ 0< 0. (3.26)
A sequência Å resultante é uma palavra-código candidata, formada por mensagem e paridade, e é utilizada para verificar se as equações de paridade são satisfeitas ou não. Se todas as equações de paridades forem satisfeitas, então a parte contendo a mensagem é a saída do decodificador. Mais especificamente, o decodificador tem como saída ( = [(., (B, ⋯ , (G B]. Caso as equações de paridade não tiverem sido satisfeitas, os passos 2, 3 e 4 são repetidos até todas as equações serem satisfeitas, ou até que um número pré- determinado de iterações seja realizado, caso em que um erro na decodificação é declarado.
4 Core Para Códigos LDPC no Padrão
DVB-S2
Neste capítulo são apresentados os detalhes da arquitetura do codificador e do decodificador LDPC DVB-S2. Na Seção 4.1 são descritas as características da FPGA utilizada, na Seção 4.2 é apresentada a arquitetura do codificador LDPC DVB-S2 implementado, enquanto que na Seção 4.3 é apresentada a arquitetura do decodificador LDPC DVB-S2 implementado.