OFDM Benchmark Change Modulation

Hi all,

Recently I want to implement a OFDM based multi-rate system, and I am
using
benchmark_ofdm_tx/benchmark_ofdm_rx programs in ofdm directory. I know I
can
use unlock/lock mechnism to disconenct/connect the exising blocks to
change
modulation block, and it indeed works. However, I also notice that the
difference between all modulation, i.e. BPSK, QPSK, QAM16, QAM64, is
rotated_const paramter in gr.ofdm_mapper_bcv block. So I write a new
block
howto.ofdm_mapper_bcv which can change rotated_const (d_constellation
in
gr_ofdm_mapper_bcv.h/.cc) with a defined function call. But it does not
work. When I change BPSK to QPSK by altering rotated_const, I can
receive
nothing but TIMEOUT in QPSK demodulator. If I still use BPSK
demodulator, it
works in compromised performance with some packets failed to pass CRC
check.
Why does it happen, since I already change rotated_const? Is there any
misunderstanding on this ofdm benchmark program?

Furthermore, I also find that if I use QAM16, it seems that the packet
reception simuation is very bad, about 50% PRR or even lower. When
using QAM64, PRR~0%, almost all packets failed CRC check. I think if I
use
channel coding, the situation will be better. I am wondering how to add
channel coding block to existing architecture. Is there any possible
examples?

Any comments are welcomed! Thank you very much!

Regards,
-Lizhao

On Tue, Jan 4, 2011 at 8:49 AM, You L. [email protected]
wrote:

work. When I change BPSK to QPSK by altering rotated_const, I can receive
nothing but TIMEOUT in QPSK demodulator. If I still use BPSK demodulator, it
worksin compromised performance with some packets failed to pass CRC check.
Why does it happen, since I already change rotated_const? Is there any
misunderstanding on this ofdm benchmark program?

You shouldn’t have to stop and start the flow graph to change
modulations. Instead, add a function to gr_ofdm_mapper_bcv and
gr_ofdm_frame_sink that allows you to change the modulation
constellation.

As to why you may not be receiving anything, it’s because the OFDM
code is not very robust for different channel conditions, so you’re
physical setup and channel may not work well. At this point in the
code, you just have to do a lot of hand tunning to get various levels
of modulation to work. To do better, you’ll need to get into the guts
of the algorithms and try to improve them.

-Lizhao
There are a few codes available in GNU Radio right now, including
reed-solomon, convolutional, and trellis coding. It will take some
work to add any of them to the OFDM code, though.

Tom

On Tue, Jan 4, 2011 at 6:49 AM, You L. [email protected]
wrote:

work. When I change BPSK to QPSK by altering rotated_const, I can receive
examples?

I don’t know whether this is relevant or not but just in case:

The QAM constellations produced by blks2impl/qam.py aren’t set up for
differential modulation which was causing me some problems with the
benchmark_qt_loopback2.py program. In my github repo
(GitHub - benreynwar/gnuradio: GNU Radio) i’ve got a modified qam.py which
fixes this.

Cheers,
Ben