DSP – Oversampling, Upsampling e Downsampling

Dreamstime-recortado-660x400

.

Introdução

No artigo Trazendo o mundo real para dentro do processador – Conversor A/D foram mostrados alguns efeitos decorrentes da quantização de um sinal analógico num número finito de valores inteiros, definido pelo número de bits de resolução de um conversor Analógico / Digital. Neste artigo serão apresentados alguns recursos interessantes que o processamento digital de sinais pode oferecer. A sobre-amostragem (oversampling), aumento artificial da taxa de amostragem (upsampling) seguida de uma filtragem de reconstrução, ou interpolação, e a decimação (downsampling), que é a redução artificial da taxa de amostragem. São técnicas de processamento digital de sinais simples, porém muito poderosas.

.

Oversampling

Dá-se o nome de Oversampling à ação de realizar uma amostragem do sinal muito acima da frequência mínima de amostragem, determinada pelo critério de Nyquist-Shannon, ou seja, no mínimo 2 vezes a maior frequência do sinal a ser digitalizado. É boa prática amostrar o sinal com taxas de pelo menos 8 a 10 vezes a maior frequência do sinal. Para se fazer um oversampling, pode-se utilizar taxas maiores que 32 vezes a frequência mínima.

Por que fazer um oversampling?

Existem dois motivos principais para se utilizar desse recurso. O primeiro motivo é a simplificação do filtro analógico de anti-aliasing na entrada do conversor A/D, necessário para evitar o aparecimento de frequências fictícias na faixa útil do sinal decorrentes dos efeitos da amostragem. No caso de oversampling, pode ser utilizado um filtro passivo simples do tipo R-C, que muitas vezes já está incorporado aos conversores A/D, dispensando o uso de filtros analógicos ativos. Se necessário, pode-se aplicar ainda um filtro digital para reduzir ainda mais os sinais indesejados. O segundo motivo é o aumento de resolução em número de bits. A relação entre o aumento de resolução em bits e a taxa de amostragem mínima é a seguinte:

Formula-e1443962433291

Isso funciona, desde que o sinal seja periódico e o conversor A/D possua uma linearidade que não comprometa essa ação. Ao longo do texto serão apresentados scripts desenvolvidos para o programa Octave, que geraram os dados e as figuras apresentadas a seguir. O leitor pode copiar esses scripts e simular essas e outras situações que desejar. Será necessário também instalar o pacote adicional do Octave com funções de processamento digital de sinais, o pacote Signal.

O script a seguir gera uma senoide ideal que servirá de base para o oversampling e a posterior quantização.

Prog1

O script a seguir gera a quantização e o espectro (FFT) do sinal gerado pelo script anterior, assim se pode observar os efeitos do oversampling.

Prog2

Na Figura 1 a seguir pode-se observar o espectro da senoide amostrada com taxa de 16 amostras por ciclo e quantizada para 8 bits.

Oversampling, Upsampling e Downsampling: Senoide ideal quantizada para 8 bits

                   Figura 1 – FFT da senoide ideal quantizada para 8 bits

Se aplicarmos uma sobre-amostragem de 256 vezes, rodando o script alterando, o valor de Num_Bits_Ovr para 4, visando aumentar a resolução para 12 bits, obtemos o espectro mostrado na Figura 2.

Oversampling-12-bits

Figura 2 – FFT da senoide ideal quantizada para 8 bits e amostrada para obter 12 bits de resolução

Observando a Figura 2, pode-se notar que o número de amostras é muito grande (64 vezes maior). E vale lembrar que resolução não é o mesmo que precisão. Muitos conversores A/D especificam um parâmetro chamado de EOB (Efective number of bits – número efetivo de bits), que sempre é menor que a resolução do conversor A/D e determina a efetiva precisão do componente. Para fins de comparação observe a Figura 3, onde está retratada a FFT de uma senoide, amostrada 16 vezes por ciclo, quantizada para 12 bits de resolução. Repare que o nível do ruído de quantização se encontra num nível semelhante ao do espectro obtido após o oversampling.

FFT_Senoide_quantizada_12

Figura 3 – FFT de senoide ideal amostrada para 12 bits

 .

Upsampling

Upsampling é um técnica de processamento digital de sinais para aumentar artificialmente a taxa de amostragem em N vezes, inserindo um número N-1 de zeros entre as amostras originais do sinal, e passando o conjunto obtido por um filtro de reconstrução, que nada mais é que um filtro do tipo passa-baixas. Para mostrar essa técnica utilizaremos o programa anterior ligeiramente modificado. O script a seguir simula o upsampling da senoide ideal e realiza a filtragem de reconstrução.

Prog3

Na Figura 4 pode-se observar como fica o sinal original intercalado com zeros entre as amostras, nesse caso com 255 zeros (fator_up = 256).

Upsampling1

Figura 4 – Gráfico mostrando a senoide intercalada com 255 zeros

Evidentemente essa técnica impõe limites de aplicação. É intuitivo o fato que quanto maior a interpolação, mais a informação referente ao sinal original é distorcida ou perdida. Na Figura 5 pode-se observar a forma de onda resultante após a reconstrução da senoide original interpolada para aumentar a taxa de amostragem em 8 vezes (fator_up = 8). O filtro de reconstrução é do tipo FIR, que não distorce a fase do sinal.

Recosntruct

Figura 5 – Senoide reconstruída

Escolhendo o trecho da onda reconstruída que está livre dos transitórios decorrentes da filtragem, e calculando a FFT desse trecho, obtém-se o espectro mostrado na Figura 6.

FFT-reconstruída

                                 Figura 6 – FFT da onda reconstruída

Note que houve uma melhora do nível de ruído de quantização, quando comparado com o espectro original. O script a seguir calcula a FFT da senoide reconstruida.

Prog4

.

Downsampling

Downsampling ou decimação é a técnica de redução da taxa de amostragem. Isso é feito simplesmente separando uma amostra a cada N. Há uma inevitável distorção do sinal. Na Figura 7 está retratada a forma de onda decimada e na Figura 8 o seu espectro.

Senoide-decimada

                                         Figura 7 – Senoide decimada

FFT-decimada

                                  Figura 8 – FFT da senoide decimada

O script para gerar a decimação ilustrada nas Figuras 7 e 8 encontra-se a seguir.

Prog5a

Prog5b

.

Conclusão

As técnicas apresentadas neste artigo técnico são muito úteis para a manipulação de sinais digitalizados. São aplicadas para se desenvolver sistemas de controle ou filtragens adaptativas. É necessário relembrar que, como quase tudo na vida real, essas técnicas têm limitações que devem ser consideradas, e que não existem soluções perfeitas. As soluções são sempre de compromisso. Assim cabe ao projetista escolher, segundo os seus critérios, a melhor solução para o seu projeto.

.

Referências

[1] Processamento Digital de Sinais – DSP – Parte 2

[2] Enhancing ADC resolution by oversampling

Crédito para a imagem destacada: Roundness – Van Truan | Dreamstime Stock Photos

Licença Creative Commons
Esta obra, “DSP – Oversampling, upsampling e downsampling “, de Henrique Frank W. Puhlmann, foi licenciada sob uma Licença Creative Commons Atribuição-NãoComercial-CompartilhaIgual 3.0 Não Adaptada.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s