Application for using the 2 RX channels simultaneously

I don’t think so. AFAIK Sigma Delta ADCs have builtin low pass CIC filter that will make it impossible. But very interesting concept nonetheless.

Check https://www.crowdsupply.com/fairwaves/xtrx/updates/xtrx-overclocking-140-msps-receive-demo
The LPF seems to be very wide.

Well overclocking is different thing. Its digital filter. If you increase clock you also increase bandwidth of the LPF.

Well if I have a 100 MHz LPF in RX1 and another one in RX2 I guess I can observe a 100 MHz wide signal with 200 MSPS(100 MSPS per channel). That was the original Idea. (If they are 180 degrees apart.)

For what you’re suggesting, would the channels need to be consistently 180° apart anyway? Because currently with the lime, it’s a matter of sometimes randomly jumping to that, other times being 0° and other times -180°. Would that still work?

I honestly wouldn’t have any issue if it was consistently 180°, as long as it was consistently something.

This seems to me to be significant “topic drift” – perhaps it belongs in another thread?

2 Likes

So, powers-that-be, any plans to merge the PhaseAlignment updates into master?

@IgnasJ, do we know when this will be merged?

There is no planned date for merging PhaseAlignment into master.
However, master has been merged to PhaseAlignment recently, so it is basically master+phase alignment updates,

Does this in turn mean that we do not have a date for binary builds with PhaseAlignment fixes?

So, I would argue, correctly I think, that you cannot claim that your platform does MIMO unless you have phase coherence. I’ve ONLY been able to achieve that with the PhaseAlignment branch, so the code in this branch is NOT a “trivial obscure customer-special requirement.”

  1. As far as I see PhaseAlignment branch has already been merged into master almost month ago.
  2. I don’t agree, if you are able to simultaneously transmit (with 2 TX antennas) and receive (with 2 RX antennas), then the device is obviously MIMO-capable. Phase coherence is totally different subject and you cannot say that sdr is not MIMO-capable anymore only because channels are not aligned in terms of phase difference.

Can you briefly describe the alignment process? What needs to be done in order to align channels? It might be useful for custom firmware applications. Is the alignment process made in fpga/fx3cpu/limemcu? Is there need to access IQ samples to make the alignment?

I apologize. I knew that PhaseAlignment had pulled in Master a while ago, but I didn’t realize that it had subsequently been merged.

Without the PhaseAlignment code, I observed that there was an absence of ongoing phase-coherence, that is, there existed high-level mutual phase-noise that would preclude even MIMO apps (which don’t required static alignment, but DO required quality ongoing phase-coherence) from working correctly.

With the PhaseAlignment code, I was able to see mutual coherence between the two RX channels with very low offset. The offset part isn’t particularly important to me, but the ongoing mutual coherence (or, put another way, lack of ongoing mutual phase-noise) is very important to my applications. This is for interferometry. Dealing with an initial phase offset is pretty normal, but there’s no way to algorithmically “factor out” high mutual phase-noise, unless it has an easily-modeled profile.

So, I’m happy that PhaseAlignment was merged into Master, and I apologize for “looking in the wrong place”. And I agree that for MIMO apps, initial phase-offset is not that important.

Hi, I think this might come as a bit off topic, if so, I will move this question to a new thread.

I am currently using the PhaseAlignment branch but I am observing that, if I continuosly use the StartStream and StopStream functions, the phase sometimes suffers a 180º jump. The thing is that our code needs to operate some electronics and should stop the stream so no invalid samples are read. Is it possible to clear the contents of the stream buffer without calling Stop/Start again? Or is this an issue that can be solved by some other means? (By removing the random ±180º jump when stopping and starting again).

Kind regards,
Aridane

I have same question as @modimo. How can I get the phase aligned I/Q samples with SoapySDR or LMS API? Can I simply setup two RX streams and read buffers like @mleech’s limerec.py, or do I need some extra initialization or calibration steps to activate this feature?

@IgnasJ, could we provide some example code for this? Would be good to add to:

You don’t need to do any additional steps. Alignment is run automatically on stream start when 2 Rx channels are used.

2 Likes

Ah, good to know!

Thank you for the confirmation.