Post on 24-Apr-2020
Gerando senos
Luis Henrique Assumpcao Lolis
17 de maio de 2016
http://www.eletrica.ufpr.br/~luis.lolis
Conteudo
1 Introducao
2 Ondas senoidais
3 O codigo em C
4 O experimento
5 Questoes e desafio
Luis Henrique Assumpcao Lolis Gerando senos 2
Sumario
1 Introducao
2 Ondas senoidais
3 O codigo em C
4 O experimento
5 Questoes e desafio
Luis Henrique Assumpcao Lolis Gerando senos 3
Objetivos
Gerar diferentes tons com a plataforma DSP
Aplicacoes para modulacao do sinal, teste de tom telefonico,geracao de notas, teste de funcoes de transferencia.
Luis Henrique Assumpcao Lolis Gerando senos 4
Sumario
1 Introducao
2 Ondas senoidais
3 O codigo em C
4 O experimento
5 Questoes e desafio
Luis Henrique Assumpcao Lolis Gerando senos 5
Gerando ondas senoidais
Gerar senos serve para os tons de telefonia, para modularsinais de audio, e gerar sons que se aproximem deinstrumentos musicais, ex: MIDI.
Existem tres formas basicas de gerar ondas senoidais.
Look-up TableEquacao recursiva (Ex: CORDIC)Expansao de Taylor
As LUTs sao faceis de implementar e de baixa complexidadecomputacional, mas so geram sub-multiplos inteiros dafrequencia de amostragem.
Luis Henrique Assumpcao Lolis Gerando senos 6
Series de Taylor
Funcao presente na biblioteca da TI “DSPLIB”
sen(x) = x− x3
3!+
x5
5!− x7
7!· · ·
x em radianos
Vantagens:
Pode gerar qualquer frequencia
Desvantagem
Nao tao precisa quanto a LUTPode ter problemas com overflow
Luis Henrique Assumpcao Lolis Gerando senos 7
Sumario
1 Introducao
2 Ondas senoidais
3 O codigo em C
4 O experimento
5 Questoes e desafio
Luis Henrique Assumpcao Lolis Gerando senos 8
Funcao seno em C
A funcao seno em C pode ser encontrada na biblioteca“math.h” que e muito lenta para ser usada em tempo real.
DSPLIB:
FFTSeno, cosseno e tangenteExponenciais
Luis Henrique Assumpcao Lolis Gerando senos 9
Para usar a DSPLIB
Dois #include sao adicionados:
Luis Henrique Assumpcao Lolis Gerando senos 10
Funcao Sine na DSPLIB
Escrita em Assembly
3 paremetros: enderco da localizacao contendo a frequencia,endereco da localizacao para gravar o seno calculado; e oterceiro parametro sempre em 1.
Luis Henrique Assumpcao Lolis Gerando senos 11
Fator de escala entre a frequencia em Hz e a entrada dafuncao
22368 16bit int (0.682)
Luis Henrique Assumpcao Lolis Gerando senos 12
Entrando o angulo
Um inteiro 16bits transformado em angulo de 0º a 180º.
0⇒ 016383⇒ 9032767⇒ 180
Luis Henrique Assumpcao Lolis Gerando senos 13
Explicando o fator de escala
Os angulos a serem calculados sao sub-multiplos inteiros dafrequencia de amostragem, nesse caso 48000.
Ex: para gerar 1Hz precisamos divir uma volta no circulounitario em 48000 angulos, dando o passo do angulo de360º/48000=0,0075º. Esse angulo em vırgula fixa fica 245,76.
Dividir por 48000 leva tempo, mas dividir por um multiplo de2 e um deslocamento para e direita.
Conta do angulo em vırgula fixa:360
48000· 32768 =
360
215· 22368
Qual a menor frequencia que podemos gerar com fs = 48KHze 16bits para o calculo do angulo?
Luis Henrique Assumpcao Lolis Gerando senos 14
Sumario
1 Introducao
2 Ondas senoidais
3 O codigo em C
4 O experimento
5 Questoes e desafio
Luis Henrique Assumpcao Lolis Gerando senos 15
Setup para o seno
Luis Henrique Assumpcao Lolis Gerando senos 16
Copiando, build e debug
Seguir as etapas do primeiro projeto
Criar a pasta “senos” e copiar os arquivos fonte desseexperimento.Criar o projeto e apontam para a pasta criada.Configurar o projeto para o processador e o modelo dememoria correspondente.Compilar o projeto ativo.Lancar o debug do projeto ativo.Rodar o codigo.
Luis Henrique Assumpcao Lolis Gerando senos 17
Console
Luis Henrique Assumpcao Lolis Gerando senos 18
Mudando o volume
Reduza o ganho de 10000 para 5000
Luis Henrique Assumpcao Lolis Gerando senos 19
Mudando as frequencias
Altere as frequencias para A=440Hz e C=523Hz.
Luis Henrique Assumpcao Lolis Gerando senos 20
Mude a frequencia de amostragem
Altere o fator de escala de acordo com a nova frequencia deamostragem para continuar gerando as mesmas frequencias deantes
Luis Henrique Assumpcao Lolis Gerando senos 21
Sumario
1 Introducao
2 Ondas senoidais
3 O codigo em C
4 O experimento
5 Questoes e desafio
Luis Henrique Assumpcao Lolis Gerando senos 22
Porque existe o fator de escala?
Qual o melhor metodo de gerar senos em no TMS320C5505?
Gere um seno que varia lentamente no tempo, de 1Hz a20KHz e retornando a 1Hz em 10 segundos.
Luis Henrique Assumpcao Lolis Gerando senos 23