Hola Gente!
Tengo una duda.
Estoy implementado, con un microcontrolado STM32F4, un reproductor WAV al cual le aplico unos filtro IIR para eliminar ciertas frecuencias.
La finalidad es implementar algo parecido a un ecualizador.
Tengo entendido que estos micro poseen instrucciones optimizadas para DSP y en mi caso simplemente puse el codigo en C de un filtro generico.
Nose si en realidad este se esta implementado con esas instrucciones. Hay que habilitar algo para el uso de DSP o directamente el compilador ya utiliza las intrucciones optimizadas?
Por ejemplo este es el filtro pasa bajo que tengo, que anda, pero nose si esta utilizando las intrucciones especificas de DSP o estos quemando recursos....
float filtro_low_2(float x)
{
static float vt_1 = 0, vt_2 = 0, yt, vt;
vt= x + 0.19507203E+01 * vt_1 -.97258544E+00 * vt_2;
yt = vt -.19681747E+01 * vt_1 + 0.10000000E+01 * vt_2;
vt_2 = vt_1;
vt_1 = vt;
return(yt);
}
float filtro_low(float x)
{
static float vt_1 = 0, vt_2 = 0, yt, vt, yt2;
vt= x * 0.75627159E-01 + 0.18378850E+01 * vt_1 -.85192148E+00 * vt_2;
yt = vt -.18767974E+01 * vt_1 + 0.10000000E+01 * vt_2;
vt_2 = vt_1;
vt_1 = vt;
yt2 = filtro_low_2(yt);
return(yt2);
}
Desde ya, muchas gracias!
Tengo una duda.
Estoy implementado, con un microcontrolado STM32F4, un reproductor WAV al cual le aplico unos filtro IIR para eliminar ciertas frecuencias.
La finalidad es implementar algo parecido a un ecualizador.
Tengo entendido que estos micro poseen instrucciones optimizadas para DSP y en mi caso simplemente puse el codigo en C de un filtro generico.
Nose si en realidad este se esta implementado con esas instrucciones. Hay que habilitar algo para el uso de DSP o directamente el compilador ya utiliza las intrucciones optimizadas?
Por ejemplo este es el filtro pasa bajo que tengo, que anda, pero nose si esta utilizando las intrucciones especificas de DSP o estos quemando recursos....
float filtro_low_2(float x)
{
static float vt_1 = 0, vt_2 = 0, yt, vt;
vt= x + 0.19507203E+01 * vt_1 -.97258544E+00 * vt_2;
yt = vt -.19681747E+01 * vt_1 + 0.10000000E+01 * vt_2;
vt_2 = vt_1;
vt_1 = vt;
return(yt);
}
float filtro_low(float x)
{
static float vt_1 = 0, vt_2 = 0, yt, vt, yt2;
vt= x * 0.75627159E-01 + 0.18378850E+01 * vt_1 -.85192148E+00 * vt_2;
yt = vt -.18767974E+01 * vt_1 + 0.10000000E+01 * vt_2;
vt_2 = vt_1;
vt_1 = vt;
yt2 = filtro_low_2(yt);
return(yt2);
}
Desde ya, muchas gracias!