User:Duggabe: Difference between revisions

From GNU Radio
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
= Simulation example: BPSK Demodulation =
= Simulation example: BPSK Demodulation =


This tutorial is a follow-on to the [[Guided_Tutorial_PSK_Demodulation|'''Example Usage of GNU Radio: PSK Modulation / Demodulation''']] tutorial to present the use of BPSK rather than QPSK. <b>It is imperative that all</b> of the prerequisites are studied before doing this one.
This tutorial is a follow-on to the [[Guided_Tutorial_PSK_Demodulation|'''Example Usage of GNU Radio: PSK Modulation / Demodulation''']] tutorial to present the use of BPSK rather than QPSK. <b>It is imperative that all</b> of the prerequisites are studied before doing this one. Only sections which differ from the QPSK tutorial are discussed in detail.


== Prerequisites ==
== Prerequisites ==
Line 30: Line 30:
== Adding Channel Impairments ==
== Adding Channel Impairments ==


Adding channel impairments is exactly the same as described in the QPSK tutorial section [[Guided_Tutorial_PSK_Demodulation#Adding_Channel_Impairments|Adding Channel Impairments]].
Adding channel impairments is the same as described in the QPSK tutorial section [[Guided_Tutorial_PSK_Demodulation#Adding_Channel_Impairments|Adding Channel Impairments]].


== Recovering Timing ==
== Recovering Timing ==


Here is the output for the BPSK:
Recovering timing is the same as described in the QPSK tutorial section [[Guided_Tutorial_PSK_Demodulation#Recovering_Timing|Recovering Timing]].


[[File:Bpsk_stage3_out.png|800 px]]
== Phase and Fine Frequency Correction ==
 
Phase and Fine Frequency Correction is the same as described in the QPSK tutorial section [[Guided_Tutorial_PSK_Demodulation#Phase_and_Fine_Frequency_Correction|Phase and Fine Frequency Correction]].
 
Here is the BPSK output screen:


== Phase and Fine Frequency Correction ==
[[File:Bpsk_stage5_out.png|655 px]]


== Decoding ==
== Decoding ==
[[File:Bpsk_stage6_fg.png|800 px]]
[[File:Bpsk_stage6_out.png|800 px]]

Revision as of 16:44, 23 August 2020

Simulation example: BPSK Demodulation

This tutorial is a follow-on to the Example Usage of GNU Radio: PSK Modulation / Demodulation tutorial to present the use of BPSK rather than QPSK. It is imperative that all of the prerequisites are studied before doing this one. Only sections which differ from the QPSK tutorial are discussed in detail.

Prerequisites

Transmitting a Signal

The first stage is transmitting the BPSK signal. We generate a stream of bits and modulate it onto a complex constellation. To do this, we use the Constellation Modulator block, which uses a Constellation Object and other settings to control the transmitted signal.

The constellation object allows us to determine how the symbols are coded. The modulator block can then use this modulation scheme with or without differential encoding. The constellation modulator expects packed bytes, so we have a random source generator providing bytes with values 0 - 255.

When dealing with the number of samples per symbol, we want to keep this value as small as possible (minimum value of 2). Generally, we can use this value to help us match the desired bit rate with the sample rate of the hardware device we'll be using. Since we're using simulation, the samples per symbol is only important in making sure we match this rate throughout the flowgraph. We'll use 4 here, which is greater than what we need, but useful to visualize the signal in the different domains.

Finally, we set the excess bandwidth value. The constellation modulator uses a root raised cosine (RRC) pulse shaping filter, which gives us a single parameter to adjust the roll-off factor of the filter, often known mathematically as 'alpha'.

Bpsk stage1 fg.png

In the constellation plot, we see the effects of the up-sampling (generating 4 samples per symbol) and filtering process. Note that all of the points lie along the In-phase axis. The RRC filter adds intentional self-interference, known as inter-symbol interference (ISI). ISI is bad for a received signal because it blurs the symbols together. We'll look into this in-depth during the timing recovery section. Right now, let's just see what we're doing to the signal. If you are just looking at the transmitted signals from this graph, then you should see that the frequency plot is showing a signal with a nice shape to it and that rolls-off into the noise. If we didn't put a shaping filter on the signal, we would be transmitting square waves that produce a lot of energy in the adjacent channels. By reducing the out-of-band emissions, our signal now stays nicely within our channel's bandwidth.

Bpsk stage1 out.png

On the receive side, we get rid of the ISI by using another RRC filter. Basically, what we've done is used a filter on the transmitter, the RRC filter, that creates the ISI but controls the bandwidth and then another RRC filter at the receiver. When we convolve the two RRC filters, we get a raised cosine filter. The output of the receive-side RRC filter is a raised cosine shaped signal with minimized ISI.

Adding Channel Impairments

Adding channel impairments is the same as described in the QPSK tutorial section Adding Channel Impairments.

Recovering Timing

Recovering timing is the same as described in the QPSK tutorial section Recovering Timing.

Phase and Fine Frequency Correction

Phase and Fine Frequency Correction is the same as described in the QPSK tutorial section Phase and Fine Frequency Correction.

Here is the BPSK output screen:

Bpsk stage5 out.png

Decoding

Bpsk stage6 fg.png

Bpsk stage6 out.png