Autor Tema: Consulta general, fft en m4f vs a9  (Leído 3692 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2901
Re: Consulta general, fft en m4f vs a9
« Respuesta #15 en: 15 de Junio de 2015, 15:31:35 »
De cuanto es el ADC externo que teneis? es un sigma-delta o un SAR?

quiza cambiando el ST por un freescale kinetis V podeis quitar tambien el ADC, el kinetis tiene un adc de 16 bits SAR. ofrece 4096 puntos mas que el de ST, y eso que te ahorras.

un saludo
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8136
Re: Consulta general, fft en m4f vs a9
« Respuesta #16 en: 15 de Junio de 2015, 15:43:52 »
Ahora que lo pienos y dejando de irnos TAN alto.

Yo no exactamente la frencuencia de muestreo que va a tener. Si me decis que lo trabajas por I2S imagino que debe ser algo asi como 192k, ya que solo te interesaria la parte de 48Khz (si es que no lei mal lo cual te da casi 4 veces de oversampleo (2minimo)), o tal ves estas trabajando a 48k y te interesan frecuencias menores ,
Lo cual te deja con 5.2us o 20us entre muestras, usando el de 5.2us(192k) estas metiendo facilmente 1000 instrucciones(sin contar saltos) entre medio con 200Mhz, ahora con 400Mhz seria el doble: 2000 instrucciones, si usas 48Khz de sampleo entonces deberias tener muchisimo mas tiempo para el procesado. lo cual te queda casi 8000 instrucciones (sin esperas ni nada por el estilo) en tu ARM9

Con lo cual no creo que te afecte, a no ser que la parte grafica consuma el mayor tiempo del micro, ahora lo que me preocupa es que el micro no acepta punto fijo, lo cual el multiplicar puede que sea lo mas consumir de tiempo, pero sumar no tanto. Aun asi podes usar un algoritmo FFT con punto fijo. Pero bueno como dispones de Linux imagino que se debe manejar y darle prioridad a ambos, compartiendo el tiempo entre uno y otro lo cual te dejaria unas 4k instrucciones (tal ves 3.5k por el cambio de contexto,pila etc aunque tiene un MMC y deberia ser solo cambiar 7 registros como mucho) para hacer tus cosas. Y en caso de no necesitarse la actualizacion o no estar los datos para el actualizado de la pantalla TFT seria casi todo de la parte digital.

Y todo lo demas depende de la cantidad de filtros que le pongan. Filtro anti-aliasing no necesitan ya que su codec imagino ya lo trae incorporado de forma digital + filtro de entrada al codec, si deseas mostrar toda la frecuencia no queda otra que un FFT, ahora si deseas filtrarlo lo haces con uno/dos/tres filtros, ahi va a depender de la cantidad de MACs y rotaciones que tengas que hacer (FIR>IIR en etapas pero mas estable). Ademas tenes el tiempo en que se esta transmitiendo el cual no se hace nada. es un tiempo muerto.. aunque pequeño comparado con la recepcion.

La FFT la calculas cuando tenes todos los datos, mientras que el filtro a medida que llegan los vas procesando, sino mal recuerdo era asi...,
Si alguno pienso que me equivoco en mi razonamiento que me lo diga, pero creo ahora que es posible hacerlo, yo antes me guiaba por el tema de punto flotante. Pero si se puede hacr con punto fijo tal ves se haga mas rapido, ahora en C no se como podes decirle que es punto fijo, o creo que deberias hacer tus propias funciones de multiplicar/dividir. Ya que vuelvo a repetir, tengo entendido que no admiten punto fijo , sino enteros los ARM9, distinto al DSP que si tiene para hacer operaciones con formato Q1.14


EDIT:

https://code.google.com/p/libfixmath/wiki/Benchmarks

Libreria de punto fijo para cortex M3, imagino que posee la misma ALU y MAC que el ARM9, y lo que mas tiempo lleva es la raiz cuadrada. Pero lo que es suam resta multiplicacion estan cerca de 11 a 20 ciclos cada uno como maximo, sino 2/8 ciclos inlined ( no se que joraca es,, pero imagino que debe ser lo minimo de la operacion)
« Última modificación: 15 de Junio de 2015, 15:57:43 por KILLERJC »

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Consulta general, fft en m4f vs a9
« Respuesta #17 en: 15 de Junio de 2015, 15:49:29 »
De cuanto es el ADC externo que teneis? es un sigma-delta o un SAR?

quiza cambiando el ST por un freescale kinetis V podeis quitar tambien el ADC, el kinetis tiene un adc de 16 bits SAR. ofrece 4096 puntos mas que el de ST, y eso que te ahorras.

un saludo

El ADC en realidad es un integrado tipo front end para EEG. http://www.ti.com/product/ADS1299/description

sds.
-
Leonardo Garberoglio

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2901
Re: Consulta general, fft en m4f vs a9
« Respuesta #18 en: 15 de Junio de 2015, 15:55:37 »
Citar
El ADC en realidad es un integrado tipo front end para EEG. http://www.ti.com/product/ADS1299/description

sds.

es un sigma-delta de 24 bits no se puede cambiar ya ademas especializado no se puede cambiar.

Citar
La FFT la calculas cuando tenes todos los datos, mientras que el filtro a medida que llegan los vas procesando, sino mal recuerdo era asi...,
Si alguno pienso que me equivoco en mi razonamiento que me lo diga, pero creo ahora que es posible hacerlo, yo antes me guiaba por el tema de punto flotante. Pero si se puede hacr con punto fijo tal ves se haga mas rapido, ahora en C no se como podes decirle que es punto fijo, o creo que deberias hacer tus propias funciones de multiplicar/dividir. Ya que vuelvo a repetir, tengo entendido que no admiten punto fijo , sino enteros los ARM9, distinto al DSP que si tiene para hacer operaciones con formato Q1.14

es posible que se pueda, he incluso es posible que se pueda manejar la pantalla tambien con el ST (ya va mas justo), pero creo que todo es hablar por hablar por que dependera mucho de las librerias de punto fijo y punto flotante, lo mejor seria ponerlos a trabajar en paralelo haciendo una operacion de transformada de fourier por ejemplo y medir cuanto tarda cada uno, esa seria la mejor prueba.

un saludo
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Consulta general, fft en m4f vs a9
« Respuesta #19 en: 15 de Junio de 2015, 16:04:07 »
Ahora que lo pienos y dejando de irnos TAN alto.

Yo no exactamente la frencuencia de muestreo que va a tener. Si me decis que lo trabajas por I2S imagino que debe ser algo asi como 192k, ya que solo te interesaria la parte de 48Khz (si es que no lei mal lo cual te da casi 4 veces de oversampleo (2minimo)), o tal ves estas trabajando a 48k y te interesan frecuencias menores ,
Lo cual te deja con 5.2us o 20us entre muestras, usando el de 5.2us(192k) estas metiendo facilmente 1000 instrucciones(sin contar saltos) entre medio con 200Mhz, ahora con 400Mhz seria el doble: 2000 instrucciones, si usas 48Khz de sampleo entonces deberias tener muchisimo mas tiempo para el procesado. lo cual te queda casi 8000 instrucciones (sin esperas ni nada por el estilo) en tu ARM9

Con lo cual no creo que te afecte, a no ser que la parte grafica consuma el mayor tiempo del micro, ahora lo que me preocupa es que el micro no acepta punto fijo, lo cual el multiplicar puede que sea lo mas consumir de tiempo, pero sumar no tanto. Aun asi podes usar un algoritmo FFT con punto fijo. Pero bueno como dispones de Linux imagino que se debe manejar y darle prioridad a ambos, compartiendo el tiempo entre uno y otro lo cual te dejaria unas 4k instrucciones (tal ves 3.5k por el cambio de contexto,pila etc aunque tiene un MMC y deberia ser solo cambiar 7 registros como mucho) para hacer tus cosas. Y en caso de no necesitarse la actualizacion o no estar los datos para el actualizado de la pantalla TFT seria casi todo de la parte digital.

Y todo lo demas depende de la cantidad de filtros que le pongan. Filtro anti-aliasing no necesitan ya que su codec imagino ya lo trae incorporado de forma digital + filtro de entrada al codec, si deseas mostrar toda la frecuencia no queda otra que un FFT, ahora si deseas filtrarlo lo haces con uno/dos/tres filtros, ahi va a depender de la cantidad de MACs y rotaciones que tengas que hacer (FIR>IIR en etapas pero mas estable). Ademas tenes el tiempo en que se esta transmitiendo el cual no se hace nada. es un tiempo muerto.. aunque pequeño comparado con la recepcion.

La FFT la calculas cuando tenes todos los datos, mientras que el filtro a medida que llegan los vas procesando, sino mal recuerdo era asi...,
Si alguno pienso que me equivoco en mi razonamiento que me lo diga, pero creo ahora que es posible hacerlo, yo antes me guiaba por el tema de punto flotante. Pero si se puede hacr con punto fijo tal ves se haga mas rapido, ahora en C no se como podes decirle que es punto fijo, o creo que deberias hacer tus propias funciones de multiplicar/dividir. Ya que vuelvo a repetir, tengo entendido que no admiten punto fijo , sino enteros los ARM9, distinto al DSP que si tiene para hacer operaciones con formato Q1.14

El tema de los filtros hasta donde sabemos (muy poco por ahora) es que la señal (el eco que el sistema auditivo del bebé da como respuesta al estímulo sonoro que probocamos nosotros) tiene el mismo nivel que el ruido general. Se emiten dos tonos específicos porque se sabe que el oido responde con otro tono en un rango de frecuencia acotado. Entonces lo que se hace es procesar 100 ensayos e ir eliminando el ruido y va apareciendo la señal esperada (si el oido está sano). Luego, estimo que con fft se identifica la frecuancia de la señal "limpia".
El codec funcionaría a 44.1 o 48Khz ya que las señales estan acotadas a 10KHz. El codec posee filtros digitales. El tema es eliminar el ruido para identificar la señal que esperamos encontrar.

Por ahora, lo que estamos pensando es armar el codec, con la probeta del oido (posee un microfono y 2 parlantes miniatura) con un micro común que haga las veces de puente entre la PC y el I2S del codec. Levantaríamos los datos a la PC y en esta empezaríamos a estudiar en matlab los filtros/algoritmos a aplicar para obtener la señal que buscamos, luego, al obtener el algoritmo podremos analizar mejor en que micro implementa todo.

Como conclusion de los comentarios parecería que podría llegar a realizarlo en cualquiera de los dos micros, pero podría ser mejor hacerlo en el M4...

Saludos y gracias nuevamente por sus comentarios.

PD: Killer, como es tu nombre?
-
Leonardo Garberoglio

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Consulta general, fft en m4f vs a9
« Respuesta #20 en: 15 de Junio de 2015, 16:07:52 »
es posible que se pueda, he incluso es posible que se pueda manejar la pantalla tambien con el ST (ya va mas justo), pero creo que todo es hablar por hablar por que dependera mucho de las librerias de punto fijo y punto flotante, lo mejor seria ponerlos a trabajar en paralelo haciendo una operacion de transformada de fourier por ejemplo y medir cuanto tarda cada uno, esa seria la mejor prueba.

un saludo


Lo de la pantalla lo pensamos, que tiren a la mierd... ese som y hacemos todo con un stm32f429 que tiene controladora de TFT con aceleracion... pero se agregaría a nuestro trabajo, que ya esta contratado  :5] aparte ya hay un grupo de gente con la pantalla y tengo entendido que ya se compraron varias pantallas... creo que ese som va si o si, es lo unico fijo creo yo...

sds!
-
Leonardo Garberoglio

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2901
Re: Consulta general, fft en m4f vs a9
« Respuesta #21 en: 15 de Junio de 2015, 16:31:11 »
Citar
Lo de la pantalla lo pensamos, que tiren a la mierd... ese som y hacemos todo con un stm32f429 que tiene controladora de TFT con aceleracion... pero se agregaría a nuestro trabajo, que ya esta contratado  redhot aparte ya hay un grupo de gente con la pantalla y tengo entendido que ya se compraron varias pantallas... creo que ese som va si o si, es lo unico fijo creo yo...

sds!

bah normal, como mi anterior jefe, se ponia a comprar cosas y luego hay que utilizarlas si o si, de todas formas mejor para vosotros, ya que hacer la parte grafica sin OS es complicado.

un saludo
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8136
Re: Consulta general, fft en m4f vs a9
« Respuesta #22 en: 15 de Junio de 2015, 16:33:58 »
Me llamo Fabian, pero como no soy muy bueno recordando nombres es complicado que los llame nuevamente por los suyos xD

El piso de ruido es fijo... esto por multiples factores siempre hay un valor de piso de ruido. Pero me imagino que la señal estara al menos unos cuantos dBs encima del mismo, para eliminar el ruido por ser de naturaleza aleatoria imagino que buscan hacer un promediado de esas 100 muestras (Creo que por eso lo hacen). Y utilizando un esquema bastante simple seria:

Antialiasing filter - ADC(analog front end)   ------- Filtro pasa bajos abrupto (+ diezmado? para la reduccion de ruido mediante sobremuestreo y el FPB anterior) - Promediado de las 100 muestras(Moving/Running Average puede o no ser necesario con el anterior filtro) - Filtro pasa banda(para detectar la señal no necesariamente abrupta pero como para que se pueda eliminar cualquier otro eco en otra frecuencia) - FFT(Windowed tal ves para amplitud o frecuencia si es desado mostrarlo en el dominio de la frecuencia)

Aunque segun mi amigo Alan V.Oppenheim el sistema de promediado movil es un filtro pasa bajo pero no abrupto. (Por eso dije que funcionaria como para eliminar el ruido)
Lei que el utilizar un sobremuestreo y luego aparte de un filtro utilizar un diezmado, es decir disminuir la frecuencia de muestreo en nuestro sistema digital es bueno, para eliminar el ruido y errores de cuantificacion, ademas uno trabaja mas cerca de la frecuencia de Nyquist y eso implica menos operaciones.  Y menos te molesta ya que no tenes que recrear la señal sino mostrar su FFT imagino, ademas de eso tal ves solo te interese la parte real y no la imaginaria de la FFT lo cual te ahorra un poco de ciclos mas.

PD: El analog front end que paso elgarbe dice 16kSPS o maximo 32kSPS asi que estamos aun con menos samples que antes xD
Lo cual da una curva de -dB en 4/8Khz asi que espero que sus señales esten dentro de ese rango, aunque no se si son 32kSPS por canal o para todos.

PD2:
Otros posibles problemas
http://home.mit.bme.hu/~bako/zaozeng/chapter4.htm
« Última modificación: 15 de Junio de 2015, 16:58:27 por KILLERJC »

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Consulta general, fft en m4f vs a9
« Respuesta #23 en: 15 de Junio de 2015, 18:28:06 »
El piso de ruido es fijo... esto por multiples factores siempre hay un valor de piso de ruido. Pero me imagino que la señal estara al menos unos cuantos dBs encima del mismo, para eliminar el ruido por ser de naturaleza aleatoria imagino que buscan hacer un promediado de esas 100 muestras (Creo que por eso lo hacen). Y utilizando un esquema bastante simple seria:

Fabián, lamentablemente para nosotros la señal a buscar no esta por encima del ruido. O por lo menos las especificaciones que tenemos hasta ahora es que la señal del eco es del mismo orden que la del "ruido" ue hay en el oido. El secreto, tengo entendido que es que uno sabe en que rango acotado de frecuencia debe estar la señal del eco. Entonces aunque no sobresalga por encima del ruido en amplitud, hay tecnicas para buscar dicha señal. La verdad que aun no hemos entrado en ese detalle y cuando me dijeron que la señal era comparable al ruido pense que no se podía "filtrar", de echo, aun no sé como se realiza. En esta semana seguro estaremos avanzando sobre esta parte y ya les comentaré.

En cuanto al EEG la cosa es un poco más fácil ya que los potenciales, si bien son del orden de los nV se distinguen del resto de los biopotenciales. Aunque todo esto aún no esta estudiado/analizado por nosotros...

Lo de sobremuestreo y diezmado se aplica en codificacion PDM de audio, por ejemplo y creo que los ADC sigma delta usan la misma técnica.

El funcionamiento del estudio es enviar un producto de 2 frecuencias y esperar que el oido responda con un tono en otra frecuencia. Si ese tono está presente el oido funciona, sino, hay algún problema.
En el equipo comercial hay 2 barras de progreso gráficas. Una que representa el ruido y la otra ue representa la señal buscada. A medida que el estudio progresa, se puede ver como el la barrita del error va disminuyendo y la de la señal buscada aumenta. Cuando se alcanza cierto umbral se da por sentado que existe el eco. Si en medio del estudio toses, la barra de ruido se va al maximo y luego comienza a disminuir rapidamente... Creo que hay algo de correlacion entre señales para que aparezca la seal buscada, pero no estoy seguro...

Sds!
-
Leonardo Garberoglio

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8136
Re: Consulta general, fft en m4f vs a9
« Respuesta #24 en: 15 de Junio de 2015, 18:41:51 »
Ojo dije piso del ruido... no ruido. Tu piso de ruido esta limitado por todos los componentes asi como ruido termino, ruido cosmico, ruido atmosferico etc.
Por ejemplo el ruido termino a 10Khz es de −134 dBm.

Con respecto a la idea de lograr tener esa señal, tal ves se pueda filtrar a la frecuencia deseada y correlacionarla con la señal deseada, de esa forma medir el "parecido" para ver si se encuentra o no presente la señal sumado al ruido. Es lo unico que se me ocurre, como bien decis hay muchos mas filtros. O mirar su densidad espectral

http://www.mathworks.com/help/signal/ug/frequency-components-of-distorted-noisy-signal.html

O con auto correlacion para tratar de encontrar periodicidad.. es otra que se me ocurre .. xD bueno a esperar resultados y como lo implementan.

Citar
Fabián, lamentablemente para nosotros la señal a buscar no esta por encima del ruido. O por lo menos las especificaciones que tenemos hasta ahora es que la señal del eco es del mismo orden que la del "ruido" ue hay en el oido. El secreto, tengo entendido que es que uno sabe en que rango acotado de frecuencia debe estar la señal del eco. Entonces aunque no sobresalga por encima del ruido en amplitud, hay tecnicas para buscar dicha señal. La verdad que aun no hemos entrado en ese detalle y cuando me dijeron que la señal era comparable al ruido pense que no se podía "filtrar", de echo, aun no sé como se realiza. En esta semana seguro estaremos avanzando sobre esta parte y ya les comentaré.

Asi que bueno esperare que podes comentar sobre eso :)
« Última modificación: 15 de Junio de 2015, 18:52:39 por KILLERJC »

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2901
Re: Consulta general, fft en m4f vs a9
« Respuesta #25 en: 15 de Junio de 2015, 19:45:11 »
El problema de los sigma-delta es precisamente que son lentos, muy precisos pero lentos, por eso no se usan por ejemplo en analizadores de espectro u osciloscopios, si tuviéramos un pipeline se podrían meter cantidad de técnicas de computo para sacar toda una gama de frecuencia y encontrar la tuya muy claramente metiendo los filtros de paso de banda , y quitar todo lo demás tanto por arriba como por abajo. Pero claro un pipeline de esos de buena resolución cuesta por si solo mas que todo lo demás junto.

Sin lugar a dudas la parte mas dificil del proyecto sera la de adquision y procesamiento por el filtrado de la señal, un proyecto bonito si señor.

Un saludo
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5608
    • Picuino
Re: Consulta general, fft en m4f vs a9
« Respuesta #26 en: 16 de Junio de 2015, 03:32:38 »
Hola elgarbe.
Mira a ver si esto te sirve: http://www.holographyforum.org/data/pdf/aa-Collection_a_k/aa-Laser/aa-lockin/Homebrew_lockin_amplifier.html

Citar
it is possible to extract a target signal from a noise signal approximately 100,000 times larger

Saludos.

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Consulta general, fft en m4f vs a9
« Respuesta #27 en: 16 de Junio de 2015, 11:06:32 »
Citar
Lo de la pantalla lo pensamos, que tiren a la mierd... ese som y hacemos todo con un stm32f429 que tiene controladora de TFT con aceleracion... pero se agregaría a nuestro trabajo, que ya esta contratado  redhot aparte ya hay un grupo de gente con la pantalla y tengo entendido que ya se compraron varias pantallas... creo que ese som va si o si, es lo unico fijo creo yo...

sds!

bah normal, como mi anterior jefe, se ponia a comprar cosas y luego hay que utilizarlas si o si, de todas formas mejor para vosotros, ya que hacer la parte grafica sin OS es complicado.

un saludo

Si, en este caso no renegamos mucho con las decisiones del dueño del proyecto, ha tenido que tomar muchas de cisiones apresuradas debido al financiamiento del proyecto, pero es como bien dices, si alguien hace la parte gráfica es un alivio!

Sds
-
Leonardo Garberoglio

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Consulta general, fft en m4f vs a9
« Respuesta #28 en: 16 de Junio de 2015, 11:10:30 »
Hola elgarbe.
Mira a ver si esto te sirve: http://www.holographyforum.org/data/pdf/aa-Collection_a_k/aa-Laser/aa-lockin/Homebrew_lockin_amplifier.html

Citar
it is possible to extract a target signal from a noise signal approximately 100,000 times larger

Saludos.

Interesante, lo vamos a estudiar. No estoy seguro acerca del condicionamiento de conocer la fase de la señal, creó haber leído que el oido al responder al estímulo puede cambiar la fase... Pero es algo más a chequear.

Sds.
-
Leonardo Garberoglio

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8136
Re: Consulta general, fft en m4f vs a9
« Respuesta #29 en: 16 de Junio de 2015, 16:26:13 »
Por las dudas, agregando a lo de Picuino:

Implementing Digital Lock-In Amplifiers Using the dsPIC® DSC, AN1115
http://ww1.microchip.com/downloads/en/AppNotes/01115A.pdf

Me parece que no importa la fase en que se encuentre, por lo que veo es mas un demodulador como el que uno usa para las radios pero implementado de forma digital, lo que si luego tenes como salida la parte de real e imaginaria (I,Q)
La señal de referencia se calcula y se guarda en el micro.

Y supuestamente hay un codigo de ejemplo de la aplicacion misma que puede servirles como referencia.





 

anything