Hello all,
I am trying to understand the BBN code for 802.11b. I must state
upfront that I am not an expert in communication systems.
802.11b uses dBPSK and dQPSK modulations for its 1Mbps and 2Mbps rates.
I
explored how a dBPSK module looks like and I am able to make sense of
the
code in gnuradio-core/src/python/gnuradio/blks2impl/dbpsk.py. The
receiver
structure matches with what I have seen in communication textbooks.
However, the dBPSK demod receiver used in the BBN code
(gr-bbn/src/bbn/bbn_dpsk_demod_cb.cc) seems different from the technique
used in main gnuradio dbpsk module. This also does not include timing
and
carrier sync loops. Can someone explain what this code does and point me
to
any link/textbook which describes the demodulation technique?
Is there some documentation for the BBN code and references to the
text/paper for the mod/demod techniques used?
Thanks,
Sri
Hi Sri,
The time synchronization (i.e. bit timing) is done by the
bbn.slicer_cc
module. There is no real phase or frequency synchronization, because
the
demodulator uses a differential demodulation technique. I don’t have
any
text book reference, but the time synchronization basically passes the
channel filter though an energy detector and picks the sample offset
with
the highest average energy. As far as the mod/demod it is just
differential phase shift keying, however it includes a “scrambler”,
which
XORs the data with a pseudo-random sequence in order to avoid long
series
of modulated 1’s or 0’s. The code is complicated by the fact that all
data
(including the preamble) passes through the scrambler, and qpsk packets
all
start with some bpsk data, so the scrambler input needs to switch from
bpsk
to qpsk at a precise point in the packet bit stream. The
bbn_dqpsk_demod_cb.cc function simultaneously demodulates dbpsk and
dqpsk
and generates two output streams. The differential demodulation is done
using inner and outer products of the complex samples. (The current
sample
is projected onto the previous sample, and the current sample is
projected
onto a 90-degree rotated version of the previous sample.) A module
higher
up the chain feeds the scrambler with the appropriate demodulator output
stream (bpsk, or qpsk), depending of the context of the packet being
demodulated.
-Dan