> On 18 Sep 2026, at 2:52 am, 'Alan Hopper' via Hermes-Lite <
herme...@googlegroups.com> wrote:
> When this project started my son was a sweet young 10ish year old
That’s a great story - good to hear effects of positive parenting :)
> if you create a square wave in code by the obvious on/off approach
This is a well-known problem with all software defined radios. Image-cancelling downconverters use two mixers driven by square waves in quadrature. The cancellation comes by phase-shifting one of the IF signals and adding or subtracting it to the other to get the band above or below the frequency of the first conversion oscillator.
That initial conversion also down-converts all the odd multiples of the target frequency. 3LO is only 9dB less sensitive than the fundamental. That’s a feature of any converter which uses square-wave drive to the mixers. You need to filter out everything from 3LO up to get a clean signal.
In a really broad coverage receiver (such as the WilySDR I have under design presently) you must have analog filters at least every octave, to filter out the 3LO, 5LO, etc, before they get to the down-converter.
The actual down-converter will fail to adequately cancel the image if the quadrature isn’t good, if the mixers aren’t balanced, if the RF and IF signals are phase shifted, if the pair of low-pass filters which follow the mixer aren’t well-matched in attenuation and phase, or if the addition/subtraction is inaccurate. Most of the advanced chips which integrate these kinds of converters integrate I/Q correction: calibrated mathematical operations which they apply to the digitised I/Q streams. In the ADRV9xxx family, they use a 200MHz ARM CPU to do that, and the ADRV9104 provides 928kB of user-programmable memory in that CPU (presumably the calibration code fits in the 70kB which makes it up to 1MB).
Clifford Heath.