discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] Why add d_nbits two times at ofdm_mapper_bcv ?


From: West, Nathan
Subject: Re: [Discuss-gnuradio] Why add d_nbits two times at ofdm_mapper_bcv ?
Date: Thu, 26 May 2016 13:46:40 -0400

On Thu, May 26, 2016 at 12:06 PM, Marcus Müller <address@hidden> wrote:
That's pretty much what I wanted to stress:

Dear SangHyuk,

as you've been told you multiple times:
> Martin, 25. March 2016:
> you're not using the more recent OFDM blocks, so you won't get a lot of
> support here -- I recommend moving to the tx_ofdm and rx_ofdm stuff
> instead.
> I, 10. April 2016:
> Also, we have already discussed with you multiple times that
> benchmark_tx is not what you should be using, and that you should have
> a look at the ofdm_{rx,tx,loopback}.grc examples.
> I, 7. April 2016
> As said on numerous occassions, go ahead and try the rx_ofdm.grc and
> tx_ofdm.grc examples from gr-digital. They are much more modern.

So really, migrate to the examples Martin, I and others have pointed out
multiple times. You *will not* get competent help with the things you use.

Best regards,
Marcus


On 26.05.2016 17:52, Martin Braun wrote:
> Also, that block is going away soon.
>
> I recommend looking at the carrier allocator block instead.
>
> M
>
> On 05/25/2016 10:20 PM, SangHyuk Kim wrote:
>> Dear all,
>>
>> Sorry, my source code was wrong.
>>
>> There is only one /d_bit_offset += d_nbits;
>>
>> /
>> /Thanks .
>> /
>>
>> 2016-05-26 10:38 GMT+09:00 SangHyuk Kim <address@hidden
>> <mailto:address@hidden>>:
>>
>>     Hi all,
>>
>>     I'm tracing how OFDM modulation is done by /ofdm/benchmark_tx.py.
>>
>>     The file, ofdm.py indicates ofdm modulation is composed of like :
>>
>>     modulation - mapper - preamble - IFFT - CP - scale
>>                     |- mapper - preamble -|
>>
>>     And I have a question at ofdm_mapper_bcv.
>>
>>     In ofdm_mapper_bcv_impl::work, I can find making symbol part :
>>
>>     /while(..){
>>     /
>>     /if((8-d_bit_offset) >= d_nbits) {
>>     /
>>     /bits = ((1 << d_nbits)-1) & (d_msgbytes >> d_bit_offset);
>>     d_bit_offset += d_nbits;
>>     d_bit_offset += d_nbits;
>>     out[d_subcarrier_map[i]] = d_constellation[bits];
>>     /
>>     /}
>>     /
>>     /}
>>
>>     /
>>     For example, using BPSK :
>>     - d_nbits = 1
>>     - d_msgbytes = 94 (0101 1110)
>>
>>     1st loop:
>>     - bits = (0000 0001) & (0101 1110) = 0  // takes right-most bit
>>     - d_bit_offset = 2
>>     - out[..] = d_constellation[0]
>>
>>     2nd loop:
>>     - bits = (0000 0001) & (0001 0111) = 1
>>     - d_bit_offset = 4
>>     - out[..] = d_constellation[1]
>>
>>     3rd & 4th same like above.
>>
>>     In this example, it just takes odd parts of byte (0, 1, 1, 1).
>>
>>     How can receiver deduce even part (1, 1, 0, 0) ?
>>
>>     I don't know why /d_bit_offset += d_nbits/ double times, not an one.
>>
>>     Is this related with two mapping & preamble blocks ? (I/Q ch?)
>>
>>     If right, these two mapping handle even or odd part of byte
>>     respectively ?
>>
>>     Thanks.
>>
>>


This is admittedly frustrating from a new-user perspective that we have "examples" of how to do a thing and then we tell you  not to use it when you ask about it. Hopefully as we get more serious about 3.8 we can start to revamp examples in our next branch to show off better ways.

For now Marcus and Martin have given pretty good suggestions for this particular case.

Nathan

reply via email to

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