• Nenhum resultado encontrado

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.

Documentos relacionados