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