Você está na página 1de 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);
}

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:
N −1
Y ( z) 1 1
H ( z) = = (1 + z −1 + z −2 + ... + z − N +1 ) => y[n] =
X ( z) N N
∑ x[n − k ]
k =0
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.

Você também pode gostar