• If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • Buried in cloud files? We can help with Spring cleaning!

    Whether you use Dropbox, Drive, G-Suite, OneDrive, Gmail, Slack, Notion, or all of the above, Dokkio will organize your files for you. Try Dokkio (from the makers of PBworks) for free today.

  • Dokkio (from the makers of PBworks) was #2 on Product Hunt! Check out what people are saying by clicking here.


Central spike

Page history last edited by David-Taylor 9 years, 2 months ago

What is that Central Spike?


[In SDR#, you can try checking "Correct IQ" to remove the spike]


There are several components to that central spike.

First be aware that once the data gets out of the USB port into the SDRSharp software the -127.5 to 127.5 step range (or -128 to 127 depending on the A/D converter biases) is converted to floating point.  So in the discussion below I'll first take you through the manual method of balancing and then my description of how I'd balance at least some of it automatically.

The first and most obvious component, perhaps, is DC balance.  You can, with patience, adequate adjustment range, and adequate resolution digitally balance out the central spike by inserting artificial offset virtual voltages . You tweak the setting until the sharp spike at zero vanishes into the noise using a VERY fine grained FFT and a lot of patience.  You must balance both channels to get good results.  You must go from I to Q to I to Q iteratively until the best possible balance can be achieved or your patience runs out. This is important for both the central spike minimization and opposite side spurious reduction.

The second and not quite so obvious component is the precise amplitude rendition of the two A/D converters. They're not perfect and therein lies opposite side images, which I'll call OSI. (Not office of special investigations. That's a different milieu entirely.) If the two sides are not balanced then you cannot balance out the OSI.  The difference in amplitude is directly related to the OSI amplitude.

The third, related, component is the phase quadrature of the two sample streams.  If they are not pure quadrature then even if the amplitudes are identical the phase difference will prevent proper cancellation.  This is directly related to the so called phasing mode of SSB detection or generation. (Heathkit used this in their 6 meter SSB transmitter from aeons ago.  I still have mine, slightly doctored, of course.)

So the amplitude balance can be obtained by multiplying I or Q by 1 + d, d being a very small delta that runs to both plus and minus values.  And using a cheat and a property of the sine and cosine functions you can tweak the apparent phase of I and Q by injecting a VERY small amount of Q into I.  After all in the world of radian angles the sin of a tiny angle is equal to the angle.  This is only good at small angles equivalent to a couple degrees or less, but that's plenty for usual needs.  And the approximation is good enough the amplitude "precision" is not affected up to angles in at least the plus to minus 10 degrees range.

So this is another pair of pots or sliders on the screen. After the DC is balanced you set-up a reasonably strong but not limiting signal that shows the OSI.  Tune the VFO, but not the LO, to that OSI.  Then tweak amplitude and phase balance to null the image. This is another annoying iterative process, but with practice it goes relatively fast . There is a slight interaction of this adjustment with the DC balance adjustments.

All four adjustments need to be "just right" to completely eliminate the spike and the image . The spike can be automatically eliminated by using a very low pass filter on I and Q independently and nulling each one of the outputs.  There is a hazard with an automatic adjustment that you might be honestly zero beat with a real signal and find yourself nulling it out.  Move the LO slightly to make sure that's not the case.

The image nulling is a little more complex, but the approach I'd take is multiply the high side signal by the low side signal and use the correlation of the two as the driver to null the OSI.  Just make sure it is the OSI you are nulling. {^_-} I believe this is rather roughly what SDRSharp is doing.  I've not analysed the code. I will someday and I will then see if I guessed right.

When the signal is multiplied by the OSI the two are highly correlated.  So the long term average is non-zero.  That non-zero value is what you drive to zero to make it all null properly.  If there is no OSI present then the multiplication of signal and noise or noise and noise will average zero, they are not correlated.

As I say, this needs some clean-up. But hopefully it helps understanding.  The image nulling trigonometry is probably a subject for an appendix to this article.  I'm too lazy to do it now.  Other messages and paying work are pressing.

Joanne, W6MKU




Bob Kubichek notes:


I did find one application note that might be of interest to folks:



In addition to I/Q imbalance, 1/f noise, etc., they say that "self mixing" might also contribute to the spike . Is this part of the spike we're seeing?  Or is our spike pretty well explained by I/Q type issues you've discussed?


Joanne replies:


He has a good point depending very much on the form of the mixer.  Self mixing will tend to be significantly suppressed in a well constructed double balanced mixer.  In a single ended mixer no natural balancing takes place so it's going to appear as an additional significant noise term at zero frequency.  Since it is generated in the mixing process itself there is not much that can be done to suppress it other than build a better mixer.

Comments (0)

You don't have permission to comment on this page.