Yes, sorry - two of them are actually connected via MIMO cable, with the master connected to the Octoclock. Then the other two are directly connected to the Octoclock. I used the MIMO cable just because I had it, but hopefully that's not changing the functionality.
Yes, I added even more attenuation because the Tx gain was already quite low. Thanks for the suggestion. On Tue, Jul 5, 2016 at 7:29 PM, Marcus D. Leech <mle...@ripnet.com> wrote: > On 07/05/2016 09:45 PM, Pavan Yedavalli wrote: > > According to the spectrum analyzer, there's nothing being transmitted in > the 900 MHz band around me, so that is actually fine. The biggest unknown > could be what you are saying about how they combine in the RSSI circuit > (which I'm not sure how it works). > > I am not gaining any more insight when using over-the-air antennas, so I > used 2 USRPs as transmitters and 2 as receivers, connected them directly > with SMA cables (and attenuation), and used Derek Kozel's B210_Phase_Viewer > on the receive side to see whether they were aligned after each run. And I > am noticing that they are not. The first run produced a 125 degree phase > offset, while the second one produced a 3 degree phase offset, and this > continues to fluctuate after each run (see attached). Note that I am using > the code that I pasted above to transmit. > > I must be doing something wrong with the code, or not wrapping the timed > commands around the correct code. I am not sure though. Thanks again. > > Looks like you have a bit of clipping as well. Back off the gain on the > TX side. > > > > > On Tue, Jul 5, 2016 at 5:51 PM, Marcus D. Leech <mle...@ripnet.com> wrote: > >> On 07/05/2016 08:20 PM, Pavan Yedavalli wrote: >> >> I see, but the offset in phase between the two radios will affect the >> amplitude, right? That was the assumption I was using, since it gives out >> an amplitude reading, but the phase clearly will affect that reading, I >> presumed. >> >> Unfortunately, I don't have any documentation on the RSSI circuit apart >> from the following description from the vendor: >> >> The RSSI functionality allows the sampling of the received signal to >> provide an indication of the amount of energy being harvested. When DSET is >> driven high the harvested DC power will be directed to an internal sense >> resistor, and the corresponding voltage will be provided to the DOUT pin. >> The voltage on the DOUT pin can be read after a 50μs settling time. RSSI >> shows the actual power level that is being received at the antenna. This >> number is accurate from 0.04mW to 50mW. >> >> This probably does not help at all to debug. Sorry about that. >> >> You're making assumptions about how your signals will combine in that >> RSSI circuit, and how they'll combine with other ambient signals within >> your frequency band. I cannot imagine that being stable. >> >> To measure the phase between two signals, you need a device that is phase >> sensitive (like, for example, another USRP with two inputs), and >> compute conjugate multiplication between them, or the phase-angle, via >> the complex-argument block. >> >> Or just plot the two signals on a Qt Time sync, and observe that the >> phase relationship is the same--that of course requires that your >> receiver system is internally coherent between the two channels. >> >> >> >> >> >> On Tue, Jul 5, 2016 at 4:42 PM, Marcus D. Leech <mle...@ripnet.com> >> wrote: >> >>> On 07/05/2016 07:28 PM, Pavan Yedavalli wrote: >>> >>> The way I'm doing it is the following (please correct me if there is a >>> fundamental error in assumptions): I am actually using an RSSI circuit that >>> is receiving the power from the USRPs/antennas, and I'm determining whether >>> the phase offset is the same based on that RSSI value. For example, I run >>> the flowgraph once, and I get an RSSI value on the other side of 2.5 mW, >>> but when I run the flowgraph again, it produces an RSSI value of 9.5 mW. In >>> my mind, if that offset was constant, then it would have produced something >>> around 2.5 mW again. I know this adds another variable to the mix, but I >>> have confirmed the accurate functioning of the RSSI circuit/receiver as >>> well as the static nature of the channel, so its reading is very reliable. >>> >>> Could you describe this RSSI circuit? Normally, they're only sensitive >>> to amplitude, not phase. >>> >>> >>> >>> >>> On Tue, Jul 5, 2016 at 4:19 PM, Marcus D. Leech <mle...@ripnet.com> >>> wrote: >>> >>>> On 07/05/2016 06:47 PM, Pavan Yedavalli wrote: >>>> >>>> Hi Marcus, >>>> >>>> Thanks for the background. That helps greatly. Having said that, I am >>>> unclear which commands specifically tune the radios, so I did the following >>>> around the frequency tuning (after all of the time source, gain, and >>>> antenna setting code): >>>> >>>> addr_string = "addr0=192.168.10.3,addr1=192.168.10.4" >>>> self.uhd_usrp_sink_0_0 = uhd.usrp_sink( >>>> ",".join((addr_string, "")), >>>> uhd.stream_args( >>>> cpu_format="fc32", >>>> channels=range(2), >>>> ), >>>> ) >>>> >>>> >>>> self.uhd_usrp_sink_0_0.set_clock_source("external", 0) >>>> self.uhd_usrp_sink_0_0.set_time_source("external", 0) >>>> self.uhd_usrp_sink_0_0.set_clock_source("mimo", 1) >>>> self.uhd_usrp_sink_0_0.set_time_source("mimo", 1) >>>> self.uhd_usrp_sink_0_0.set_samp_rate(samp_rate) >>>> self.uhd_usrp_sink_0_0.set_gain(31.5, 0) >>>> self.uhd_usrp_sink_0_0.set_gain(31.5, 1) >>>> self.uhd_usrp_sink_0_0.set_antenna("TX/RX", 0) >>>> self.uhd_usrp_sink_0_0.set_antenna("TX/RX", 1) >>>> self.analog_sig_source_x_0_1 = analog.sig_source_c(samp_rate, >>>> analog.GR_CONST_WAVE, 10000, 1, 0) >>>> self.analog_sig_source_x_0_0_0 = analog.sig_source_c(samp_rate, >>>> analog.GR_CONST_WAVE, 10000, 1, 0) >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> * self.uhd_usrp_sink_0_0.set_time_unknown_pps(uhd.time_spec()) >>>> now = self.uhd_usrp_sink_0_0.get_time_now() start_time = >>>> now + uhd.time_spec(.5) >>>> self.uhd_usrp_sink_0_0.set_command_time(start_time) >>>> self.uhd_usrp_sink_0_0.set_center_freq(915000000, 0) >>>> self.uhd_usrp_sink_0_0.set_center_freq(915000000, 1) >>>> self.uhd_usrp_sink_0_0.clear_command_time()* >>>> >>>> >>>> However, when running it, this does not appear to produce a constant >>>> offset either, but I'm not sure whether this is the correct code to wrap >>>> around. Please keep me posted. Thanks. >>>> >>>> On Tue, Jul 5, 2016 at 12:49 PM, <mle...@ripnet.com> wrote: >>>> >>>>> That is precisely what I'm saying, and precisely what timed-commands >>>>> for tuning were invented. On certain hardware, after the tune is >>>>> complete, >>>>> a phase-reset pulse is sent by the FPGA. The only way for THAT to have the >>>>> desired effect is to make sure that the phase-reset pulse happens at the >>>>> same instant. >>>>> >>>>> Modern synthesizers use a technique called fractional-N synthesis. >>>>> One of the side effects of this is that you can't predict where the LO >>>>> will >>>>> "lock" with respect to the reference clock. So, any two PLL synthesizers, >>>>> even when feed an identical reference clock, will not have the same phase >>>>> offset with respect to one another. It's the "physics" of fractional-N >>>>> PLL >>>>> synthesis. >>>>> >>>>> SO, if you're using GRC to generate you flows, you'll have to modify >>>>> the generated code, and wrap set_command_time()/clear_command_time() >>>>> around >>>>> the place in the code where it tunes the radios. >>>>> >>>>> Clearly, if this depends on TIME, then all radios involved need to >>>>> agree on the current time, to high precision, hence the related >>>>> requirement >>>>> for set_time_unknown_pps(), which uses the 1PPS signal to trigger loading >>>>> of the time-of-day clocks on each USRP in the multi_usrp object. >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> On 2016-07-05 15:41, Pavan Srikrishna Yedavalli wrote: >>>>> >>>>> I am using USRP N210 with SBX daughterboards. All devices are >>>>> connected to the octoclock ref and octoclock PPS. It would be nice to get >>>>> phase alignment, but mere coherence-with-an-offset is sufficient if that >>>>> offset stays constant across different runs of the file/flowgraph. Are you >>>>> saying that that offset cannot be constant due to the randomness of the LO >>>>> phase offset at each run? Thanks again. >>>>> >>>>> >>>>> _____________________________ >>>>> From: mle...@ripnet.com >>>>> Sent: Tuesday, July 5, 2016 12:35 PM >>>>> Subject: Re: [Discuss-gnuradio] random phase offset constantly >>>>> changing with octoclock setup >>>>> To: Pavan Yedavalli <psy2...@columbia.edu> >>>>> Cc: Discuss-gnuradio < >>>>> discuss-gnuradio-bounces+mleech=ripnet....@gnu.org>, GNURadio >>>>> Discussion List <discuss-gnuradio@gnu.org> >>>>> >>>>> >>>>> WHat specific hardware line-up do you have? >>>>> >>>>> You have to use set_time_unknown_pps(), but also, if you want phase >>>>> alignment (as opposed to mere coherence-with-an-offset), you need to use >>>>> timed tuning commands across your systems. This will result in zero >>>>> relative phase offset between boards, if you're using SBX or UBX (on the >>>>> X310). Note that this is phase between the boards, there's no way to make >>>>> certain the the LO phase has a predictable offset with respect to external >>>>> received signals, only that the two LO phases agree. >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> On 2016-07-05 15:26, Pavan Yedavalli wrote: >>>>> >>>>> Hi, >>>>> >>>>> Despite all of my boards being connected via the Octoclock (ref and >>>>> pps), I am constantly getting different phase offsets every time I run a >>>>> gnuradio flowgraph (or python file). >>>>> >>>>> I am not sure why this is happening, but I do know that I need to call >>>>> one of the functions, set_time_now() and/or set_time_unknown_pps(), to >>>>> make >>>>> sure all of them are synced. Which one am I supposed to call? I have been >>>>> calling set_time_unknown_pps(), but I am getting the above/below problem >>>>> with that, so maybe set_time_now() could be correct? >>>>> >>>>> In general, I don't understand why I continually get a different >>>>> random phase offset of all of the radios after every new flowgraph run. >>>>> Shouldn't this offset be the same if I continue to transmit at the same >>>>> frequency? Would one of the above functions fix that? >>>>> >>>>> Hopefully that is clear. Thank you so much for the help. >>>>> >>>>> -- >>>>> Pavan >>>>> >>>>> _______________________________________________ >>>>> Discuss-gnuradio mailing list >>>>> Discuss-gnuradio@gnu.org >>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio >>>>> >>>>> >>>>> >>>>> >>>> >>>> >>>> -- >>>> Pavan >>>> >>>> How are you measuring the phase-offset between the two sinks? >>>> >>>> >>>> >>> >>> >>> -- >>> Pavan >>> >>> >>> >> >> >> -- >> Pavan >> >> >> > > > -- > Pavan > > > -- Pavan
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio