|
From: | Brian Padalino |
Subject: | Re: [Discuss-gnuradio] ATSC Magic coupling constant |
Date: | Tue, 30 Jul 2013 18:19:06 -0400 |
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 sinfloat I = input * a_sin;float Q = input * a_cos;My code is:nco.sincos (&a_sin, &a_cos); // compute cos and singr_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.
[Prev in Thread] | Current Thread | [Next in Thread] |