02-14-2020 03:36 AM
I'm implementing cross-correlator using FIR compiler IP core in vivado 2017.4. I use integer coefficients and integer input data (random sequence of 1,-1).
When testing project as simple fir filter it works fine, but when trying it as cross correlator at ouput i get very small correlation peak if comparing with theoretically received. Testing sequence consist of 32 bits and i send (using UDP) it to ZYNQ-Z1 using GNUradio. I attached results theoretically calculated (blue signal big peak) and calculated with FIR compiler (red signal peak near noise level). I tried to change lenght of sequence 64,128 etc but result doesnt change peak is very small. How can i get better results? I see posts on the forum that people uses FIR Compiler as cross correlator and it works. Maybe i missed some settings. Any ideas welcome
FIR compiler settings
filter options: Single rate, Integer coef
channel specification: Basic, input sampling freq 100 clock freq 100 MHz
implementation: coeff. type signed, integer coef. coef width 16, coeff. structure non-symmetric, input/output data type signed, width 32, rounding non-symmetric
detailed implementation systolic multiply accumulate, optimization area
02-26-2020 10:19 PM
Can you check the output with "full precision" (instead of truncated output).
May be fractional values are discarded due to rounding option.
02-26-2020 10:35 PM
Hi after some diggingi found my stupid mistake. The problem was in coeff. generation. GRC uses python 2.x and I generated filter coeff. with pythin 3.x using same code. But in differend python versions random number generator works differently and produces different results. Everything works fine now whne using same version of python for data and coef generaration.
Thanks for you help