discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] constellation soft decoder


From: Miklos Maroti
Subject: Re: [Discuss-gnuradio] constellation soft decoder
Date: Mon, 16 Dec 2013 19:39:54 +0100

Hi Tom,

On Mon, Dec 16, 2013 at 7:27 PM, Tom Rondeau <address@hidden> wrote:
> On Mon, Dec 16, 2013 at 1:08 PM, Miklos Maroti <address@hidden> wrote:
>> Hi Guys,
>>
>> Ok, I have sent a pull request.
>>
>> On a related note: I do not understand the scaling performed in the
>> constellation constructor. Why are the constellation points scaled to
>> have average 1.0 amplitude? It prevents me to do interesting stuff
>> with constellations. Why cannot I set the d_scalefactor manually later
>> (this is used in calc_soft_dec)?
>>
>> Miklos
>
> Miklos,
>
> You must have overlooked my email. I sent and already applied a patch
> for this. I'm going to go ahead and close this bug.

Sorry, I did not read then carefully.

> The scaling is done to make our slicing easier to perform. It was a
> design decision by the original author. I don't understand how this
> prevents you from doing "interesting stuff" since it's just a scaling
> factor. Unless floating point accuracy is really that big of a deal to
> what you want to do.

You would have a multiplier block just because your constellation is
scaled (and you have to recompute the scaling factor manually just to
compensate).

> That having been said, we probably don't actually need to impose this
> so strictly. We can probably add another argument to the constellation
> constructor to pass this value in, default it to 0, and if it's 0, do
> the autoscaling we currently do.

That would be a nice to have.

Miklos

>
> Tom
>
>
>
>> On Mon, Dec 16, 2013 at 5:18 PM, Miklos Maroti <address@hidden> wrote:
>>> Hi Marcus,
>>>
>>>> Anyway, I think Miklos is right: There is an error in calc_soft_dec in
>>>> using the pre_diff_code even in the case that it is not set or its
>>>> application disabled.
>>>>
>>>> Miklos, would you be as nice as to file a bug for that? You're the one
>>>> who successfully diagnosed that.
>>>
>>> Can you guys add me to the list of developers (user name: mmaroti)?
>>> Then I can file the bug report.
>>>
>>> In the mean time, I might be able to put together a pull request, just
>>> fixing the calc_soft_dec code.
>>>
>>>> (You may, btw, simply think of
>>>> pre_diff_code simply as an index set of the constellation points)
>>>
>>> I do not understand. It is just an extra permutation of the
>>> constellation points. If this is so, then why do you not just permute
>>> the constellation points, which makes everything faster. Do you have
>>> any use case where simply permuting the constellation vector would not
>>> achieve the same result?
>>>
>>> I also worry about performance. Even for BPSK, QPSK and 8PSK the soft
>>> decoding is not optimized, but could be much simpler than the general
>>> algorithm. Same goes for QAM, but I have not looked those really
>>> closely.
>>>
>>> Miklos
>>>
>>>>
>>>> Greetings,
>>>> Marcus
>>>>
>>>> On 16.12.2013 14:29, Philip Balister wrote:
>>>>> On 12/16/2013 08:16 AM, Miklos Maroti wrote:
>>>>>> Hi Marcus,
>>>>>>
>>>>>> Ok, that makes sense. It does not crash with QPSK, but it does
>>>>>> with BPSK and 8PSK, and BPSK and 8PSK do not set the
>>>>>> pre_diff_code. This explains why there is crash in one case and
>>>>>> not the other. Although neither sets the apply_pre_diff_code, so
>>>>>> even QPSK should not set pre_diff_code.
>>>>>
>>>>> I took a quick look in Coverity for issues in gr-digital. It flags
>>>>> a bunch of uninitialized variables. I'll try and take a look at
>>>>> these this week.
>>>>>
>>>>> There is an intermittent QA failure in some QA code and this might
>>>>> be an explanation.
>>>>>
>>>>> Philip
>>>>>
>>>>>>
>>>>>> I think the real problem is in constellation::calc_soft_dec. I
>>>>>> does not check whether d_apply_pre_diff_code is set or not.
>>>>>>
>>>>>> (By the way, I do not understand the usefulness of pre_diff_code.
>>>>>> Can you just permute the constellation points and get the same
>>>>>> effect?)
>>>>>>
>>>>>> Miklos
>>>>>>
>>>>>> On Mon, Dec 16, 2013 at 1:34 PM, Marcus Müller
>>>>>> <address@hidden> wrote: Well, after having a debug build and
>>>>>> then adding a lot of "volatile"s into the code at the crashing
>>>>>> function, it looks as if the d_pre_diff_code of the constellation
>>>>>> has size 0; and thus, you can't access the 0. (read: first)
>>>>>> element. How this could happen with a QPSK object is currently
>>>>>> subject to my confusion. Stay tuned for more confusing facts as
>>>>>> the code unfolds :).
>>>>>>
>>>>>> Greetings, Marcus
>>>>>>
>>>>>> On 16.12.2013 08:30, Miklos Maroti wrote:
>>>>>>>>> Hi Marcus,
>>>>>>>>>
>>>>>>>>> I do not think it is a compiler bug, but something
>>>>>>>>> uninitialized. Constellation_qpsk and
>>>>>>>>> constellation_calcdist does not crash (I did not verify if
>>>>>>>>> they work). However, if I generate the LUT for
>>>>>>>>> constellation_qpsk, then it crashes.
>>>>>>>>>
>>>>>>>>> # uname -a Linux maroti-t410 3.11.0-14-generic #21-Ubuntu
>>>>>>>>> SMP Tue Nov 12 17:04:55 UTC 2013 x86_64 x86_64 x86_64
>>>>>>>>> GNU/Linux
>>>>>>>>>
>>>>>>>>> # gcc --version gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
>>>>>>>>>
>>>>>>>>> Using latest master branch of gnuradio, hash
>>>>>>>>> 117058bac41c91, both CMAKE_BUILD_TYPE=Debug and Release
>>>>>>>>> produces the same behavior
>>>>>>>>>
>>>>>>>>> # gdb `which python` core Reading symbols from
>>>>>>>>> /usr/bin/python2.7...(no debugging symbols found)...done.
>>>>>>>>>
>>>>>>>>> warning: core file may not match specified executable file.
>>>>>>>>> [New LWP 2249] [New LWP 2251] [New LWP 2240] [New LWP 2248]
>>>>>>>>> [New LWP 2247] [New LWP 2239] [New LWP 2250]
>>>>>>>>>
>>>>>>>>> warning: Can't read pathname for load map: Input/output
>>>>>>>>> error. [Thread debugging using libthread_db enabled] Using
>>>>>>>>> host libthread_db library
>>>>>>>>> "/lib/x86_64-linux-gnu/libthread_db.so.1". Core was
>>>>>>>>> generated by `python ./constellation_simulation.py'.
>>>>>>>>> Program terminated with signal 11, Segmentation fault. #0
>>>>>>>>> 0x00007f98dbbe01a7 in
>>>>>>>>> gr::digital::constellation::calc_soft_dec ( this=0x48321c0,
>>>>>>>>> sample=..., npwr=<optimized out>) at
>>>>>>>>> /home/mmaroti/workspace/gnuradio/gr-digital/lib/constellation.cc:286
>>>>>>>>>
>>>>>>>>>
>>>>>>
>>>>>>>>>
>>>> 286        for(int j = 0; j < k; j++) {
>>>>>>>>>
>>>>>>>>> i stack #0  0x00007f98dbbe01a7 in
>>>>>>>>> gr::digital::constellation::calc_soft_dec (
>>>>>>>>> this=0x48321c0, sample=..., npwr=<optimized out>) at
>>>>>>>>> /home/mmaroti/workspace/gnuradio/gr-digital/lib/constellation.cc:286
>>>>>>>>>
>>>>>>>>>
>>>>>>
>>>>>>>>>
>>>> #1  0x00007f98dbbe0f7e in gr::digital::constellation::soft_decision_maker (
>>>>>>>>> this=0x48321c0, sample=...) at
>>>>>>>>> /home/mmaroti/workspace/gnuradio/gr-digital/lib/constellation.cc:355
>>>>>>>>>
>>>>>>>>>
>>>>>>
>>>>>>>>>
>>>> #2  0x00007f98dbbe94dc in
>>>>>>>>> gr::digital::constellation_soft_decoder_cf_impl::work
>>>>>>>>> (this=0x4fb11a0, noutput_items=8190, input_items=...,
>>>>>>>>> output_items=...) at
>>>>>>>>> /home/mmaroti/workspace/gnuradio/gr-digital/lib/constellation_soft_decoder_cf_impl.cc:68
>>>>>>>>>
>>>>>>>>>
>>>>>>
>>>>>>>>>
>>>> #3  0x00007f98e1c5dd38 in gr::sync_interpolator::general_work (
>>>>>>>>> this=0x4fb11c0, noutput_items=<optimized out>,
>>>>>>>>> ninput_items=..., input_items=..., output_items=...) at
>>>>>>>>> /home/mmaroti/workspace/gnuradio/gnuradio-runtime/lib/sync_interpolator.cc:67
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>> You should be able to reproduce the problem quite easily, but if
>>>>>>>>> needed I can provided a test program.
>>>>>>>>>
>>>>>>>>> Best, Miklos
>>>>>>>>>
>>>>>>>>> On Mon, Dec 16, 2013 at 7:59 AM, Marcus Müller
>>>>>>>>> <address@hidden> wrote:
>>>>>>>>>> Could you post the whole backtrace (as a github gist,
>>>>>>>>>> pastebin etc)? That would be very helpful, along with
>>>>>>>>>> information such as: Compiler (Gcc (version), VC++, clang
>>>>>>>>>> ...), Platform (Linux, win, mac,...), architecture
>>>>>>>>>> (x86(64), ARMv9, IBM S7390,...) and GNU Radio source
>>>>>>>>>> version.
>>>>>>>>>>
>>>>>>>>>> Thanks and happy hacking, Marcus
>>>>>>>>>>
>>>>>>>>>> On 12/16/2013 01:05 AM, Miklos Maroti wrote:
>>>>>>>>>>>
>>>>>>>>>>> Hi Guys,
>>>>>>>>>>>
>>>>>>>>>>> Constellation soft decoder crashes for
>>>>>>>>>>> constellation_bpsk() and constellation_8psk(). I could
>>>>>>>>>>> not find the cause of this problem, the back trace on
>>>>>>>>>>> my machine points to
>>>>>>>>>>>
>>>>>>>>>>> gnuradio/gr-digital/lib/constellation.cc:286 for(int j
>>>>>>>>>>> = 0; j < k; j++) {
>>>>>>>>>>>
>>>>>>>>>>> which does not make any sense. Any idea what could go
>>>>>>>>>>> wrong?
>>>>>>>>>>>
>>>>>>>>>>> Miklos
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> Discuss-gnuradio mailing list address@hidden
>>>>>>>>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>> _______________________________________________ Discuss-gnuradio
>>>>>>>>>> mailing list address@hidden
>>>>>>>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>>>>
>>>>>> _______________________________________________ Discuss-gnuradio
>>>>>> mailing list address@hidden
>>>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>>>>
>>>>>
>>>> -----BEGIN PGP SIGNATURE-----
>>>> Version: GnuPG v1.4.15 (GNU/Linux)
>>>> Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
>>>>
>>>> iQEcBAEBAgAGBQJSrwVRAAoJEAFxB7BbsDrLhd8H/0q7o3KX9iCShBn/X7VehxF2
>>>> LdR1peDL2VSqbGTmKnm6CltUs1yP7+bCAp+s6/TqTun7ticxDBSnh/0Drsc1jO2d
>>>> 5E0UUKjjvuhdqKXfxbC/MGGSXlJ1Q1yGkkhmFvPS9ztQTT/Q3iLD8tFNshXdXlKc
>>>> FmPpyDWFDDD741AnqM4R5cXPnwUJkPV7aIvevYyrfYbjpSiK0t4yED0LVOZywnjs
>>>> aP2YB49qmWLpLYFAaIytcJF8cFkfumziPNQwpgndaZl8tuvwvUm7COHxXmBTdaqI
>>>> 2IrB8gns+hR05uU9UAJdwaVI2gKGRB1hmP0MaHUxPd80ODfscTd5TAMxasBDWmE=
>>>> =HkF/
>>>> -----END PGP SIGNATURE-----
>>
>> _______________________________________________
>> Discuss-gnuradio mailing list
>> address@hidden
>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio



reply via email to

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