Código Turbo

October 1, 2017 | Author: Aidê Lima | Category: Digital Television, Convolution, Information, Algorithms, Feedback
Share Embed Donate


Short Description

Código turbo, TV digital...

Description

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLÓGIA DA PARAÍBA COORDENAÇÃO DO CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS DE TELECOMUNICAÇÕES

Sérgio Ricardo Lima Ribeiro

Código Turbo

João Pessoa, 2012.

Sérgio Ricardo Lima Ribeiro

Código Turbo

Trabalho de Conclusão de Curso submetido à Coordenação do CST em Sistemas de Telecomunicações do Instituto Federal de Educação, Ciência e Tecnologia da Paraíba, como parte dos requisitos para a obtenção do grau de Tecnólogo em Telecomunicações.

Orientador:

Luiz Guedes Caldeira

João Pessoa, 2012.

Sérgio Ricardo Lima Ribeiro

Código Turbo

Trabalho de Conclusão de Curso submetido à Coordenação do Curso Superior de Tecnologia em Sistemas de Telecomunicações do Instituto Federal de Educação, Ciência e Tecnologia da Paraíba, como parte dos requisitos para a obtenção do grau de Tecnólogo em Telecomunicações.

Aprovado Pela Banca Examinadora em: ____ / _____ / 2012

BANCA EXAMINADORA

Professor Luiz Guedes Caldeira, Dr. Orientador

Professor Erick Silva, MSc. Membro da Banca

Professora Késia Santos, MSc. Membro da Banca

João Pessoa, 2012.

AGRADECIMENTOS Agradeço a Deus por ter me dado saúde, perseverança e pelas pessoas que colocou em meu caminho. Agradeço ao meu orientador Professor Guedes, pela orientação, incentivo e paciência. Agradeço a minha esposa Aidê pelos cuidados, paciência, compreensão e por estar sempre me ajudando nos momentos difíceis e comemorando comigo nas conquistas. Agradeço a meu filho Pablo pela compreensão e apoio. Agradeço ao grande amigo Fábio Monteiro, por ter me dado a oportunidade de realizar esta conquista. Agradeço aos meus pais, Graça e Gildo pela motivação e lições de vida. Agradeço aos meus irmãos, Paulo e Danielle pelo companheirismo. Agradeço aos amigos do IFPB pelo incentivo, especialmente a Adriana, Laís, Girlene e Isaac que estudaram ao meu lado sendo sempre companheiros nas horas difíceis. Agradeço aos professores com quem tive o prazer de estudar pelos ensinamentos, especialmente aos professores Erick Silva, Késia Santos, Jeferson Costa, Rossana Moreno e Silvana Cunha.

RESUMO Este trabalho tem como objetivo mostrar a importância dos códigos corretores de erros na transmissão digital de informações, onde a tendência em curto prazo dos sistemas de telecomunicações é a migração total para a transmissão digital, devido a facilidade da manipulação da informação, seja por processamento do sinal, utilização de códigos corretores de erro, dentre outras o que pode aumentar de forma considerável as taxas de transmissão com qualidade e confiabilidade. A ênfase deste trabalho está no estudo dos códigos turbo, os quais são utilizados em vários esquemas de codificação de canal em uma transmissão digital, identificando os principais componentes que afetam as características e o desempenho da codificação turbo. Para se averiguar de forma teórica a eficácia do código turbo foram realizadas simulações utilizando o Software Matlab.

Palavras-Chave: transmissão digital, código corretor de erros, código turbo, codificação de canal, código convolucional, entrelaçadores.

i

ABSTRACT This work aims to show the importance of error correcting codes in digital transmission of information, where the trend in a short time of telecommunications systems is the total migration to digital transmission, due to ease of manipulation of information, either by processing signal, using error correcting codes, and others which may increase considerably the rates of transmission quality and reliability. The emphasis of this work is the study of turbo codes, which are used in various coding schemes in a digital transmission channel, identifying the main components that affect the characteristics and performance of turbo coding. To verify the theoretical form of the efficiency of the turbo code simulations were performed using Matlab software.

Keywords: digital transmission, error correction code, turbo code, channel coding, convolutional code, interleaving.

ii

SUMÁRIO RESUMO ............................................................................................................................... i ABSTRACT .......................................................................................................................... ii SUMÁRIO ...........................................................................................................................iii LISTA TABELAS ............................................................................................................... iv LISTA DE SIGLAS ........................................................................................................... vii

CAPÍTULO 1 - Introdução...................................................................................................... 1

CAPÍTULO 2 - Transmissão digital de sinais ....................................................................... 4 2.1

Codificação de Canal .................................................................................................... 5

2.2

Códigos convolucionais ................................................................................................ 5

CAPÍTULO 3 - Código turbo ................................................................................................ 12 3.1

Decodificação iterativa do código turbo ..................................................................... 19

3.2

Propriedades de distribuição de pesos do código turbo .............................................. 24

CAPÍTULO 4 - Análise de desempenho do código turbo ................................................... 28 4.1

Simulação .................................................................................................................... 34

CAPÍTULO 5 - Conclusão ..................................................................................................... 42

REFERÊNCIAS ..................................................................................................................... 43

iii

LISTA DE FIGURAS Figura 2.1 - Etapas do processo da transmissão de um sinal digital. ......................................... 4 Figura 2.2 - Codificador convolucional linear com taxa R = ½ ................................................. 7 Figura 2.3 - Diagrama de estados para o codificador da Figura 2.2. .......................................... 8 Figura 2.4 - Diagrama em treliça para o codificador da Figura 2.2 ......................................... 10 Figura 3.1 – Diagrama de bloco do codificador turbo sem perfuração de taxa 1/3.................. 13 Figura 3.2 – Diagrama de bloco do codificador turbo com perfuração de taxa 1/2 ................. 14 Figura 3.3 - Treliça terminada .................................................................................................. 16 Figura 3.4 - Ilustração de spectral thinning.............................................................................. 18 Figura 3.5 - Um decodificador iterativo código turbo baseado no algoritmo MAP ................. 22 Figura 3.6 - Desempenho do Código Turbo (37, 21, 65536) em função do número de iterações do decodificador. ...................................................................................................................... 23 Figura 3.7 - Diagrama do codificador e diagrama do estado para um código (2,1,2). ............. 27 Figura 4.1 - Curvas para um PCCC e um Código Convolucional com R = 1/3. (a) Palavra código (b) Probabilidade de erro de bit .................................................................................... 33 Figura 4.2 – Modelo do simulador do código turbo ................................................................. 36 Figura 4.3 – Modelo do codificador turbo não perfurado. ....................................................... 36 Figura 4.4 – Gráfico da simulação do código turbo não perfurado de taxa R = 1/3 com 4 iterações e entrelaçador 20 x 1024. .......................................................................................... 37 Figura 4.5 – Gráfico da simulação do código turbo não perfurado de taxa R = 1/3 com 6 iterações e entrelaçador 20 x 1024. .......................................................................................... 37 Figura 4.6 – Gráfico da simulação do código turbo não perfurado de taxa R = 1/3 com 4 iterações e entrelaçador 100 x 1024. ........................................................................................ 38 Figura 4.7 – Gráfico da simulação do código turbo não perfurado de taxa R = 1/3 com 6 iterações e entrelaçador 100 x 1024. ........................................................................................ 38 Figura 4.8 – Modelo do codificador turbo não perfurado. ....................................................... 39 Figura 4.9 – Gráfico da simulação do código turbo perfurado de taxa R = ½ com 4 iterações e entrelaçador 20 x 1024. ............................................................................................................ 40 Figura 4.10 – Gráfico da simulação do código turbo perfurado de taxa R = ½ com 6 iterações e entrelaçador 20 x 1024........................................................................................................... 40 iv

Figura 4.11 – Gráfico da simulação do código turbo perfurado de taxa R = ½ com 4 iterações e entrelaçador 100 x 1024......................................................................................................... 41 Figura 4.12 – Gráfico da simulação do código turbo perfurado de taxa R = ½ com 6 iterações e entrelaçador 100 x 1024......................................................................................................... 41

v

LISTA TABELAS Tabela 2.1 - Tabela de transição de estados para o diagrama da Figura 2.4..............................9 Tabela 3.1 – Peso e multiplicidade para o espectro de distância para o código (32,12)...........15 Tabela 3.2 - Código de Hamming (7,4,3) sistemático..............................................................24

vi

LISTA DE SIGLAS AWGN (additive white gaussian noise) Ruído branco aditivo com distribuição gaussiana BER (bit error ratio) Taxa de erro de bit BPSK (binary phase shift keying) Chaveamento por deslocamento de fase binário CWEF (conditional weight enumerating function) Função de distribuição de pesos condicional FEC (forward error correction) Correção posterior de erro LLR (log likelihood ratio) Razão log de verossimilhança MAP (maximum a-posteriori) Máximo posterior MIMO (multiple input, multiple output) Múltiplas entradas, Multíplas saídas ML (maximum Likelihood) Máxima Verossimilhança PCCC (parallel concatenated convolutional code) Codificador convolucional concatenado em paralelo. QAM (quadrature amplitude modulation) Modulação de amplitude em quadratura QPSK (quadrature phase shift keying) Modulação em quadratura por deslocamento de fase SNR (signal to noise ratio) Taxa de relação sinal ruído SISO (soft-input, soft-output) Entrada suave e saída suave WEF (weight enumerating function) Função de distribuição de pesos

vii

CAPÍTULO 1 Introdução Os códigos corretores de erros são uma ferramenta fundamental na teoria da informação. A necessidade de se garantir a integridade de uma grande quantidade de informação transmitida em um curto espaço de tempo pelos mais variáveis meios de transmissão exige o uso de sofisticados sistemas de correções de erros. A teoria da informação trata dos aspectos quantitativos de armazenamento e transmissão das mensagens e tem como objetivo principal, entre outros, garantir a integridade dos dados enviados através de algum tipo de canal [1]. Na manipulação das mensagens vários obstáculos são encontrados como falta de capacidade no armazenamento na transmissão das mensagens enviadas e introdução aleatória de erros nestas mensagens, conhecidos como ruídos. Ao contrário das teorias matemáticas que surgiram nas universidades e geralmente após um longo período de tempo migrou para as aplicações práticas em tecnologia, a teoria de códigos corretores de erros surgiu nos laboratórios de empresas de telefonia e posteriormente se transformou em uma teoria matemática completa com aplicações em várias áreas como, por exemplo, geometria algébrica [1]. Um código corretor de erro visa recuperar informações que no processo de transmissão tenham sofrido algum tipo de ruído [2]. Pode-se afirmar que hoje praticamente todo sistema de envio de informações possui algum tipo de código corretor de erro. Como exemplos típicos, a telefonia digital, a transmissão de dados via satélite, a comunicação interna em computadores, armazenamento óptico de dados e armazenamento de dados em fitas ou disquetes magnéticos [3]. Em 1993 com início dos esquemas concatenados de códigos que utilizam o sistema de correção posterior de erro (FEC – foward error correction) associado aos algoritmos de decodificação iterativos ressaltou a importância do conceito de capacidade de canal [4]. Analisando-se a curva de limite de Shannon é possível obsevar qual o limite de ruído será suportado por um esquema de codificação e decodificação infinitamente complexo. O código turbo está sendo apresentado como esquemas capazes de recuperar essa informação útil a 1

0,1dB deste limite teórico [4]. Essa recente aproximação ao limite teórico é uma forma de avaliar o desempenho de um determinado sistema [5]. De forma genérica, pode-se classificar como código turbo todo esquema de codificação de canal que utilize processos de decodificação iterativa e a concatenação de códigos componentes separados por entrelaçadores temporais. Assim, percebe-se que o termo “turbo” está diretamente associado à decodificação iterativa e não necessariamente à forma de implementação da codificação [6]. Hoje, quase 20 anos após a invenção do código turbo, as pesquisas sobre o tema se encontram em um estágio avançado e ramificaram-se, dando surgimento ao processamento turbo que é o estado da arte dos códigos corretores de erro sendo interpretado como uma das mais promissoras técnicas para a melhoria de desempenho em sistemas de comunicação. Por essa razão, a invenção do código turbo está sendo considerada como o segundo grande marco do desenvolvimento cientifico das comunicações, desde o desenvolvimento da teoria matemática da comunicação no final da década de 40 por Claude Elwood Shannon [7]. Qualquer sistema com realimentação a partir de agora deve ser interpretado não simplesmente como um sistema onde a realimentação de sinais, mas sim onde a realimentação de informação, como acontece no processamento turbo [8]. Dentre as várias técnicas nas quais o processamento turbo pode ser aplicado podemos citar exemplos como a equalização, estimação de canal, codificação de fonte e canal conjunta, detecção multiusuário, o cancelamento de interferências, os sistemas MIMO (multiple input, multiple output) e a codificação espaço-temporal [9]. O objetivo deste trabalho é analisar as vantagens da utilização do código turbo, mostrando sua importância para a transmissão digital e sua eficiência através de simulações realizadas no software Matlab. Este trabalho está dividido em capítulos organizados da seguinte forma: No capítulo 2 é explanado como funciona a transmissão digital de sinais dando ênfase maior na codificação de canal onde se é utilizado o objeto de nosso estudo e nos códigos convolucionais com suas formas de codificação e decodificação mostrando sua importância na construção do código turbo. No capítulo 3 é explicado em detalhes o código turbo, como ele é formado por códigos convolucionais e entrelaçadores, o código turbo perfurado e o não perfurado, algumas de suas características como o error floor e o espectral thining e a importância dos entrelaçadores e do espectro de distância de Hamming para um projeto de código turbo eficiente. Neste 2

capítulo é mostrado também como é realizada a decodificação iterativa de máxima verossimilhança. No capítulo 4 é analisado o desempenho do código turbo utilizando para isso duas forma de abordagem, na primeira temos uma análise matemática utilizando a técnica do limitante da união com a decodificação MAP. Na segunda são realizadas simulações utilizando um simulador turbo desenvolvido para o software Matlab, nesta simulação é enfatizada a importância da quantidade de iterações e do tamanho do entrelaçador para um bom desempenho do código turbo. Finalmente no capítulo 5 são apresentadas as conclusões desse trabalho mostrando a utilização de códigos turbo em diversos meio de transmissão sendo utilizadas com outras técnicas para uma transmissão digital confiável robusta.

3

CAPÍTULO 2 Transmissão digital de sinais A transmissão digital surgiu como ume evolução natural da transmissão analógica, antes todas as etapas envolvidas na transmissão de informação desde o tratamento da informação até a recepção era tratada de forma de sinais analógicos, com o avanço da tecnologia agregado aos estudos sobre a quantização e digitalização das informações surgiu a transmissão digital de sinais [10]. A transmissão digital contem códigos de controle de erros que detectam e corrigem os erros de transmissão e admitem técnicas complexas de condicionamento e processamento de sinal, como codificação de fonte, criptografia e equalização, para melhorar o desempenho geral do enlace de comunicação. Outra principal vantagem é a possibilidade de alterar ou melhorar um sistema de transmissão sem a troca de equipamentos, bastando simplesmente incluir uma melhoria no software [11]. O processo de transmissão de um sinal digital possui várias etapas como podemos visualizar na Figura 2.1, a primeira delas é a codificação de fonte, depois a codificação de canal (objetivo do estudo deste trabalho), modulação e o lado da recepção que refaz o processo inverso.

Figura 2.1 - Etapas do processo da transmissão de um sinal digital.

4

O último processo realizado no sinal antes da transmissão propriamente dita é a modulação que consta em transformar as informações entregues pelo codificador de canal em uma forma de onda e frequência adequadas para transmissão por meio do canal [2]. O sinal é modulado para facilitar a transmissão do mesmo através de um meio, existem três tipos básicos de modulação; por amplitude, por fase e por frequência, todas estas técnicas de modulação representam a informação em um sinal senoidal. Os tipos de modulação mais utilizados na transmissão digital são as modulações em fase PSK (phase shift keying) e (QAM - quadrature amplitude modulation) [12]. Depois que o sinal passa pelo canal chega ao receptor onde é realizado todo processo de tratamento do sinal, demodulação, decodificação de canal e decodificação de fonte, para então o sinal ser entregue ao destino. Essa sendo a parte mais complexa de um sistema de comunicação.

2.1 Codificação de Canal O canal de comunicação é responsável pela introdução de ruído, corrompendo a informação transmitida. O principal objetivo da codificação de canal é combater este efeito danoso provocado pelo canal e propiciar uma comunicação confiável em uma dada taxa de erro tolerável (BER – bit error rate), reduzir a relação sinal/ruído (SNR - signal to noise ratio) necessária, aumentando a eficiência na utilização da potência de transmissão [4]. A codificação de canal deve, obrigatoriamente, apresentar um melhor desempenho que uma transmissão não codificada, para mesma SNR, caso contrário à codificação não se justifica. O processo de codificação de canal consiste fundamentalmente na introdução de bits redundantes na informação que vai ser transmitida transformando um bloco de informação com tamanho k bits em um bloco codificado com n bits. Os bits adicionais permitem de um modo geral, a detecção e/ou a correção de erros no sinal recebido.

2.2 Códigos convolucionais O código turbo pode utilizar diversos tipos de códigos corretores de erros, dentre eles os mais utilizados são os códigos convolucionais, pois oferecem uma grande facilidade de 5

implementação. Um codificador convolucional converte uma sequência inteira de dados, não importando o seu comprimento em uma palavra código, consiste basicamente no mapeamento de uma sequência continua de bits de informação em uma sequência continua de bits de saída do codificador cujo mapeamento é dado pela estrutura algébrica inerente ao codificador. A codificação convolucional, em geral, alcança ganhos de codificação maiores do que os códigos de blocos de igual complexidade. Os códigos convolucionais foram inicialmente estudados por Peter Elias em 1955, ele mostrou que é possível introduzir redundância em uma sequência de dados a partir do uso de um registrador de deslocamento linear (linear shift register) [13]. Em 1961, Wozencraft e Reiffen [14] descreveram o primeiro algoritmo prático de decodificação para os códigos convolucionais, foi um dos primeiros algoritmos que forneceram decodificação rápida, porém subótima, dos códigos convolucionais. Em 1967, Viterbi [15] descobriu uma terceira aproximação para a decodificação dos códigos convolucionais que mostrou ser assintoticamente ótima. Em 1973, Forney [16] [17] mostrou que o algoritmo de Viterbi [15] é realmente de máxima verossimilhança para a decodificação de códigos convolucionais. Um código convolucional é gerado passando-se a sequência de informação através de um registrador de deslocamento associado a algumas funções lógicas. Em geral, o registrador de deslocamento contém estágios de k bits e m geradores de função linear algébrica baseado nos polinômios geradores, Os dados de entrada são deslocados para e ao longo do registrador de deslocamento, bit a bit de cada vez, O número de bits de saída para cada sequência de dados de entrada do usuário de k bits é n bits. A taxa de código é R = k/n. Os estágios são considerados como comprimento de restrição e indica o número de bits de dados de entrada do qual a saída atual depende, este comprimento determina o quanto complexo e eficiente é o código [18]. Devido à utilização de registros deslizantes e a permanente alimentação de bits na entrada do codificador, existe um atraso associado ao processo de codificação. Estes tipos de códigos possuem memória. Assim, os bits codificados dependem não só dos bits de informação como também da informação armazenada pela memória do código. Na Figura 2.2 temos um exemplo de um codificador convolucional linear de taxa R = ½. A sequência binária de dados x = (x0, x1, x2...) é aplicada à entrada de um registrador de deslocamento. A partir dos bits de entrada e dos valores armazenados no registrador cria-se um par de sequências de dados codificados y(0) = (y0(0), y1(0), y2(0),...) e y(1) = (y0(1), y1(1), 6

y2(1),...). Essas sequências de saídas são multiplexadas para criar uma única sequência de saída y = (y0(0) y0(1), y1(0) y1(1), y2(0) y2(1),...), em que y é a palavra código convolucional. [2]. Após a entrada da sequência x completa no codificador, introduz-se uma sequência de zeros para que no final do processo de codificação o conteúdo do registrador seja nulo. Essa é uma condição necessária para efetuar a decodificação dos códigos convolucionais. Um código convolucional pode ser descrito por uma variedade de métodos, podendose destacar o diagrama em treliça e o diagrama de estados. Como a saída do codificador é determinada pela entrada e pelo estado atual do codificador, um diagrama de estados pode ser usado para representar o processo de codificação. O diagrama de estado é simplesmente um gráfico dos possíveis estados do codificador e das possíveis transições de um estado para o outro [19]. Considere o codificador da Figura 2.2, ele contém três elementos de memória binários que assumem coletivamente um entre oito possíveis estados designados por {S0, S1, S2, ..., S7} e associados com o conteúdo dos elementos de memória como podemos ver a seguir. S0 → (000)

S2 → (010)

S4 → (001)

S6 → (011)

S1 → (100)

S3 → (110)

S5 → (101)

S7 → (111)

Figura 2.2 - Codificador convolucional linear com taxa R = ½

7

Figura 2.3 - Diagrama de estados para o codificador da Figura 2.2.

Como se pode observar na Figura 2.3, os estados do codificador são representados por círculos, enquanto que as transições de estado, provocadas por cada novo bit de informação, são representadas pelas setas. Assim em cada uma das transições o parâmetro k/n representa através de k o bit de informação que está entrando no registrador enquanto n representa a sequência codificada na saída. Tendo em conta o diagrama de transições e considerando o estado do codificador como sendo o conteúdo dos registros que o compõe pode-se construir uma tabela de transição de estados. A tabela de transição de estados permite relacionar os estados final e inicial do codificador com a informação de entrada e a informação colocada à saída. A Tabela 2.1 apresenta a transição de estados para o codificador da Figura 2.2.

8

Tabela 2.1 - Tabela de transição de estados para o diagrama da Figura 2.3

Estado Inicial (S)

Entrada

Estado Final (S)

Saída

000 (0)

0

000 (0)

00

000 (0)

1

100 (1)

11

100 (1)

0

010 (2)

01

100 (1)

1

110 (3)

10

010 (2)

0

001 (4)

10

010 (2)

1

101 (5)

01

110 (3)

0

011 (6)

11

110 (3)

1

111 (7)

00

001 (4)

0

000 (0)

11

001 (4)

1

100 (1)

00

101 (5)

0

010 (2)

10

101 (5)

1

110 (3)

01

011 (6)

0

001 (4)

01

011 (6)

1

101 (5)

10

111 (7)

0

011 (6)

00

111 (7)

1

111 (7)

11

Alternativamente, o codificador pode ser representado por uma treliça. Este tipo de diagrama permite observar em cada instante todas as transições de estado possíveis, isto é, mostra explicitamente a passagem do tempo. A nomenclatura utilizada é semelhante à já apresentada no diagrama de estados. A treliça do código convolucional referido anteriormente pode ser observada na Figura 2.4.

9

Figura 2.4 - Diagrama em treliça para o codificador da Figura 2.2

. Do ponto de vista puramente teórico, a melhor forma de decodificar uma sequência recebida com erros é compará-la com cada uma das sequências de codificação possíveis procedendo-se, portanto a um processo de decodificação de máxima verossimilhança [10]. A função do decodificador é estimar a informação de entrada codificada usando um método que resulta no número mínimo possível de erros. Existe uma correspondência um a um entre a sequência de informação e a sequência de código e qualquer par de informação e de código é associado exclusivamente a um caminho através da treliça, com isso a tarefa do decodificador é estimar o caminho que foi seguido pelo codificador na treliça [19]. Existem diversas técnicas para decodificar os códigos convolucionais. O mais importante desses métodos é o algoritmo de Viterbi [15], por ser um decodificador de simples implementação e que realiza a decodificação de máxima verossimilhança [2]. O algoritmo de Viterbi basicamente considera que a decodificação ótima de códigos convolucionais envolve a procura na treliça da sequência transmitida mais provável. Outro decodificador para códigos convolucionais é o algoritmo BCJR [20] baseado em probabilidades a posteriori desenvolvido em 1974 que leva o nome das iniciais de seus criadores Bahl, Cocke, Jelinek e Raviv. Este algoritmo também é conhecido como o algoritmo MAP (maximum a posteriori) ou ainda por “forward-backward algorithm” [21], por ser mais complexo que o algoritmo de Viterbi, durante cerca de vinte anos não foi usado na prática, 10

situação que foi substancialmente alterada com o advento do código turbo em 1993 e com a atual capacidade de processamento. Considerando um codificador convolucional de taxa k/n descrito por uma treliça, que apresente na sua saída uma sequência de N palavras de código, ou símbolos, de n bits cada. Designemos essa sequência por x = x1x2...xN, onde xt representa o símbolo produzido pelo codificador no instante t. O bit de informação que nesse instante lhe deu origem, uk, pode tomar os valores -1 ou +1 com uma probabilidade de ocorrência a priori P(uk). Associada a esta probabilidade define-se a quantidade a que se dá o nome de log-razão de verossimilhança, (LLR - log-likelihood ratio) representado por

. Se os bits uk = ±1

forem equiprováveis esta LLR a priori é nula [21]. Este instante se dá na Equação 2.1.

(2.1)

A sequência codificada x atravessa um canal com ruído gaussiano sem memória (canal AWGN - additive white gaussian noise) que a transforma numa sequência de símbolos reais y = y1y2...yN. É esta sequência que o decodificador recebe e a partir dela o algoritmo BCJR vai tentar estimar a sequência de bits originais uk. Para isso o algoritmo calcula a LLR a posteriori dado à sequência de saída y, definindo assim um valor real pela Equação 2.2 [21].

(2.2)

O sinal, positivo ou negativo, da LLR, indicia que o bit enviado foi +1 ou -1, respectivamente, e o seu valor absoluto traduz a maior ou a menor confiança, ou fiabilidade, que temos nessa presunção, isto é, quanto mais afastado o valor de

estiver do limiar

de decisão nulo mais confiança teremos na estimativa do bit, no numerador e no denominador da Equação 2.2 temos probabilidades condicionais a posteriori, ou seja, probabilidades calculadas após o conhecimento de y [21]. Falaremos mais detalhadamente sobre este algoritmo de decodificação no capítulo sobre a decodificação iterativa do código turbo. 11

CAPÍTULO 3 Código turbo A codificação turbo consiste em duas ideias fundamentais, a primeira é que o codificador produz um código com propriedades aleatórias e a segunda é que o decodificador realiza uma decisão suave com decodificação iterativa. O codificador é composto por dois ou mais codificadores convolucionais e por entrelaçadores, a decodificação de máxima verossimilhança (Viterbi) é muito complexa para ser utilizada neste tipo de codificação, entretanto, é possível empregar decodificação de entrada e saída suave (SISO - soft-input, softoutput) iterativa em cada código constituinte, tal que a informação de saída suave (informação

extrínseca) de um decodificador é passada para o outro, e vice-versa, até uma estimativa sobre a informação transmitida ser obtida. Um diagrama em bloco de estrutura do codificador é ilustrado na Figura 3.1 a sequência de informações é denotada por u = [u0, u1, ..., uk-1]. O esquema básico consiste de dois codificadores de taxa ½ com 22 estados e um entrelaçador denotado por π, de comprimento K. Os primeiros k bits de u são de informação e os restantes são bits de terminação. O polinômio gerador é mostrado na Figura 3.1 (b) [9]. O esquema de codificação da Figura 3.1 é sistemático, então a primeira sequência de paridade é V(0) = u. O primeiro codificador gera a sequência de paridade V(1). O entrelaçador reordena os k bits de informação, produzindo a sequência de u’ na entrada do segundo codificador. A sequência de paridade do segundo codificador é V(2) = [V0(2), V1(2),..., Vk-1(2)]. Observe que os dois codificadores operam com versões diferentes da sequência de informação, embora esta tenha o mesmo peso. As duas sequências de paridade V(1) e V(2) terão pesos de Hamming [22] distintos. Esse esquema gera a palavra-código V = [V0(0), V0(1), V0(2), V1(0), V1(1), V1(2), V2(0)...].

12

Figura 3.1 – Diagrama de bloco do codificador turbo sem perfuração de taxa 1/3

Para atingir o desempenho próximo o limite de Shannon [7] o tamanho do bloco de informações deve ser alto, tipicamente u > 1.000, o tamanho do entrelaçador deve ser do mesmo tamanho do bloco de informações, u = K. Para obter probabilidade de erro de bit em torno de 10-5, codificadores com V relativamente curtos podem ser usados, tipicamente V
View more...

Comments

Copyright ©2017 KUPDF Inc.