pythonsignal-processinggnuradiognuradio-companionsoftware-defined-radio

Recovering Real PSK


I am trying to transmit and receive a BPSK signal from an Ettus Research N210 to an Ettus Research B200. I run my received signal through gain control, clock sync, and a PLL, then try to demodulate the signal.

Here is my flowchart.

Simulation Flowchart

In simulation (passing the signal through a channel block instead of transmitting from one radio to the other), this flowchart works fine. Below are the results of the simulation. As you can see, the receiver sees the rotated constellation and the processing corrects for this. Everything is fine and the packets are successfully decoded.

Result Plots of Simulation

However, when I transmit and receive from my two real radios, I no longer receive signals that resemble 2-PSK. Instead, the constellation plots of the RX signal just look like blobs.

Here is my flowchart again with the USRP blocks un-commented.

Real Radios Flowchart

And here are the results of the transmission and receive.

Result Plots of Real Radios

I am very confused by the lack of constellation pattern in the received signal. Sometimes when I send a packet, the RX constellation takes on a more orderly oval-looking shape, but it does not look like a line. Unfortunately I was unable to catch the oval pattern on screenshot since it returns to blob pattern very quickly.

I do not think this is a hardware issue because I have successfully used these radios before for UHF GMSK stuff.

Is there something wrong with my timing recovery / processing?

Thanks yall in advance for any and all help.


Solution

  • Found the issue. I had set my sampling rate lower than the USRP's minimum sampling rate. After a day of frustration, I changed my sampling rate to 320k and a few things in my processing block, and now things work and I get a nice looking constellation.

    Here are my updated (working) flowchart and plots.

    New Flowchart

    New Plots