Modifying an example does not have a BER of zero

2 visualizzazioni (ultimi 30 giorni)
I have tried to modify the example "Recovery of IEEE 802.15.4 OQPSK Signals"
by replacing the loaded received time domain signal by a signal generated in the baseband so that I can compare the generated bits with the received MPDU bits for BER calculations. However the BER is not zeros as expected. I have also taken a look at the other example End-to-End IEEE 802.15.4 PHY Simulation,
but it doesn't include any synchronization steps. My plan was to use the generated time domain signal, transmit it and receive it using an RF transceiver, and process the received signal after synchronization. Is there a way I can use a generated time domain Zigbee signal, pass it through the synchronization steps, and get a BER of zero? 

Risposta accettata

MathWorks Support Team
MathWorks Support Team il 10 Dic 2021
Modificato: MathWorks Support Team il 13 Dic 2021
Most of our demos are developed with ideal scenarios and are not guaranteed to work for any scenario. In this situation, BER of zero can be obtained by completing the following steps.
1. A slight improvement can be made to our shipped comm.CoarseFrequencyCompensator file. Open this file by executing the following command:
>> edit comm.CoarseFrequencyCompensator
navigate to lines 635 and 638. They should like like the following:
line 635: maxIdx1 = maxIdx1 + symbolRateBinLeft-range200kHz;
line 638: maxIdx1 = maxIdx1 + symbolRateBinRight-range200kHz;
Change these lines to the following
line 635: maxIdx1 = maxIdx1 + symbolRateBinLeft-range200kHz-1;
line 638: maxIdx1 = maxIdx1 + symbolRateBinRight-range200kHz-1;
Before making these changes, I would recommend saving a backup of the original file, as this modification has not yet been confirmed for a future release.
2. You will need to add some buffering room to the signal that will be decoded. This can be done by adding the following command immediately after you declare captured Frame1 (line 44):
capturedFrame1 = [capturedFrame1; zeros(spc*10, 1)];
This command is needed to address the effects of the delay caused by the matched filter. It is part of the adjustments needed as the demo code has some distance from being a practical, robust receiver.
Upon performing these two steps, you can obtain a BER of zero.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by