Thanks for the advice all. It turns out the BladeRF is not transmitting properly in this case. I probably should have figured that out long ago. An equivalent flowgraph (for some reason my original did not work) performed as expected at lower sample rates with a USRP b205.
Follow up: It does not seem like GRC plots can keep up with incoming RX data without having overflows from the USRP. I imagine all I can do about this is save to a file and process (i.e. correlate and display) the data later? It seems odd that that was not a problem with the BladeRF that I was aware of.
Thanks,
Jonathan
On Wed, Feb 27, 2019 at 4:17 PM Qasim Chaudhari <qasim.chaudhari@gmail.com> wrote:
To clarify a confusion in my last email, by "until the point in signal processing chain where you decimate the signal down to the symbol rate", I meant the stage just before quantization; otherwise carrier recovery in BPSK still needs to work with complex samples at symbol rate.Cheers,QasimOn Thu, Feb 28, 2019 at 11:06 AM Qasim Chaudhari <qasim.chaudhari@gmail.com> wrote:Some pointer that might help you.- No, the samples are not completely real in BPSK until the point in signal processing chain where you decimate the signal down to the symbol rate. From what I understand your problem, and given that your purpose is to find the correlation peak instead of demodulating the data, you'd be dealing with both I and Q samples.- Be very careful with conjugation as they bring in both conjugation and reversal in the other domain (https://dsp.stackexchange.com/questions/23733/conjugation-in-fourier-transform). Furthermore, you're correlating it with a clean copy that is stored in your system so there is a usual discrimination between cross-correlation and auto-correlation, the latter being the operation in which conjugations remove the phase/frequency effects and not the former.- Regarding the Costas loop, I usually do not trust the acquisition range/acquisition time numbers from simulation to practice, as simulations are done at a certain SNR with only one imperfection present. Even if everything expected is simulated, the loop starting points cannot be carefully controlled due to the unknown incoming phase! In addition, acquisition is a highly non-linear operation which strongly depends on both the Rx SNR and the loop SNR as well as the shape of the channel frequency response. In this particular ranging application, I would rather tune the frequency of one USRP receiving a test signal (e.g., simple CW and employing a simple PLL) until I get the lock. Then in the next experiment, I would initiate my ranging procedure and track small changes from there. Also keep in mind that there is a finite acquisition time for the loop to settle which might comprise of your entire sequence to be correlated. At least it will certainly eat away some part of it.Finally, Marcus' suggestion of starting with the simplest case and seeing where your signal deviates from what you expect is probably the best way to move forward.Cheers,QasimOn Wed, Feb 27, 2019 at 6:58 PM Jonathan Preheim <jonathan.preheim@gmail.com> wrote:Hi all,Thanks for the responses. Ultimately, we won't be able to share a clock source directly, and I don't have the right cables right now to link them for troubleshooting. Even when I try to use the RF loopback modes though, I do not see a correlation peak. Firmware-based loopback works as expected. I've been trying to model a frequency offset with the Channel Model block, and compensate with the Costas loop block with a little success. But actually doing it on the radios does not work.The Costas loop handles frequency offsets up to 0.05 in simulations with an otherwise ideal channel. The chip rate is 1.25Mchip/s, so that's an offset of about 63kHz. The BladeRF's clock is 38.4MHz accurate to 1 ppm or 38.4Hz. Multiplied up to our carrier frequency of 910MHz, that's an expected accuracy of under 1kHz, so it's reasonable to expect that the Costas loop would take care of any offset right?Using the conjugate of the samples doesn't seem to make difference. That would make sense to me if I was trying to do the correlation as frequency domain multiplication by the conjugate, but I'm not (the FIR filter method has produced much more consistent results in simulations for us so far). Ideally, the samples would be completely real since it's BPSK, and we'd want to apply compensation in order to achieve roughly that, right?T'hanks,JonathanOn Tue, Feb 26, 2019 at 7:00 PM Qasim Chaudhari <qasim.chaudhari@gmail.com> wrote:_______________________________________________>Make sure both your radios are locked to the same clock source.
Any fsignificant requency offset between the two is going to ruin your
correlation peaks very quickly.
When the same clock source is not possible due to the distance between them, the carrier frequency offset can also be estimated and corrected at the initiating USRP and then the correlation can be applied. In this scenario, the quality of the result will depend on how good the CFO estimate is.Cheers,QasimMessage: 4
Date: Tue, 26 Feb 2019 10:07:51 +0100
From: Sylvain Munaut <246tnt@gmail.com>
To: Jonathan Preheim <jonathan.preheim@gmail.com>
Cc: GNURadio Discussion List <discuss-gnuradio@gnu.org>
Subject: Re: [Discuss-gnuradio] Distance Measurement by Correlation
Message-ID:
<CAHL+j0-D_THTOqoapb2N6VeLeR=BEkW9cyDHpt64=UO2tdWCvA@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"
> Any ideas about how we can troubleshoot this more effectively? Or better model the channel?
Make sure both your radios are locked to the same clock source.
Any fsignificant requency offset between the two is going to ruin your
correlation peaks very quickly.
Frequency offset is going to end up as a progressive phase shift along
your PN sequence. If that phase shift is a non-negligibe part of the
unit circle during the time of your PN sequence, they won't 'add up'
to a peak anymore.
Cheers,
Sylvain
------------------------------
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
No comments:
Post a Comment