1 votos

¿Cuál podría ser el origen de esta distorsión de la onda sinusoidal, visible como líneas igualmente espaciadas en la FFT?

Tengo una MCU controlando un DAC de 16 bits vía SPI (y una salida LDAC adicional, que activa la actualización de la salida DAC). El MCU tiene una onda sinusoidal precalculada de 1120Hz en un buffer de 364 bytes (todos los cálculos en float32, redondeados a uint16 para la salida del DAC), muestreada a 29120Hz. En una interrupción del temporizador, la actualización del DAC se dispara a través de LDAC y luego se carga un nuevo valor desde el buffer y se envía a través de SPI. La actualización del último valor se dispara al principio para reducir el jitter debido a las carreras de acceso a la memoria contra el DMA. La interrupción tiene una prioridad suficientemente alta para no retrasarse.

A través de visualmente el seno se ve bien La FFT de mi Rigol DS1054Z detrás del DAC (antes del filtro de reconstrucción) muestra una distorsión significativa: Distorted signal spectrum behind DAC

El pico más alto es el requerido 1120Hz, los otros están igualmente espaciados por 260Hz. ¡¡El pico derecho parece estar sólo 5dB por debajo del principal!!

El jitter en el pin LDAC es del orden de +/- 0,25us, que yo consideraría aceptable frente a un tiempo de muestreo de 34,3us. El temporizador en sí se ejecuta desde el cristal MCUs y debe ser lo suficientemente estable.

¿Qué tipo de problema podría llevar a ese patrón de distorsión? ¿Cuáles podrían ser las formas de diagnosticarlo y reducirlo?

Por si acaso es relevante: el DAC es un AD5686, la referencia a escala completa es de 5V, la amplitud del seno es de 25mV lo que resulta en que aproximadamente los 10 bits inferiores están "conmutados".

1voto

Kolibris Puntos 57

He conectado un generador de señales de laboratorio a la entrada del osciloscopio para compararlo con la señal medida y, sorprendentemente, he visto exactamente el mismo espectro en su FFT. Subiendo la frecuencia, los subarmónicos desaparecieron a 1250 Hz. Cambiando la profundidad de la memoria en los ajustes de "Aquire" de Auto a 6K se eliminó el efecto. Parece que hay un problema de aliasing en la FFT del DS1054Z.

\===

EDITAR: Observando detenidamente la imagen, verá que se muestra una frecuencia de muestreo de 5kHz sobre la ventana FFT. Habría sido demasiado poco para muestrear la salida del DAC antes del filtro. Es sorprendente que siga pareciendo lo mismo si se le proporciona una señal limpia de 1120Hz, ya que sigue estando por debajo de la frecuencia niquista.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X