[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Discuss-gnuradio] Re: USRP IQ channels flipping during packet transmiss
[Discuss-gnuradio] Re: USRP IQ channels flipping during packet transmission
Tue, 24 Jul 2007 17:29:57 -0500
After some major debugging, I have found a fix for this problem. To
summarize the problem again: the transmitter seems to flip the IQ
channels at random during packet transmissions, even though I do not
make any changes to mux settings or other USRP settings. In order to
fix this bug, I had to modify the write method inside usrp_basic_tx.
The following has solved the problem:
usrp_basic_tx::write (const void *buf, int len, bool *underrun)
* Hydra Patch:
* Disable transmitter before writing data to USB buffer
bool enable = disable_tx();
/* ...... original code for usrp_basic_tx::write ...... */
* Hydra Patch:
* Enable transmitter after writing data to USB buffer
Somehow, by disabling and re-enabling the transmitter around the write
operation, I was able to prevent the transmitter from randomly
flipping the IQ channels. Please let me know if you would like me to
elaborate further on this bug or the fix.
On 7/21/07, Ketan Mandke <address@hidden> wrote:
Thanks for your quick response. In regards to your comments:
> Are you running one of our standard fpga images, or are you using one that
you have modified?
Yes. I am using the standard FPGA code distributed with GNU Radio (version
3.0.3 - the latest stable release). I did not write my own verilog code.
> It's seriously unlikely that the contents of the mux register is getting
I am also skeptical that the mux register is randomly changing. However, I am
very certain that the transmitter is flipping the IQ channels. I have verified
that this is definitely happening at the transmitter. In the single antenna
transmitter, setting the mux value to (0x0098) prior to sending a packet seemed
to solve this problem, but not in the 2-antenna case. Perhaps some details
about my USRP setup and the nature of the bug that I'm observing might help in
understanding this problem.
Below is a boiled down list of method calls which describe how I've set up the
transmitter chain in our transceiver:
self.u = usrp.sink_c()
self.subdev1 = usrp.selected_subdev (self.u, (0,0) )
self.subdev2 = usrp.selected_subdev (self.u, (1,0) )
In our experiments we transmit packets, encoded using our MIMO physical layer,
across the USRP (after appropriate padding). I've observed that after some
random number of consecutive packets, I receive a packet whose I-Q channels
have been flipped. It took a considerable amount of effort to diagnose and
verify that this was the problem, but I am very certain now that this is what
is happening at the transmitter. I hope that this might shed some more light on
the problem and help in finding a solution.
On 7/20/07, Eric Blossom <address@hidden> wrote:
> On Fri, Jul 20, 2007 at 05:02:55PM -0500, Ketan Mandke wrote:
> > I have been experiencing a weird bug when transmitting packets using the
> > USRP. I am part of the Hydra group at UT (hydra.ece.utexas.edu). We have
> > been developing a multiple antenna system using the USRP. It seems to work
> > quite well except for the following bug:
> > Since we're using two transmit chains, I set the mux value in usrp.sink_c to
> > 0xBA98. I have noticed however, that at random the transmitter will flip the
> > IQ channels of the transmitter. I have verified that this occurs by
> > analyzing the trace of the received signal. I noticed that this same bug
> > seems to occur when using a single antenna system as well (there I set the
> > mux value to 0x0098). In the single antenna case I can just reset the mux
> > value to 0x0098 everytime I send a packet in order to alleviate the problem.
> > This same approach does not work in the two-antenna case.
> > Any thoughts on why the mux value in the transmitter might be changing or
> > why the IQ channels might get flipped? Please note that I have already
> > verified that the EXACT same waveform is being sent to the usrp everytime I
> > transmit a packet; hence, I am certain that the bug is not being caused in
> > software.
> > I am currently using a multiple antenna system, so I set the usrp.sink_c mux
> > value to 0xBA98. This should enable the USRP to support to transmit RF
> > chains, right?
> > --
> > Ketan Mandke
> Are you running one of our standard fpga images, or are you using one
> that you have modified? That is, are you writing verilog code?
> If you are compiling your own verilog, are all timing constraints
> being met? Did you start with our project file?
> It's seriously unlikely that the contents of the mux register is
> getting randomly disturbed.