Estoy utilizando Quartus 12.1 sp1, vhdl y Altera Nios II programados en código C para DE0-Nano Development. Básicamente, lo que tengo es que los datos se envían desde el bloque fpga vhdl al sistema NIos II, el sistema Nios II envía los datos al puerto serie, Matlab accede al puerto serie para trazar la gráfica en tiempo real.
En mi sistema, la velocidad de trazado del gráfico es mucho más lenta (11Hz) que la velocidad del procesador (50MHZ). Así que hago un poco de almacenamiento en búfer y envío los datos para su posterior trazado.
Estoy almacenando en búfer los datos recibidos de fpga vhdl, digamos 1000 puntos de muestra y los guardo en sdram ... después de guardar estos 1000 puntos de muestra, el código C enviará datos a uart para que Matlab pueda acceder a estos datos de puerto serie y trazar gráfico en tiempo real.
Por favor refiérase a esta imagen:
Mi problema es que un ciclo completo de onda sinusoidal obtenido de fpga es con una frecuencia de 50 Hz, por lo que debería tener un período de 0.02 segundos en lugar de 0.16 minutos, ya que ahora no sé cuál podría ser el ¿problema? Perdóname, soy un novato en el procesamiento de señales ... Gracias.
int max_sample = 1000; //number of sample points wanted
if (a_out_data==1) //check if it is the beginning of a sinusoidal waveform?
{
for(i=0;i<max_sample;i++)//start the process of buffering data
{
vref_data = IORD_ALTERA_AVALON_PIO_DATA(vref_base); //read a single value of reference voltage from fpga
*(pSDRAM+i) =vref_data; //save this single value in a location of SDRAM specified in SDRAM_U1_BASE
}
}
for(i2=0;i2<i;i2++) //start the process of sending data to uart for all data saved previously
{
data16=*(pSDRAM+i2); //access each value from SDRAM
//send data to uart before increment i++
}