Hi all,
I'm tracing how OFDM modulation is done by /ofdm/benchmark_tx.py.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];
d_bit_offset += d_nbits;
d_bit_offset += d_nbits;
out[d_subcarrier_map[i]] = d_constellation[bits];
}
}- 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.
- 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.
No comments:
Post a Comment