¿Cómo puedo implementar Chirp Signal usando C? [cerrado]

-2

Me gustaría implementar la señal Chirp usando el código C

¿Tienes alguna idea de cómo puedo hacerlo?

Editar

El objetivo es enviar esta señal a un componente DAC (µC interno o periférico externo). Pero necesito una frecuencia de muestreo rápida como 10 Msmples o 20 Msmples. No se proporciona FPGA, cualquier otro µC es posible

    
pregunta user3213767

3 respuestas

4

Esta referencia tiene una función Chirp simple. Llámelo con los parámetros y la hora y devuelve el valor de la señal en ese momento. Las w1, w2 son frecuencias angulares, por lo que \ $ 2 \ pi f_1 \ $, \ $ 2 \ pi f_2 \ $, M es la duración del chirrido, A es la amplitud máxima.

double Chirp(double w1, double w2, double A, double M, double time)
   {
   double res;
   res=A*cos(w1*time+(w2-w1)*time*time/(2*M));
   return res;
   }

Editar: con 10-20MSps es probable que esté buscando hardware dedicado, como un DDS que admita una función de chirrido y que tenga tablas de activación internas. Es posible que pueda encontrar un procesador con una función DMA que permita que una tabla calculada previamente se envíe a un DAC, pero esa sería una función periférica.

    
respondido por el Spehro Pefhany
3

Haga que su periférico externo sea un chip DDS (síntesis digital directa). Este tipo de cosas está bien dentro de las capacidades de incluso un chip relativamente bajo como el Dispositivos analógicos AD5930 .

    
respondido por el Dave Tweed
2

Creo que el camino a seguir sería generar una tabla de búsqueda de escala entera de un ciclo de una onda sinusoidal en su frecuencia más baja, y luego un índice de módulo en ella con tamaños de paso crecientes, posiblemente lineales. las interpolaciones entre dos puntos si el uso del punto más cercano es demasiado aproximado.

Por último, dependiendo de la relación entre su tasa de salida y su frecuencia de onda más alta, puede considerar enviar esto a través de PWM de alta resolución con filtro de paso bajo en lugar de un DAC. Podría ser mucho más rápido.

    
respondido por el Scott Seidman

Lea otras preguntas en las etiquetas