discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Discuss-gnuradio] [BBN_USRP2] Barker (de)spreading


From: Costantini, Andrea
Subject: [Discuss-gnuradio] [BBN_USRP2] Barker (de)spreading
Date: Thu, 14 May 2009 15:51:39 +0200
User-agent: Thunderbird 2.0.0.21 (X11/20090318)

Dear all (especially people working on BBN code with USRP2),

I know that some of you are working on simple_mac, higher modulation rates and so on.

From my side I decided to spend some more time in understanding why the bbn_802.11_tx.py doesn't work when trying to receive with real 802.11 chipsets in monitor mode (modified to disable the mac CRC check).

After some inspection of the code, I believe that this is due to the Barker implementation.

The code (bbn_firdes_barker.cc) does a convolution between an oversampled sinc function and the barker sequence (and takes by default exactly 8 samples). The IEEE 802.11b standard doesn't say anything about how the barker sequence should be applied. Therefore I don't understand why the sinc convolution is used in the original code. (This could be (?) originally related to the limits in bandwidth of the USRP1?)

Anyway the fft of the signal generated by the BBN code (with the -b option) has a spectrum completely different than the one generated by the 802.11 chipset (compared by using usrp2_fft.py).

I decided to re-implement the barker (de)spreading.
I wrote a Matlab program where I simulated a usrp2 transmission in terms of fpga rate, interpolation, timing, and so on. As opposed to the convolution of the original BBN code, I used simple rectangular windows to represent the Barker sequence.
I examined the spectrum of a train of these Barker sequences.
In order to obtain exactly 22 Mhz bandwidth, the usrp2 parameters must be set in this way:

- Samples per chip = 2;
- Interpolation = 4;

I did the following thoughts:
- With barker sequence in DSSS mode we need to transmit 11Mchip/s in order to obtain a real transmission at 1MSymbols/s (= 1Mbit/s in this particular case).
- 11Mchip/s means that we must transmit a single chip in about 91ns.
- The FPGA is able to process exactly 9 samples in this time interval (100Msample/s -> a sample every 10ns).

Now, if we consider that a barker sequence has to be transmitted in 1microsecond and the minimum interpolation is 4, we have to take 25 samples for each barker sequence in order to obtain EXACTLY 1Mbit/s.

For the sake of simplicity I have tried with 22 samples per barker sequence (2 samples per chip) and I obtained a spectrum very similar to the one received from the chipset.

I'm working on this right now. But I am still not able to receive frames on the real chipset.
Do you see any mistake in my reasoning?
Any suggestions/feedbacks/comments/critics/etc. :-) is very welcome.

Regards,
Andrea





reply via email to

[Prev in Thread] Current Thread [Next in Thread]