discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] OFDM SNR


From: Martin Braun
Subject: Re: [Discuss-gnuradio] OFDM SNR
Date: Fri, 11 Apr 2014 11:59:46 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0

On 04/10/2014 01:33 PM, Piotr Potocki wrote:
> First thanks for helping me out!
> 
> 1. I found out that in file 'ofdm_equalizer_simpledfe' there is a part
> concerning mapping samples into correct positions (-1,1).
> 
> //
> d_constellation->map_to_points(d_constellation->decision_maker(&sym_eq),
> &sym_est);
> 
> I commented out it but still the mapping didn’t stop. And i couldn’t
> find any other code that is doing this mapping.
> So where the mapping is taking place?

Hm, this won't work, I guess. Line 102 does the actual assignment...

> 2. Unfortunately commentating out this part is not only disabling
> equalization but also the phase correction and frequency correction.
> But i figure out that for SNR estimation i don't need phase and freq
> correction. The downside is that when i am trying to estimate SNR i
> don't receive correct data.

You definitely need the coarse freq offset correction. That also means
fiddling with your phase (which shouldn't matter for SNR estimation).
However, that's done in ofdm_frame_equalizer_vcvc.

And yeah, of course you don't get correct data if you don't equalize.

> 3. Thanks for it the scope sink in XY mode works perfect. And one small
> question, how to make constant X,Y coordinate system (set X value from
> -2 to 2 and Y -2 to 2)?

QT or WX? Have a look at the GRC property dialogues.

> And last question is abut transferring data to Matlab. To estimate SNR i
> need to take the complex value and 'take' them to mag^2.
> But i don't know how to read/open this .dat file in Matlab. First i was
> trying to use block 'complex to mag^2' in gnuradio and then write the
> data to a file (constellation3.dat). And then use Matlab simple function:
> fileID_rx=fopen('constellation3.dat');
> snr=fread(fileID_rx,'double');
> But the results are not correct.

Look at read_float_binary.m, also read the FAQ.


- Martin

> Also i don't know how to open complex file in matlab without block
> 'complex to mag^2. The data file from file_sink is really 'wired'
> (constellation3_no_mag2.dat).
> 
> Both files are written down with working equalizer, so the symbols are
> only place (-1,1).
> To see constellation3_no_mag2.dat samples simply use  gr_plot_iq
> constellation3_no_mag2.dat .
>  
> 
> 
> 
> 
> My specs of system:
> FFT length = 64
> Sample rate = 2M
> Packet length = 40 ( i tried with different packet length and 40 gave
> the best results) 
> Modulation = BPSK
> Carrier frequency = 2.4 Ghz
> Occupied carriers = 52
> 
> Best regards,
> Piotr Potocki
> 
> 
> 2014-03-31 15:35 GMT+02:00 Martin Braun <address@hidden
> <mailto:address@hidden>>:
> 
>     On 03/31/2014 01:03 PM, Piotr Potocki wrote:
>     > 1. I want to estimate SNR using IQ samples. But when I receive IQ
>     > samples on the receiver (img iq_samples_eq) they are all "perfect". So
>     > my first question is, is there some kind of "hard decision" in OFDM
>     > Frame Equalizer? Without OFDM Frame Equalizer (img iq_samples_no_s)
> 
>     Yes -- the current equalizer discards soft information. That's a clear
>     shortcoming, but I simply haven't had the time to implement a proper
>     equalizer so far, and if anyone else has, they haven't committed it
>     upstream.
> 
>     You can write your own equalizers by subclassing ofdm_equalizer_base.
>     It's pretty simple, if you already have an algorithm in C++.
> 
>     > 2. The second problem is, that I need to have a white noise not
>     coloured
>     > noise.
>     > And to to that i need to get rid of the equalizer part of the OFDM
>     Frame
>     > Equalizer. The part of correction frequency shift on the symbols
>     need to
>     > stay.
>     > Do You have some hints how to do that? (Just commented "//" this
>     part ?
>     > // Do the equalizing
>     >       d_eq->reset();
>     >       d_eq->equalize(out, frame_len, d_channel_state);
>     >       d_eq->get_channel_state(d_channel_state);
> 
>     That should work. The cleaner way would be to add a 'dummy' equalizer
>     that can be dropped in.
>     Note that if you leave the equalizer out, you will be able to do nothing
>     but SNR estimation. I don't know the details of those algorithms by
>     heart, but some might not work either, since symbols will be phase
>     rotated.
>     Maybe you can intercept the channel state PMT in a custom block, modify
>     that to your needs, and use the ofdm_equalizer_static.
> 
>     > 3. The 3 question is about Constellation Plot in Gnuradio. My
>     system is
>     > based on BPSK so on Constellation Plot I am expecting only the +1, -1
>     > values. The IQ samples are showing me that this is correct +1,-1
>     so why
>     > on the plot i have the values (-0.7,-0.7),(0.7,0.7) (img Tx_snr_run) ?
>     > Why Constellation Plot is shifting my values?
> 
>     Use the scope sink in XY mode, not the constellation plot. That'll try
>     and actually rx.
> 
>     > 4. Last question is about the MPSK SNR Estimator. I am wondering is
>     > there a possibility to apply this block to OFDM?
> 
>     If you had a flat fading channel, you could use that after the
>     serialization. For more usual OFDM channels, probably not, at least not
>     out-of-the box. There are several papers that modify these algorithms
>     for OFDM, and I don't think we've implemented any of them.
> 
>     M
> 
>     _______________________________________________
>     Discuss-gnuradio mailing list
>     address@hidden <mailto:address@hidden>
>     https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
> 
> 




reply via email to

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