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.
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio