[hpsdr] frequency-specific frequency domain AGC

Glenn Thomas glennt at gbis.com
Fri Jul 14 14:07:32 PDT 2017


Hi Roger,

I get way too pedantic sometimes...

FWIW, the issue you are describing was likely discovered the first time
a sharp audio filter was used for HF CW - possibly some time during
WW-II. In that analog regime, the simple fix was to derive the AGC from
the audio after the sharp filter. Since that kind of access to AGC is
not common in analog receivers, most sharp audio filters didn't work all
that well.

The earliest implementation of AGC derived from post-filter audio was in
the TenTec Argonaut-505 (the original, back in the 1970's), though I'd
be surprised if someone else didn't do it before that. I don't think it
became common until the SDR era. There's no particular reason for that,
other than the marketing departments of the Amateur equipment
manufacturers apparently did not understand CW very well, as evidenced
by the advice in many if not all instruction manuals to "use fast AGC
for CW" (thereby destroying SNR by making the inter-"dit" noise the same
level as the signal itself)

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?

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.

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.

73 de Glenn WB6W

On 7/14/2017 8:57 AM, Roger Rehr W3SZ wrote:
> ***** High Performance Software Defined Radio Discussion List *****
>
>
> Hi Helmut,
>
> Thanks for the note!  I am sorry that my original post was not clear on
> what I am doing.
>
> Also, I apologize for the horrible formatting of the code in my prior
> email!  I cut and pasted my code into that email directly from Visual
> Studio, and it looked fine on the email that I sent.  But obviously
> there were hidden characters that on my original email were "spaces" but
> which appeared as "A" with a caret above the A on the emails.  Had I
> known that this was going to happen I would have "pasted without
> formatting" instead of "pasting".
>
> The issue that I described in that prior post is potentially present on
> any frequency, and as I noted the issue is NOT one of RF overload or
> overload of the receive chain at any stage prior to the final audio
> stage.  The system gain chain is properly designed and implemented and
> there is no overload at any portion of the receive chain prior to the
> final audio / baseband stage.  And that stage ONLY overloads if AGC is
> disabled.
>
> The first part of the issue is that when audio AGC is removed, the audio
> channel cannot handle the range of signal strengths without the presence
> of AGC to compress the amplitude dimension.
>
> And the second part of the issue is that the problem with conventional
> AGC is that it is time domain, and acts across all frequencies in the
> baseband / audio spectrum.
>
> For anyone who has ever listened to any of the WSJT-X modes or looked at
> the waterfall display on one of the "digital" frequencies on any band,
> it should be clear that with any of the WSJT-X signals this
> across-the-spectrum action of time-domain AGC is a problem; what we want
> to do is to provide the amount of AGC necessary to prevent audio channel
> overload for each individual frequency in the baseband /audio spectrum
> without unnecessarily affecting other frequencies that will not cause
> overload.  In that way we can prevent the giant signals from overloading
> the final audio stage when we are trying to listen to a very weak signal
> buried in the noise and at the same time not suppress the very weak
> signals by also amplitude compressing them.
>
> I do this by applying such correction using the equations given in my
> first post for each individual FFT bin, adding this step between the
> filter convolution step and the reverse FFT step to return to the time
> domain.
>
> This may make it clearer:
>
> The "normal" receive chain in the SDR (simplified) is:
>
> |
> FFT
> |
> Filter (Convolution)
> |
> Reverse FFT
> |
> AGC
> |
> Demod
> |
> Audio Output
>
> with the frequency-specific frequency domain AGC (FAGC) that I have
> implemented and am now using primarily for digital signals, this chain
> is changed to:
>
> |
> FFT
> |
> Filter (Convolution)
> |
> FAGC
> |
> Reverse FFT
> |
> Demod
> |
> Audio Output
>
> While my band of interest happens to be 6 meters, which I operate using
> a transverter feeding my openHPSDR hardware, the use of a transverter
> and the specific RF frequencies involved are immaterial, except insofar
> as propagation characteristics and the background noise levels of the
> frequency in use affect the potential range of signal amplitudes to be
> dealt with.  The issue can occur on any frequency and in fact I used HF
> bands to test the effectiveness of the code as I was working on it, and
> am currently primarily using the code on HF because I haven't been able
> to get out to my remote site where my VHF gear is located.
>
> To focus on the presence or absence of a transverter or the
> characteristics of the RF hardware proximal to the openHPSDR IF radio
> would miss entirely the point of my initial communication which relates
> to inadequate dynamic range in the final stage of the receive chain
> occurring only when the AGC is disabled, and I know that you are not
> doing that Helmut, but that you are rather seeking additional "clinical"
> data about my particular operating conditions for your own edification.
> But I mention this here so that others less well versed in the elements
> of this discussion will not misinterpret the reasons for your question.
>
> Thanks again for a very interesting question Helmut, and for all that
> you do.
>
> Please note that I will be off the reflector for a few days after
> tonight.  Please do not mistake my absence for rudeness or a lack of
> interest in continuing this discussion at this time.  Rather,
> immediately after I sent my initial email to the list on this subject
> yesterday morning I went to say goodbye to my wife before heading out to
> lunch with some microwave buddies as I do every other Thursday, and at
> that time I discovered my wife to be lying on the floor having just
> suffered a disabling stroke (her first significant health problem of any
> kind).  Of course I went with her straight to the hospital and I spent
> the day there yesterday.  I suspect that I will be busy and preoccupied
> for some time dealing with her illness and disability and likely won't
> have the chance to check back in here or think about
> radio/SDR/programming issues for some days to weeks, depending upon how
> she does.  She has held our house and family together for more than 40
> years but it is now my turn to do so.  Please excuse my absence while I
> learn how to do that.  I am QRT for now.
>
> Very 73,
>
> Roger Rehr
> W3SZ
>
>

-- 
"i" before "e" except after "c", or when sounded as "a" as in neighbor and weigh.

This rule is “counterfeit”. General spelling rules “forfeit” generality. 
They are “foreign”, being not “either” or “neither”, possibly the result of some 
“leisure” activity of a “sovereign heir” who, lacking “height”, is studying, 
without “conscience, inefficient glacier science”. It’s not as nutritious 
as "protein". It's just plain old "weird"

Is this example “sufficient”?




More information about the Hpsdr mailing list