BFSK Generator on GNURadio

Introduction

In previous posts I have looked at various aspects of GMDSS/DSC using Scicos. In this post I look at a BFSK generator for DSC VHF using GNURadio. The advantage of GNURadio is that it can be directly interfaced with the RTL-SDR and can decode in real time.

GNURC Schematic

Fig.1 BFSK Generator for DSC VHF in GNURadio Companion
ParameterDSC VHF BFSK
Fc = VCO Center Frequency
Phase Continuous BFSK
1700Hz=10681.415rad
F mark2100Hz=13194.689rad
F space1300Hz=8168.1409rad
Constants: ca &cm
((1xca)+cm)wc=w1
((0xca+cm)wc=w2
cm=w2/wc=0.7647059
ca+cm=w1/wc=1.2352941
ca=.4705882
Fig.2 VCO Parameters for Sensitivity, Fmark, Fspace
Fig.3 VCO Test Circuit Fmark
Fig.4 VCO Test Circuit Opt Fmark=2.1KHz

Figure 1 shows the BFSK Generator GNURC schematic. The key component is the VCO. It’s main parameter is the sensitivity in rad/sec per volt. Using two constants (additive and multiplicative) the Fmark and Fspace frequencies can be generated. Fc the center frequency is set for 1volt = 1700Hz. Fmark will be generated by an input voltage of 1.2352941 and Fspace will be generated by an input voltage of 0.7647059. Figure 2 lists the parameters used to calculate ca & cm. This generator is completely analogous to the one developed in Scicos (Ref.3).

Figure 3 shows the VCO test circuit. The VCO is fed by either a hard “1” or hard “0”. Figure 4 shows the Fmark=2100 output for a “1”.

Random Data Generator

Fig.5 Random Data Generator
Fig.6 VCO Output for Random Data Input

Figure 5 shows the schematic used to generate random data to drive the VCO. In Scicos I wrote a script file to create a data file, the same could be done in Python. In this case, I used the Random Source and applied S/H twice using a square wave for the data clock at 1200bps. The first S/H selects either 0 or 1 during the low portion of the square wave. The second S/H suppresses the multiple pulses during the first half of the square wave (the second square wave clock delayed by pi or half bit period). The Random Data Generator feeds a File Sink block that stores the data generated.

Fig.7 BFSK Generator on GNU Radio


GNURC Files Download

GNU Radio Basics Course

Please send your comments, questions and suggestions to:
contact:

YouTube Channel
YouTube Channel

References

#1. – “Marine GMDSS/DSC VHF Decoder_a”
https://jeremyclark.ca/wp/telecom/marine-gmdss-dsc-vhf-decoder_a/

#2. – “RTL-SDR for HF Marine GMDSS/DSC on SDRangel”
https://jeremyclark.ca/wp/telecom/rtl-sdr-for-hf-marine-gmdss-dsc-on-sdrangel/

#3. – “VHF Marine GMDSS/DSC Decode & Scicos Simulation”
https://jeremyclark.ca/wp/telecom/vhf-marine-gmdss-dsc-decode-scicos-simulation/

#4. – “RTL-SDR for HF Marine GMDSS/DSC”
https://jeremyclark.ca/wp/telecom/rtl-sdr-for-hf-marine-gmdss-dsc/

#5. – “RTL-SDR for Marine GMDSS/DSC on RaspberryPi4”
https://jeremyclark.ca/wp/telecom/rtl-sdr-for-marine-gmdss-dsc-on-raspberrypi4/

#6. – “RTL-SDR for Marine GMDSS/DSC on Multipsk”
https://jeremyclark.ca/wp/telecom/rtl-sdr-for-marine-gmdss-dsc-on-multipsk/



By Jeremy Clark

Jeremy Clark is a Senior Telecommunications Engineer and Advanced Amateur Radio Operator VE3PKC. He is the author of E-Books on Telecommunications, Navigation & Electronics.