Channel Sounding @ 5 GHz

Hi,

I was wondering if there’s a way to use the channel sounder (gr-sounder)
with the XCVR d’boards at 5 GHz. I gave it a try, but the channel
impulse responses only popped up ±1s and zeros. Well, I wasn’t
expecting it to work since the XCVR is not mentioned in the README, but
can it be tweaked?

Plus, does anyone have any experience with the sounder they’d share?
If so, there’s a couple of things I’d be interested to know:

  • What’s a sensible distance for getting useful results without any
    additional hardware?
  • Can I tune the amp/gain settings to increase my SNR without distorting
    the result?
  • Assume the channel’s stationary. In that case, every IR vector
    should contain the same data (up to some phase shift, probably). I’m
    figuring I could further increase the SNR by averaging
    (phase-correctly) over several IRs, right?

If anyone has any interesting stories on channel sounding with GR/USRP,
I’d be grateful for any info.

Cheers,
MB

I’m not an expert on the matter, but I suspect that the XCVR2450 board
requires some sort of command to select the 5GHz band, which would need
to
be implemented in the sounder’s FPGA code.
At a chip rate of 32MHz, you have a resolution of 3e8/32e6 meters. The
length of the PN sequence determines the maximum unambiguous distance at
which multipaths can be detected. So with a degree-12 sequence, you have
(2^12 - 1)*3e8 meters to work with. With long sequences, however, you
are
limited by the capabilities of the USRP. Depending on your DBoard, you
have
~20mW of output. Your antenna also makes a big difference. Especially if
you
want to do any work outside, I would use something like a log-periodic
antenna. If you can get your hands on an amplifier, you can
significantly
boost your range.
In my experience (with a sounder of my own design), averaging multiple
IR’s
appreciably reduces the noise.

While I’m at it, can anyone explain why a complex correlation vector is
coming out of the sounder FPGA? Doesn’t a mathematical correlation
return
real values?

Jordan

Correlation doesn’t always return real numbers, only if its the
correlation
of the same the PN sequence(including phase). The received signal could
have a phase shift, complex numbers are needed.

On Mon, Jul 13, 2009 at 08:48, Jordan J Riggs[email protected]
wrote:

I’m not an expert on the matter, but I suspect that the XCVR2450 board
requires some sort of command to select the 5GHz band, which would need to
be implemented in the sounder’s FPGA code.

Actually, in gr-sounder the host is used to tune the daughterboard, so
nothing different is needed for the XCVR2450.

At a chip rate of 32MHz, you have a resolution of 3e8/32e6 meters.

As the PN autocorrelation function is not a true delta, but
triangular, the effective resolution is about half this (twice the
distance). This is about 20 meters per bin; really only useful for
outdoor propagation studies.

The
length of the PN sequence determines the maximum unambiguous distance at
which multipaths can be detected. So with a degree-12 sequence, you have
(2^12 - 1)*3e8 meters to work with.

You’re missing the chip rate as a divisor in the above.

A full-length degree 12 code is 4095 chips, which at 32 Mcps, is about
12.8 us in length. The maximum measurable path delay then is about 38
km.

With long sequences, however, you are
limited by the capabilities of the USRP. Depending on your DBoard, you have
~20mW of output.

Yes. The SNR for each of the delay bins will decrease as the path
loss increases for each of the reflected signals, so you need to do
your transmitter power and receiver dynamic range calculations based
on the expected maximum path delay you wish to measure.

In my experience (with a sounder of my own design), averaging multiple IR’s
appreciably reduces the noise.

You can increase the SNR against uncorrelated noise by doing so. But
this is limited in practice (see below.)

While I’m at it, can anyone explain why a complex correlation vector is
coming out of the sounder FPGA? Doesn’t a mathematical correlation return
real values?

This is a correlation of a real reference PN code with a complex
baseband IQ signal, so the result is complex. This preserves the
phase of the delay bin. The received signal, in addition to
multipath, interference, and additive noise, will have frequency
offset, possible Doppler spread, and timing offset (the latter due to
the difference in sample frequency between TX and RX USRPs.) These
all result in a complex channel impulse response. If you are only
interested in the delay power, you can do I^2+Q^2 on the impulse
response vector.

Due to the fact that gr-sounder uses a simple O(N^2) serial correlator
without synchronization, the impulse response vectors are very
sensitive to timing offset between transmitter and receiver. This
results in the correlation peaks being separated by more or less than
the PN code length number of samples, and makes it difficult to
coherently add them to reduce noise. Using an external frequency
reference on both ends would make a dramatic difference.

I plan eventually (read: someday) to reimplement/republish gr-sounder
with synchronization (I have already done something similar for a
commercial customer), but it will be done on the USRP2.

Johnathan

Johnathan,

Thanks for the clarifications.
I’ve been using a Costas loop for synchronization, which more or less
eliminates the imaginary part of the correlation. Is this how you would
do
things?

Jordan

On Mon, Jul 13, 2009 at 10:58 AM, Johnathan C. <

On Mon, Jul 13, 2009 at 10:17, Jordan J Riggs[email protected]
wrote:

I’ve been using a Costas loop for synchronization, which more or less
eliminates the imaginary part of the correlation. Is this how you would do
things?

The Costas loop will compensate for carrier frequency/phase offset,
but will not compensate for timing offset. For the latter, you will
also need to implement a coarse and fine synchronization loop, using
something like an early/prompt/late correlator and NCO-based PN code
generator.

Johnathan

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs