discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] questions about bpsk rx with different noise volt


From: Tom Rondeau
Subject: Re: [Discuss-gnuradio] questions about bpsk rx with different noise voltage
Date: Thu, 12 Apr 2012 13:33:01 -0400

2012/4/12 Alick Zhao <address@hidden>:
> Hi all,
>
> I am learning to do some channel estimation using GNU Radio and USRP.
> Currently I have done some simulation with file_sink/source and
> gr_channel_model in GNU Radio, but I do not quite understand the
> results. I'll explain my settings and simulation results below and hope
> someone can give me some hints.
>
> My set up is based on digital_bert_tx/rx.py under
> gr-digital/examples/narrowband. I removed the scrambler/descrambler
> block and also use bpsk modulation so that the ideal constellation
> points should be just 1+0j. Then I add a channel for simulation (in the
> rx part):
>
>  self._chn = gr.channel_model(options.noise, 0, 1.0, [p2c(0.8, 30)])
>
> where options.noise specify the additive noise voltage, and p2c(...)
> give a channel h = 0.8 * exp(j*pi/6).
>
> To simulate I use tx part to write to a data file 'air.dat', then use rx
> part to receive and demod the signal.
>
> The results are attached as three figures, each with the name indicating
> the noise voltage specified on the command line. The black 'o's show the
> symbols right after the simulation channel, and the margenta points show
> the symbols after time_recov, and red ones show the constellation points
> just before decision maker. The blue ones are meant to be estimated
> channel info, which now is not correct.
>
> Here are my questions:
>
> 1. The figures show that when noise is 1e-5 (which means SNR is about
> 100dB since the signal strength at tx is 1), the constellation point
> after time_recov matches the received signal quite well and the
> constellation point before decision maker is around 1+0j. So it means
> that the Costas loop between the two recovers the signal from the phase
> rotation caused by the channel?
>
> 2. When the noise is set to 1e-3, the constellation points after
> time_recov form a unit circle. I wonder why the phases become so random.
>
> 3. When the noise is set to 1e-1, and the corresponding SNR is about
> 20dB(which I think is not quite low for practical application), both the
> constellation points after time_recov and before decision maker appear
> along side the unit circle. Also the BER is as high as about 0.5.  Why
> the performance of the demodulator becomes so bad? Maybe some parameters
> of the Costas loop can (or should) be adjusted?
>
> 4. I notice that the script use digital_constellation_receiver_cb block.
> I doubt this block is a combination of digital_mpsk_receiver_cc and
> constellation decoder. Particularly, I found the macros VERBOSE_MM and
> M_TWOPI in digital_constellation_receiver_cb.cc unused. Is it intended?
>
> Oh I need to mention that the simulation is based the source code GNU
> Radio v3.5.3. I am still new to SDR so I really appreciate your help.
>
> --
> alick

Alick,

Why are you using 1's and 0's? Is this just for some academic exercise
or are you trying to do something with this kind of a constellation?
I'm only asking out of curiosity.

It also looks like you're heavily biasing the output to be all 1's and
very few 0's. That's going to be problematic for the recovery loops.
In particular, the FLL uses bandedge filters that rely on the excess
bandwidth. If you are never, or rarely, transitioning between symbols,
the excess bandwidth of the signal is going to be pretty much absent.
So I'd add the randomizer back in and see how that works.

For simulation purposes, you can probably go in and remove the FLL
from the receiver chain in generic_mod_demod.py.

Tom



reply via email to

[Prev in Thread] Current Thread [Next in Thread]