Baixe o app para aproveitar ainda mais
Prévia do material em texto
Técnicas de codificação Codificação de fonte: No caso dos sistemas de telefonia móvel digital são utilizadas várias técnicas de codificação de fonte nos denominados vocoders (codificadores de voz). Esses codificadores têm o poder de reduzir a taxa de transmissão necessária para representar os sinais de voz dos conhecidos 64Kbps (sistema PCM), para a casa dos 5 a 15kbps. Existem diversos algoritmos de codificação modernos capazes de comprimir voz dados e imagem. Um exemplo simples de codificação de fonte é o código Morse utilizado na comunicação telegráfica. Nas palavras da língua inglesa a letra “E” aparece com muito mais frequência que a letra “Q”. A codificação Morse para a letra “E” é um simples “.” ( a palavra mais curta do código), enquanto a letra “Q” é codificada como”--.-“ (a palavra mais longa do código). Outros exemplos clássicos de códigos de fonte são os códigos de Ruffman e códigos de Lempel-Zif. Para os sistemas de comunicação wireless, o ganho que se tem com a codificação de fonte se reflete diretamente na banda ocupada pelo sinal. Codificação de canal: A codificação de canal se refere a um conjunto de transformações que se aplicam ao sinal transmitido com a finalidade de corrigir ou detectar a ocorrência de erros na recepção após o processo de transmissão do sinal. O Objetivo da codificação de canal é reduzir a probabilidade de erro associada relação sinal ruído de forma a melhorar a performance do sistema. Esta redução na SNR (Signal Noise Ratio), é chamada de ganho de codificação. “ • Em 1948, Claude Shannon publicou o trabalho “A Mathematical Theory of Communications”. Neste trabalho, shannon descobriu um parâmetro calculável que chamou de Capacidade de Canal e provou que, para um determinado canal, é possível a comunicação livre de erros desde que taxa de transmissão não seja maior que a capacidade do canal. Para um canal gaussiano a capacidade de canal é dada pela expressão. NoB P BC 1log 2 bits/segundo ou, NN rE C b 0 2 2 1log 2 1 bits/uso do canal ( símbolo de modulação) Dentre os vários resultados oriundos dos trabalhos apresentados por Shannon na sua formulação da Teoria da Informação, está o limite inferior para a probabilidade de erro de palavra associado a um esquema codificado de taxa nkr , onde k representa o número de bits de informação e n o número de bits codificados. E tal que, Cr ≤≤0 . Esse resultado estabelece que a probabilidade de erro de palavra codificada )(ePw , é limitada inferiormente pela expressão: )(-2)( rnw eP (1) Onde n é o comprimento da palavra codificada, e )(r é uma função convexa, decrescente positiva de r , e associada a capacidade de canal C . )(r é também conhecida como expoente de Gallager. Note que a probabilidade de erro de bit )(ePb é limitada superiormente por )(ePw . Ou seja: )(≤)( ePeP wb Então o resultado acima, também é valido para probabilidade de erro de bit. A partir da expressão (1) é possível observar que a fim de se minimizar a probabilidade de erro de um dado esquema codificado, três abordagens são possíveis: 1- Com )(r , é uma função decrescente de r , a fim de minimizar )(ePb , pode-se diminuir r , o que acarretaria em no aumento da banda necessária para a transmissão da informação. 2 – Como Cr ≤≤0 , então uma segunda abordagem é aumentar a capacidade de canal, provocando um aumento nos valores da função )(rE , para um mesmo valor de r . Pela expressão da capacidade de canal, observa-se que tal abordagem é possível, através do aumento de P , que é a potência transmitida. Estas duas abordagens, são soluções clássicas e já conhecidas de sistemas de comunicação. Ou seja, sempre é possível melhorar o desempenho do sistema ao custo de uma aumento da banda utilizada, ou através do aumento da potência do sinal enviado no canal. O que é revolucionário nos resultados apresentados na teoria formulada por Shannon se refere ao termo associado a n . Através da análise da eq.(1) observa-se que uma terceira estratégia é possível. É possível diminuir a probabilidade de erro através do aumento do comprimento das palavras código. “ Um pouco da história... Em 1949 Hamming apresentou o primeiro código capaz de corrigir erros e melhorar a qualidade de um sistema digital. Em 1959 se descobrem os códigos BHC cujo nome se deve em honra a seus descobridores (R.Bose, A.Hochquenghem , D. Ray-Chaudhuri). O algoritmo de Viterbi para decodificação de códigos convolucionais é apresentado em 1967. Em 1993 os códigos Turbo são propostos por C.Berrou, A.Galvieux e P. Titimajshima. A codificação de canal consiste em transformar as sequências binárias de informação em sequências codificadas com a adição de bits de codificação. Estes bits a mais que são introduzidos de maneira estruturada, chamados de bits de redundância, podem ser utilizados pelo algoritmo de decodificação no receptor para detecção e ou correção. Duas estratégias podem ser utilizadas: 1- Deteção de erros e retransmissão através de pedido de retransmissão da informação.( e.g técnicas ARQ – Automatic Repeat Request) 2- Correção de erros. Esta técnica é normalmente denominada FEC (Forward Error Correction). Também existem técnicas híbridas que combinas as anteriores de maneira a melhorar a eficiência do sistema. Códigos de bloco: Nos códigos de bloco os bits de informação entram no codificador de canal, e são divididos em sequências de comprimento fixo de k bits. Desta forma existem k2 sequências possíveis de informação. O codificador transforma qualquer sequência de k bits em um sequência de n bits com kn , chamada de palavra código, através da adição de kn bits de redundância, segundo a regra de codificação a taxa do código será dada por: n k r Assim o excesso de banda requerido será de r1 , se quisermos manter a velocidade de transmissão dos bits de informação, pois termos que aumentar a velocidade de um fator kn / . Um exemplo de código de bloco é o código de Hamming(7,4), cuja codificação sistemática onde os k bits de informação são posicionados no campo inicial da palavra código são mostrados na tabela a seguir. Bits de informação Palavra Código Palavra Código Bits de informação A capacidade de correção do código depende da relação entre as palavras código. Quanto maior a distância de Hamming entre as palavras código ( número de bits diferentes), maior será a capacidade de correção do código. Pode-se mostrar que o número máximo de erros que um código pode detectar é dado por. 1 min de Sendo min d a distância mínima do código. Demonstra-se que um codificador binário é capaz de corrigir qualquer padrão de erro de peso t inteiro, semprel que , 2 1 min d t De uma maneira geral um código será capaz de corrigir até kn2 padrões de erros. Os códigos BCH podem ser vistos como uma generalização dos códigos de Hamming para a correção de múltiplos erros. Finalmente os Códigos de Reed Solomon que são uma classe especial dos códigos BCH, e possuem uma grande capacidade de correção de surtos de erros. Códigos Convolucionais: Outra classe de códigos de especial interesse em sistemas de comunicações móveis são os códigos convolucionais. A principal diferença em relação aos códigos de bloco, é queneste método de codificação os bits de informação são codificados de forma continua, não sendo separados em blocos para a codificação. Existem diversas técnicas de codificação para geração de códigos convolucionais, a mais utilizada é baseada na codificação através de registradores de deslocamento com somadores módulo 2. De uma forma geral um codificador convolucional terá k entradas e n saídas, com m registros para cada entrada. Assim cada bit na entrada influenciará mn bits na saída, m é denomina de memória do código. Para que todos os bits codificados tenham passado pelos registradores de deslocamento, é necessário que a sequência de informação tenha andado 1m bits. A figura abaixo mostra dois exemplos de códigos convolucionais de taxa 21 e taxa 31 respectivamente. A decodificação do código convolucional consiste em escolher a sequencia mais provável entre todas as possíveis. Existem diversos algoritmos que permitem a decodificação deste tipo de código. A decodificação ótima é atingida pelo algoritmo de Viterbi. A capacidade de correção de um código convolucional está associada a distância mínima livre. De uma forma geral, quanto menor é a taxa de codificação, maior é a distância livre do código, e para códigos de mesma taxa, a distância livre aumenta com o aumento da memória do código. Exemplo: Codificação de um canal GSM Em um sistema GSM, a voz é convertida em um sinal elétrico através do microfone. Este sinal é então filtrado e limitado em banda a 3.4kHz, suficientes para o reconhecimento inteligente da voz. Depois de filtrado o sinal é amostrado a uma taxa de 8kHz e quantizado em amostras de 13bits, resultando em uma taxa de 104kbits/s. Esta taxa é demasiada alta para transmissão na interface rádio. Com o intuito de diminuir a taxa de transmissão, é utilizado uma algoritmo de compressão( codificação de fonte) denominado codificador RPE-LTP ( Regular Pulse Exciting-Linear Term Predictor) [ETSI] que reduz significativamente a taxa de transmissão para 13kbps. A codificação de fonte introduzida pelo RPE-LTP gera símbolos que possuem importância desigual, ou seja a perda de determinados bits é mais critica do que de outros dentro de uma janela de codificação. O código produz blocos de 260 bits a cada intervalo de 20ms. De forma a fazer uso eficiente do espectro, é então aplicado um esquema de codificação desigual de canal, onde os bits mais críticos são codificados e os menos críticos não sofrem codificação. A figura abaixo detalha este esquema de codificação. O bloco é dividido em três campos, Ia, Ib e Ic, classificados de acordo com o seu grau de importância. Os bits do campo Ia são codificados com 3 bits para detecção de erros, os bits da classe Ib são codificados com 4 bits para detecção de erros, juntamente os campos Ia e Ib são codificados por um código convolucional de taxa 1/2 , os bits da classe Ic não são codificados. Exemplo 2: Codificação de canal GPRS Para os sistemas GPRS foram definidos 4 tipos de codificação de dados para 4 taxas de transmissão distintas. O objetivo é que o sistema possa se adaptar dinamicamente de acordo com a qualidade do canal. A técnica de codificação consiste na concatenação de um código de bloco externo e um código convolucional interno, conforme a tabela a seguir. Exemplo 3: Codificação UMTS. Em 1993 foi apresentado a comunidade científica um novo esquema de modulação denominado Turbo Codes. Estes códigos permitiam atingir uma performance próxima ao limite de capacidade de canal apresentado por Shannon em 1948. O 3GPP incorporou os Turbo Codes nas especificações das características físicas dos sistemas de transmissão UMTS. O principio básico dos Turbo Codes, é a concatenação de 2 ou mais códigos, onde através de um processo de decodificação iterativo, os parâmetros estimados do sinal recebido por cada código, denominados de informação extrínsecas, são repassados para o próximo código, como informação adicional no processo de decodificação. Em cada iteração, é possível a correção de novos erros não detectados nas etapas anteriores. O preço pago é uma maior complexidade de implementação e uma maior latência no tempo de decodificação. Bits de saída do codificadosr convolucional Esquema de codificação Taxa do código Taxa do código
Compartilhar