Envío Gratis en compras mínimas de $1200 mxn Enviamos a toda la Republica Mexicana
Buscar

Aplicación 1 con SADE en C#. DAC como Generador de Funciones

 

En ésta aplicación se explicará como utilizar el DAC como generador de funciones.

 

Agregamos 5 botones a nuestra aplicación que al presionarlos generarán la función indicada, en las propiedades de cada uno cambiamos el texto que se mostrará en el botón.

 

 

También agregamos un textBox para introducir la frecuencia (en Hertz) de la señal a generar.

 

 

Damos doble click al botón Senoidal para generar un evento e introducir el siguiente código:

 

private void butto1:Click(object sender, EventArgs e)
{
  int Frecuencia = Convert.ToInt32(textBox1.Text);     //Obtenemos el dato del textBox y lo convertimos a entero.
  ms.Generador_funciones(ms.Onda_Senoidal,Frecuencia); //Generamos la señal
}

 

El método Generador_Funciones() configura el DAC y genera la señal a la frecuencia que nosotros le indiquemos.

Hacemos lo mismo para los botones Cuadrada, Triangular D. Sierra.

 

private void button2_Click(object sender, EventArgs e)
{
   int Frecuencia = Convert.ToInt32(textbox1.Text);      //Obtenemos el dato del textBox y lo convertimos a entero.
   ms.Generador_Funciones(ms.Onda_Cuadrada, Frecuencia); //Generamos la señal cuadrada.
}

private void button2_Click(object sender, EventArgs e)
{
   int Frecuencia = Convert.ToInt32(textbox1.Text);        //Obtenemos el dato del textBox y lo convertimos a entero.
   ms.Generador_Funciones(ms.Onda_Triangular, Frecuencia); //Generamos la señal Triangular.
}

private void button2_Click(object sender, EventArgs e)
{
   int Frecuencia = Convert.ToInt32(textbox1.Text);     //Obtenemos el dato del textBox y lo convertimos a entero.
   ms.Generador_Funciones(ms.Onda_DienteSierra, Frecuencia); //Generamos la señal DienteSierra.
}

 

Para el botón Función vamos a generar nosotros una señal a partir de una ecuación para generar las muestras, tal y como se muestra en el siguiente código:

 

private void button6_Click(object sender, EventArgs e)
{
   double Muestra = 0;                              //Variable que guardará el valor de la muestra y es de tipo double.
   int Frecuencia = Convert.ToInt32(textBox1.Text); //Obtenemos el dato del textBox y lo convertimos a entero.
   ms.IniFuncion(Frecuencia);                       //Inicializamos el DAC para indicarle que el usuario será el que generará una funcion.

   for(int i = 0; i < ms.Calcular_Muestras(Frecuencia); i++)
   {
      int fs = ms.Calcular_Fs(Frecuencia); //Calculamos la frecuencia de muestreo.
      //Generamos el valor de la muestra
      Muestra = 0.8*(1.76 + (Math.Sin((4 * Math.PI * Frecuencia * i) / fs)) + Math.Cos((2 * Math.PI * Frecuencia * i) / fs));
      msMandarMuestras(Muestra);          //Mandamos la muestra generada.
   }
}

 

 

Hay que tener cuidado cuando se vaya a generar una función o señal a partir de sus muestras ya que hay que tener en cuenta lo siguiente:

  1. Saber la frecuencia de la señal a generar ya que de eso depende le número de muestras que se van a enviar, es por eso que se utiliza el método Calcular_Muestras(). En caso de no enviar el número correcto de muestras la máquina de estados que está operando en la FPGA se desincronizará y generará problemas para utilizar los otros recursos de SADE.
  2. El valor de la muestra deberá estar dentro del rango de 0 a 3.3.
  3. No colocar los métodos IniFuncion() MandarMuestra() ni ninguno de los otros métodos referentes al generador de señales dentro de un bucle infinito.

 

Por último ejecutamos nuestra aplicación presionando el botón Start.

 

¡Gracias por su interés en SADE!

Cualquier duda o información pueden contactarnos en: [email protected]