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.