0
$\begingroup$

I am using a raised cosine filter in my QPSK receiver and I see this IQ diagram of the signal, but it seems off to me. Can someone explain why this happens?

enter image description here

This is the MATLAB code I used to generate it

% Parameters
M = 4; % QPSK
symbolRate = 1e6; % 1 megabaud
fs = 2 * symbolRate; % Sampling frequency (oversampling)
numSymbols = 1000; % Number of symbols
rolloff = 0.35; % Roll-off factor for Raised Cosine filter

% Generate random bits
dataBits = randi([0 1], numSymbols*log2(M), 1);

% QPSK Modulation
qpskModulator = comm.QPSKModulator('BitInput', true);
modulatedSignal = qpskModulator(dataBits);

% Raised Cosine Filter
txFilter = comm.RaisedCosineTransmitFilter('RolloffFactor', rolloff, ...
                                           'OutputSamplesPerSymbol', fs/symbolRate);
txSignal = txFilter(modulatedSignal);
scatterplot(txS

enter image description here

$\endgroup$

1 Answer 1

1
$\begingroup$

This is likely due to a fractional timing offset as could be expected depending on the delay in the pulse sampling filter (likely a half sample offset if the filter was generated with an even number of samples), combined with plotting every sample at two samples per symbol in the scatter plot.

This can be confirmed by resampling by two using Matlab’s resample function and then selecting every fourth sample with a sample offset to make up for that half sample delay.

$\endgroup$
5
  • $\begingroup$ It worked. Thanks Dan! $\endgroup$
    – Jacob
    Commented Jan 1 at 22:59
  • 1
    $\begingroup$ Very cool, thanks for letting me know. In practice you will have arbitrary time and frequency offsets and would use timing and carrier recovery algorithms to track and remove those. I have an online course starting this February that goes into detail on how those are implemented and used FYI. The details will be soon posted at dsprelated.com/courses. $\endgroup$ Commented Jan 2 at 1:42
  • $\begingroup$ Perfect! I'll definitely check it out. Thank you $\endgroup$
    – Jacob
    Commented Jan 2 at 16:29
  • $\begingroup$ @Jacob, course is now posted for sign-up with early registration discount. $\endgroup$ Commented Jan 3 at 17:49
  • $\begingroup$ wish I knew about this course earlier! I do have an interview task and currently working on the implementation of a QPSK receiver. This course would've helped me with it... $\endgroup$
    – Jacob
    Commented Jan 3 at 19:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.