777arc/PySDR

C4FM Modulation in Python

Closed this issue · 6 comments

Hello , i'm trying to implement C4FM modulation ( input symbols -> raised cosine filter -> inverse sinc filter-> FM Modulator). What should i write in the code in python to get the desired output c4fm modulated waveform?

Are you looking specifically at P25 signals?

I would check out this software https://github.com/robotastic/trunk-recorder and their Discord https://discord.gg/btJAhESnks where folks may be able to better help you out

Thank you so much for your valuable reply , but i want it in basic python and don't want it for GNU radio.

If the following tx block diagram is correct (from https://www.mathworks.com/help/comm/ug/p25-spectrum-sensing-with-synthesized-and-captured-data.html) then you should be able to recover the signal with only an FM demod, because the RC filter and inverse sync filter shouldn't be 100% required, they just help shape the output. So if you can get a recording of a high SNR P25 signal, try FM demoding it in python and plot the output to see if you see 4 distinct levels. Make sure the signal is centered at 0 Hz before the FM demod.

image

FM demod

df = 1.0 # normalized frequency deviation
phase = np.arctan2(np.imag(x), np.real(x)) # tan-1(Q/I)
out = np.diff(np.unwrap(phase)/(2 * np.pi * df))

Feel free to reopen if you want more help