3
Laboratório de DSP – Atividade 4 Nesta atividade trabalharemos com a primeira aplicação em tempo real. O objetivo é simples, serão utilizados os conversores A/D e D/A. Também serão necessários um microfone e caixas de som amplificadas. Verifique se o microfone tem um conector do tipo mono ou stereo (é comum em microfones para PC). Se for stereo pode não funcionar corretamente quando conectado no DSK. Copie os diretórios c:/ti/c6000/examples/dsk/codec/edma e c:/ti/c6000/examples/dsk/codec/polling. Criando novos diretórios para estes códigos você estará se protegendo contra possíveis enganos de codificação. Em cada um destes dos diretórios existe um aplicativo que efetua o mesmo processo. Basicamente, o sinal é digitalizado através do conversor A/D e reproduzido D/A. Assim, você pode falar no microfone e ouvir sua voz nas caixas de som amplificadas. A particularidade de cada aplicativo está na técnica utilizada para a aquisição, administração e reprodução do sinal. Um utiliza o processo de DMA e o outro utiliza polling. A atividade visa exatamente estudar as características técnicas. Descrição da atividade 1 – Carregue no DSK os aplicativos de codec_poll.out e depois codec_edma.out. Verifique a qualidade do sinal que você está ouvindo. Verifique se existe atraso perceptível entre o que você fala e o que escuta. 2 – Atualize o aplicativo implementando um ganho no sinal colhido do conversor A/D. Observe que é similar a atividade 1, entretanto, agora você estará ouvindo em vez de ver o resultado do ganho. Implemente ganhos de amplitudes 2, 4, 0.5 e 0.25. A seguir são mostrados trechos de código onde se pode inserir o ganho no sinal de voz. codec_poll.c while(1) /* play back about 5 minutes */ { temp = mcbsp0_read(); temp = temp & 0xfffe; /* Em temp se tem a amplitude do sinal digitalizado. */ /* Coloque seu código aqui. */ mcbsp0_write(temp); }

Laboratório de DSP - Atividade 4

Embed Size (px)

Citation preview

Page 1: Laboratório de DSP - Atividade 4

Laboratório de DSP – Atividade 4

Nesta atividade trabalharemos com a primeira aplicação em tempo real. O objetivo é simples, serão utilizados os conversores A/D e D/A. Também serão necessários um microfone e caixas de som amplificadas. Verifique se o microfone tem um conector do tipo mono ou stereo (é comum em microfones para PC). Se for stereo pode não funcionar corretamente quando conectado no DSK.

Copie os diretórios c:/ti/c6000/examples/dsk/codec/edma e c:/ti/c6000/examples/dsk/codec/polling. Criando novos diretórios para estes códigos você estará se protegendo contra possíveis enganos de codificação. Em cada um destes dos diretórios existe um aplicativo que efetua o mesmo processo. Basicamente, o sinal é digitalizado através do conversor A/D e reproduzido D/A. Assim, você pode falar no microfone e ouvir sua voz nas caixas de som amplificadas. A particularidade de cada aplicativo está na técnica utilizada para a aquisição, administração e reprodução do sinal. Um utiliza o processo de DMA e o outro utiliza polling. A atividade visa exatamente estudar as características técnicas.

Descrição da atividade

1 – Carregue no DSK os aplicativos de codec_poll.out e depois codec_edma.out. Verifique a qualidade do sinal que você está ouvindo. Verifique se existe atraso perceptível entre o que você fala e o que escuta.

2 – Atualize o aplicativo implementando um ganho no sinal colhido do conversor A/D. Observe que é similar a atividade 1, entretanto, agora você estará ouvindo em vez de ver o resultado do ganho. Implemente ganhos de amplitudes 2, 4, 0.5 e 0.25. A seguir são mostrados trechos de código onde se pode inserir o ganho no sinal de voz.

codec_poll.c

while(1) /* play back about 5 minutes */ { temp = mcbsp0_read(); temp = temp & 0xfffe; /* Em temp se tem a amplitude do sinal digitalizado. */

/* Coloque seu código aqui. */

mcbsp0_write(temp); }

codec_edma.c

temp = (int)out_ptr - pcm_out - NUM_OF_BLOCKS*BLOCK_SIZE*DATA_SIZE; if (temp >= 0) { out_ptr = (short *)pcm_out; }

for (i=0;i<BLOCK_SIZE;i++) *out_ptr++ = *in_ptr++ & 0xfffe; /* Coloque seu código aqui. */

/*mecha no for se achar necessário*/

O compilador C aceita coisas do tipo: temp >>= 1, deslocamento de um bit para a esquerda.

4 – Neste ponto é solicitado que você implemente uma linha de retardo. Como vimos, no processamento digital de sinais utilizamos os elementos básicos: somador, multiplicador e atrasador. O somador e o

Page 2: Laboratório de DSP - Atividade 4

multiplicador são óbvios de serem implementados. Entretanto, o atraso (z -1) não é imediato. Desejamos implementar os seguintes SLID’s : Y(z)=z -64 X(z), Y(z)=z -128 X(z), Y(z)=z -256 X(z) e Y(z)=z -512 X(z). Utilizando o fonte codec_poll.c você pode introduzir o código que implementa a linha de retardo no mesmo ponto onde foi inserido o código para a implementação do ganho. Observe que: Y(z)= z –N X(z) é equivalente no domínio do tempo a: y[n] = x[n-N].

5 – Agora vamos fazer uma pequena modificação no aplicativo codec_edma.c e verificar o que acontece com o sinal de saída.

Na forma como foi aberto código codec_edma.c o apresenta um conjunto de definições que são utilizadas para a configuração do codec do DSK. Estas definições são mostradas a seguir:

#define DATA_SIZE 2#define BLOCK_SIZE 80#define NUM_OF_BLOCKS 18#define DELAY 5

Vamos fazer as seguintes modificações:

/*Modificação 1 */#define BLOCK_SIZE 128#define DELAY 32 /*Modificação 2 */#define BLOCK_SIZE 256#define DELAY 100 */

/*Modificação 3 */#define BLOCK_SIZE 512#define DELAY 300 */

Observe o resultados destas alterações sobre o sinal de voz de saída.

6 – Para encerar as atividades deste experimento vamos implementar o SLID média móvel utilizando o código codec_poll.c. Utilize o código desenvolvido para implementar a linha de retardo e adapte-o para realizar a média móvel com comprimentos de N = 32, 64, 128 e 256. Observe que a média móvel apresenta as respectivas representações no domínio da transformada Z e no domínio do tempo:

=>

Observe os resultados verifique se existe diferença audível quando se aumenta o comprimento N?

Nesta atividade trabalhamos com aplicações em tempo real, utilizamos as técnicas de polling e DMA e implementamos sistemas digitais simples. Para complementação da atividade desenvolva a questionário a seguir.

1 – Pesquise e descreva as técnicas de polling e DMA. Discuta as vantagens e desvantagens de cada técnica.2 – Em que aplicações você utilizaria uma técnica ou a outra (polling e DMA.)? Cite exemplos.3 – Na implementação da linha de retardo via polling você observou atraso audível no sinal? No caso do DMA o atraso foi perceptível? Justifique os resultados.4 – Em termos da capacidade de computação do processador o uso de polling ou DMA afeta o desempenho do mesmo? De que maneira? Sob esta figura de mérito qual é a técnica mais interessante de ser usada.5 – No processo de polling como se pode garantir de uma determinada aplicação possa ser realizada em tempo real pelo processador?

Page 3: Laboratório de DSP - Atividade 4

6 – Na implementação da média móvel calcule para cada N o esforço computacional em MIPS necessários para a realização do SLID. Procure no manual eletrônico do codec informações sobre a taxa de amostragem do mesmo.