[hpsdr] frequency-specific frequency domain AGC

Roger Rehr W3SZ w3sz73 at gmail.com
Fri Jul 14 20:59:58 PDT 2017


HI Glenn,

Thanks for the great answer and comments!!

I selected out the portions of your excellent email for which I have
what I hope are helpful/interesting responses below.

> I am concerned that if you apply AGC on a bin-by-bin basis (BBAGC?), you
> might generate the same problem as with fast-AGC CW. The BBAGC will
> raise the level of bins with little or no signal to the same level as
> bins with a usable signal, thus destroying SNR, unless you try to decode
> from no more than one bin at at time.  Is one bin (~10 Hz?) enough
> bandwidth to decode the signal of interest?

This is certainly a potential issue.  That is why I have a "knee" below
which the algorithm produces no change in signal level.  The amplitude
compression only is done for signals with amplitudes above this knee.
In my implementation at present, the user sets the level of this knee
although it could be automated.  If the knee is set incorrectly then
this raising of the noise floor that you describe definitely will occur.
 I have done this (set the knee way too low) on purpose and demonstrated
exactly what you describe. :)

For weak signal work on the VHF bands I long ago determined to my
satisfaction that with a sampling rate of 192 kHz, an FFTSize of 262144
gave me the best sensitivity for weak "single frequency" (CW/Digital)
signals.  That combination of sampling rate and FFTSize equates to a bin
width of roughly 0.73 Hz.  Off the air signals may occupy several bins,
and the amplitude of each bin will be handled individually in my simple
algorithm.  More complicated schemes for handling the compression of all
of the bins associated with a single JT "tone" are possible and I might
play with some of them in the future.

> 
> Perhaps a better approach would be to do the same thing as the
> audio-derived post-filter AGC for CW. Select the bins that contain the
> signal of interest and apply AGC to them as a group - ignoring the rest
> of the bins.

If you mean "avoid compressing the signals at the noise floor and
instead just compress signals above the noise floor that likely to be
real signals and not noise", this is what I do by setting the knee
amplitude and applying the compression only to signals with amplitude
above the knee amplitude, and with the coefficient for the exponential
specified in each instance so that all input signals with amplitudes
above the knee amplitude have post-compression amplitudes that are also
above the knee amplitude.  However, if one mis-specifies the knee
amplitude, then as noted above problems can arise.  If you mean "only
compress bins that fit with the specified characteristic of a given mode
based on the formal specification of that mode", I have more comment on
that below, but I note here that that is also a very interesting idea,
essentially adding AI to the AFGC.  In any event, I believe that we are
in agreement on this point and I designed my algorithm with this point
in mind in the first instance and I find considering the implementation
in the second instance very intriguing. :)

> 
> To the extent that the software can recognize the modulation scheme in
> use prior to selecting bandwidth and applying AGC, bin selection and AGC
> can be automatically chosen for all signals in the IF (or RF) passband
> for parallel demodulation.

If I am understanding properly, this overlaps somewhat with what is
immediately above.  I think you are saying, (for example): identify the
sync frequency for each JT65 signal;  one then knows by specification
each of the other frequencies that might be included in each of those
JT65 signals.  So for each JT65 signal one can then use the amplitude of
the sync tone (or any function that you want involving the amplitudes of
each of the 65 frequencies in that signal) to compress the signal level
ONLY of the bins representing those 65 frequencies associated with that
single JT65 signal.  Having done this for one JT65 signal, one would
then identify next the "next" sync tone in the bandwidth and repeat the
process, until all possible JT65 signals had been individually
identified and modified in this way.  One potential issue that comes to
mind with this approach is selective fading, where not all of the tone
frequencies for a given JT65 signal would necessarily experience the
same amount of propagation loss.  So the choice of the algorithm to be
applied to all of the tones in a given JT65 signal would be critical to
the success of this method.

Thanks again Glenn for a very interesting set of comments and suggestions!

73,

Roger
W3SZ

> 
> 73 de Glenn WB6W
> 


More information about the Hpsdr mailing list