# How to calculate BER in different modulations with OFDM using GNURadio Companion

**URL:** <https://www.ruby-forum.com/t/how-to-calculate-ber-in-different-modulations-with-ofdm-using-gnuradio-companion/243186>\
**Category:** GNU Radio\
**Created:** [August 31, 2015, 1:29pm UTC](https://www.ruby-forum.com/t/how-to-calculate-ber-in-different-modulations-with-ofdm-using-gnuradio-companion/243186 "2015-08-31T13:29:20Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rafa\_F](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/958977/32.png) [@Rafa\_F](https://www.ruby-forum.com/u/Rafa_F)\
**Post date:** [August 31, 2015, 1:29pm UTC](https://www.ruby-forum.com/t/how-to-calculate-ber-in-different-modulations-with-ofdm-using-gnuradio-companion/243186/1 "2015-08-31T13:29:20Z")

</div>

Hello,

I’m doing my College final project about gnuradio companion.  
Specifically  
I have to calculate the BER with OFDM using different modulations to the  
subcarriers. After that, I have to do a graphic with the BER numbers.  
The  
configuration I use is in the image attached.  
When I’m using GRC to calculate BER I always have the same problem.  
First I  
try to simulate without introducing any noise and get a BER data. Then I  
try to introduce AWGN noise and the BER data is the same. Clearly I’m  
making a mistake, but I’m not able to identify what it is. In view of  
the  
configuration used, someone could tell me which are my mistakes?  
Also, I would like to know how to configure the block Channel Model  
correctly.

Thank you all.

---

<div class="post-metadata">

**Author:** ![palollano91](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/3da27b/32.png) [@palollano91](https://www.ruby-forum.com/u/palollano91)\
**Post date:** [August 31, 2015, 1:30pm UTC](https://www.ruby-forum.com/t/how-to-calculate-ber-in-different-modulations-with-ofdm-using-gnuradio-companion/243186/2 "2015-08-31T13:30:30Z")

</div>

The configuration to which I refer in the previous email is the  
corresponding to the image attached

2015-08-31 13:18 GMT+02:00 ANTONIO TAMAYO [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

---

<div class="post-metadata">

**Author:** ![palollano91](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/3da27b/32.png) [@palollano91](https://www.ruby-forum.com/u/palollano91)\
**Post date:** [August 31, 2015, 2:42pm UTC](https://www.ruby-forum.com/t/how-to-calculate-ber-in-different-modulations-with-ofdm-using-gnuradio-companion/243186/3 "2015-08-31T14:42:56Z")

</div>

Hi Antonio,

The problem might be due to delay introduced by the processing blocks.  
Your OFDM modulator and demodulator don’t work instantaneously, they  
take  
some time to do their processing and forward their outputs to the next  
block in line. Therefore, there is a delay between the output of the  
OFDM  
demod block and the original signal.  
What you need to do is add a delay block between your Random source and  
the  
BER block and set the delay properly.  
When you’re not adding any noise, your BER should be 0. So you can try  
to  
find the delay value this way.  
Then add noise and see how your BER evolves.

I hope this helps.

Regards,  
Jawad

2015-08-31 13:21 GMT+02:00 ANTONIO TAMAYO [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

---

<div class="post-metadata">

**Author:** ![palollano91](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/3da27b/32.png) [@palollano91](https://www.ruby-forum.com/u/palollano91)\
**Post date:** [September 2, 2015, 8:08am UTC](https://www.ruby-forum.com/t/how-to-calculate-ber-in-different-modulations-with-ofdm-using-gnuradio-companion/243186/4 "2015-09-02T08:08:48Z")

</div>

Hello Antonio,

Please take the habit of replying to the list. People might get into the  
same problems or someone might have some knowledge to share.

Also, try to provide a flowgraph (.grc file) to make testing easier for  
the  
people helping you out.

That said, I did some testing and it looks like I was wrong. The delay  
isn’t the problem here (at least not on my machine).  
But I think I figured out the problem. It looks like you provided a  
Payload  
length of 0 in your OFDM modulator block.  
If I set the payload length to 100 and then the random source Num.  
samples  
to the same value, the BER goes to 0 without adding delay. And you can  
see  
the BER moving when you change the delay.

There is one problem though, it doesn’t seem to work when the payload  
length and the Num. samples are not set to the same value.

Regards,  
Jawad

2015-09-01 13:50 GMT+02:00 ANTONIO TAMAYO [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

---

<div class="post-metadata">

**Author:** ![palollano91](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/3da27b/32.png) [@palollano91](https://www.ruby-forum.com/u/palollano91)\
**Post date:** [September 2, 2015, 12:15pm UTC](https://www.ruby-forum.com/t/how-to-calculate-ber-in-different-modulations-with-ofdm-using-gnuradio-companion/243186/5 "2015-09-02T12:15:54Z")

</div>

Hello Jawad,

I’ve made the changes you said. As you say, when I assign the Payload  
parameter to the number of samples of the block Random Source without  
introducing Delay, I get a BER value equal to 0. But what I need to  
introduce a noise source so that when I increase the power noise, also  
increase the BER. This doesn’t happen making the changes that you say,  
when  
I introduce a noise source and the noise power is increasing the value  
of  
BER remains 0. This is incorrect. As you can see in the spectrum  
received,  
the signal contains errors that they aren’t appreciated by the block  
Error  
Rate. (SistemasOFDM\_prueba.grc)  
Also, I need to send an image and calculate the BER in the same way as  
with  
the random vector. When I use the block File Source and calculate the  
BER,  
I have the same problem, the BER remains constant at 0.51 and although  
the  
noise power increases, the BER remains unchanged.  
(SistemaOFDM\_Pruebas1.grc)  
The image that I send in the previos example is called “imagen”  
Thank you.

Regards,  
Antonio

2015-09-01 15:04 GMT+02:00 Jawad S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

---

<div class="post-metadata">

**Author:** ![palollano91](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/3da27b/32.png) [@palollano91](https://www.ruby-forum.com/u/palollano91)\
**Post date:** [September 2, 2015, 2:15pm UTC](https://www.ruby-forum.com/t/how-to-calculate-ber-in-different-modulations-with-ofdm-using-gnuradio-companion/243186/6 "2015-09-02T14:15:04Z")

</div>

Hi Antonio,  
I tried to open your GRC file. This must have been with a pretty old  
version of GNU Radio (which version are you using?).  
I strongly recommend getting a newer version of GNU Radio, because  
especially the OFDM code has improved a lot.

By the way, a BER of about ~0.5 means that as many bits are right as  
there are wrong bits, which means that you get absolutely no information  
through (if there were more wrong than right bits, you could just toggle  
the bits and get more information); this means that the input and output  
streams are not related, or have an offset relative to each other that  
doesn’t get corrected; increase the BER window size (you don’t need the  
delay if you’ve got a bigger window).

Best regards,  
Marcus

---

<div class="post-metadata">

**Author:** ![palollano91](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/3da27b/32.png) [@palollano91](https://www.ruby-forum.com/u/palollano91)\
**Post date:** [September 5, 2015, 11:53am UTC](https://www.ruby-forum.com/t/how-to-calculate-ber-in-different-modulations-with-ofdm-using-gnuradio-companion/243186/7 "2015-09-05T11:53:59Z")

</div>

Hello Jawad,

I’ve made the changes you said. As you say, when I assign the Payload  
parameter to the number of samples of the block Random Source without  
introducing Delay, I get a BER value equal to 0. But what I need to  
introduce a noise source so that when I increase the power noise, also  
increase the BER. This doesn’t happen making the changes that you say,  
when  
I introduce a noise source and the noise power is increasing the value  
of  
BER remains 0. This is incorrect. As you can see in the spectrum  
received,  
the signal contains errors that they aren’t appreciated by the block  
Error  
Rate. (SistemasOFDM\_prueba.grc)  
Also, I need to send an image and calculate the BER in the same way as  
with  
the random vector. When I use the block File Source and calculate the  
BER,  
I have the same problem, the BER remains constant at 0.51 and although  
the  
noise power increases, the BER remains unchanged.  
(SistemaOFDM\_Pruebas1.grc)  
The image that I send in the previos example is called “imagen”  
Thank you.

Regards,  
Antonio

2015-09-01 15:04 GMT+02:00 Jawad S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):
