I got a task where I have to monitor wide range of frequency spectrum (500 MHz). If any transmission happens in that band, I need to extract as much as possible information about that signal (power, center frequency, bandwidth, duration). My first idea was to compute FFT and analyze each bin with predefined threshold value to achieve some kind of energy detector but I assume that there are more robust ways to do that.
If anyone has seen nice articles or knows how to tackle this problem, I would be glad.
Thanks in advance and happy New Year for all of you!
Just searching the web for a few minutes, I stumbled on this thesis on spectrum sensing for cognitive radio:
To give you an idea, I can suggest you to examine a reference solution. Keysight has a software making spectrum monitoring, this may give you some ideas
Your idea to compute FFT and analyze each bin with predefined
threshold value to achieve some kind of energy detector is OK and what Keysight do in their software. Max. FFT Bandwidth will depend on ADC that you will use. Keysight solution is very complicated, you may need only some basic features. But mainly you will need to realize DDC + FFT + Energy Detector and Energy History. If any unlicensed emissions are needed to be captured also, then modulation recognition should be realized which is more complicated.
I assume you can first detect the time domain power on/off state from a threshold using continuous averaging power meter . An "on" segment can then be captured and analysed in frequency domain using fft of suitable resolution. For such segment you only need enough length representing the transmission stage and suitable for expected frequency resolution.
Thank you for your answer. So you are suggesting that first step is to calculate power in 500 MHz band and if detected power is greater than some threshold value (lets say that its 3 dB greater than theoretical noise in 500 MHz band) then it means that some transmission occurred and further processing needs to be done. Is it correct?
Then we could run FFT and try to find FFT bins that fall into potential transmission spectra range. Right?
Yes that is what I suggested.
step1: detection in time domain of your 500MHz Bandwidth (filtered from either side). Discard anything above random noise (or bursts of noise/interference) and check duration of on/off states.
step2:capture a segment within that transmission state and do fft. You can do that on one segment or multiple segments averaging the fft output.
What do you mean by saying: "filtered from either side" ?
Discard anything above random noise? Sorry but I dont get it. The point is that, I should take into account everything that is above random noise. The program has to monitor the spectrum and find possible transmission.
If I misunderstood something, please correct me.
Yes, 500 MHz is my focus span and this is already in baseband but I still have a feeling that we don't understand each other. ADC has antialiasing filters so its not possible to see any signals that are out of 500 MHz span range. RF processing in analog domain which is responsible for down-conversion and digitizing signal is already done. In digital domain, I need to find possible transmissions in 500 MHz band. Simply, I receive samples that are sampled with Fs = 650 MHz. In this wide spectrum there is an LTE/NBFM/Tetra/WiFi or any other possible transmission. The task is to estimate at which frequency transmission occurred and what is the bandwidth of the transmission.
If I missed something, please let me know.
That is ok. The RF side gets the job done for you. From the forum perspective I don't see your RF setup or may be I missed reading details.
Perhaps you can use a sliding DFT with the Goertzel algorithm and monitor in the frequency domain. There are limitations of course. It will help if you can provide some more details of the time series, and the frequency range.
If it comes to details, input samples will be complex and present 500 MHz bandwidth. Task is to find transmissions in whole 500 MHz spectrum. I would like to implement this in Matlab/Octave. Your idea is interesting, I will deep into that and go back to you.