discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] PSK Mod/Demod Questions/Issues


From: Jason Noble
Subject: Re: [Discuss-gnuradio] PSK Mod/Demod Questions/Issues
Date: Fri, 22 Jan 2016 14:29:55 +0900

Firstly, thanks for the prompt assistance.

"The modulator expect /packed/ bytes, so what you are providing it with is a lot of 0's."

But I have an Unpacked -> Packed block set to MSB before the modulator. So with the Vector Source generating a sequence of (1,0,1,1,0,0) it should be packing bytes as follows:

1xxxxxxx  10xxxxxx  101xxxxx  1011xxxx  10110xxx  101100xx  1011001x  10110010  <--so that 1st byte received by the modulator is 50% 1's, then...
1xxxxxxx  11xxxxxx  110xxxxx  1100xxxx  11001xxx  110010xx  11001011  11001011 <--2nd byte is 62%% 1's....
0xxxxxxx  00xxxxxx  001xxxxx  0010xxxx  00101xxx  001011xx  0010110x  00101100 <--3rd byte is 37% 1's... and then the sequence repeats. Correct?

"Set the random source to produce values of [0, 256)."

That's how it is currently configured, and produces a messy output.

"Most likely, we'll be using the Constellation Modulator block and remove both DPSK and PSK Mode blocks."

Ok, good to know. I've updated my flowgraph with the Constellation Modulator block.

"Which block exactly? There's the "BER" block from the Error Coding category that comes with GNU Radio"

I was using the "Error Rate" block from the Misc category. I've switched to the BER block you mentioned and I get an error rate of roughly 50% with the default settings and then flowgraph still freezes after a few seconds.

"You really want to reduce this value (< 10, usually 2 to 4 is good enough) and handle the upconversion for the FHSS in a different way down the line. Basically, keep your sample rate as small as possible for as long as possible."

Hmmmm, looks like I've got some reading to do....

At any rate, I've attached an updated GRC. In its current configuration, I have constellation sinks showing the output at each block in the receiver. Everything seems to work correctly and you can see the constellation clear up. If I simply disable the Vector Source and Unpacked->Packed blocks and enable the Random Source.....the constellation becomes a cloud after the CMA Equalizer. I've fiddled with the sample rates and it seems the constellation significantly worsens somewhere around 6e5-7e5 samples....roughly 10x2^16....I'm not sure what to make of that.

-Jason


On Sun, Jan 17, 2016 at 1:06 AM, Tom Rondeau <address@hidden> wrote:
On Fri, Jan 15, 2016 at 3:59 PM, Jason Noble <address@hidden> wrote:
I'm working on a BPSK transceiver/modem. This is meant to be a hierarchical block for an FHSS ad-hoc network, but right now I'm tweaking some of the settings and testing it on a single frequency. The pulse shape should be roughly 50kHz to fit in my 50kHz sub-channels for the FHSS system. If the sample rate seems high, it's because I will (eventually) combine it with a bladeRF, and the bladeRF's minimum bandwidth is 1.5MHz, so I set the sample rate to 3MHz and have been adjusting the samples per symbol to get the system working.

I THOUGHT I had everything worked out (flowgraph attached is this baseline configuration) until I attempted these changes (these are all individual A/B tests compared to the flowgraph). Note:  some of the disabled blocks require gr-mac. I'm running the development version of GNU Radio (GRC states: 3.7.10git-31-gb17bcb88) on Lubuntu Xenial.

1. This is the most baffling issue for me: if I change the number of bits in the vector input to (1,0,1,1,0) or something, basically changing the length of the bit sequence before it repeats, the output constellation collapses to only ONE of the two BPSK points. Why? If the vector is outputting single bits, and those bits go through the packer to make full bytes regardless before being output to the next block, why is the received signal changing so much?


The modulator expect /packed/ bytes, so what you are providing it with is a lot of 0's. With the sps you're using (below), you might only be seeing a snapshot of a sequence of zeros.

 
2. Likewise, if I enable the random source and disable the vector/byte packer blocks, the received constellation is a giant noisy cloud. 

Again, probably a packed vs. unpacked problem. Set the random source to produce values of [0, 256).

 
3. What is the difference between the DPSK Mod block and the PSK Mod block with "Differential Encoding" set to "Yes"? Can we get the distinction worked into the documentation?


It's the same, just different representations. We are going to be removing a lot of this superfluous digital mod stuff in future versions to simplify things for everyone. Most likely, we'll be using the Constellation Modulator block and remove both DPSK and PSK Mode blocks.

 
4. When I set the PSK Mod block for Differential Encoding, the constellation becomes a unit circle. If I understand the PSK Demod tutorial on the GNU Radio site, the Costas Loop is supposed to correct for this, yes? But I've put in a slider to adjust the loop bandwidth and it seems to do nothing.


This definitely works, so I'd guess its a settings or setup problem.

 
5. If I increase the samples per symbol past ~30, I get the following error:
sched: <block pfb_clock_sync_ccf (9)> is requesting more input data
  than we can provide.

I had another flowgraph with all of the blocks before/including the pfb configured exactly the same and it ran with sps = 100 just fine. Also, sometimes if I closed GRC and reopened it, it would run with no problems.


Strange that it would work at 100 and not 30, I agree. But that's an awfully high value for the number of samples per symbol, and it's much higher than we had planned for when making the blocks. That's really going to affect the behavior even if it runs. You really want to reduce this value (< 10, usually 2 to 4 is good enough) and handle the upconversion for the FHSS in a different way down the line. Basically, keep your sample rate as small as possible for as long as possible.

 
6. If I enable the Bit Error Rate block (so I can do something more robust than a cursory visual inspection of the time sink).....the flowgraph freezes almost instantly.


Which block exactly? There's the "BER" block from the Error Coding category that comes with GNU Radio, but I've seen others out there as well. For the BER block, make sure you understand the settings.

 
Thanks for any assistance....I'm really struggling to finish my Master's thesis (<30 days now), and while I can handle troubleshooting/debugging C++ the RF stuff is still immensely frustrating.

Good luck!

Tom


Attachment: psk_baseline_config.grc
Description: Binary data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]