[Top][All Lists]

 From: SangHyuk Kim Subject: Re: [Discuss-gnuradio] Why add d_nbits two times at ofdm_mapper_bcv ? Date: Thu, 26 May 2016 14:20:27 +0900

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 :
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.