DSPRelated.com
Forums

Optimal detector for the frequency hopping modulation

Started by kman 5 years ago7 replieslatest reply 5 years ago173 views
I have a device, which transmits a signal of constant amplitude, and a frequency, chaotically hopping over predefined set of frequencies. For example: F0+500 F0+800 ... F0+4,700 F0+5,000 Hz (increased by 300 Hz), where F0 is 90 MHz for example. Frequency of hopping Fh is 20 kHz for example. At any given point of time only one frequency from the set is transmitted. Receiver knows those shifts 500 800 ... 4,700 5,000 Hz, and Fh, but doesn't know F0 and doesn't know the sequence of hopping - the latter must be actually received. 

What is the best detector to do that? Somebody would say: any single side band detector will work, for example QSD (Quadrature Sampling Detector). Not exactly: it receives everything in its passband, because it doesn't know what to receive. If it is tuned to, say 91 MHz, it receives some noise, whatever is there. Optimal detector should produce nothing in that case, until it is tuned to 90 MHz and the signal with frequency hopping over predefined set above is discovered. Any guidance in right direction will be appreciated.


[ - ]
Reply by dudelsoundAugust 6, 2019

That sound like frequency shift keying to me - so google "FSK detector" or "FM demodulation" or "superhet" for hints.

[ - ]
Reply by kmanAugust 6, 2019

Yes, it reminds me kFSK, where k is the number of frequencies, 16 in my example F0 + [500:300:5000] . There is a lot of theory about 16FSK, but no information on how to implement such a detector in hardware.

[ - ]
Reply by dudelsoundAugust 6, 2019

You can always do direct conversion of the RF signal (sample RF signal at very high rate and do demodulation in digital domain) if you have the power and the money.

A simple and cheap way would be to mix down the rf signal to 10.7MHz in analog hardware (check 'superhet'), use standard IC solutions for filtering and FM demodulation (car radio tuner ICs are available like the sand at the sea) - those usually take an RF signal with a carrier frequency of 10.7MHz and perform FM demodulation - in other words, they output your 16 Frequencies as 16 amplitude steps - this you can sample with a standard microcontroller ADC operating at more than 2*20kHz sampling rate.

Still - you would have to either peform symbol synchronisation (if you have control over the sampling clock) or oversample the signal strongly and chose sample point that will give you good SNR. For symbol synchronisation google "Gardner" and "Early-Late-Gate" 

[ - ]
Reply by dgshaw6August 6, 2019

I have to confess that I am a little confused by the question.

You mention random hopping over a range of F0 + [500:300:5000]

The you mention another type of hopping over F0 = N*20kHz

Can you please clarify and tell us the range of N, and the range of F0?

Also, what sampling rate do you have available?

[ - ]
Reply by kmanAugust 6, 2019

Random hopping is happening with the constant rate, which is 20 kHz in my example.

I don't have sampling rate for now, I consider the analog RF signal, as generated by DDS chip AD9959 under control of STM32F745 microcontroller.

[ - ]
Reply by kmanAugust 6, 2019

Probably tone filters with envelope detectors, on the intermediate frequency, would work in this case.

[ - ]
Reply by napiermAugust 6, 2019

One way to do this is with a channelizer.  Sample, (or re-sample) your signal so that the tone's spacing will naturally fall into the center of the bins of an FFT.  Note that the FFT does not have to be a power of 2.

Design the channel filter to give good adjacent channel separation.


Check out this paper:

fred harris, Elettra Venosa and Xiofei Chen, “A novel M-FSK modem architecture based on perfect reconstruction NMDFBs” 2015 49th Asilomar Conference on Signals, Systems and Computers, Pages: 1174 - 1179, 2015.

Note that the output from the channelizer is "serial".  That is you get a set of "bins" every time the FFT is run.  So a single thread (or bit of RTL) can be used to process the output to determine which bin is hot.  Implementation left as an exercise for the user...