0
$\begingroup$

I am back with a question related to my OFDM Transceiver System that I am designing where I use DUC and DDC. I could get rid of the high BER problem. I realized that the problem was due to the phase error occuring between the transmitter and the receiver side as I saw the constellation diagram at the receiver rotating constantly. So to get rid of this, I obtained the phase difference between the transmitter and the receiver and I rotated the complex signal with the obtained phase error. However, I feel this is only an ideal method to get rid of the phase error. I read about the phase error compensation techniques but those are mostly when there is a noise in the channel. But in my case, I still haven't added any noise in the channel. I suspect the phase error is either because of the DUC and the DDC, or because of the pulse shaping filters that I used after OFDM modulator.

So I was wondering if anyone could tell me why is this phase error occuring even without a noisy channel, and what can I do to mitigate the phase error with some estimation.

I have attached the screenshot of my system along with the waveforms obtained. Below are the specs -

Random Integer Generator Specs

Set Size - 2

Initial Seed - 37

Sample Time - 1/1e6

Samples per frame - 20

OFDM Modulator Specs

FFT length - 32

Number of guard bands - [6;5]

Insert DC Null - Checked

Cyclic Prefix Length - 16

Number of OFDM symbols - 1

Number of transmitted antennas - 1

Raised Cosine Transmit Filter Specs

Rolloff factor - 0.2

Filter span in symbols - 8

Output samplers per symbol - 4

Linear amplitude filter gain - 1

DIgital Up- Converter Specs

Interpolation factor - [2 8]

Minimum order filter design - Yes

Two-sided bandwitdth - 2.4 e6

Passband ripple - 0.05 dB

Stopband ripple - 90 dB

Center Frequency - 30e6

Input sample rate - 9.6e6

Digital Down-Converter Specs

Decimation factor - [8 2]

Minimum order filter design - Yes

Two-sided bandwitdth - 2.4 e6

Passband ripple - 0.05 dB

Stopband ripple - 90 dB

Center Frequency - 30e6

Input sample rate - 153.6e6

Thank you in advance!

enter image description here

enter image description here

enter image description here

$\endgroup$
0
$\begingroup$

I don't think it would be reasonable to expect the phase to be exactly the same. The raised cosine filter for example has a linear phase response. Also don't forget that the auto-correlation for the cyclic prefix detection might find the frame starting at any of the 16 samples of the cyclic prefix, inducing an undetermined phase shift.

Do you have pilot sub-carriers? One simple way is to analyse their phase (which you know a-priori were transmitted with 0 (or some other known) phase) and rotate the sub-carriers in between the pilots (linearly interpolating between the phase of the pilots).

| improve this answer | |
$\endgroup$
  • $\begingroup$ I think the thing that u mentioned regarding the pilots cannot be done in Simulink. If at all can it be done is when we insert a MATLAB function block in the system. But in that case that may not be able to translate it into hardware. Do you think there is any other method to deal with the phase error? How about a method where I detect the signal recovered and then I decide to obtain the phase shift with respect to a +1 or a -1 depending upon the real part of the signal and then I rotate the signal by the obtained error? $\endgroup$ – Amit Sravan May 7 at 16:22
  • $\begingroup$ I'm seeing 2 problems with that. It only works for BPSK and it might not be robust since you don't know how much a symbol has been rotated. For sure you can add pilot sub-carriers in Matlab OFDM block (have a look at the PilotCarrierIndices property). I'm sure Matlab will have a block that does the channel estimation based on the pilots but if you want to implement just add a script block. Start with a simpler version, removing the RRC and up/down conversion and working with known phase shift to test the algorithm. Be careful with phase wrap (you can use the unwrap function). $\endgroup$ – David May 7 at 16:41
  • $\begingroup$ I dug up some old code that implements this technique. Have a look here to get an idea: pastebin.com/0yRbfcTR $\endgroup$ – David May 7 at 16:59
-1
$\begingroup$

I don't think OFDM uses a raised cosine filter, that breaks orthogonality.

| improve this answer | |
$\endgroup$
  • $\begingroup$ Doesn't break orthogonality, but is a waste of transmit power, indeed. $\endgroup$ – Marcus Müller Jul 5 at 10:09
  • $\begingroup$ According to simulink discussion it does break orthogonality. mathworks.com/help/comm/examples/f-ofdm-vs-ofdm-modulation.html $\endgroup$ – FourierFlux Jul 5 at 14:45
  • $\begingroup$ It doesn't. That document is wrong – the convolution with a filter only modifies the channel from the point of view of the OFDM system. It does, of course, that's what the filter is designed to do, suppress the edge carriers, so that they have bad SNR. But that's nothing to do with orthogonality. $\endgroup$ – Marcus Müller Jul 5 at 16:05

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.