[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] Questions with the blocks inside PSK Mod/Demod bl

From: Tom Rondeau
Subject: Re: [Discuss-gnuradio] Questions with the blocks inside PSK Mod/Demod blocks
Date: Fri, 5 Dec 2014 09:36:00 -0500

On Tue, Dec 2, 2014 at 11:03 AM, Yi Chu <address@hidden> wrote:
Hello everyone,

I am working on the GNURadio simulation of a 3-hop system using non-differential QPSK:  source generates QPSK-modulated signal and sends it to relay, relay performs certain operation on the received complex samples and sends them to the receiver, and the receiver decodes the data. The flow graph is as below and I attached the .grc file.


So the source/receiver are the PSK Mod/Demod blocks and the blocks on their left, and all other blocks represent the relay. 

Our project requires the relay to operate on the complex samples, however the PSK Mod block brings ISI so I can't see a clear 4-point constellation and the operation we need to do is not valid for the samples with ISI (but the PSK Demod can remove ISI). Since I can't directly access the complex samples somewhere inside the PSK Demod block, I have read through generic_mod_demod.py and psk.py to try to find out the blocks inside PSK Mod/Demod blocks. 

I can see that PSK Demod contains agc, fll band-edge filter, pfb clock sync and constellation receiver (with a costas loop filter inside) for non-differential decoding, PSK Mod has pfb resampler after the data is mapped to complex samples. 

So that the blocks before pfb resampler are to remove ISI and pfb resampler can put ISI back in for PSK Demod to decode the data. I can see that the signal after costas loop filter gives a clear 4-point QPSK constellation as expected, but there is no output at the sink. However if I change the PSK Mod/Demod to differential (everything else stays the same), then the signal can be correctly decoded... 

Does anyone have any ideas on this problem? Any advice are appreciated!

Many thanks and best regards

The ISI is from the transmit pulse shaping filter, a root raised cosine. The RRC filter introduces ISI, which is what you see there. You need to pass it through a second RRC filter to remove the ISI.

The problem with non-differential coding is that QPSK has a 4-way phase ambiguity and nothing in your receiver path is able to line up the received symbols in phase to how they were transmitted. It simply locks the points to the constellation without regard for which symbol is where. You might transmit a QPSK with '11' in the first quadrant, but when you receive it, where it locks might have that '11' in any one of the four quadrants of the complex plane. Differential encoding doesn't care about that absolute placement in the plane, just the change in phase, which is invariant with the rotation.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]