Professional Documents
Culture Documents
9 de outubro de 2012
Estrutura da apresenta c ao
Introdu c ao DSP em Arduino Entrada de audio: ADC Sa da de audio: PWM Processamento An alise de desempenho S ntese Aditiva Convolu c ao no dom nio do tempo FFT Conclus oes
Arduino
Arduino
Caracter sticas do projeto
Estrutura minimal para interface com um microcontrolador. Processing (MIT 2001) + Wiring (Ivrea 2003) Arduino (Ivrea 2005). Geralmente usado como interface para controle. Baixo custo: 20-50 USD. Licenciamento livre:
Projetos de hardware: CC BY-SA 2.5. Software: GPL (IDE) e LGPL (bibliotecas C/C++). Documenta c ao: CC BY-SA 3.0.
CPU: unidade aritm etica e registradores (16 MHz - 8 bits). Interrup c oes. Mem orias: Flash (32 KB), SRAM (2 KB) e EEPROM (1 KB). Rel ogios de sistema (diversas fontes, pr e-escalonadores). Gerenciamento de energia. Portas digitais de entrada e sa da. Contadores (com PWM). Interface serial. Convers ao anal ogico-digital. Boot-loader e autoprograma c ao.
s.
Perguntas: Qual e o n umero m aximo de opera c oes que se pode realizar em tempo real? Quais detalhes de implementa c ao fazem diferen ca? Qual e a qualidade do sinal de audio resultante?
Estrutura da apresenta c ao
Introdu c ao DSP em Arduino Entrada de audio: ADC Sa da de audio: PWM Processamento An alise de desempenho S ntese Aditiva Convolu c ao no dom nio do tempo FFT Conclus oes
Resolu c ao: 8 ou 10 bits. Tempo de convers ao: 13 a 260 s. Frequ encia pr opria / redu c ao de ru do. Convers ao manual ou autom atica.
2 4 8 16 32 64 128 Obs:
Resolu c ao da fun c ao micros(): 4 s. Per odo de convers ao: 14, 5 TADC . R = 44.100 Hz Tamostra 22, 67 s. R = 31.250 Hz Tamostra = 32, 00 s.
Estrutura da apresenta c ao
Introdu c ao DSP em Arduino Entrada de audio: ADC Sa da de audio: PWM Processamento An alise de desempenho S ntese Aditiva Convolu c ao no dom nio do tempo FFT Conclus oes
Caracter sticas de PWM no ATmega328P: 6 canais de sa da. Modos de opera c ao: Fast e Phase Correct. Pr e-escalonador. 2 contadores de 8 bits e 1 de 16 bits. Interrup c ao por transbordamento.
Par ametros escolhidos: Fast PWM. Contador de 8 bits. Pr e-escalonador igual a 1. Frequ encia de overow: 16 MHz / 1 / 28 = 62.500 Hz. Taxa de gera c ao de amostras: 31.250 Hz.
Estrutura da apresenta c ao
Introdu c ao DSP em Arduino Entrada de audio: ADC Sa da de audio: PWM Processamento An alise de desempenho S ntese Aditiva Convolu c ao no dom nio do tempo FFT Conclus oes
Acoplamento de entrada e sa da
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
// 1. leitura da entrada : ADC x [ ind ] = ADCH ; // 2. escrita na saida : PWM OCR2A = y [( ind - MIN_DELAY )&( BUFFER_SIZE -1)]; // 3. sinalizacao de um novo bloco de amostras if (( ind & ( BLOCK_SIZE - 1)) == 0) { rind = ( ind - BLOCK_SIZE ) & ( BUFFER_SIZE -1); dsp_block = true ; } // 4. incremento do indice de leitura / escrita ind ++; ind &= BUFFER_SIZE - 1; // 5. inicia uma nova conversao ADC sbi ( ADCSRA , ADSC );
Implementa c ao
PWM:
Modo Fast PWM. Valor do pr e-escalonador. Pino de sa da.
Mem oria
Limites da Mem oria: 2 Kb de SRAM para dados. Uma tabela com 512 bytes ocupa Buer m aximo de 2.000 amostras.
1 4
da mem oria!
Perguntas: Qual e n umero m aximo de opera c oes comput aveis em tempo real? Quais detalhes de implementa c ao fazem diferen ca? Qual e a qualidade do audio resultante?
Estrutura da apresenta c ao
Introdu c ao DSP em Arduino Entrada de audio: ADC Sa da de audio: PWM Processamento An alise de desempenho S ntese Aditiva Convolu c ao no dom nio do tempo FFT Conclus oes
S ntese aditiva
S ntese aditiva
C odigo em alto n vel:
1 2 3 4 5 6 7 8
for ( n = 0; n < N ; n ++) { angle = 2.0 * M_PI * t ; y [ n ] = 0.0; for ( k = 0; k < numFreqs ; k ++) y [ n ] += r [ k ]* sin ( f [ k ] * angle ); t += 1.0 / SR ; }
Implementa c ao da linha 6:
1 2
ind [ k ] = ( ind [ k ]+ f [ k ]) & ( SINETABLE_SIZE -1); y [ n &( BUFFER_SIZE -1)] += sine [ ind [ k ]] >> pad ;
S ntese aditiva
Tipo e n umero de opera co es fazem a diferen ca
Type of operations in sinesum (bs: 128, sr: 31250) 5 Synth time (ms) 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Number of oscilators 2 mults 1 mult var pad
S ntese aditiva
Resultados para blocos de diferentes tamanhos
Additive Synthesis on Arduino (inline) 5 Synth time (ms) 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Number of oscilators bl. size 32 bl. size 64 bl. size 128
S ntese aditiva
Resultados para blocos de diferentes tamanhos
Additive Synthesis on Arduino (loop) 5 Synth time (ms) 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Number of oscilators bl. size 32 bl. size 64 bl. size 128
S ntese aditiva
Resultados para diferentes taxas de amostragem
15.625 Hz
S ntese aditiva
Resumo dos resultados
N umero de osciladores m aximo em cada cen ario (R = 31.250 Hz): block size 32 64 128 2op 2 2 2 1op 4 4 4 pad+for 8 8 8 pad 14 14 15
S ntese aditiva
Resumo dos resultados
N umero de osciladores m aximo em cada cen ario (R = 31.250 Hz): block size 32 64 128 2op 2 2 2 1op 4 4 4 pad+for 8 8 8 pad 14 14 15
Estrutura da apresenta c ao
Introdu c ao DSP em Arduino Entrada de audio: ADC Sa da de audio: PWM Processamento An alise de desempenho S ntese Aditiva Convolu c ao no dom nio do tempo FFT Conclus oes
Implementa c ao:
1 2 3 4 5 6 7 8 9
for ( int n = 0; n < N ; n ++) { int yn = 0 , xtmp ; for ( int i = 0; i < order ; i ++) { xtmp = 127 - TMOD (x , n -i , BUFFER_SIZE ); yn += xtmp * 10 / 100; } LIMIT ( yn ); /* limita a + - 127 */ TMOD (y , n , BUFFER_SIZE ) = 127 + yn ; }
Time-domain convolution on Arduino (constant pad) 9 8 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Order of the filter bl. size 32 bl. size 64 bl. size 128 bl. size 256
Time-domain convolution on Arduino (variable pad) 9 8 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 8 Order of the filter bl. size 32 bl. size 64 bl. size 128 bl. size 256
Time-domain convolution on Arduino (mult) 9 8 7 6 5 4 3 2 1 0 0 1 bl. size 32 bl. size 64 2 3 Order of the filter 4 5
32 64 128 256
1 1 1 1
7 7 7 7
13 13 14 14
Estrutura da apresenta c ao
Introdu c ao DSP em Arduino Entrada de audio: ADC Sa da de audio: PWM Processamento An alise de desempenho S ntese Aditiva Convolu c ao no dom nio do tempo FFT Conclus oes
used to convert the discrete signal (discrete in time) in the time domain to its counterpart (discrete in frequency) in the frequency domain. DFT can be computed efficiently in practice using a Fast Fourier Transform (FFT) algorithm, which is generally N/log(N)-1 times faster than DFT, where N is called DFT or FFT size, which is the number of data points used in the computation. To achieve maximum efficiency of computation in FFT, N is generally constrained to an integer power of two, e.g. 1024, 2048, 4096, 8192, etc..
x(t) ADC DFT/FFT |X(f)|
x(t)
t0
fN/2 f0=0 3) N points in frequency domain containing both negative and positive frequency parts
-fN/2
|X(f)|
The above figure illustrates the aforementioned process. An N-point time record [x(t0), x(t1), , x(tN-1)] will generate N points [X(-fN/2), X(f0), , X(fN/2)] in the frequency domain containing both negative and positive frequency parts. The positive and negative frequency parts can be combined to produce N/2+1 points [X(f0), X(f1), X(fN/2)] at real frequencies in the amplitude/power spectrum. These points are located at frequencies: 0, f
Xk =
n=0
xn e i 2k N ,
k = 1, . . . , N 1.
Implementa c ao ing enua da DFT: O (N 2 ). Implementa c oes de FFT para diferentes valores de N: O (N log(N )).
FFT on Arduino 120 Analysis time (ms) 100 80 60 40 20 0 32 64 128 Block size fft time 256
Determina c ao de frequ encia m axima: M edia de 428,15 s por amostra. Frequ encia m axima 2.335 Hz. Pr e-escalonador PWM de 32 R = 1.953 Hz.
FFT on Arduino 300 Analysis time (ms) 250 200 150 100 50 0 3264 128 fft time 256 Block size dsp cycle 512
Conclus oes
Detalhes de implementa c ao que fazem a diferen ca: Tipos utilizados (byte, unsigned long, int, oat, etc) s ao fundamentais. Multiplica c ao/divis ao (de inteiros) demoram pelo menos o dobro que opera c oes sobre inteiros. A quantidade de la cos e condicionais faz diferen ca. Consulta a vari aveis e vetores tamb em faz diferen ca.
Atribui c ao de autoria das guras utilizadas: Figura PWM: Zurecs (zureks@gmail.com). Figura S ntese Aditiva: Chrisjonson. Figura FFT: Virens.
Dados de contato: Meu email: ajb@ime.usp.br Esta apresenta c ao: http://www.ime.usp.br/~ajb/ CM no IME: http://compmus.ime.usp.br/