Read this article to learn how to do narrowband digital beamforming in software defined radio. In my opinion, it’s the next big thing for hams and shortwave listeners.
Consider two identical SDR receivers. Frequency translation to baseband is performed by a shared local oscillator. Both analog-to-digital converters share a sampling clock. But each is connected to a different antenna in slightly different locations.
As a result of the different antennas, each radio receives a slightly different signal, with different phase and amplitude, but the same frequency. As long as we are able synchronize how we process the data from each receiver, we have all the hardware and signals needed to apply Spatial Interference Filtering Techniques.
Essentially, our combined processing device obtains baseband IQ data from two coherent receivers tuned to the same frequency. By adjusting the amplitude and phase of the data in each channel, then adding together to form a single channel, we do digital beamforming.
As long as the antennas have reasonable spacing, adjusting the IQ data creates a directional receiving beam. We can adjust the data to boost or null signals from different directions. All this is done with math. All we are counting on is that different signals – desired or interference – have different locations and arrival characteristics.
We are breaking the rules of perfect digital beamforming. Our antennas may not be small non-directional elements. Their spacing may be too close or too far. And, on most city lots, the aperture of the “virtual beam” is probably too small, and would benefit from a few more elements.
But it’s a start and it will work. For a deeper dive into the theory and practice, watch this video about Beamforming in Software Defined Radio.
Narrowband Digital Beamforming Algorithms
Spatial filtering works by multiplying the baseband signals by a set of weights. The weights are complex numbers which contain an adjustment to amplitude and phase. The math creates the spatial filter when the two adjusted channels are added together. So, all we need is a spatial filtering processor in place between the data from the two receivers, and the final demodulation stage.
How do we come up with the weights to make this work? Several ways. First, we can just do it manually. This would involve two controls for each channel. One control adjusts the amplitude. The other shifts the phase back and forth. You would manually turn the dials until you hear noise reduction or signal improvement.
Taking this a step further, you can dedicate one of your channels to noise. You then have the digital equivalent of an ANC-4 or MFJ1026.
Beyond this, you can experiment with many different algorithms like LMS to automatically create the weights for your spatial filter. More on this later.