I need your help in understanding if the simulation result is correct.

I have simulated a random BPSK sequence that was upsampled and filtered with a raised cosine filter. The length of the filter is 150 taps, sampling frequency 16, cut-off frequency 0.5 and transition bandwidth is 0.2. The noise was simulated with EbN0 = 10 with the following noise power:

SignalEnergy = (trapz(abs(filtered_signal_tx).^2))*(1/Fs);
Eb = SignalEnergy/(2*Nb);
N0 = Eb./(10.^(EbN0/10));
NoisePower = 2*N0*Fs;

The signal has a phase offset(shift): exp(1j*(2*pi*t+phase_offset));

As a result, I have got a signal, which has a small amplitude. It is less than 0.08...

I don't know if it is wrong or correct?!

What do you think?

enter image description here

  • $\begingroup$ Oversampling means adding a sample between zero samples, so the result is less amplitude. If your oversampling is 16, then 1/16=0.0625, which is about what I see there. You need to compensate with gain. $\endgroup$ – a concerned citizen Mar 2 at 18:26
  • $\begingroup$ @aconcernedcitizen how to compensate? What do you mean? $\endgroup$ – Ali23 Mar 3 at 7:11
  • $\begingroup$ If you're losing gain due to oversampling, then you need to add gain to compensate. You need to se the gain proportional to the oversampling rate. $\endgroup$ – a concerned citizen Mar 3 at 10:30
  • $\begingroup$ @aconcernedcitizen can i normalise the filtered signal 'filtered_signal = filtered_signal * 10' $\endgroup$ – Ali23 Mar 9 at 15:40

Phase offset and time delay (time offset) are NOT the same and I think this may be a primary source of confusion (Given the OP's other recent posts dealing only with time offset but here the formula used introduces a carrier phase offset). Hopefully the following diagrams help distinguish the two.

No Time or Phase Error

Below is the constellation diagram and eye diagram for the (raised cosine) QPSK waveform in the receiver after the matched filter, with no phase or time offset and showing the decision locations in red:

RC QPSK constellation

The eye diagram for the real component of the signal is shown below and should be clear that the imaginary component would look identical:

The blue circles are samples with 4 samples per symbol, one of which is at the ideal sampling location (at sample number 3 and 7 specifically; this eye diagram spans over two symbols).

eye diagram


Next a small time offset (timing error) of about 1/3 of a sample is introduced to show the effect of time offset alone.

Constellation with time offset

eye diagram with time offset


With the time offset back to 0, a phase offset of $\pi/10$ is introduced showing it's effect on the constellation and eye diagram.

Constellation with phase offset

eye diagram with phase offset


Phase Offset and Time Offset are two different parameters that each independently need to be corrected (one can exist without the other). Further, phase offset is typically changing with time, which specifically then when changing at a linear rate is a static carrier offset since frequency is the derivative of phase with time, and is corrected with a carrier recovery loop (while time offset is corrected with a timing recovery loop).

  • $\begingroup$ how did you design the (raised cosine) QPSK waveform in the receiver ? Did you gengerate random sequence of 0 or 1 ( 1 or -1), modulate them, upsample, filter and then add phase offset? How does your implementation look? $\endgroup$ – Ali23 Mar 9 at 15:43
  • $\begingroup$ @Ali23 I generate them in Python the way you described— zero insert and the RRC filter is the interpolation filter. $\endgroup$ – Dan Boschen Mar 9 at 17:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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