summaryrefslogtreecommitdiff
path: root/gr-sounder/README
blob: ef495f1e8ca9f4c8a3d8997c854d9bcfc162ece2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
This is a work-in-progress implementation of a m-sequence based channel 
sounder for GNU Radio and the USRP.

At present, only the transmitter is implemented. When completed, you
will be able to place the sounder transmitter at one location, the
sounder receiver at another location, then determine in real-time the
channel impulse and frequency response between them.

The sounder uses a custom FPGA bitstream that is able to generate and
receive a sounder waveform across a full 32 MHz wide swath of RF spectrum;
the waveform generation and impulse response processing occur in logic in
the USRP FPGA and not in the host PC.  This avoids the USB throughput 
bottleneck entirely.  Unfortunately, there is still roll-off in the AD9862
digital up-converter interpolation filter that impacts the outer 20% of
bandwidth, but this can be compensated for by measuring and subtracting
out this response during calibration.

The sounder is based on sending a maximal-length PN code modulated as BPSK
with the supplied center frequency, with a chip-rate of 32 MHz. The
receiver (partially implemented at this time but not working yet) correlates
the received signal across all phases of the PN code and outputs an impulse
response vector.  As auto-correlation of an m-sequence is near zero for
any relative phase shift, the actual measured energy at a particular
phase shift is related to the impulse response for that time delay.  This
is the same principle used in spread-spectrum RAKE receivers such as are
used with GPS and CDMA.

The transmitter and receiver are designed to work only with the board in
side A.  This may be a standalone LFTX/LFRX or an RFX daughterboard.

To use, the following script is installed into $prefix/bin:

usage: usrp_sounder.py [options]

options:
  -h, --help            show this help message and exit
  -f FREQ, --frequency=FREQ
                        set frequency to FREQ in Hz, default is 0.0
  -t, --transmit        enable sounding transmitter
  -r, --receive         enable sounding receiver
  -d DEGREE, --degree=DEGREE
                        set souding sequence degree (len=2^degree-1), default
                        is 16
  -n SAMPLES, --samples=SAMPLES
                        number of samples to capture on receive, default is
                        infinite
  -l, --loopback        enable digital loopback, default is disabled

To use with an LFTX board, set the center frequency to 16M:

$ usrp_sounder.py -f 16M -t

You can vary the m-sequence degree between 1 and 16, which will create
sequence lengths between 1 (DC) and 65535 (1.023 us).  This will affect
how frequently the receiver can calculate impulse response vectors (to be
documented as the receiver is completed.)

Johnathan Corgan
Corgan Enterprises LLC
jcorgan@corganenterprises.com
4/25/07