I have been trying to implement a transmitter receiver flow graph which uses 16 QAM. I am using a USRP B200 as the transmitter and a RTL-SDR as the receiver.

I used uhd_packet_tx.grc and uhd_packet_rx.grc found in gnuradio examples. I changed the packet_rx block to work with 16 QAM by replacing the Costas Loops from the packet_rx with Constelation receivers (I read in GNURadio tutorials that Costas loop does not work with QAM) and also, added a CMA equalizer and a LMS DD equalizer following the PolyPhase Clock Sync block. I'm posting the screenshot of the my flowgraphs and the plot of the output from the LMS DD Equalizer to a constellation sink here. I would be really grateful, if someone could point out the mistake I'm making. Am I missing something? 16QAM FlowgraphOutput of LMS DD EqualizerModified packet_rx

I'm not a signal processing person, so kindly pardon me for any mistakes in my flowgraph.

  • $\begingroup$ why the two equalizers in series? Unless you're doing this over a rather long transmission distance, you should hardly need any equalizer at all, considering your very low signal bandwidth of 1/28 MHz! $\endgroup$ Jun 14, 2020 at 7:36
  • $\begingroup$ Without the equalizers all I get after the polyphase clock sync is a cloud of samples. After adding the two equalizers in series i was able to get an unstable constellation of 16 QAM. Either way, I am still not able to get any message at the receiver end. Could you please help me find a possible solution? I would really appreciate it. @MarcusMüller $\endgroup$
    – vperekadan
    Jun 14, 2020 at 14:25
  • $\begingroup$ Ok, but that doesn't answer why your channel needs to be equalized, which you will really need to know to successfully employ any equalizer. Also, two equalizers in series is really rarely the appropriate solution. It's been a long time since I've looked at the paper cited in the CMA's docs, but I think if at all, that equalizer should come before clock synchronization. And the fact that you see a constellation at the output of the LMS DD equalizer tells you little about whether there's actually data in there (it will always find coefficients that make it look like there's the constellation $\endgroup$ Jun 14, 2020 at 14:44
  • $\begingroup$ you asked for), so I'm nearly certain that you adding equalizers "just because" is doing harm, not good. (also, the LMS DD is deprecated - don't use it at all.) $\endgroup$ Jun 14, 2020 at 14:44
  • $\begingroup$ so, arbitrary guess here: the whole thing is way more broken, and you need to really verify every single step in your receiver signal chain. You sadly don't show what's attached to your "in" virtual source; and there's a few steps there that would be critical for successful reception. Again, unless you can really explain how a channel would introduce ISI in your signal, you don't need an equalizer. But you do need a frequency synchronization; so you can't do without that. $\endgroup$ Jun 14, 2020 at 14:48


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Browse other questions tagged or ask your own question.