Upload
api-3719098
View
62
Download
1
Embed Size (px)
Citation preview
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
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?
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.