[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Discuss-gnuradio] Problem with Differential PSK
From: |
Tom Rondeau |
Subject: |
Re: [Discuss-gnuradio] Problem with Differential PSK |
Date: |
Wed, 25 Jul 2007 00:01:28 +0100 |
User-agent: |
Thunderbird 1.5.0.12 (X11/20070604) |
Christian Sokolowski wrote:
> Hi all,
>
> I use differential PSK with up to 4 bits per symbol. I tested transmission as
> a simulation modelling the channel with AWGN noise and phase rotation. So
> far, simulation works perfect (100% packets will be received correct) with
> all modulation orders using Costas Loop for phase recovery and
> Mueller&Mueller for clock recovery at the receiver.
>
> Problems occur when switching to the USRP board. I use Flex 2400 and TX and
> RX
> antennas are close to each other (near perfect propagation channel). In very
> few cases (~5%) the receiver recovers the signal and correct packets will be
> received. In most runs, no packet is received. Until now, I do not know if
> the problem is due to some saturation effects (too high transmission power at
> the amplifier) or if parameters of Costas Loop, Automatic Gain Control and
> Mueller&Mueller clock recovery are set properly. I played with all those
> parameters a lot, but without success. Can someone help?
>
> In general: Does Costas Loop need to be modified when differential PSK is
> used? I read in the forum that the order needs to be 2 for BPSK and order 4
> used for QPSK in the block gr.costas_loop_cc(..., order)? What is the
> purpose?
>
> If someone is interested, you can try with the following source code. I
> appreciate any comments.
> http://www.mobnets.rwth-aachen.de/~ade/cso/DPSK_code.zip
>
> the block "howto_psk_packet_sink.cc" is necessary to detect packets after
> differential decoding at the receiver. One byte contains 1 to 4 bits ( which
> is the symbol) depending on the modulation order.
>
> psk.py is extended to use 16PSK.
We have blocks that do DBPSK and DQPSK already (D8PSK sort of, but it's
over-the-air operation is flaky). Check them out in
gnuradio-core/src/python/gnuradio/blksimpl or you have use
gnuradio-examples/python/digital/benchmark_tx.py -m [dbpsk, dqpsk] to
run the transmitter. These should give you some help about the
parameters used in the phase/frequency/timing sync block.
Tom