• Nenhum resultado encontrado

Redução da complexidade de decodificação de códigos convolucionais e turbo baseada em limiares de confiabilidade

N/A
N/A
Protected

Academic year: 2021

Share "Redução da complexidade de decodificação de códigos convolucionais e turbo baseada em limiares de confiabilidade"

Copied!
153
0
0

Texto

(1)

Faculdade de Engenharia Elétrica e de Computação

LUÍS OTÁVIO MATAVELI

REDUÇÃO DA COMPLEXIDADE DE DECODIFICAÇÃO

DE CÓDIGOS CONVOLUCIONAIS E TURBO

BASEADA EM LIMIARES DE CONFIABILIDADE

Campinas, SP 2016

(2)

Faculdade de Engenharia Elétrica e de Computação

LUÍS OTÁVIO MATAVELI

REDUÇÃO DA COMPLEXIDADE DE DECODIFICAÇÃO

DE CÓDIGOS CONVOLUCIONAIS E TURBO

BASEADA EM LIMIARES DE CONFIABILIDADE

Tese apresentada à Faculdade de Engenharia Elétrica e de Computação da Universidade Estadual de Cam-pinas como parte dos requisitos exigidos para obten-ção do título de Doutor em Engenharia Elétrica, na Área de Telecomunicações e Telemática.

Orientador: Prof. Dr. Celso de Almeida

Este exemplar corresponde à versão final da tese defendida pelo aluno Luís Otávio Mataveli e orientada pelo Prof. Dr. Celso de Almeida.

Campinas, SP 2016

(3)

% & ' ( ") *  * (  )  * +   * (   , - &  ) . /  (   *  0 "(  * (  & ! ( &   " (  "1 + ( + " 2 +   &   ( " )  &  3  4  5 . 6 76 8 9 : 3   ' ( ; 2 + <) = # '  ; 8 : 6 > 4 3 ? 8> " 3   5 ( * + @ A *   , - ( B *  * ( * ( * (  * $  @ A * (  C * ! )  & ' +   &  ) ( + "/ /  ) (  *  ( , ,  "( ) * (  & $ / *  * ( 7 2 + <) = # '  3   ' ( D E   , - &  ) ;   F G) D& DH; 9 I 8 J D 3  = "( &  * "F  ( ) * (  , ( *  D 3  K ( ) ( L* +  " * M E % & ' ( ") *  * (  )  * +   * (   , - &  ) ;    + *  * ( * (  & ! ( &   "  N "  ( * (  , - +  @ A D 3  8 D  C * ! )  ""(  "( ) * ( ( "" LK ( " *  & $ ",  @ A MD 9 D K ( " *   * $  @ A D > D  ! ", ) D OD  , ( *  ;  ( ) * ( ;8 : P Q 4D OOD % & ' ( ") *  * (  )  * +   * (   , - &  ) D    + *  * ( * (  & ! ( &   "  N "  ( * (  , - +  @ A D OOOD K <+  D

O& $ ",  @ R ( ) -  " . /  (   S !  

T U V W  V         , - ( B X "( * +   & $  & ' +  &    & * + "/ * (  * & ! /  ) ( * & "(  / X  "( )  * )

Y  WZ   [ \  Z    W  

 "" "4 ""(  & !  * ( ) LO& $ ",   &  ( "X M  * & !  ( "X  ! " , ) ]         ^ _  K ( (  , + &   @ R ( ) ( K ( ( , #   T  V W ^ _  S +  " ( ,  & ! ( &   "  N "  `     a        ( ) * (  , ( *  G= "( &  * "H b ( " * b  5  , + & * b , ( ) b

& c    ( "&  & * = , ( *  $+ ( & ( ) 5 ( ! &  *    c c d e &  "

d  , (  "+ !  ( )

f      I 84I Q 49 I 8 J

(4)

Candidato: Luís Otávio Mataveli RA: 057996 Data da Defesa: 1 de julho de 2016

Título da Tese: "Redução da Complexidade de Decodificação de Códigos Convolucionais e Turbo Baseada em Limiares de Confiabilidade"

Prof. Dr. Celso de Almeida (Presidente, FEEC/UNICAMP) Prof. Dr. Geraldo Gil Ramundo Gomes (INATEL)

Prof. Dr. Gonzalo Fernando Olmedo Cifuentes (DEEE/ESPE) Prof. Dr. Reginaldo Palazzo Júnior (FEEC/UNICAMP) Prof. Dr. Jaime Portugheis (FT/UNICAMP)

A ata da defesa, com as respectivas assinaturas dos membros da Comissão Julgadora, encontra-se no processo de vida acadêmica do aluno.

(5)
(6)

Agradeço ao meu orientador Prof. Celso de Almeida, que muito me ensinou, pela oportunidade, orientação, ajuda, incentivo e paciência.

Aos professores da comissão julgadora pelos comentários e sugestões que contribuíram para me-lhorar o trabalho.

(7)

Os sistemas de comunicação sem fio que utilizam códigos convolucional e turbo apresentam alta complexidade de decodificação. É proposto um método baseado em limiares de confiabilidade para a redução desta complexidade. Através da comparação de amostras com limiares de confiabilidade, al-guns bits podem ser previamente decididos e alal-guns cálculos na decodificação podem ser eliminados, reduzindo assim a sua complexidade. Na decodificação de códigos convolucionais temos como base o algoritmo de Viterbi, em que a sua complexidade é proporcional ao número de ramos na treliça. Para os códigos turbo definimos um limiar de confiabilidade para as LLRs (Log Likelihood Ratios). Quando uma LLR é confiável, uma decisão é tomada sobre o bit de informação e assim alguns ramos na treliça de decodificação são eliminados. Além disso, também definimos um critério de parada de decodificação, o que leva a uma ainda maior redução da complexidade. Nesta tese mostramos que é possível reduzir a complexidade de decodificação de códigos convolucionais e turbo sem perda de desempenho perceptível em relação aos algoritmos de Viterbi - no caso da decodificação dos códigos convolucionais - e ao MAP, Max-Log-MAP e Log-MAP - no caso da decodificação turbo. Mostramos ainda que a complexidade da decodificação turbo varia com a razãoEb/N0 e diminui a cada iteração.

Nesta tese analisamos o desempenho e a complexidade de decodificação em canais AWGN e com desvanecimento Rayleigh.

Palavras-chave: Redução de Complexidade, Códigos Convolucionais, Códigos Turbo.

Abstract

Convolutional and turbo codes have high complexity decoding. A method that aims at reducing this complexity is proposed. Comparing samples to reliability thresholds some bits can be previously decided and some calculations can be eliminated, which reduces the decoding complexity. For con-volutional decoding, based on the Viterbi algorithm, the complexity is proportional to the number of branches in the trellis. For turbo decoding we set a threshold to classify each LLR (Log Likelihood Ratio) information bit. When the LLR is reliable, we make a decision on information bit and eliminate some branches in the trellis. Furthermore, we also define a criterion for stop decoding which further reduces the complexity. In this thesis we show that it is possible to reduce the complexity of convo-lutional and turbo decoding without performance degradation when comparing to Viterbi algorithm - for convolutional decoding - and to MAP, Max-Log-MAP and Log-MAP - for turbo decoding. For turbo decoding, we also show that complexity varies withEb/N0 and diminish each iteration. In this

thesis we analyse the performance and decoding complexity of the proposed method by considering AWGN and Rayleigh fading channels.

(8)

2.1 Representação do Canal AWGN. . . 22

2.2 PDF de uma Variável Aleatória Gaussiana. . . 23

2.3 Representação do Canal com Desvanecimento e Ruído Aditivo. . . 24

2.4 Codificador Convolucional (2, 1, 2). . . 26

2.5 Diagrama de Estados do Codificador CNS, m = 2. . . 28

2.6 Treliça do Codificador CNS, m = 2. . . 29

2.7 Diagramas de Estados com Representação dos Coeficientes X, Y e Z. . . 29

2.8 Codificador Convolucional Sistemático (2,1,2). . . 31

2.9 Codificador Convolucional Recursivo Sistemático. . . 31

2.10 Treliça do Codificador Convolucional Recursivo Sistemático (CRS). . . 32

2.11 Exemplo de Treliça Ilustrando os Parâmetros N, m e i. . . 33

2.12 Treliça para Decodificação Utilizando o Algoritmo de Viterbi. . . 35

2.13 Codificador Turbo CCP. . . 37

2.14 Codificador turbo CCP com q=2. . . 38

2.15 Codificador turbo CCP utilizado. . . 38

2.16 Funções de Verossimilhança. . . 41

2.17 Esquema do Decodificador Iterativo Turbo. . . 42

2.18 Treliça para Decodificação MAP de Código CRS com 4 Estados. . . 44

3.1 Regiões de Confiabilidade para Classificação das Amostras Recebidas. . . 61

3.2 PDF das Probabilidades Condicionais. . . 62

3.3 Eliminação de Ramos na Treliça com Base nos Limiares de Confiabilidade - Primeiro Passo. . . 64

3.4 Eliminação de Ramos na Treliça no Segundo Passo do Método Proposto. . . 65

3.5 Desempenho do Código Convolucional G = [7, 5] em um Canal AWGN. . . 74

3.6 Complexidade e Tempo de Simulação Normalizados do Código Convolucional G = [7, 5] em um Canal AWGN. . . 75

(9)

3.9 Desempenho do Código Convolucional G = [5, 7, 7] em um Canal AWGN. . . 77 3.10 Complexidade e Tempo de Simulação Normalizados do Código Convolucional G =

[5, 7, 7] em um Canal AWGN. . . 77 3.11 Desempenho do Código Convolucional G = [54, 64, 74] em um Canal AWGN. . . . 78 3.12 Complexidade e Tempo de Simulação Normalizados do Código Convolucional G =

[54, 64, 74] em um Canal AWGN. . . 79 3.13 Desempenho e Complexidade Normalizada em Função do Limiar de Confiabilidade

paraEb/N0 = 4 dB com Código Convolucional G = [7, 5] em um Canal AWGN. . . 79

3.14 Influência do Tamanho da Janela de Observação no Cálculo da Complexidade da Decodificação para Eb/N0 = 4 dB com Código Convolucional G = [7, 5] em um

Canal AWGN. . . 80 3.15 Desempenho e Complexidade Normalizada em Função do Limiar de Confiabilidade

paraEb/N0 = 4 dB com Código Convolucional G = [64, 74] em um Canal AWGN. . 81

3.16 Desempenho e Complexidade Normalizada em Função do Limiar de Confiabilidade paraEb/N0 = 4 dB com Código Convolucional G = [5, 7, 7] em um Canal AWGN. . 82

3.17 Desempenho e Complexidade Normalizada em Função do Limiar de Confiabilidade para Eb/N0 = 4 dB com Código Convolucional G = [54, 64, 74] em um Canal

AWGN. . . 83 3.18 Desempenho do Código Convolucional G = [7, 5] em um Canal com

Desvaneci-mento Rayleigh. . . 85 3.19 Complexidade e Tempo de Simulação Normalizados do Código Convolucional G =

[7, 5] em um Canal com Desvanecimento Rayleigh. . . 85 3.20 Desempenho do Código Convolucional G = [64, 74] em um Canal com

Desvaneci-mento Rayleigh. . . 86 3.21 Complexidade e Tempo de Simulação Normalizados do Código Convolucional G =

[64, 74] em um Canal com Desvanecimento Rayleigh. . . 87 3.22 Desempenho do Código Convolucional G = [5, 7, 7] em um Canal com

Desvaneci-mento Rayleigh. . . 87 3.23 Complexidade e Tempo de Simulação Normalizados do Código Convolucional G =

[5, 7, 7] em um Canal com Desvanecimento Rayleigh. . . 88 3.24 Desempenho do Código Convolucional G = [54, 64, 74] em um Canal com

(10)

3.26 Desempenho e Complexidade Normalizada em Função do Limiar de Confiabilidade paraEb/N0 = 7 dB com Código Convolucional G = [7, 5] em um Canal com

Desva-necimento Rayleigh. . . 90 3.27 Desempenho e Complexidade Normalizada em Função do Limiar de Confiabilidade

para Eb/N0 = 7 dB com Código Convolucional G = [64, 74] em um Canal com

Desvanecimento Rayleigh. . . 91 3.28 Desempenho e Complexidade Normalizada em Função do Limiar de Confiabilidade

para Eb/N0 = 7 dB com Código Convolucional G = [5, 7, 7] em um Canal com

Desvanecimento Rayleigh. . . 92 3.29 Desempenho e Complexidade Normalizada em Função do Limiar de Confiabilidade

paraEb/N0 = 7 dB com Código Convolucional G = [54, 64, 74] em um Canal com

Desvanecimento Rayleigh. . . 93 4.1 Valores das LLRs na Saída do Segundo Decodificador da Primeira à Oitava Iteração. 97 4.2 Eliminação dos Ramos com Base na Classificação das LLRs. . . 99 4.3 Eliminação de Ramos Desconexos de um Código CRS Constituinte do Código Turbo. 100 4.4 Percentual de LLRs que Mudam de Sinal Após uma Decisão Prévia em Função do

Limiar de Confiabilidade. Decodificador Turbo MAP com Taxa rt = 1/2, N = 1000

bits em Canal AWGN comEb/N0 = 1 dB . . . 110

4.5 Número de LLRs Confiáveis a Cada Iteração em Função de Eb/N0 para L = 15 e

Bloco de 1000 bits para Canal AWGN. . . 111 4.6 Desempenho do Código Turbo de Taxa rt = 1/2 em Canal AWGN em Função do

Número de Iterações com o Método Proposto Baseado no Algoritmo MAP para L = 15.112 4.7 Complexidade e Tempo de Simulação Normalizados do Código Turbo de Taxa rt =

1/2 em Canal AWGN em Função do Número de Iterações com o Método Proposto

Baseado no Algoritmo MAP para L = 15. . . 113 4.8 Número Normalizado Médio de Ramos na Treliça do Código Turbo de Taxa rt =

1/2 em Canal AWGN em Função do Número de Iterações com o Método Proposto

Baseado no Algoritmo MAP para L = 15. . . 114 4.9 Desempenho do Código Turbo de Taxa rt =1/2em Canal AWGN comEb/N0 = 2 dB,

em Função do Número de Iterações com o Método Proposto Baseado no Algoritmo MAP para L = 15. . . 115

(11)

Método Proposto Baseado no Algoritmo MAP com L = 15. . . 115 4.11 Desempenho e Complexidade Normalizada em Função do Limiar de Confiabilidade

para Decodificador Turbo MAP na Quarta Iteração com Taxa rt = 1/2 em Canal

AWGN comEb/N0 = 2 dB. . . 116

4.12 Desempenho do Código Turbo de Taxa rt = 1/3 em Canal AWGN em Função do

Número de Iterações com o Método Proposto Baseado no Algoritmo MAP para L = 15.117 4.13 Complexidade e Tempo de Simulação Normalizados do Código Turbo de Taxa rt =

1/3 em Canal AWGN em Função do Número de Iterações com o Método Proposto

Baseado no Algoritmo MAP para L = 15. . . 118 4.14 Desempenho do Código Turbo de Taxa rt = 1/3 em Canal AWGN com Eb/N0 =

1, 25 dB, em Função do Número de Iterações com o Método Proposto Baseado no Algoritmo MAP para L = 15. . . 118 4.15 Complexidade Normalizada do Código Turbo de Taxa rt = 1/3 em Canal AWGN

comEb/N0 = 1, 25 dB, em Função do Número de Iterações com o Método Proposto

Baseado no Algoritmo MAP para L = 15. . . 119 4.16 Desempenho e Complexidade Normalizada em Função do Limiar de Confiabilidade

para Decodificador Turbo MAP na Quarta Iteração com Taxa rt = 1/3 em Canal

AWGN comEb/N0 = 1, 25 dB. . . 120

4.17 Desempenho do Código Turbo de Taxa rt = 1/2 em Canal com Desvanecimento

Rayleigh em Função do Número de Iterações com o Método Proposto Baseado no Algoritmo MAP para L = 15. . . 120 4.18 Complexidade e Tempo de Simulação Normalizados do Código Turbo de Taxa rt =

1/2em Canal com Desvanecimento Rayleigh em Função do Número de Iterações com

o Método Proposto Baseado no Algoritmo MAP para L = 15. . . 121 4.19 Desempenho do Código Turbo de Taxa rt = 1/2 em Canal com Desvanecimento

Rayleigh com Eb/N0 = 4 dB, em Função do Número de Iterações com o Método

Proposto Baseado no Algoritmo MAP para L = 15. . . 122 4.20 Complexidade e Tempo de Simulação Normalizados do Código Turbo de Taxa rt =

1/2em Canal com Desvanecimento Rayleigh comEb/N0 = 4 dB, em Função do

Nú-mero de Iterações com o Método Proposto Baseado no Algoritmo MAP para L = 15. 122 4.21 Desempenho e Complexidade Normalizada em Função do Limiar de Confiabilidade

para Decodificador Turbo MAP na Quarta Iteração com Taxa rt = 1/2em Canal com

(12)

Algoritmo MAP para L = 10. . . 123 4.23 Complexidade e Tempo de Simulação Normalizados do Código Turbo de Taxa rt =

1/2em Canal com Desvanecimento Rayleigh em Função do Número de Iterações com

o Método Proposto Baseado no Algoritmo MAP com L = 10. . . 124 4.24 Desempenho do Código Turbo de Taxa rt = 1/3 em Canal com Desvanecimento

Rayleigh em Função do Número de Iterações com o Método Proposto Baseado no Algoritmo MAP para L = 15. . . 125 4.25 Complexidade e Tempo de Simulação Normalizados do Código Turbo de Taxa rt =

1/3em Canal com Desvanecimento Rayleigh em Função do Número de Iterações com

o Método Proposto Baseado no Algoritmo MAP com L = 15. . . 125 4.26 Desempenho do Código Turbo de Taxa rt = 1/3 em Canal com Desvanecimento

Rayleigh com Eb/N0 = 2, 5 dB, em Função do Número de Iterações com o Método

Proposto Baseado no Algoritmo MAP para L = 15. . . 126 4.27 Complexidade Normalizada do Código Turbo de Taxa rt =1/3em Canal com

Desva-necimento Rayleigh comEb/N0 = 2, 5 dB, em Função do Número de Iterações com o

Método Proposto Baseado no Algoritmo MAP para L = 15. . . 126 4.28 Desempenho e Complexidade Normalizada em Função do Limiar de Confiabilidade

para Decodificador Turbo MAP na Quarta Iteração com Taxa rt =1/3em Canal com

Desvanecimento Rayleigh comEb/N0 = 2, 5 dB. . . 127

4.29 Desempenho do Código Turbo de Taxa rt = 1/2 em Canal AWGN em Função do

Número de Iterações com o Método Proposto Baseado no Algoritmo Max-Log-MAP para L = 15. . . 128 4.30 Complexidade e Tempo de Simulação Normalizados do Código Turbo de Taxa rt =

1/2 em Canal AWGN em Função do Número de Iterações com o Método Proposto

Baseado no Algoritmo Max-Log-MAP para L = 15. . . 129 4.31 Desempenho e Complexidade Normalizada em Função do Limiar de Confiabilidade

para Decodificador Turbo Max-Log-MAP na Quarta Iteração com Taxa rt = 1/2em

Canal AWGN comEb/N0 = 2, 25 dB. . . 130

4.32 Desempenho do Código Turbo de Taxa rt = 1/3 em Canal AWGN em Função do

Número de Iterações com o Método Proposto Baseado no Algoritmo Max-Log-MAP para L = 15. . . 131

(13)

Baseado no Algoritmo Max-Log-MAP para L = 15. . . 131 4.34 Desempenho e Complexidade Normalizada em Função do Limiar de Confiabilidade

para Decodificador Turbo Max-Log-MAP para a Quarta Iteração com Taxa rt = 1/3

em Canal AWGN comEb/N0 = 1, 5 dB. . . 132

4.35 Desempenho do Código Turbo de Taxa rt = 1/2 em Canal com Desvanecimento

Rayleigh para Diferentes Iterações com o Método Proposto Baseado no Algoritmo Max-Log-MAP com L = 15. . . 133 4.36 Complexidade e Tempo de Simulação Normalizados do Código Turbo de Taxa rt =

1/2em Canal com Desvanecimento Rayleigh para Diferentes Iterações com o Método

Proposto Baseado no Algoritmo Max-Log-MAP com L = 15. . . 133 4.37 Desempenho e Complexidade Normalizada em Função do Limiar de Confiabilidade

para Decodificador Turbo Max-Log-MAP para a Quarta Iteração com Taxa rt = 1/2

em Canal com Desvanecimento Rayleigh comEb/N0 = 4 dB. . . 134

4.38 Desempenho do Código Turbo de Taxa rt = 1/3 em Canal com Desvanecimento

Rayleigh em Função do Número de Iterações com o Método Proposto Baseado no Algoritmo Max-Log-MAP para L = 15. . . 135 4.39 Complexidade e Tempo de Simulação Normalizados do Código Turbo de Taxa rt =

1/3em Canal com Desvanecimento Rayleigh em Função do Número de Iterações com

o Método Proposto Baseado no Algoritmo Max-Log-MAP para L = 15. . . 135 4.40 Desempenho e Complexidade Normalizada em Função do Limiar de Confiabilidade

para Decodificador Turbo Max-Log-MAP para a Quarta Iteração com Taxa rt = 1/3

em Canal com Desvanecimento Rayleigh comEb/N0 = 2, 5 dB. . . 136

4.41 Desempenho do Código Turbo de Taxa rt = 1/2 em Canal AWGN em Função do

Número de Iterações com o Método Proposto Baseado no Algoritmo Log-MAP para L = 15. . . 137 4.42 Complexidade e Tempo de Simulação Normalizados do Código Turbo de Taxa rt =

1/2 em Canal AWGN em Função do Número de Iterações com o Método Proposto

Baseado no Algoritmo Log-MAP para L = 15. . . 138 4.43 Desempenho e Complexidade Normalizada em Função do Limiar de Confiabilidade

para Decodificador Turbo Log-MAP para a Quarta Iteração com Taxa rt = 1/2em

(14)

L = 15. . . 139 4.45 Complexidade e Tempo de Simulação Normalizados do Código Turbo de Taxa rt =

1/3 em Canal AWGN em Função do Número de Iterações com o Método Proposto

Baseado no Algoritmo Log-MAP para L = 15. . . 140 4.46 Desempenho e Complexidade Normalizada em Função do Limiar de Confiabilidade

para Decodificador Turbo Log-MAP para a Quarta Iteração com Taxa rt = 1/3 em

Canal AWGN paraEb/N0 = 1, 25 dB. . . 140

4.47 Desempenho do Código Turbo de Taxa rt = 1/2 em Canal com Desvanecimento

Rayleigh em Função do Número de Iterações com o Método Proposto Baseado no Algoritmo Log-MAP para L = 15. . . 141 4.48 Complexidade e Tempo de Simulação Normalizados do Código Turbo de Taxa rt =

1/2em Canal com Desvanecimento Rayleigh em Função do Número de Iterações com

o Método Proposto Baseado no Algoritmo Log-MAP para L = 15. . . 142 4.49 Desempenho e Complexidade Normalizada em Função do Limiar de Confiabilidade

para Decodificador Turbo Log-MAP para a Quarta Iteração com Taxa rt = 1/2 em

Canal com Desvanecimento Rayleigh paraEb/N0 = 4 dB. . . 142

4.50 Desempenho do Código Turbo de Taxa rt = 1/3 em Canal com Desvanecimento

Rayleigh em Função do Número de Iterações com o Método Proposto Baseado no Algoritmo Log-MAP para L = 15. . . 143 4.51 Complexidade e Tempo de Simulação Normalizados do Código Turbo de Taxa rt =

1/3em Canal com Desvanecimento Rayleigh em Função do Número de Iterações com

o Método Proposto Baseado no Algoritmo Log-MAP para L = 15. . . 143 4.52 Desempenho e Complexidade Normalizada em Função do Limiar de Confiabilidade

para Decodificador Turbo Log-MAP para a Quarta Iteração com Taxa rt = 1/3 em

(15)

2.1 Exemplos de Códigos Convolucionais. . . 30

2.2 Número de Operações Matemáticas do Algoritmo de Viterbi. . . 52

2.3 Número de Operações Matemáticas do Algoritmo MAP. . . 54

2.4 Número de Operações Matemáticas do Algoritmo Max-Log-MAP. . . 55

2.5 Número de Operações Matemáticas do Algoritmo Log-MAP. . . 56

2.6 Equações de Complexidade dos Algoritmos MAP, Max-Log-MAP, Log-MAP e Vi-terbi em Termos de Adições Equivalentes. . . 57

2.7 Número de Operações Realizadas por Diferentes Algoritmos na Decodificação de um Intervalo da Treliça. . . 58

3.1 Valores das Probabilidades Condicionais para A = 1 e σy = 1em Função de L. . . . 63

3.2 Número de Operações Matemáticas do Método Proposto para uma Seção de Treliça com npBits Previamente Decididos. . . 67

3.3 Número de Operações Realizadas pelo Método Proposto na Decodificação de um Intervalo da Treliça e a sua Comparação com o Algoritmo de Viterbi. . . 68

4.1 Número de Adições Equivalentes do Algoritmo MAP Utilizando o Método Proposto em uma Seção da Treliça com 8 Ramos. . . 103

4.2 Número de Adições Equivalentes do Algoritmo MAP Utilizando o Método Proposto em uma Seção da Treliça com 4 Ramos. . . 103

4.3 Número de Adições Equivalentes do Algoritmo MAP Utilizando o Método Proposto em uma Seção da Treliça com 2 Ramos. . . 104

4.4 Número de Adições Equivalentes do Algoritmo Max-Log-MAP Utilizando o Método Proposto em uma Seção da Treliça com 8 Ramos. . . 105

4.5 Número de Adições Equivalentes do Algoritmo Max-Log-MAP Utilizando o Método Proposto em uma Seção da Treliça com 4 Ramos. . . 105

4.6 Número de Adições Equivalentes do Algoritmo Max-Log-MAP Utilizando o Método Proposto em uma Seção da Treliça com 2 Ramos. . . 106

(16)

4.8 Número de Adições Equivalentes do Algoritmo Log-MAP Utilizando o Método Pro-posto em uma Seção da Treliça com 4 Ramos. . . 107 4.9 Número de Adições Equivalentes do Algoritmo Log-MAP Utilizando o Método

Pro-posto em uma Seção da Treliça com 2 Ramos. . . 107 4.10 Número de Adições Equivalentes Realizadas pelo Método Proposto na Decodificação

(17)

Lista de Figuras 7

Lista de Tabelas 15

Glossário 17

1 Introdução 19

1.1 Visão Geral do Trabalho . . . 20

2 Conceitos Básicos 21 2.1 Canais de Comunicação . . . 21

2.1.1 Canal AWGN . . . 22

2.1.2 Canal com Desvanecimento Rayleigh . . . 23

2.2 Códigos Corretores de Erro . . . 25

2.2.1 Códigos Convolucionais . . . 25

2.2.1.1 Códigos Convolucionais Sistemáticos . . . 30

2.2.1.2 Códigos Convolucionais Recursivos Sistemáticos . . . 31

2.2.1.3 Decodificação de Códigos Convolucionais - Algoritmo de Viterbi . 33 2.2.2 Códigos Turbo . . . 36

2.2.2.1 Codificador Turbo CCP . . . 37

2.2.2.2 Entrelaçador . . . 39

2.2.2.3 Puncionamento . . . 39

2.2.2.4 Bits de Zeramento . . . 40

2.2.2.5 Decodificação dos Códigos Turbo . . . 40

2.2.3 Complexidade de Decodificação dos Códigos Convolucionais e Turbo . . . . 51

2.2.3.1 Complexidade do Algoritmo de Viterbi . . . 51

2.2.3.2 Complexidade do Algoritmo MAP . . . 52

(18)

3 Redução da Complexidade dos Códigos Convolucionais 59 3.1 Método para Redução da Complexidade de Decodificação dos Códigos

Convolucio-nais . . . 60

3.1.1 Análise da Redução da Complexidade . . . 67

3.1.2 Cálculo da Complexidade Normalizada do Método Proposto . . . 68

3.2 Resultados para um Canal AWGN . . . 72

3.3 Resultados para um Canal com Desvanecimento Rayleigh . . . 81

3.4 Conclusões Sobre a Redução da Complexidade de Decodificação dos Códigos Con-volucionais . . . 92

4 Redução da Complexidade de Códigos Turbo 95 4.1 Método para Redução da Complexidade de Decodificação dos Códigos Turbo . . . . 96

4.1.1 Análise da Redução da Complexidade . . . 102

4.1.1.1 Redução de Complexidade do Algoritmo MAP . . . 102

4.1.1.2 Redução de Complexidade do Algoritmo Max-Log-MAP . . . 105

4.1.1.3 Redução de Complexidade do Algoritmo Log-MAP . . . 106

4.2 Resultados para o Algoritmo MAP . . . 108

4.2.1 Simulações para um Canal AWGN . . . 112

4.2.2 Simulações para um Canal com Desvanecimento Rayleigh . . . 119

4.3 Resultados para o Algoritmo Max-Log-MAP . . . 127

4.3.1 Simulações para um Canal AWGN . . . 128

4.3.2 Simulações para um Canal com Desvanecimento Rayleigh . . . 132

4.4 Resultados para o Algoritmo Log-MAP . . . 134

4.4.1 Simulações para um Canal AWGN . . . 136

4.4.2 Simulações para um Canal com Desvanecimento Rayleigh . . . 139 4.5 Conclusões Sobre a Redução da Complexidade de Decodificação dos Códigos Turbo 144

(19)

Capítulo 1

Introdução

Os códigos convolucional e turbo são muito utilizados em sistemas de comunicações sem fio para se obter a correção de erros e diversidade temporal dos bits de informação. Estes códigos são utiliza-dos em padrões como WiMAX, LTE, Wi-Fi, dentre outros, e têm alta complexidade de decodificação. Atualmente os smartphones, por exemplo, têm que suportar vários padrões de rádio, aplicações grá-ficas e de mídia, o que resulta em mais de 1011operações por segundo com uma potência limitada a

1 Watt [1]. Mais de 50% das operações são feitas no processamento da parte de rádio (demodulação e decodificação). O processamento necessário para se fazer a decodificação, por exemplo utilizando códigos turbo, é muito maior em comparação ao utilizado em outros processos como equalização, estimativa de canal, cancelamento de interferências e sincronismo [2]. Por isso, é importante reduzir o número de operações na decodificação dos códigos convolucional e turbo.

A redução da complexidade de decodificação é um assunto de interesse de vários pesquisadores, já existindo alguns trabalhos com este objetivo e que serão comentados nos capítulos seguintes. Nesta tese, um novo método que, baseado em limiares de confiabilidade, reduz a complexidade de decodi-ficação dos códigos convolucionais e turbo é proposto. Com este método pretendemos obter menor complexidade de decodificação, mas sem perda perceptível de desempenho.

Para a decodificação dos códigos convolucionais tomamos como base o algoritmo de Viterbi [3] e para os códigos turbo, os algoritmos MAP, Max-Log-MAP e Log-MAP [4]. Embora a ideia de se usar limiares de confiabilidade para os dois códigos seja a mesma, para cada tipo de código temos uma abordagem diferente. Na decodificação de códigos convolucionais definimos um limiar para classifi-car as amostras do sinal recebido como confiáveis ou não. Se uma amostra for considerada confiável, então tomamos uma decisão prévia sobre este bit. Na decodificação de códigos turbo, usamos um limiar para classificar as LLRs de um bit sistemático. Quando a LLR deste bit for confiável, então uma decisão sobre o bit de informação para aquela seção da treliça será tomada e ramos que não têm aquele bit previamente decidido serão eliminados. Finalmente, um critério de parada da

(20)

decodifica-ção será também definido, e quando todas as LLRs forem confiáveis, paramos a decodificadecodifica-ção, o que também leva a uma redução da complexidade.

A redução da complexidade de decodificação produz em sistemas reais uma menor exigência dos processadores dos dispositivos. Isto permite um menor consumo de energia ou que o processamento possa ser utilizado por outros processos ou aplicações. Isto faz com que os dispositivos operem com maior eficiência em termos de processamento e consumo de energia.

Nos capítulos seguintes iremos apresentar o método de redução da complexidade de decodificação e os resultados de simulação que mostram curvas de desempenho, em termos de taxa de erro de bit (BER) e curvas de complexidade. As simulações utilizam o método de Monte Carlo considerando canais AWGN e com desvanecimento Rayleigh e diferentes codificadores convolucionais e turbo.

1.1

Visão Geral do Trabalho

Esta tese está organizada da seguinte maneira. No Capítulo 2 apresentamos os conceitos básicos de canais de comunicação e de códigos corretores de erro. Foi dada uma ênfase nos códigos convo-lucionais e turbo que são objeto de estudo desta tese. Neste capítulo mostramos todos os cálculos necessários para se realizar a decodificação utilizando os diferentes algoritmos quando faremos uma análise da complexidade de cada um.

No Capítulo 3 apresentamos o método para redução da complexidade de decodificação dos códi-gos convolucionais. Utilizamos como base o algoritmo de Viterbi e mostramos o quanto o método consegue reduzir a complexidade em relação ao algoritmo de Viterbi. No final do capítulo mostramos os resultados de simulação para diferentes codificadores, considerando um canal AWGN e outro com desvanecimento Rayleigh.

No Capítulo 4 mostramos o funcionamento do método para redução da complexidade de códigos turbo. Mostramos como o método funciona e suas diferenças em relação ao utilizado para códigos convolucionais. Fazemos uma análise da redução de complexidade para cada algoritmo utilizado como base: MAP, Max-Log-MAP e Log-MAP. Finalmente, mostramos os resultados de simulação para cada algoritmo.

No Capítulo 5, são discutidas as conclusões desta tese, bem como os seus principais resultados e contribuições.

(21)

Capítulo 2

Conceitos Básicos

Neste capítulo, introduziremos os conceitos básicos de canal AWGN (do inglês Additive White Gaussian Noise- Ruído Aditivo Gaussiano Branco) e canal com desvanecimento. Consideraremos o desvanecimento com distribuição Rayleigh, pois este será utilizado nas simulações de desempenho e complexidade dos códigos corretores de erro que são objeto de estudo deste trabalho. Também será feita uma introdução aos códigos corretores de erro dos tipos convolucional e turbo, ilustrando os conceitos teóricos destes códigos e suas complexidades computacionais.

2.1

Canais de Comunicação

Nesta seção descreveremos dois canais de comunicação que geralmente são usados na análise de desempenho de códigos corretores de erro. Um deles é o canal AWGN que é um tipo de canal que serve como referência para vários estudos, onde é considerada somente a adição de ruído ao sinal recebido. Embora não seja um canal encontrado em sistemas práticos de comunicação sem fio, por não considerar o desvanecimento, ele é bastante utilizado na análise de códigos corretores de erro, diferentes tipos de modulação, entre outros.

O outro tipo canal que iremos analisar é o canal com desvanecimento Rayleigh. Este canal é o que mais se aproxima de sistemas reais de transmissão sem fio, pois além de considerar o ruído gaussiano, também considera o desvanecimento causado pelos múltiplos percursos que o sinal percorre entre o transmissor e o receptor. Existem outros modelos de canal com desvanecimento, como Nakagami, Weibull, Rice, Suzuki, entre outros, mas neste trabalho iremos considerar somente o desvanecimento com distribuição Rayleigh. Entendemos que não seja necessário considerar outros tipos de canal, pois o desvanecimento Rayleigh é o de pior caso.

(22)

+

s(t) r(t) n(t)

Canal

Figura 2.1: Representação do Canal AWGN.

2.1.1

Canal AWGN

Na literatura [5], para efeito de estudo, geralmente se representa um canal linear como um filtro que modifica o sinal transmitido, fazendo com que no receptor chegue um sinal que sofreu distorções. O sinal recebido é dado pela convolução do sinal transmitido com a resposta ao impulso do canal.

O canal AWGN é o modelo matemático mais simples utilizado na representação de canais de comunicação. Nele, ao sinal transmitido é somado um ruído aleatório que tem distribuição gaussi-ana. Fisicamente, o ruído aditivo é gerado por resistores e componentes eletrônicos do receptor [5]. Quando o ruído é primariamente introduzido devido aos componentes eletrônicos, ele é caracterizado como ruído balístico (shot). Quando o ruído é produzido por resistores, ele é denominado de ruído térmico. O ruído é caracterizado estatisticamente como um processo aleatório gaussiano, assim o canal é caracterizado como canal aditivo gaussiano.

Este ruído está em quase toda a faixa de frequências com densidade espectral bilateral de potên-cia N0/2 W/Hz. Devido a esta característica, o ruído também é chamado de "branco". Assim, um

canal AWGN é um canal que adiciona ruído ao sinal transmitido, sendo que o ruído tem distribuição gaussiana e está presente em quase toda a faixa de frequências. Na verdade, o ruído é adicionado no receptor e não no canal, mas os resultados são equivalentes se considerarmos o ruído sendo produzido no canal.

O modelo do canal AWGN é mostrado na Fig. 2.1. O sinal recebido r (t) é a soma do sinal transmitido s (t) com o ruído n (t):

r (t) = s (t) + n (t) (2.1)

Matematicamente, o ruído gaussiano tem a seguinte PDF (Probably Density Function - Função Densidade de Probabilidade): p (n) = √ 1 2πσn exp −(n − µn) 2 2σ2 n (2.2)

(23)

n

µn p(n )

n

Figura 2.2: PDF de uma Variável Aleatória Gaussiana.

onde µné a média da variável aleatória n e σn2 é a sua variância. A representação gráfica de uma PDF

gaussiana é mostrada na Fig. 2.2.

É muito comum o uso do canal AWGN para análise de diversos sistemas de comunicação devido à sua simplicidade matemática. Por este motivo, também iremos considerar este modelo neste trabalho.

2.1.2

Canal com Desvanecimento Rayleigh

Além do ruído, outras perturbações podem ser provocadas em um sinal transmitido em comu-nicação sem fio. O desvanecimento (fading) é uma delas e causa variações na amplitude e fase do sinal. Quando há muitos refletores, o sinal chega ao receptor com dispersão. Isto se deve aos diversos caminhos entre transmissor e receptor. Aplicando o teorema central do limite, temos um modelo de processo gaussiano para a resposta ao impulso do canal [5]. Se este processo tiver média nula, en-tão a envoltória do sinal em um dado instante de tempo tem distribuição Rayleigh e a fase do sinal é uniformemente distribuída no intervalo [0, 2π]. O desvanecimento geralmente é do tipo Rayleigh em comunicações móveis sem linha de visada direta [6]. Esta será a distribuição considerada neste trabalho.

Uma variável aleatória a que segue uma distribuição do tipo Rayleigh tem PDF dada por:

pA(a) =    a σ2 ae −a2 2σ2a, a ≥ 0 0 a < 0 (2.3)

onde σaé o parâmetro da PDF Rayleigh.

A variável a é obtida por duas variáveis aleatórias gaussianas independentes e identicamente distribuídas (IID - Independent and Identically Distributed) de média nula. A variável aleatória a é denominada amplitude do desvanecimento e apresenta a forma a =qa2

I + a2Q, em que aI e aQsão

variáveis aleatórias gaussianas [7].

(24)

+

s(t) r(t) n(t)

x

a(t) Canal

Figura 2.3: Representação do Canal com Desvanecimento e Ruído Aditivo.

componentes em fase e em quadratura, com valor:

Ea2 = 2σ2

a (2.4)

Neste trabalho, será considerado que o valor quadrático médio da amplitude do desvanecimento tem valor unitário. Portanto as variâncias de aI e aQ serão iguais a σ2a= 12.

Já a fase do desvanecimento é definida como:

φ = arctg aQ aI



(2.5) que é um processo aleatório com distribuição uniforme e PDF dada por:

pΦ(φ) =

1

2π, 0 ≤ φ < 2π (2.6)

O desvanecimento é uma variável que se multiplica ao sinal transmitido. Além disso, há também a adição de ruído, conforme mostra a seguinte equação:

r (t) = a (t) s (t) + n (t) (2.7)

A Fig. 2.3 mostra como o desvanecimento e o ruído perturbam o sinal transmitido em um canal de comunicação sem fio.

Vimos, então, que o desvanecimento é uma variável que se multiplica ao sinal transmitido, al-terando a sua amplitude. Além disso, o desvanecimento provoca mudança na fase do sinal. Neste trabalho será considerado em alguns casos um canal puramente AWGN e em outros, que ele também sofre com desvanecimento Rayleigh.

(25)

2.2

Códigos Corretores de Erro

A codificação de canal é utilizada com a finalidade de detectar e corrigir alguns erros de bits provocados pelo canal, melhorando o desempenho de um enlace de comunicação. Para isto, o codi-ficador substitui a sequência de bits original por outra de comprimento maior, inserindo redundância na informação original. Com isso, a largura de banda necessária para a transmissão do sinal aumenta, mas o número de erros reduz consideravelmente [8].

Neste trabalho serão considerados dois tipos de códigos corretores de erro: os códigos convolu-cionais e os códigos turbo. Eles são utilizados em diversos sistemas de comunicação sem fio devido ao bom desempenho que apresentam. Neste trabalho iremos propor um método para reduzir a com-plexidade de decodificação para cada um destes códigos. Nesta seção apresentaremos os conceitos básicos que nos permitirão analisar, em seguida propor, o método para redução da complexidade.

2.2.1

Códigos Convolucionais

Os códigos convolucionais produzem uma sequência de saída ao passar uma sequência de bits de informação por um registrador de deslocamentos de comprimento finito [8]. Este tipo de código é representado pela tripla (n, k, m), onde n é o número de saídas do codificador, k é o número de entradas e m é o número máximo de elementos de memória associados a uma entrada. A relação entre o número de entradas e o número de saídas, rc =k/n, é definida como taxa do codificador.

Geralmente n e k apresentam valores pequenos e n > k para que a redundância seja inserida na sequência de informação. Os n bits de saída dependem dos k bits de entrada e também dos bits de entrada passados, devido aos elementos de memória presentes no codificador. O número de memórias m pode assumir valores altos. Quanto maior for o valor de m, maior será a complexidade do decodificador, porém melhor será também o seu desempenho em termos da probabilidade de erro de bit.

A Fig. 2.4 exemplifica um codificador convolucional (2, 1, 2) que tem como sequência de en-trada os bits de informação u = {u0, u1, u2, ...}. Na saída, duas sequências serão geradas: va =

{va

0, va1, v2a, . . .} e vb =v0b, vb1, v2b, . . .

, chamadas de sequências de paridade. Estas sequências são multiplexadas e transmitidas através do canal de comunicação. Assim, a sequência transmitida será v=va

0, v0b, v1a, vb1, . . .

.

As sequências geradoras do código podem ser definidas através da resposta ao impulso discreto do codificador. A resposta ao impulso discreta é obtida quando se aplica na entrada a sequência u = {1, 0, 0, 0, . . .}. Para um codificador convolucional genérico (2, 1, m) têm-se as seguintes sequências geradoras: g(a)

1 =

n

g0(a), g(a)1 , g2(a), . . . , g(a)K−1oe g(b)1 =ng(b)0 , g(b)1 , g(b)2 , . . . , gK−1(b) o, cada uma associada à entrada 1 e a uma saída diferente ((a) e (b)). Além disso, K = m + 1 são as

(26)

M + + M u va v vb

Figura 2.4: Codificador Convolucional (2, 1, 2).

unidades de tempo em que uma sequência de bits na entrada do decodificador influencia a saída e nA , n (m + 1) é o número de bits codificados que são modificados por um bit de entrada. Este

número é conhecido como comprimento de restrição do codificador [9]. Para o codificador da Fig. 2.4, as sequências geradoras são dadas por: g(a)

1 = {1, 0, 1} e g (b)

1 = {1, 1, 1}.

As sequências va e vb podem ser obtidas através da convolução entre a sequência de entrada u

com as sequências geradoras g(a)

1 e g

(b)

1 , daí o nome de código convolucional. Ou seja:

va = u ∗ g(a)1 (2.8)

vb = u ∗ g(b)1 (2.9)

onde ∗ representa a convolução discreta. As operações de adição e multiplicação envolvidas são módulo-2.

Após a codificação, as duas sequências de saída são multiplexadas e formam uma única sequência: v=va

0, v0b, v1a, vb1, v2a, vb2, . . .

, chamada de sequência codificada.

As sequências geradoras podem ser agrupadas em uma matriz semi-infinita, chamada matriz ge-radora G, da seguinte maneira:

G=       G0 G1 G2 · · · Gm G0 G1 · · · Gm−1 Gm G0 · · · Gm−2 Gm−1 Gm . .. . ..       (2.10)

(27)

Gl =       g(1)1,l g(2)1,l · · · g1,l(n) g(1)2,l g(2)2,l · · · g2,l(n) ... ... ... g(1)k,l g (2) k,l · · · g (n) k,l       (2.11)

em que se considera uma sequência geradora g(j)

i =

n

gi,0(j), gi,1(j), . . . , gi,m(j)

o

, com i correspondendo à entrada e j à saída.

Para o codificador da Fig. 2.4, que apresenta as sequências geradoras g(a)

1 = {1, 0, 1} e g (b)

1 =

{1, 1, 1}, temos a seguinte matriz geradora:

G=       11 01 11 11 01 11 11 01 11 . .. ...       (2.12)

Cada linha de G é idêntica à anterior, mas deslocada de n = 2 colunas para a direita. Assim, a sequência codificada é obtida através do produto entre as matrizes:

v= uG (2.13)

As sequências geradoras também podem ser representadas em forma de polinômios como: g(a)1 = 1 + D2 e g(b)

1 = 1 + D + D2. Estas sequências podem ser representadas juntamente em forma de

uma matriz de polinômios como: G (D) = [1 + D2, 1 + D + D2], ou em notação octal G = [5, 7].

Da mesma maneira, a sequência de entrada u e as de saída vae vb também têm suas representações

na forma de polinômios e que são relacionadas da seguinte maneira:

va(D) = u (D) g1(a)(D) (2.14)

vb(D) = u (D) g1(b)(D) (2.15)

Após a multiplexação, a palavra código em forma polinomial pode ser expressa da seguinte ma-neira para um codificador de taxa 1/2:

v(D) = va D2 + Dvb D2

(2.16) onde a operação adição é realizada usando módulo-2.

(28)

comprimento finito, antes de se iniciar a próxima sequência as memórias deverão ser zeradas. Mas, para que as memórias do codificador sejam zeradas, m bits de zeramento são inseridos ao final de cada sequência u. Por esse motivo, a taxa do codificador para uma sequência u de comprimento N é dada por:

rc =

k (N + m)

nN (2.17)

Para sequências longas, N  m, a razão N+m

N ∼= 1 e a taxa do codificador tende a ser rc = k n,

como definido anteriormente.

Os fatores que definem o desempenho dos códigos convolucionais são as propriedades de dis-tância mínima entre as palavras código e o algoritmo utilizado na decodificação. A propriedade de distância mais importante é a mínima distância livre, df ree, definida por:

df ree = min {d (v0, v00) : u0 6= u00} (2.18)

onde d (v0, v00) indica a distância entre as sequências código v0 e v00, que são geradas a partir de duas

sequências de informação diferentes u0 e u00.

Quanto maior for a distância entre as sequências código geradas, mais fácil será diferenciar uma sequência da outra, e assim será possível corrigir mais bits no processo de decodificação, melhorando o desempenho do sistema.

Um código convolucional pode ser representado pelo seu diagrama de estados, como mostrado na Fig. 2.5, ou ainda através de sua treliça, como mostrado na Fig. 2.6, que representam o codificador da Fig. 2.4. A Fig. 2.5 ilustra o diagrama de estado de um codificador convolucional não sistemático (CNS). 00 01 10 11 0/10 0/11 0/00 1/11 1/10 1/01 1/00 0/01

Figura 2.5: Diagrama de Estados do Codificador CNS, m = 2.

As representações da treliça e do diagrama de estados servem para uma melhor visualização do funcionamento do codificador. Nelas, tem-se a relação entre a entrada e a saída em função do estado em que o codificador se encontra. O estado do codificador representa os bits que estão nas memórias.

(29)

00 00 01 01 10 10 11 11 0/00 1/11 0/11 1/00 0/01 1/10 0/10 1/01 u / va vb

Figura 2.6: Treliça do Codificador CNS, m = 2.

O codificador em questão apresenta duas memórias, portanto ele pode ter 22 = 4 estados diferentes.

São eles: (00, 01, 10, 11).

Se algumas modificações forem feitas no diagrama de estados de um codificador, pode-se, através da fórmula de ganho de Mason, obter a sua função distribuição de pesos [9]:

T (X, Y, Z) =X

i,j,l

Ai,j,lXiYjZl (2.19)

onde o coeficiente Ai,j,lrepresenta o número de palavras código de peso i, cuja sequência de

informa-ção associada tem peso j e para a sua gerainforma-ção é preciso passar por l ramos na treliça do codificador. O peso de uma sequência código binária é definido como o número de 1s existentes na sequência.

Esta outra representação do diagrama de estados que pode ser feita para ilustrar os coeficientes X, Y e Z da função geradora de um codificador é apresentado na Fig. 2.6, que é o diagrama da Fig. 2.5, mas em termos de X, Y e Z. 00 01 10 11 Z X2YZ XYZ YZ XZ X2Z XZ XYZ

Figura 2.7: Diagramas de Estados com Representação dos Coeficientes X, Y e Z.

(30)

distri-buição de pesos de Hamming que é dada pelos coeficientes de X. Pode-se mostrar que o codificador da Fig. 2.4 tem a seguinte distribuição de pesos:

T (X) = X5+ 2X6+ 4X7+ 8X8 + 16X9+ · · · (2.20) Portanto, para este codificador, existe uma sequência código de peso 5, duas de peso 6, quatro de peso 7 e assim por diante. O menor peso de Hamming entre todas as sequências códigos geradas, com exceção da sequência toda nula (0000...), é o que define a distância livre do código. Neste caso, de (2.20), temos que df ree = 5.

A Tab. 2.1 mostra alguns códigos convolucionais que serão utilizados nas simulações deste tra-balho. Os códigos mostrados possuem comprimento de restrição K = 3 e 4 e taxas rc =1/2e1/3. As

sequências geradoras são dadas em notação octal. Taxa do

código rc

Número de

memórias df ree Vetores Geradores

g(0) g(1) g(2)

1/2 2 5 7 5

-1/2 3 6 64 74

-1/3 2 8 5 7 7

1/3 3 10 54 64 74

Tabela 2.1: Exemplos de Códigos Convolucionais.

2.2.1.1 Códigos Convolucionais Sistemáticos

O que define um código convolucional em forma sistemática é o fato de que os k primeiros bits de saída do codificador são réplicas dos k bits de entrada. Neste caso, a matriz geradora do código usando notação polinomial é dada por:

G(D) =       1 0 · · · 0 g1(k+1)(D) · · · g (n) 1 (D) 0 1 · · · 0 g2(k+1)(D) · · · g (n) 2 (D) ... ... ... ... ... 0 0 · · · 1 gk(k+1)(D) · · · g (n) k (D)       (2.21)

Uma vantagem dos códigos sistemáticos é a maior facilidade no processo de codificação, uma vez que menos hardware é necessário, pois os bits de entrada aparecem explicitamente na sequência de saída. Uma desvantagem é que os sistemáticos nem sempre conseguem atingir o mesmo df reeque os

(31)

Um exemplo de codificador convolucional sistemático é mostrado na Fig. 2.8, onde va é a saída

sistemática que apresenta os mesmos bits que a entrada u e vbé a saída de paridade.

M + M u vb va v

Figura 2.8: Codificador Convolucional Sistemático (2,1,2).

2.2.1.2 Códigos Convolucionais Recursivos Sistemáticos

Através de um código convolucional não sistemático (CNS), pode-se obter um código convolu-cional recursivo sistemático (CRS) com uso de realimentação, a fim de se aproveitar as vantagens apresentadas pelos sistemáticos. Um código CRS é recursivo e sistemático porque a sequência de entrada aparece também na saída sistemática. Além disso, os códigos CRS apresentam distância livre maior ou igual a dos sistemáticos não realimentados [10].

O diagrama do codificador CRS obtido a partir do CNS da Fig. 2.4 é mostrado na Fig. 2.9. Note que a primeira saída do codificador, que é a saída sistemática, é uma réplica da sequência de entrada. Esta sequência sistemática vaé obtida fazendo uma das saídas do código CNS, vaou vb, exatamente

igual à entrada u. A segunda saída do codificador CRS, que é a saída de paridade, é definida pelo polinômio gerador g(b). A Fig. 2.10 mostra a representação da treliça para este codificador. Note que

ela é equivalente à treliça do codificador CNS mostrada na Fig. 2.6.

M + M u vb va + v

(32)

00 00 01 01 10 10 11 11 0/00 1/11 1/11 0/00 0/01 1/10 1/10 0/01 u / va vb

Figura 2.10: Treliça do Codificador Convolucional Recursivo Sistemático (CRS).

Sabe-se que para um código ser sistemático ele deve ter matriz geradora como a definida na equação (2.21). Caso a matriz não apresente esta forma, é possível fazer a sua sistematização. A matriz sistematizada para códigos de taxa1/2terá a forma:

G(D) =h 1 g(p)(D) i (2.22)

onde g(p)(D) é o polinômio gerador da saída de paridade do codificador CRS, que é baseado nos

polinômios geradores do codificador CNS e definido por:

g(p)(D) = g

(2)(D)

g(1)(D) (2.23)

em que g(1)(D) é o polinômio gerador associado à saída que foi escolhida para ser a sistemática e

é denominado polinômio gerador de realimentação (“feedback”). O polinômio g(2)(D) representa a

saída 2 e é denominado polinômio gerador para frente (“feed-forward”).

De maneira geral, para códigos com p saídas, a matriz geradora é definida como:

G(D) =  1, g (2)(D) g(1)(D), g(3)(D) g(1)(D), g(4)(D) g(1)(D), . . . , g(p)(D) g(1)(D)  (2.24)

A matriz geradora do exemplo mostrado na Fig. 2.9 é G (D) =h1, 1+D+D1+D22

i

, ou G (D) = 1, 7 5

 em notação octal, o que está em conformidade com a equação (2.24).

Os códigos convolucionais recursivos sistemáticos são amplamente utilizados na construção dos codificadores turbo que serão vistos na Seção 2.2.2. Neste trabalho, será utilizada a concatenação em paralelo de dois codificadores CRS para a formação do código turbo. Mais detalhes serão vistos nos capítulos seguintes.

(33)

2.2.1.3 Decodificação de Códigos Convolucionais - Algoritmo de Viterbi

Como citado anteriormente, o desempenho dos códigos convolucionais depende também do al-goritmo de decodificação. Existem alguns métodos de decodificação, mas sem dúvida o método proposto por Viterbi [11] é o mais utilizado, por ser de máxima verossimilhança.

Para mostrar como funciona o algoritmo de Viterbi, primeiro vamos estender o diagrama de esta-dos do codificador no tempo, formando uma treliça. Tomemos como exemplo o codificador da Fig. 2.4, que tem seu diagrama ilustrado na Fig. 2.6. É considerado que o codificador sempre sai do estado zero e termina também no estado zero. Assim, além dos N bits de informação serão também adicionados m bits de zeramento, totalizando (N + m + 1) instantes de tempo na treliça. A Fig. 2.11 ilustra uma treliça para N = 3 e m = 2, onde os bits de informação u e os codificados v, associados a cada ramo, estão ilustrados na treliça.

00 01 10 11 0 / -1 -1 1 / +1 +1 0 / +1 +1 1 / -1 -1 0 / -1 +1 1 / +1 -1 0 / +1 -11 / -1 +1 00 01 10 11 0 / -1 -1 0 / +1 +1 0 / -1 +1 0 / +1 -1 0 / -1 -1 1 / +1 +1 0 / -1 +1 1 / +1 -1 0 / -1 -1 1 / +1 +1 0 / -1 -1 0 / +1 +1 i = 0 i = 1 i = 2 i = 3 i = 4 i = 5

Figura 2.11: Exemplo de Treliça Ilustrando os Parâmetros N, m e i.

O algoritmo de Viterbi realiza a decodificação de máxima verossimilhança (MLD – Maximum Likelihood Decoder) nos ramos da treliça do codificador. Deste modo, o algoritmo consegue a mini-mização da probabilidade de erro de símbolo codificado, que não é muito diferente da probabilidade de erro de bit.

Vamos supor que a sequência de bits codificada v possa assumir os valores−1 e +1. Depois de passar por um canal ruidoso e com desvanecimento, chega ao receptor um sinal que é amostrado e se torna a sequência y, utilizada no processo de decodificação. Portanto, o algoritmo de Viterbi escolhe a sequência ˆv, entre todas as possíveis da treliça, que mais se pareça com a sequência y. Para cada ramo da treliça, o algoritmo de Viterbi calcula uma métrica, que é uma medida de verossimilhança entre as amostras recebidas e a sequência de bits associada a cada ramo. Para definir qual é o caminho sobrevivente na treliça, as métricas de ramos são somadas às métricas de estado do instante anterior para se calcular as métricas de estado no instante atual.

(34)

De maneira geral, para uma sequência de bits de informação de comprimento 2kN, existem 2k

ramos entrando e saindo de cada estado e 2kN caminhos distintos na treliça, correspondentes a 2kN

sequências código, onde N é o comprimento da treliça de decodificação.

A escolha de uma entre as 2kN possíveis sequências ˆv é feita calculando-se na treliça o caminho

de maior métrica. Neste trabalho, será utilizado como base o algoritmo de Viterbi com decodificação suave. Viterbi propôs, para a escolha do melhor caminho na treliça, um algoritmo que se baseia em quatro passos:

Passo 1: Começando pelo instante de tempo i = m, calcule a métrica de cada ramo da treliça que sai do instante s0 e vai para o instante s, (M

s0,s,i).

Passo 2: Calcule a métrica de cada estado no instante i , Es,i, fazendo a soma da métrica do estado

anterior com a métrica do ramo: Es,i = Es0,i−1+ Ms0,s,i. Será calculada uma métrica de estado para

cada ramo que chega àquele estado.

Passo 3: Entre os 2k ramos que chegam a cada estado, elimine os que correspondem à menor

métrica de estado e deixe somente um ramo sobrevivente. A métrica de estado final será a que corresponde ao ramo sobrevivente.

Passo4: Repita os passos anteriores se i < N + m. Caso contrário, pare.

Haverá um ramo sobrevivente para cada estado em cada instante de tempo. No instante i = N +m haverá somente um ramo sobrevivente que chega ao estado zero. Para cada ramo saindo do estado s0

para o estado s no instante de tempo i, é preciso calcular a seguinte métrica:

Ms0,s,i = −

n

X

i=1

(yi− ˆvi)2 (2.25)

onde n é o número de bits de saída do codificador, yi são as amostras do sinal recebido e ˆvi são os

bits codificados associados a cada ramo da treliça de decodificação, que têm amplitudes ±1. Neste caso, quanto maior for a métrica, mais parecidas são as sequências recebida e a associada ao ramo, indicando que provavelmente os bits transmitidos foram os associados àquele ramo. O cálculo da métrica de ramo é feito sobre os n bits de um ramo que são gerados pelo codificador a cada instante de tempo.

É possível fazer uma simplificação do cálculo mostrado em (2.25), onde o termo dentro do soma-tório se torna:

(yi− ˆvi)2 = −yi2+ 2yiˆvi− ˆv2i (2.26)

onde o termo y2

i é uma constante que não depende de ˆvi e ˆvi2 assume sempre o valor +1, portanto

(35)

treliça. Assim, a métrica de ramo em (2.25) pode ser simplificada para: Ms0,s,i = n X i=1 yivˆi (2.27)

onde consideramos a multiplicação pela constante1/2, que não tem informação a-priori sobre o bit e

não altera a decisão pelo melhor caminho na treliça.

Embora ambas as equações (2.25) e (2.27) possam ser utilizadas obtendo o mesmo resultado, neste trabalho iremos considerar que as métricas dos ramos são calculadas de acordo com (2.25). Será visto no Capítulo 3 que o método proposto para redução da complexidade independe da equação utilizada.

Iremos mostrar os cálculos realizados pelo algoritmo de Viterbi e os quatro passos para reali-zar a decodificação através do exemplo na Fig. 2.12. O exemplo da Fig. 2.12 supõe a transmissão dos bits v =[−1 −1 +1 +1 +1 −1 +1 −1 +1 +1] que correspondem à sequência de informação u=h 0 1 1 0 0 i, sendo que os dois últimos bits servem para fazer voltar a treliça para o estado zero. As amostras do sinal recebido são dadas pela sequência y = [ −1, 3 −0, 9 +0, 8 +1, 5 −0, 5 −1, 1 +1, 2 −0, 7 +0, 9 +1, 2]. As linhas tracejadas representam as transições na treliça correspon-dentes aos bits de informação 0 e as linhas contínuas representam os bits 1. Na treliça, podem ser vistos os valores acumulados das métricas dos ramos sobreviventes, que são aqueles que apresentam maior métrica entre todos que entram em um nó (estado). O caminho sobrevivente está destacado e mostra que o decodificador decidiu pela sequência ˆv = [−1 −1 +1 +1 +1 −1 +1 −1 +1 +1] ou, equivalentemente pelos bits ˆu = h 0 1 1 0 0 i, que são exatamente iguais aos que foram transmitidos, portanto não ocorreu nenhum erro na decodificação.

00 01 10 11 -1 -1 +1 +1 -1 -1 +1 +1 -1 +1 +1 -1 -1 -1 +1 +1 +1 +1 -1 -1 -1 +1 +1 -1 +1 -1 -1 +1 -1 -1 +1 +1 -1 +1 +1 -1 -1 -1 +1 +1 00 01 10 11 -0,1 -9,59 -12,39 -0,39 -15,19 -9,85 -19,05 -5,05 -17,45 -16,25 -12,65 -2,65 -19,85 -14,78 -7,98 -2,78 -20,38 -16,43 -2,83 -8,9 x x x x x x x -1,3 -0,9 0,8 1,5 -0,5 -1,1 1,2 -0,7 0,9 1,2 y = i = 0 i = 1 i = 2 i = 3 i = 4 i = 5 -2,26 -4,66

(36)

O cálculo das métricas de cada estado é melhor ilustrado através do exemplo da Fig. 2.12. Imagine que vamos calcular a métrica de estado (11) no instante i = 3. Dois ramos chegam a este estado, vindo dos estados (10) e (11), no instante i = 2. Utilizando (2.25), temos que as métricas de ramos são dadas por:

M(10),(11),3= − (−0, 5 − 1)2− (−1, 1 + 1)2 = −2, 26 (2.28)

e

M(11),(11),3 = − (−0, 5 + 1)2− (−1, 1 − 1)2 = −4, 66. (2.29)

Segundo os Passos 2 e 3 do algoritmo de Viterbi mostrados anteriormente, a métrica do estado (11) no instante i = 3 é dada por:

E(11),3 = max [− (0, 39 + 2, 26) , − (15, 19 + 4, 66)] = max [− (2, 65) , − (19, 85)] = −2, 65.

(2.30) Portanto, o algoritmo de Viterbi descarta o ramo com menor métrica, deixando em cada estado somente um ramo entrando e outro saindo, correspondentes às maiores métricas.

O algoritmo de Viterbi não faz a decisão bit a bit, mas sim por uma sequência inteira de com-primento N. Erros na decodificação acontecerão quando o algoritmo eliminar o caminho correto em favor de outro incorreto.

2.2.2

Códigos Turbo

Claude Shannon [12], em 1948, apresentou seu teorema onde mostrou que com o uso de um có-digo corretor de erro adequado podia-se chegar a valores de probabilidade de erro de bit tão baixos quanto desejado, desde que a taxa de transmissão de informação não ultrapasse um limitante chamado de capacidade do canal. A partir desse resultado se deu início a uma busca por códigos que tivessem a capacidade de se aproximar do limite estabelecido por Shannon. Até que em 1993, Berrou, Gla-vieux e Thitimajshima [13] introduziram os códigos turbo, que podem chegar a 0,5 dB do limitante estabelecido por Shannon.

Os códigos turbo são formados pela concatenação de dois ou mais codificadores, chamados de constituintes, e a palavra-código de saída é formada pelos bits de informação e paridade de cada um dos codificadores. Os codificadores constituintes podem ser diferentes um do outro, mas em geral usam-se codificadores idênticos. Estudos realizados [13] mostram que os codificadores para formar um código turbo que apresentam melhores resultados em atingir uma maior distância livre são os

(37)

convolucionais recursivos sistemáticos (CRS), já apresentados na Seção 2.2.1.2.

A concatenação dos codificadores pode ser feita de duas formas: em paralelo (convolucionais concatenados em paralelo - CCP) e em série (convolucionais concatenados em série - CCS). Neste trabalho, somente serão utilizados os CCP, sendo os codificadores constituintes idênticos e do tipo CRS.

2.2.2.1 Codificador Turbo CCP

O diagrama básico de um codificador CCP é mostrado na Fig. 2.13. Um codificador turbo CCP é formado por dois ou mais codificadores CRS concatenados em paralelo, que codificam a sequência de informação simultaneamente de maneira a permitir um aumento da capacidade de correção de erros no processo de decodificação. Os bits de informação dos codificadores são embaralhados por entrelaçadores que têm a função de dar diversidade aos bits de paridade. O uso de entrelaçadores de comprimento N causa um atraso na transmissão e na decodificação dos bits. Cada um dos blocos é codificado de forma independente.

Entrelaçador 1 Codificador CRS 1 Entrelaçador 2 Codificador CRS 2 Entrelaçador 3 Codificador CRS 3 Entrelaçador q Codificador CRS q

bits de informação: u informação sistemática: vs

v1

v2

v3

vq

Figura 2.13: Codificador Turbo CCP.

O primeiro entrelaçador pode ser omitido e, portanto, o primeiro codificador CRS irá operar com a sequência de informação. Já os demais entrelaçadores irão “embaralhar” a sequência de informação, obtendo se assim as sequências de paridade v1, v2, . . . , vq. Além das sequências de paridade, a

sequência original também é transmitida como informação sistemática.

Nem sempre todos os bits de paridade são enviados através do canal. Muitas vezes se utiliza o puncionamento de alguns desses bits para que se sejam obtidas taxas diferentes para um mesmo codificador.

(38)

Um codificador CCP amplamente utilizado e estudado na literatura é formado por dois codifica-dores CRS idênticos em que o puncionamento de bits é utilizado, transmitindo um bit de paridade por vez, o que resulta em taxa rt = 1/2. Este codificador é mostrado na Fig. 2.14.

Codificador CRS 1 Entrelaçador Codificador CRS 2 u v1 v2 Multiplexador va vb

Figura 2.14: Codificador turbo CCP com q=2.

Neste trabalho, será utilizado um codificador turbo como o da Fig. 2.14. Os codificadores CRS constituintes são mostrados na Fig. 2.15 e apresentam m = 2 memórias, uma entrada e duas saídas, sendo uma sistemática e uma de paridade. A matriz geradora deste codificador é dada por:

G (D) =  1, 1 + D 2 1 + D + D2  (2.31) ou G = 1, 5 7  em notação octal.

+

Entrelaçador u vs vp1

+

+

vs' vp2

+

Figura 2.15: Codificador turbo CCP utilizado.

Existem estudos [14, 15] que buscam definir codificadores constituintes CRS ótimos com base na distância efetiva para uma classe de codificadores turbo de mesma taxa. O codificador turbo utilizado

(39)

apresenta bom desempenho quando comparado a outros com codificadores constituintes de mesma taxa e número de memórias [16].

2.2.2.2 Entrelaçador

Sabe-se que os canais de comunicação sem fio produzem erros em surtos (bursts), e o entrela-çamento serve para que os erros não ocorram nas mesmas posições de paridade dos codificadores CRS constituintes. Ou seja, o entrelaçador serve para alterar a posição dos bits errados na sequência recebida.

No receptor, para a decodificação dos bits referentes ao segundo codificador, será necessário uti-lizar um desentrelaçamento que faz o processo inverso ao do entrelaçamento.

Existem diferentes técnicas para se fazer o entrelaçamento dos bits. Estudos mostram que os en-trelaçadores do tipo pseudo-aleatórios são ótimos [15]. De forma geral, o processo de entrelaçamento é definido pelo mapeamento de permutação j → Π (j), onde o bit de entrada j é permutado para a posição Π (j). Neste trabalho será utilizado um entrelaçador aleatório. Por exemplo, o entrelaça-dor de comprimento N = 8 dado por Π =8

!

1, 2, 3, 4, 5, 6, 7, 8 5, 8, 2, 4, 7, 6, 1, 3

"

faz com que uma sequência u= (11010100) entrelaçada passe a ser representada por u0 = (00110110).

O tamanho do entrelaçador também tem forte influência no desempenho do decodificador turbo [16]. Quanto maior o tamanho do entrelaçador, melhor é o desempenho do código turbo e vice-versa. Porém, com entrelaçadores maiores se tem um maior atraso na transmissão e na decodificação.

2.2.2.3 Puncionamento

O puncionamento serve para variar a taxa do codificador turbo através da multiplexação dos bits de paridade dos codificadores constituintes.

Para o codificador mostrado na Fig. 2.15, podem ser obtidas taxas iguais a 1/2 e 1/3 da seguinte maneira:

• Para obter taxa 1/2 o codificador envia a sequência sistemática vs, além das sequências de

paridade vp1 e vp2 de forma multiplexada. Ou seja, para uma sequência de informação de

comprimento N, a sequência gerada pelo codificador seria vs 0v p1 0 vs1v p2 1 vs2v p1 2 . . .vsN−1v p2 N−1.

• Para obter taxa 1/3, o codificador envia a sequência sistemática vs e as saídas de paridade

dos dois codificadores vp1 e vp2. Por exemplo, a sequência gerada pelo codificador seria

v0svp1 0 v p2 0 vs1v p1 1 v p2 1 vs2v p1 2 v p2 2 . . . vsN−1v p1 N−1v p2 N−1.

(40)

Devido ao uso de entrelaçadores não é fácil obter um valor para a distância livre de um código turbo. Mesmo assim existem alguns trabalhos que procuram definir uma distância livre efetiva para este tipo de código [15, 17].

2.2.2.4 Bits de Zeramento

Como os codificadores CRS constituintes utilizam realimentação, não necessariamente uma sequên-cia de bits nula irá levar o codificador para o estado de reset. Para evitar problemas na decodificação, é importante que o codificador comece sempre a codificação de cada bloco no estado zero. Para isto, ao final de cada bloco são inseridos bits de zeramento de maneira a levar o codificador para seu estado inicial.

2.2.2.5 Decodificação dos Códigos Turbo

Nesta seção, será feita uma introdução à decodificação turbo, com ênfase no algoritmo BCJR que utiliza o critério MAP (Maximum a-Posteriori). Em seguida iremos descrever os algoritmos Max-Log-MAP e Max-Log-MAP, ambos obtidos a partir de simplificações do algoritmo MAP.

Introdução à Teoria de Detecção

O teorema de Bayes para teste de hipóteses fornece a relação entre a probabilidade condicional e conjunta dos eventos A e B da seguinte maneira:

P (A|B) P (B) = P (B|A) P (A) = P (A, B) (2.32) Aplicando o teorema de Bayes em um canal corrompido por ruído aditivo gaussiano branco, pode-se escrever a probabilidade a-posteriori como:

P (u = j|y) = p (y|u = j) P (u = j)p (y) , j = 1, . . . , M (2.33) onde a probabilidade a-posteriori é definida em função da variável aleatória y = u+n, que representa uma amostra do sinal recebido que pode ser escrita como a soma do símbolo transmitido u com a amostra do ruído aditivo gaussiano n. Além disso, u = j representa que o símbolo transmitido foi o j-ésimo entre os M possíveis.

A PDF do sinal recebido y condicionado ao sinal transmitido u = j é p(y|u = j). Considerando todo o conjunto de sinais transmitidos, tem-se que a PDF do sinal recebido p(y) é dada por:

(41)

p (y) =

M

X

j=1

p (y|u = j) P (u = j) (2.34)

Considera-se que, para a representação dos valores lógicos 0 e 1, são transmitidos sinais com amplitudes −1 e +1, respectivamente. Como o ruído tem PDF gaussiana, as funções densidade de probabilidade p(y|u = −1) e p(y|u = +1) da variável y condicionada aos símbolos transmitidos u = −1 e u = +1 são chamadas de funções de verossimilhança (F V ). A Fig. 2.16 ilustra as funções de verossimilhança para um canal com ruído aditivo gaussiano e os sinais transmitidos assumindo os valores +1 e −1 com probabilidade1/2.

p(y|u= -1) p(y|u= +1) -1 +1 V1 V2 y0 y 0

Figura 2.16: Funções de Verossimilhança.

Máxima Verossimilhança

Uma regra de decisão abrupta bastante conhecida, chamada de regra de máxima verossimilhança (MV), decide pelo símbolo transmitido com base no maior valor da função de verossimilhança.

Na Fig. 2.16, quando o sinal recebido tem valor igual a y0, a regra MV decidirá pelo símbolo +1,

já que V1 é maior que V2.

Para o caso das probabilidades de ocorrência dos símbolos u = +1 e u = −1 serem1/2, o limiar

de decisão ótimo é o ponto y = 0. Assim, uma representação matemática da regra de decisão MV é dada por: ˆ u =    −1, se y ≤ 0 +1, se y > 0 (2.35) Maximum a-Posteriori

Outra regra de decisão, conhecida como maximum a-posteriori (MAP) pode ser expressa em termos da probabilidade a-posteriori da seguinte maneira:

Referências

Documentos relacionados