If you trying to measure the impulse response of the channel, then
one technique would be to transmit a known pseudo-random bit sequence (an
m-sequence) using BPSK modulation at the carrier frequency of interest. The
chip rate of the sequence determines the measurement system bandwidth, while
the sequence length determines the 'dynamic range' of the measurement.
At the receiver set the LO to the same carrier frequency as that at the
transmitter. Here you need to cross-correlate the equivalent low-pass
received signal with the known m-sequence to give the (complex) impulse
response of the channel. Any 'peaks' that exceed your definition of a
threshold noise level would be your channel coefficients in the time domain.
This is actually implemented in gr-sounder.
The channel sounder transmitter is sending the PRNG modulated BPSK at
32 Mchips/sec. You need to do the correlation at this speed; it's not
possible to send that much data over the USB to the host.
A channel sounder in software would work for chip rates less than 4
Mchip/sec. But that limits the resolution of your impulse response to
about 250 ns per bin, or 75 meters per bin in the spatial domain.
Unfortunately, the cross-correlation done on the very limited space
FPGA has no frequency offset compensation, so the resulting impulse
response vectors "roll" in the time domain.
--
answer (c) by Johnathan Corgan