• Nenhum resultado encontrado

1, caso contrário (3.5)

No documento Polarização de canal e códigos polares (páginas 46-60)

Para esclarecer, será descrito o procedimento de decodificação para N = 4, seguindo a Figura 3.2.

Figura 3.2: Decodificador para N=4

Inicialmente, o decodificador ativa o nó 1 para saber o valor û1. Entretanto, para que tal procedimento seja feito, o valor dos nós 5 e 7 devem ser conhecidos, e os nós 5 e 7 precisam dos valores de L1, L2, L3 e L4 sequencialmente. Para se determinar L5 e L7 utiliza-se a função f(3.4). Assim temos

L5 = f(L1,L2) ≈ sign(L1).sign(L2).min(|L1|, |L2|) L7 = f(L3,L4) ≈ sign(L3).sign(L4).min(|L3|, |L4|)

46

Assim com os valores nos nós 5 e 7, é possível calcular a LLR no nó 1 como L9 = f(L5,L7) ≈ sign(L5).sign(L7).min(|L5|, |L7|)

Com o valor de L9 conhecido, é feita a decisão de qual valor, 0 ou 1, conforme 3.5, caso u1, não seja um bit congelado. Caso seja um bit congelado, û1 será 0. Com o valor de û1 conhecido é possível calcular o valor da LLR no nó 2, L10, com a função g, conforme (3.2). Assim temos,

L10 = g0(L5,L7) = L5.(-1)0 + L7 = L5 + L7, caso û1 = 0, e L10 = g1(L5,L7) = L5.(-1)1 + L7 = L7 - L5, caso û1 = 1.

E assim como foi feito no nó 1, com L10 conhecido, é feita a decisão, conforme a equação (3.5), e û2 é conhecido. Com os bits nos nós 1 e 2 conhecidos, eles são propagados para os nós 5 e 7, respectivamente, em que o nó 5 terá a soma módulo 2 dos valores dos nós 1 e 2, e o nó 7 terá o mesmo valor de 2. Para estimar o valor de û3, é necessário saber saber a LLR dos nós 6 e 8, L6 e L8, respectivamente. Para determinar L6 e L8, utiliza-se a função g, de (3.2), utilizando os bits dos nós 5 e 7, que foram propagados de 1 e 2. Assim temos

L6 = g0(L1,L2) = L1.(-1)0 + L2 = L1 + L2, caso û1 ⊕ û2= 0, e L6 = g1(L1,L2) = L1.(-1)1 + L2 = L2 - L1, caso û1 ⊕ û2 = 1. e

L8 = g0(L3,L4) = L3.(-1)0 + L4 = L3 + L4, caso û2 = 0, e L8 = g1(L3,L4) = L3.(-1)1 + L4 = L4 - L3, caso û2 = 1.

Com os valores de L6 e L8, é possível encontrar a LLR do nó 3, L11, utilizando a função f, em (3.4). Assim temos

L11 = f(L6,L8) ≈ sign(L6).sign(L8).min(|L6|, |L8|)

E como feito anteriormente, utilizando (3.5) é possível tomar a decisão do valor de û3. Por fim, para determinar û4, utiliza-se a função g, em (3.2). Assim temos

L12 = g0(L6,L8) = L6.(-1)0 + L8 = L6 + L8, caso û3 = 0, e L12 = g1(L6,L8) = L6.(-1)1 + L8 = L8 - L6, caso û3 = 1.

Então, û4 é estimado, conforme (3.5), e o processo de decodificação está completo. Uma vez que o algoritmo SC segue o mesmo diagrama do codificador, então conforme [1], a complexidade do decodificador SC é a mesma do codificador, ou seja, O(N logN).

47

4 SIMULAÇÕES

As implementações foram baseadas nos algoritmos apresentados em [15][16][17], e seus pseudo códigos serão apresentado nas figuras 4.1, 4.2, 4.3 e 4.4.

Para a polarização dos canais, [15] representou as equações 2.14 e 2.15, como {z, z} → {2z - z2, z2}. Devido à sua simplicidade, esta construção é amplamente utilizada e produziu bons códigos polares [15].

48

Figura 4.2: Pseudo código para a função indices_of_gratest_elements. Fonte: [15] No pseudo código de decodificação por cancelamento sucessivo a matriz B é a matriz dos bits e L é a matriz de razões de verossimilhança.

Figura 4.3: Módulo principal para o algoritmo de decodificação por cancelamento sucessivo. Fonte: [17]

49

Figura 4.4: Pseudo código para a função UpdateL. Fonte: [17]

Figura 4.5: Pseudo código para a função UpdateB. Fonte: [17]

Nas simulações, comparamos nossos resultados de BER com referências da literatura, para validar as implementações. Para determinar os desempenhos, sempre será utilizada a aproximação de Monte Carlo. A Figura 4.6 mostra uma comparação entre o resultado da decodificação SC de [15] e a simulação realizada para um código polar de comprimento N=2048, taxa R=½ e projetado para

50

Eb/N0=2dB. Além disso, encontraram-se outros resultados interessantes da literatura com diferentes valores de razão sinal ruído,SNR, projetada. Em particular, [15] mostra o desempenho de um código de comprimento N = 2048, taxa R=½, com valores de SNR projetada variados, que foi aqui simulado e o resultado é apresentado na Figura 4.7. Claramente a SNR projetada é um fator critico nos códigos polares, e a qual é uma função de todos os possíveis parametros como taxa e algoritmo de construção. Esta comparação foi feita por [15] e é apresentada na Figura 4.8. Podemos notar que se podemos achar a otima SNR projetada, qualquer construção produz um código polar com mesmo desempenho.A Figura 4.9 e a Figura 4.10 mostram os desempenhos aqui obtidos de um código polar sob decodificação SC com comprimentos variáveis, taxa R=½ e projetado para SNR=0dB e SNR=2dB, respectivamente, sendo possível perceber que com o aumento de N, o desempenho melhora. Comparando-se com os resultados de [13], é possível observar que os resultados obtidos neste trabalho são coerentes. Finalmente, será apresentada na Figura 4.11 a comparação entre um código LDPC utilizado no padrão WiMAX de comprimento N=2304 e taxa R=½, cujos resultados de simulação foram retirados de [14], e um código polar de comprimento N=2048 e taxa R=½ e projetado para Eb/N0=2dB. O código foi construído usando os métodos de [15], com otimização para SNR=2dB. Da Figura 4.11 podemos notar que o desempenho da decodificação apenar utilizando o cancelamento sucessivo é inferior ao dos códigos LDPC.

51

Figura 4.6: Comparação entre simulação realizada neste trabalho e os resultados de [15], onde o comprimento do código polar é N=2048, taxa R=½ e projetado para Eb/N0=2dB.

52

Figura 4.7: Desempenho de código de comprimento N=2048, taxa R=½, e com valores de SNR projetada variados.

53

Figura 4.8: Comparação de diferentes construções de PC e suas ótimas SNR projetadas para N=2048 e taxa de ½. Fonte: [15]

54

Figura 4.9: Desempenho de código de comprimento variável, taxa R=½ e SNR projetada de 0dB.

55

Figura 4.10: Desempenho de código de comprimento variável, taxa R=½ e SNR projetada de 2dB.

56

Figura 4.11: Comparação entre um código LDPC, padrão WiMAX, de comprimento N=2304 e taxa R=½, com os resultados de simulação retirados de [14], e um código polar de comprimento N=2048 e taxa R=½ e projetado para Eb/N0=2dB.

57

5 CONCLUSÃO

Neste trabalho, os conceitos primários de codificação polar foram revisados, incluindo polarização de canais, codificação e o algoritmo de cancelamento sucessivo (SC) para realizar a decodificação. Além disso, foi implementado em Matlab um código que reproduz os resultados de decodificação SC da literatura. Dessas simulações, é possível concluir que com o aumento do comprimento da palavra código um melhor desempenho é atingido e que a SNR projetada influencia diretamente nesses resultados.

Visto que o primeiro trabalho sobre códigos polares foi divulgado em 2009, por Arikan [1], diversas técnicas para para melhorar seu desempenho foram desenvolvidas, como decodificador de cancelamento sucessivo permutado, apresentado em [17], o decodificador de cancelamento sucessivo em lista (SCL) e o decodificador de cancelamento sucessivo em lista com verificação de redundância cíclica (CRC), apresentado em [14]. Com essas técnicas, o desempenho dos códigos polares se equiparou ao dos códigos LDPCs. Antes delas, ou seja, com a decodificação baseada em cancelamento sucessivo, os códigos polares possuiam desempenho inferior aos códigos LDPC, como apresentado na Figura 4.5.

Outro ponto interessante é que, por se tratar de uma nova técnica de codificação, ela foi pouco estudada no Brasil. Sendo assim, este trabalho de conclusão de curso pode servir de base para um primeiro contato com os códigos polares para pesquisadores, professores e estudantes brasileiros interessados no assunto.

Alguns possíveis trabalhos futuros podem ser um estudo aprofundado dos decodificadores em lista com verificação de redundância cíclica e da arquitetura do hardware de decodificadores de cancelamento sucessivo apresentado em [10].

58

REFERÊNCIAS

[1] Arikan, Erdal. "Channel polarization: A method for constructing capacity-achieving codes for symmetric binary-input memoryless channels." IEEE Transactions on

Information Theory 55.7 (2009): 3051-3073.

[2 ] Zehfuss, G. "Über eine gewisse Determinante." Zeitschrift für Mathematik und

Physik 3.1858 (1858): 298-301.

[3] Elster, Anne Cathrine. "Fast bit-reversal algorithms." Acoustics, Speech, and

Signal Processing, 1989. ICASSP-89., 1989 International Conference on. IEEE,

1989.

[4] Henry Pfister. A brief introduction to polar codes.

http://pfister.ee.duke.edu/courses/ecen655/polar.pdf, 2014.

[5] Shannon, Claude E. "A mathematical theory of communication, Part I, Part II."

Bell Syst. Tech. J. 27 (1948): 623-656.

[6] MacKay, David JC. Information theory, inference and learning algorithms. Cambridge university press, 2003.

[7] Berrou, Claude, Alain Glavieux, and Punya Thitimajshima. "Near Shannon limit error-correcting coding and decoding: Turbo-codes. 1." Communications, 1993.

ICC'93 Geneva. Technical Program, Conference Record, IEEE International Conference on. Vol. 2. IEEE, 1993.

[8] Gallager, Robert. "Low-density parity-check codes." IRE Transactions on

information theory 8.1 (1962): 21-28.

[9] Richardson, Thomas J., Mohammad Amin Shokrollahi, and Rüdiger L. Urbanke. "Design of capacity-approaching irregular low-density parity-check codes." IEEE

transactions on information theory 47.2 (2001): 619-637.

[10] Leroux, Camille, et al. "Hardware architectures for successive cancellation decoding of polar codes." Acoustics, Speech and Signal Processing (ICASSP), 2011

IEEE International Conference on. IEEE, 2011.

[11] Fossorier, Marc PC, Miodrag Mihaljevic, and Hideki Imai. "Reduced complexity iterative decoding of low-density parity check codes based on belief propagation."

IEEE Transactions on communications 47.5 (1999): 673-680.

[12] Dosio, Davide. Polar codes for error correction: analysis and decoding

59

[13] Moon, Todd K. "Error correction coding." Mathematical Methods and Algorithms.

Jhon Wiley and Son (2005).

[14] Tal, Ido, and Alexander Vardy. "List decoding of polar codes." IEEE

Transactions on Information Theory 61.5 (2015): 2213-2226.

[15] Vangala, Harish, Emanuele Viterbo, and Yi Hong. "A comparative study of polar code constructions for the AWGN channel." arXiv preprint arXiv:1501.02473 (2015).

[16] Vangala, Harish, Yi Hong, and Emanuele Viterbo. "Efficient algorithms for systematic polar encoding." IEEE communications letters 20.1 (2016): 17-20.

[17] Vangala, Harish, Emanuele Viterbo, and Yi Hong. "Permuted successive cancellation decoder for polar codes." Information Theory and its Applications

No documento Polarização de canal e códigos polares (páginas 46-60)

Documentos relacionados