1 This is a work-in-progress implementation of a m-sequence based channel
2 sounder for GNU Radio and the USRP.
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.
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.
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.
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.
31 To use, the following script is installed into $prefix/bin:
33 usage: usrp_sounder.py [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
44 -n SAMPLES, --samples=SAMPLES
45 number of samples to capture on receive, default is
47 -l, --loopback enable digital loopback, default is disabled
49 To use with an LFTX board, set the center frequency to 16M:
51 $ usrp_sounder.py -f 16M -t
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.)
59 Corgan Enterprises LLC
60 jcorgan@corganenterprises.com