I have been trying to send and receive higher order constellations than
bpsk (qpsk, qam16, …). The way I’m currently implementing this (in
c++) is that I have a custom “pack_k_bits_bb(int bits_per_symbol)”-
block and then feed the result into a “gr_chunks_to_symbols_bc”- block,
and then onward in the transmitting chain.
On the receiving side, I use a “constellation_decoder_cb”- block
followed by a “gr_unpack_k_bits_bb”- block to get the bits back.
This approach assumes that there are less than 8 bits per symbol, and
that the input to the transmitting chain is unpacked bytes, which is
also produced by the receiver.
The question is now, how do you produce constellations with more than 1
bit per symbol? Is there a better way to do this? Sure if one want to,
for instance, read from a file/device the input should be packed bytes,
but if the input to the transmitting chain is a “gr_scrambler_bb”-
block… This is one way of doing it.
Comments and suggestions on how to do this in other ways are most