Hi Nicholas, I think I understand the concept much better now. Thank you for the complete clarifications, really appreciate it!!!
Best, Varban On Tue, Mar 10, 2020 at 8:50 PM Linnenkamp, Nicholas < [email protected]> wrote: > V. > > > > I just want to point out that your original question indicated that you > thought you were doing something not normal for I/Q modulation. I’m > pointing out that this is something known in I/Q Modulation and something > everyone has to deal with. It is very normal. When communicating over the > link you would, estimate the clock drift, adjust, and then de-rotate your > transmitted signal after transmitting a known sequence. > > > > The clocks are just crystal oscillators which measure the frequency after > it is excited with energy. The frequency can vary for many reasons such as > impurities or temperature. This causes the clocks to drift in relation to > each other. We notionally set the clocks to 433Mhz (or some other > frequency) but they can be 433000000 +/- a few Hz which is what you are > seeing in the captures. The receiver clock is running slower/faster than > the transmitter clock. > > > > One of the ways to reduce this problem is to discipline to a GPS clock. > This makes the stability of your clock much higher but the clocks can still > drift, even if not as much before correction. > > > > A second way to remove the problem is to discipline the transmitter and > receiver use the same clock source. This will remove the problem but in > the real world, we are always faced with clock drift. > > > > Looking at the schematics for the B205mini > > https://www.ettus.com/all-products/usrp-b205mini-i/ > > > > It appears that there is a REF port which can accept a 10Mhz signal and > use that to discipline the SDRs. > > > > I don’t have a B205mini but it should be fairly straightforward. > > > > 1. Buy a clock source that sends out the *SAME* 10Mhz signal from > at least 2 ports. > > 2. Connect via SMA cables the REF port and the 10Mhz clock source. > > 3. Start the B205minis with a command line argument asking them to > use the external reference. > > 4. Profit. > > > > Alternately, you can ignore all the advice above and just do it > mathematically. This is essentially what you were doing when you plotted > the complex samples that you received. > > > > Real(Inphase) + Real(Quadrature) = Transmitted sine wave > > > > > > Thanks, > Nicholas > > > > *From:* Varban Metodiev > *Sent:* Monday, March 09, 2020 2:01 PM > *To:* Linnenkamp, Nicholas <[email protected]> > *Cc:* usrp-users <[email protected]> > *Subject:* Re: [EXTERNAL] [USRP-users] B205mini: Setting Q signal > component to zero distorts the I component > > > > Hi Nicholas, > > > > Thanks a lot for your explanations! I tried to increase the sampling rate > at the receiver - the sine changed itself again and I still have the same > amplitude differences (attached below). > > Another problem that I observed is that it works fine only at 433MHz. When > I tried to set 868MHz/915MHz it became even less readable. At 2.4GHz and > 5GHz it was looked like noise... > > > > So... > > Try a few different scenarios, (locked clock, unlocked clock, under > sampled, oversampled, etc.) and observe how it changes. > > ---> May you please tell me a bit more about those locked and unlocked > clocks? > > > > Thanks again, > > Varban > > > > > > On Mon, Mar 9, 2020 at 9:16 AM Linnenkamp, Nicholas < > [email protected]> wrote: > > V. > > > > I could be wrong… > > > > It appears that you are under sampling on the receive USRP. This is > probably due to the transmitter and the receiver not sharing the same clock > and the receiver is drifting (slower). You can have the two USRPs share > the same 10Mhz clock to remove this problem but it is present in every QAM > communication system. Distributed systems don’t have the benefit of common > clock even with GPS so it is something that everyone deals with eventually. > > > > This is a good picture of when you under sample and get aliasing. > > > > > https://dsp.stackexchange.com/questions/31899/how-do-you-simultaneously-undersample-and-oversample > > > > This is one of the best treatments of QAM signals that I have ever read. > > > > > https://mriquestions.com/uploads/3/4/5/7/34572113/quad_signals_tutorial-lyons.pdf > > > > The real part of the signal is getting shifted from the In Phase to the > Quadrature and back again over time. If you were to zero out the Q and > plot the I you would get this aliasing. If you were to zero out the I and > plot the Q, you would also get this aliasing. If you add them together, > the real parts make the whole sine wave. It just shifts, like water, back > and forth from the I and Q, periodically, directly proportional to the > under sampling. > > > > Try a few different scenarios, (locked clock, unlocked clock, under > sampled, oversampled, etc.) and observe how it changes. > > > > In QAM signals the first thing you need to do is estimate clock drift and > then de-rotate your signal. You do these things periodically so that you > can track and properly sample the incoming signal. > > > > Best of luck! > > > Thanks, > Nicholas > > > > > > *From:* USRP-users *On Behalf Of *Varban Metodiev via USRP-users > *Sent:* Monday, March 09, 2020 7:14 AM > *To:* usrp-users <[email protected]> > *Subject:* [EXTERNAL] [USRP-users] B205mini: Setting Q signal component > to zero distorts the I component > > > > Dear all, > > > > I have two B205mini devices. One of those is my transmitting side and the > other one is the receiver. Both are connected via a cable (and an > attenuator, of course). > > > > Here is what I execute on the receiver: > > *rx_samples_to_file --freq 433e6 --rate 2e6 --bw 1e6 --gain 0 --nsamps 0 > --spb 200* > > > > And on the transmitter: > > *tx_waveforms --rate 1e6 --freq 433e6 --ampl 0.6 --gain 70 --bw 1e6 > --wave-type SINE --wave-freq 10e3 --spb 100 --otw sc16* > > > > The results are being read in GNU Octave: > > *samples_file=fopen('/home/vmetodiev/Development/SDR/uhd/host/build/examples/usrp_samples.dat', > 'rb');* > *data=fread(samples_file, 'int16');* > > > > So... when both I/Q channels carry the sines that are generated by the > wave_table function, the results looks fine - attachment "iq.png". > > > > However, I need to work only with the I channel and force the Q to > *disappear*, that is why I added the following lines in the > *tx_waveforms.cpp* code to zero it: > > > > // Zero the Q component > > for (size_t n = 0; n < buff.size(); n++) { > > buff[n] = std::complex<float>( buff[n].real(), *0 *); > > } > > > > And the result is a strangely distorted I-component sine - attachment > "i_only.png". > > > > May you please advise if it is possible to avoid this, because I am doing > something a bit strange that is not related to the normal I/Q modulations? > > > > Thanks in advance, > > V. > > > > > > > > > > > >
_______________________________________________ USRP-users mailing list [email protected] http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
