BER depends on TotalFrame count in QPSK Transmitter and Receiver example

4 views (last 30 days)
Max Schettler
Max Schettler on 18 Oct 2019
Edited: Markandeya Janaswamy on 24 Oct 2019
I'm trying to adapt the QPSK Transmitter and Receiver example of the communication toolbox, s.t., I can call it on arbitrary input messages, instead of having it generate the message bits. However, I see an interesting behavior when changing the TotalFrame parameter which configures how many frames should be sent. When using values different than the default 1000, i.e., 10, 100 and 10000, I observer similar amounts of bit errors (varying slightly in independent runs), such that the BER changes with the amount of frames sent.
I don't understand this, as the transmissions should be independent (in the example the frame counter influences each frame's delay, but when I modify the example to use no delay and phase offset, just AWGN, the same behavior can be observed). Also I find it interesting that the difference in BER corresponds to the difference in transmissions: a factor of 100.
What could explain this behavior?

Answers (1)

Kaashyap Pappu
Kaashyap Pappu on 22 Oct 2019
Edited: Kaashyap Pappu on 23 Oct 2019
The variability is due to timing synchronization and carrier frequency offset (CFO). Timing synchronization becomes much difficult in presence of CFO. When you run the simulation for 10000 frames with CFO set to zero, you can see in the constellation that as timing offset varies, received constellation continuously oscillates between ideal to noisy and vice versa in a cycle. This in presence of CFO is much worse. With-in 10 frames, it still will be in noisy or non-ideal state in which BER could be higher than expected. As there is no error correction in the chain, the variance is also very high. Hence, running for 10 frames or 100 frames does not give a good result. Whereas when you run for 1000 frames or 10000 frames, the result starts to converge.
Hope this helps!
Markandeya Janaswamy
Markandeya Janaswamy on 24 Oct 2019
Hi Max,
What you observed happens in the real world too! Symbol synchronization of a time domain waveform (such as the QPSK Transmitter and Receiver example of the communication toolbox) is accomplished by using a phase locked loop (PLL) and it takes some time for the PLL to get locked. Communications toolbox has got comm.SymbolSynchronizer which does exactly that - timing/phase recovery for a time domain waveform!
The initial errors that you have shown in output.txt is because the PLL is not locked yet and the constellation is still bad. Once, it is locked, there are no errors! In real scenario too the same thing applies. Hence, results converge only after a large number of bits are processed as pointed out by Kaashyap.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!