Merged r5033:5116 from developer branch jcorgan/snd, with minor edits. Trunk passes...
[debian/gnuradio] / gr-sounder / README
1 This is a work-in-progress implementation of a m-sequence based channel 
2 sounder for GNU Radio and the USRP.
3
4 At present, only the transmitter is implemented. When completed, you
5 will be able to place the sounder transmitter at one location, the
6 sounder receiver at another location, then determine in real-time the
7 channel impulse and frequency response between them.
8
9 The sounder uses a custom FPGA bitstream that is able to generate and
10 receive a sounder waveform across a full 32 MHz wide swath of RF spectrum;
11 the waveform generation and impulse response processing occur in logic in
12 the USRP FPGA and not in the host PC.  This avoids the USB throughput 
13 bottleneck entirely.  Unfortunately, there is still roll-off in the AD9862
14 digital up-converter interpolation filter that impacts the outer 20% of
15 bandwidth, but this can be compensated for by measuring and subtracting
16 out this response during calibration.
17
18 The sounder is based on sending a maximal-length PN code modulated as BPSK
19 with the supplied center frequency, with a chip-rate of 32 MHz. The
20 receiver (partially implemented at this time but not working yet) correlates
21 the received signal across all phases of the PN code and outputs an impulse
22 response vector.  As auto-correlation of an m-sequence is near zero for
23 any relative phase shift, the actual measured energy at a particular
24 phase shift is related to the impulse response for that time delay.  This
25 is the same principle used in spread-spectrum RAKE receivers such as are
26 used with GPS and CDMA.
27
28 The transmitter and receiver are designed to work only with the board in
29 side A.  This may be a standalone LFTX/LFRX or an RFX daughterboard.
30
31 To use, the following script is installed into $prefix/bin:
32
33 usage: usrp_sounder.py [options]
34
35 options:
36   -h, --help            show this help message and exit
37   -f FREQ, --frequency=FREQ
38                         set frequency to FREQ in Hz, default is 0.0
39   -t, --transmit        enable sounding transmitter
40   -r, --receive         enable sounding receiver
41   -d DEGREE, --degree=DEGREE
42                         set souding sequence degree (len=2^degree-1), default
43                         is 16
44   -n SAMPLES, --samples=SAMPLES
45                         number of samples to capture on receive, default is
46                         infinite
47   -l, --loopback        enable digital loopback, default is disabled
48
49 To use with an LFTX board, set the center frequency to 16M:
50
51 $ usrp_sounder.py -f 16M -t
52
53 You can vary the m-sequence degree between 1 and 16, which will create
54 sequence lengths between 1 (DC) and 65535 (1.023 us).  This will affect
55 how frequently the receiver can calculate impulse response vectors (to be
56 documented as the receiver is completed.)
57
58 Johnathan Corgan
59 Corgan Enterprises LLC
60 jcorgan@corganenterprises.com
61 4/25/07