Hello all,

I'm working on fixing up gr-atsc and I have been working on a little
problem for a while now, there is a constant ( FPLL_BTLOOP_COUPLING_CONST )
that sets the reference for an AGC, the value is ( 2.5 * 3.125 ) and is
literally defined as "Magic", so it seems to be a value that "just works".
With that value the AGC filters the real input and then this is multiplied
by a NCO part of a PLL. This puts the value of the +/- 5 timing sync levels
at about +/- 5. The problem is when I pass samples though the AGC and then
do 'complex' multiplication on them the +/- 5 values end up at about +/- 7.
I'm not sure why but it seems like the values coming out of the complex
multiply are not the same as the real multiply. The original code is:

nco.sincos (&a_sin, &a_cos);  // compute cos and sin
float I = input * a_sin;
float Q = input * a_cos;

My code is:

nco.sincos (&a_sin, &a_cos); // compute cos and sin
gr_complex result = (gr_complex(input_real, input_imag) * gr_complex(a_cos,
a_sin));
float I = result.real();
float Q = result.imag();

I is larger in my version and so the equalizer and slicer fail downstream.
I built a coherent AGC into the sync timing loop but it still fails with
large gain differences.

My question is whether there is anyone around who worked on gr-atsc who
could give me a hint as to how the "Magic coupling constant" was derived in
the first place so I can build a new one so I don't have to rebuild the
equilizer.

Thank you
Andrew Davis
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to