If you are modulating a bitstream what are you are really doing is 2-FSK in 
this situation, not traditional analog FM - so that may help you find the 
definitions you are looking for a bit easier.

If you want a modulation index of 2 and your rate is 1200K then you want the 
difference between the high and low frequencies to be 2400KHz.

Take a look at the example FSK mod/demod flowgraph on the 
wiki<https://wiki.gnuradio.org/index.php/Simulation_example:_FSK> -> it 
explains the 'sensitivity' parameter.

Kyle Logue
Senior Engineering Specialist
⚝ The Aerospace Corporation
________________________________
From: Discuss-gnuradio <discuss-gnuradio-bounces+kyle.a.logue=aero....@gnu.org> 
on behalf of Anthony <anthonyld...@gmail.com>
Sent: Monday, April 4, 2022 00:23
To: Discuss Gnuradio <discuss-gnuradio@gnu.org>
Subject: FM Transmitter tuning issue (pre-emphais, modulation index..)

Hello all,

I am implementing a FM Transceiver following this prerequisites :

Frequency modulation with a pre-emphasis of 6 dB/octave (phase modulation) with 
frequency-shift of the modulating sub-carrier :
– frequency-shift between 1 300 and 2 100 Hz; the sub-carrier being at 1 700 Hz;
– the frequency tolerance of the 1 300 and 2 100 Hz tones is  10 Hz;
– the modulation rate is 1 200 (bit/s) * (1 ± 30 * 10−6);
– the index of modulation is 2.0  10%.

To implement the frequency modulation, I've followed the example based on the 
use of a VCO in GNU Radio :
https://wiki.gnuradio.org/index.php/VCO
with these parameters :
- full-scale frequency of 3000 Hz -> VCO sensitivity of 2*pi*3000 (I chose 3000 
to fit my 2 frequencies of interest).
- I adapted the Multiply and Add Const block to set the space/mark frequency to 
1300 and 2100 Hz.

The input of the VCO is quite the same as in the example : I am sending bursts 
of bytes from a ZMQ socket that pass in a Repeat Block to be interpolated 40 
times.
I have managed the sample rate with a USRP B210 at the end, so that the input 
sample rate before the Repeat block is 1200 (1200x40 = 48 KS/s, 48 KS/s being 
the VCO's sample rate).
I then interpolate the output signal of the VCO using a Rational Resampler to 
match the sampling rate used in the USRP block (960 kS/s).

In this scheme, I don't know if I have the right approach to implementing this 
modulation. Especially :
- How the pre-emphasis is added in this scenario, where my input data has a 
rather constant frequency (bitstream at 1.2 kHz) ?
- How is the modulation index set (which variables can affect it ?). I've found 
a definition like this : m = deviation frequency / modulating frequency
-> deviation frequency is +/- 400 Hz to me (around 1.7 kHz)
-> modulating frequency is 1200Hz (as the symbol rate equals the bitrate here)
So my modulation index is 1/3, quite far from 2. I surely misinterpret it, and 
my output signal in frequency is quite thinner than an expected signal.
What parameters could I use in my implementation to set it to 2 ?

I outputted the resulting signal, which is quite thinner but still I see pics 
at 1.3 and 2.1 kHz, and I'm able to demodulate it and recover my data on a RX 
path.

I think I got some obvious things wrong in my FM transmitter.
If you have some resources or advices to point me in the right direction, 
that'd be useful! :)

I am using GNU Radio 3.8.5 (maint branch) and UHD 3.15.

Anthony

Reply via email to