diff options
Diffstat (limited to 'gr-sounder/README')
-rw-r--r-- | gr-sounder/README | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/gr-sounder/README b/gr-sounder/README deleted file mode 100644 index 3c5df21d4..000000000 --- a/gr-sounder/README +++ /dev/null @@ -1,91 +0,0 @@ -This is a work-in-progress implementation of a m-sequence based channel -sounder for GNU Radio and the USRP. - -In typical use, the user would run the sounder as a transmitter on one -USRP, and a receiver on another at a different location. The receiver -will determine the impulse response of the RF channel in between. - -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 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 is designed to work only with the board in side A. The -receiver may be in side A or side B. The boards may be standalone LFTX/LFRXs -or RFX daughterboards. - -To use, the following script is installed into $prefix/bin: - -Usage: usrp_sounder.py [options] - -Options: - -h, --help show this help message and exit - -R RX_SUBDEV_SPEC, --rx-subdev-spec=RX_SUBDEV_SPEC - select USRP Rx side A or B - -f FREQ, --frequency=FREQ - set frequency to FREQ in Hz, default is 0.0 - -d DEGREE, --degree=DEGREE - set sounding sequence degree (2-12), default is 12, - -t, --transmit enable sounding transmitter - -r, --receive enable sounding receiver - -l, --loopback enable digital loopback, default is disabled - -v, --verbose enable verbose output, default is disabled - -D, --debug enable debugging output, default is disabled - -F FILENAME, --filename=FILENAME - log received impulse responses to file - -To use with an LFTX board, set the center frequency to 16M: - -$ usrp_sounder.py -f 16M -t - -The sounder receiver command line is: - -$ usrp_sounder.py -f 16M -r -F output.dat - -You can vary the m-sequence degree between 2 and 12, which will create -sequence lengths between 3 and 4095 (128 us). This will affect -how frequently the receiver can calculate impulse response vectors. - -The correlator uses an O(N^2) algorithm, by using an entire PN period -of the received signal to correlate at each lag value. Thus, using a -degree 12 PN code of length 4095, it takes 4095*4095/32e6 seconds to -calculate a single impulse response vector, about a half a second. One -can reduce this time by a factor of 4 for each decrement in PN code -degree, but this also reduces the inherent processing gain by 6 dB as -well. - -The impulse response vectors are written to a file in complex float -format, and consist of the actual impulse response with a noise floor -dependent on the PN code degree in use. - -There is a loopback test mode that causes the sounding waveform to be -routed back to the receiver inside the USRP: - -$ usrp_sounder.py -r -t -l -F output.dat - -The resulting impulse response will be a spike followed by a near zero -value for the rest of the period. - -Synchronization at the receiver is not yet implemented, so the actual -impulse response may be time shifted an arbitrary value within the the -impulse response vector. If one assumes the first to arrive signal is -the strongest, then one can circularly rotate the vector until the peak -is at time zero. - -Johnathan Corgan -Corgan Enterprises LLC -jcorgan@corganenterprises.com -5/28/07 |