I am working with GNU Radio Companion 3.6 on CentOS. I want to calculate
the
BER, so I have been using the “Error rate” block.
First, I send a random QPSK-modulated signal through a simulated noisy
channel (AWGN). I calculate the BER using the function error:
BER=0.5*erfc(sqrt(snr)) and compare it to the output of the “Error rate”
block. I find almost same results.
Second, I send a random QPSK-modulated signal through one USRP and
receive
it with another USRP. Here is the problem: contrary to expections, the
output of “Error rate” block is always 0.5, and it does not vary with
the
variation of SNR.
You find attached the flowgraph of this second scenario. http://gnuradio.4.n7.nabble.com/file/n47625/gnu-ber.png
I am wondering if this block should not be used with USRPs to calculate
the
BER. If not, any suggestions?
Any help is appreciated. Thank you.
it with another USRP. Here is the problem: contrary to expections, the
Azza,
First, you should take out the throttle. With the USRPs in the loop,
you’re
going to have conflicts with the rates that will cause problems.
Second, at the very least, you need to synchronize everything through
the
hardware. The constellation decoder doesn’t do any timing, phase, or
frequency synchronization. You’ll also need an AGC block to scale the
received samples before anything else.
Thank you.
I have taken out the throttle block and add an AGC block at the
receiver.
To proceed with the synchronization, should I use a Constellation
Receiver
block or a Polyphase Clock Sync block ?
Thank you.
I have taken out the throttle block and add an AGC block at the receiver.
To proceed with the synchronization, should I use a Constellation Receiver
block or a Polyphase Clock Sync block ?
Kind regards,
Azza
You’ll actually need both. AGC → clock sync → constellation receiver
(phase/freq recovery and decoding).
Also, please reply in-line with the rest of the message. By cutting off
the
other part of our conversation makes it difficult for others to follow
the
thread.
I have taken out the throttle block and add an AGC block at the
You’ll actually need both. AGC → clock sync → constellation receiver
Thank you.
normalized frequency. +1 and -1 should work fine.
Azza
I have taken out the throttle block and add an AGC block at the
You’ll actually need both. AGC → clock sync → constellation receiver
Thank you.
normalized frequency. +1 and -1 should work fine.
Kind regards,
other part of our conversation makes it difficult for others to follow
the
I still found BER=0.5, however the error output of the Constellation
Receiver block gives 0.
Regards,
Azza
Azza,
Maybe take a step back from trying to calculate the BER. Make sure you
have
a transmitting system and receiver system that are working correctly. At
the receiver, the first thing to do is make sure you’re getting a proper
constellation. If so, you should be able to extract the bits to compare
them. And by this, I mean make two flowgraphs for the tx and rx sides so
you’re not confusing yourself by trying to tie everything together.
Also, make sure you are either using differential modulation encoding to
correct for unknown phase offsets or that you are somehow correcting for
this possibility. Then, you need to make sure you’re getting your frames
through. There will be a delay between what you transmit over the air
and
when you receive it. You’ll have to account for this, too.
Dear TOM,
Is it needed to use AGC/Clock Sync/Constellation Receiver blocks for
every receiver section. For my flow graph I am using phase lock loop,
frequency locked loop blocks instead of those?. Then, may I use all
these blocks in the receiver section?
I have some kind of the same problem. I want to calculate the BER using the ERROR rate block. I am there are AGC+polyphase clock sync+Costas loop+LMS DD equalizer+ Constelation demodulator.
I get the bit error rate of 0.5. I do not know what is the problem?
Thanks
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.