The following screens are screens of the
continuation frequency-analysis program which created high-speed AD of Spectrum
by GPU-VSIPL considered as an input. (It has converted into motion GIF)
The input of AD performs continuation
inclusion by 14
bits/50 MHz, performs 1M point FFT to all the data, and is
performing the
all-points peak search of frequency.
Since the sweep of the square wave is made into the input signal, it can see that spurious appeared in the fixed multiple of the maximum and frequency has appeared by return.
CPU: Dell T5400 Xeon 2 Core/2 CPU
2.8GHz/2GByte Memory
OS: RedHawk 5.4 RealTime Linux
AD Card: Spectrum M2i.4031
CUDA GPU:NVIDIA Quadro FX3700/512MByte Memory
Sampling rate : 50.0 M Sample/sec
Frequency Band: 25.0 MHz
FFT Length: 1048576 Points
Hz/Bin: 47.6837 Hz
CycleTime: 25.3 msec.
Window: Blackman
Display Rate: 20.97ms
sp = (signed short int *)buffer;
Length = 1024 * 1024;
HarfSize = Length/2;
for(i=0;i<Length;i++)
{
ad[i]=(signed int)*sp++; /* Convert short to int */
}
vsip_blockadmit_i(blk_i, VSIP_TRUE); /* Admit blk_i after populating input user data array */
vsip_blockadmit_f(blk_o, VSIP_FALSE); /* Admit blk_o after populating input user data array */
vsip_vcopy_i_f(vec_i,rx_raw);
vsip_svmul_f (full_scale,rx_raw,rx); /* Scale A/D values by full-scale */
vsip_vmul_f (vec_w,rx_raw,rx_w); /* Apply Blackman window to input signal */
vsip_rcfftop_f(fft_obj,rx_w,Rx); /* Compute FFT of windowed input signal */
vsip_cvmag_f (Rx, vec_o); /* Compute magnitude of FFT to get spectral estimate */
vsip_blockrelease_i(blk_i, VSIP_FALSE); /* Admit blk_i after populating input user data array */
vsip_blockrelease_f(blk_o, VSIP_TRUE); /* Admit blk_o after populating input user data array */
peak_max_i=0;peak_max=0.0;
for(i=1;i<HarfSize;i++)
{
if ((out[i-1]<out[i])&&(out[i]>out[i+1])) // The conditions of a mountain
{
if (out[i]>peak_max)
{
peak_max_i =i;
peak_max=update_max(i,out[i]); // The maximum is registered.
}
}
}