Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Valued Contributor III
822 Views

Signal Processing

Hi guys, 

 

First of all I would like to thanks everybody for the tips. But now I have another problem. 

 

I am building a receiver and I will use FPGA to process the signal. My receiver has a front -end (antenna) a LNA, filter, and a A/D converter. After the A/D converter I need to process that signal in a FPGA and show the signal spectrum in a PC computer.  

 

I don't know what I can do after A/D converter. I am lost, because I don't know how the FPGA can process the signal. 

 

Does anybody can help me? 

 

thanks
0 Kudos
25 Replies
Highlighted
Valued Contributor III
5 Views

The simplest thing to do is to do fft on the signal from ADC. 

To avoid complex software work for pc interfacing you can capture fft output in signaltap or memory editor and then use a tool e.g. matlab to display result. 

 

You can also do fft on PC if signal slow enough. In this case you only need to capture ADC data directly in signaltap or memory editor. 

 

You will need to enter your frequency axis based on sampling rate of ADC.
0 Kudos
Highlighted
Valued Contributor III
5 Views

Are you building a 'receiver' or 'spectrum analyzer'? A receiver implies you have some sort of signal you are expecting to receive, whereas a spectrum analyzer is used to determine the power vs frequency in the signal being received. 

 

You can check that your ADC works by capturing a block of samples, and then transferring those samples to a PC for analysis. However, you will not get very good signal-to-noise, since you will have such a low processing rate. 

 

You can perform the operations directly on the FPGA. There are two forms of spectrum analysis commonly implemented that achieve maximum SNR; auto-correlation via lag correlation and a polyphase filterbank (basically a filter followed by an FFT). If SNR is not an issue, then you can use an NCO to demodulate your signal, a low-pass filter, and a power detector (multiplier), and sweep the NCO across the input bandwidth. 

 

What bandwidth are you trying to sample? What FPGA are you planning on using? What types of signals are you hoping to receive? How many bits are your ADCs. 

 

Cheers, 

Dave
0 Kudos
Highlighted
Valued Contributor III
5 Views

Hi Dave, thanks for all. 

 

My problem is: I have a frequency range 100 KHz to 3 GHz and I have to detect all signals between that frequency range, for example (AM, FM, GSM, Bluetooh...etc). I need to choice a ADC and implement the signal processing in FPGA. I don't know which ADC I can use. The maximum bandwith that I have to try to sample is 20 MHz, But I don't know how many bits my ADC must have.
0 Kudos
Highlighted
Valued Contributor III
5 Views

How can you sample a 3GHz signal with 20Mhz ADC? 

 

There's something wrong in your specifications. 

If you want to the 3GHz signal you have to sample at more than 6 GHz. 

 

For the numebr of bits, well, if money is not a problem the highest the better. 

You can always neglect the LSBs later.
0 Kudos
Highlighted
Valued Contributor III
5 Views

My especification is correct, But I will do a downconverter frequency before ADC, because I don't get to sample 3 GHz.

0 Kudos
Highlighted
Valued Contributor III
5 Views

nplttr: take a look into bandpass sampling :)

0 Kudos
Highlighted
Valued Contributor III
5 Views

 

--- Quote Start ---  

Hi Dave, thanks for all. 

 

My problem is: I have a frequency range 100 KHz to 3 GHz and I have to detect all signals between that frequency range, for example (AM, FM, GSM, Bluetooh...etc). I need to choice a ADC and implement the signal processing in FPGA. I don't know which ADC I can use. The maximum bandwith that I have to try to sample is 20 MHz, But I don't know how many bits my ADC must have. 

--- Quote End ---  

 

 

You still have not specified what you want to do with the signals. 

 

By 'detect' do you mean demodulate, or just 'detect' power? 

 

The number of bits required from your ADC will depend on what type of signal processing you want to perform. However, a 16-bit 100MHz ADC will likely do anything you want. There are Altera HSMC cards with that feature (Terasic), and some of the Altera DSP kits have 100MHz ADCs. 

 

Are you planning on buying a commercial demodulator? Building a demodulator that takes 3GHz down to DC is a non-trivial task. You will likely need different types of analog front-ends, and switch between them, eg. op-amp based designs from DC to ~100MHz, and RF amplifiers above that. 

 

Of course, you could sample the signal directly, but you would need an ADC with an analog input bandwidth of over 3GHz. National Semiconductor and e2v have GHz clock rate parts, eg. 

 

http://www.e2v.com/products-and-services/hi-rel-semiconductor-solutions/broadband-data-converters/da... 

 

You might be able to find a manufacturer with one of these ADCs on an Altera board, eg. Bittware 

 

http://www.bittware.com/products/hardware/prod_desc.cfm?prodshrtname=3fad-s43x 

 

Depends whether you're looking to build or buy really. 

 

Cheers, 

Dave
0 Kudos
Highlighted
Valued Contributor III
5 Views

Hi Dave, 

 

Thanks for your tip. 

 

You asked me what I will do with the signal, detect and demodulate or just detect the power. 

 

In my case I want just detect the power, not demodulate. 

 

thanks for all
0 Kudos
Highlighted
Valued Contributor III
5 Views

If the ADC output represents a bandlimited signal, calculating the variance will give the total signal power. It's a rather simple algorithm. 

 

The overall problem is however missing many specification details. The questions you are asking can't be answered without a full specification, Furthermore, the way you are asking suggests that you are far from understanding the problem complexity.
0 Kudos
Highlighted
Valued Contributor III
5 Views

Hi people, 

 

I have all details, but which details you want to know. 

 

thanks
0 Kudos
Highlighted
Valued Contributor III
5 Views

I think Filipe gave enough info. He wants to sample some specific signals for spectrum display. The signal will be downconverted to baseband before ADC by someone.  

If this is student project then it is unfair to ask for any full spec. All what is needed is a general purpose ADC that can cover speed well above twice highest frequency expected then do fft inside fpga then display the fft output vectors(Re/Im) on pc.
0 Kudos
Highlighted
Valued Contributor III
5 Views

Thank you Kaz, 

 

That is my problem. I will do a downconverter frequency before ADC . 

 

thank you so much
0 Kudos
Highlighted
Valued Contributor III
5 Views

 

--- Quote Start ---  

I think Filipe gave enough info. 

.. 

If this is student project then it is unfair to ask for any full spec.  

--- Quote End ---  

 

I don't agree. He has been asking e.g. for the required ADC resolution. The question can rarely be anwered from the given information. I would also guess, that a spectral analysis of the input signal is intended, unfortunately it hasn't been said clearly. Just copying the project title would most likely clarify a lot. 

 

At the present state, the appropriate general suggestion is: Start with a digital signal processing text book, e.g. Stearns/Hush.
0 Kudos
Highlighted
Valued Contributor III
5 Views

Hi FvM, 

 

But which information do you want to help me. 

 

thanks
0 Kudos
Highlighted
Valued Contributor III
5 Views

Let us simply assume, that the down conversion has been achieved somehow, also including sufficient filtering to remove aliasing components. So which information do you want to extract from the digitized signal available at the ADC output?

0 Kudos
Highlighted
Valued Contributor III
5 Views

 

--- Quote Start ---  

Hi Dave, 

 

Thanks for your tip. 

 

You asked me what I will do with the signal, detect and demodulate or just detect the power. 

 

In my case I want just detect the power, not demodulate. 

 

thanks for all 

--- Quote End ---  

 

 

The next question is what type of resolution do you want from your spectrum? 

 

Lets say you do use a 100MHz ADC to sample the signal, and you use digital demodulation and decimation to select a 10MHz band. What type of resolution would you like, eg. 1MHz, 100kHz? 

 

You can convert a sequence of time samples into a power spectrum by either lag correlation, or by using the discrete Fourier transform to implement the correlation operation. 

 

You can implement a lag correlator using delays (registers) and multipliers or logic elements configured to act as multipliers. Depending on the signals you are looking at, it may be possible to use low bit width multiplications (which do not require actual multipliers). If however you plan on correlating tones or signals with a lot of RFI, if you sample too coarsely, you will generate harmonics. If your signals are noise-like, then coarse quantization just makes the signals noisier (lower efficiency), but this may be acceptable if you have time available to integrate (average) and recover a SNR that is acceptable. 

 

You can implement a discrete correlation using an FFT. The discrete correlation of an N-point sequence has 2N-1 points. If you want to reproduce this correlation identically using an FFT, you have to pad an N-point sample sequence to at least 2N-1 points, then Fourier transform, and then take the magnitude squared. Many applications can get by with just taking the FFT of an N-point sequence and then taking the magnitude squared of that sequence. In your case, it would be sufficient to use an FFT core, and take the magnitude squared of the output and sum a sequence of outputs to improve the signal-to-noise. Once you read the data out, you can divide by the integration time to normalize it. You will likely need to scale the data into an appropriate power scale. 

 

An N-point FFT will give N/2+1 unique frequency channels, frequency channels 0 to N/2. An (N/2+1) lag autocorrelation, for lags 0 to N/2, can reproduce this same spectrum. 

 

If you want 100kHz resolution for a sampling frequency of 20MHz (10MHz bandwidth sampled), then you want at least 100 channels. Because you are time-limiting your spectra to N-lags, your spectrum will be convolved with the sinc-response of this effective rect function. To improve resolution, you can take the lag response, or the inverse Fourier transform of the averaged spectra, and apply a window function, eg. Hamming window, then Fourier transform to spectra. This window will reduce the sidelobes in the spectra, but it will make the frequency channels wider. So if you want 100kHz resolution in the spectra, you'll need more channels, eg. 200-channels. 

 

If you would like some references on digital signal processing, just ask. 

 

Cheers, 

Dave
0 Kudos
Highlighted
Valued Contributor III
5 Views

Hi FvM, 

 

I have a frequency range of 100 KHz to 3 GHz, I want to show a signal between that frequency range. But, I can do it only in the frequency domain, so I do a FFT after ADC and I show that spectrum in a PC computer. 

 

My problem is only do the FFT because to show it in a PC computer is not me do it. 

 

Am I correct? 

 

thanks
0 Kudos
Highlighted
Valued Contributor III
5 Views

FFT is no problem if you got fft core. Just plug it in choosing your bitwidth and fft resolution.

0 Kudos
Highlighted
Valued Contributor III
5 Views

 

--- Quote Start ---  

The next question is what type of resolution do you want from your spectrum? 

 

Lets say you do use a 100MHz ADC to sample the signal, and you use digital demodulation and decimation to select a 10MHz band. What type of resolution would you like, eg. 1MHz, 100kHz? 

 

You can convert a sequence of time samples into a power spectrum by either lag correlation, or by using the discrete Fourier transform to implement the correlation operation. 

 

You can implement a lag correlator using delays (registers) and multipliers or logic elements configured to act as multipliers. Depending on the signals you are looking at, it may be possible to use low bit width multiplications (which do not require actual multipliers). If however you plan on correlating tones or signals with a lot of RFI, if you sample too coarsely, you will generate harmonics. If your signals are noise-like, then coarse quantization just makes the signals noisier (lower efficiency), but this may be acceptable if you have time available to integrate (average) and recover a SNR that is acceptable. 

 

You can implement a discrete correlation using an FFT. The discrete correlation of an N-point sequence has 2N-1 points. If you want to reproduce this correlation identically using an FFT, you have to pad an N-point sample sequence to at least 2N-1 points, then Fourier transform, and then take the magnitude squared. Many applications can get by with just taking the FFT of an N-point sequence and then taking the magnitude squared of that sequence. In your case, it would be sufficient to use an FFT core, and take the magnitude squared of the output and sum a sequence of outputs to improve the signal-to-noise. Once you read the data out, you can divide by the integration time to normalize it. You will likely need to scale the data into an appropriate power scale. 

 

An N-point FFT will give N/2+1 unique frequency channels, frequency channels 0 to N/2. An (N/2+1) lag autocorrelation, for lags 0 to N/2, can reproduce this same spectrum. 

 

If you want 100kHz resolution for a sampling frequency of 20MHz (10MHz bandwidth sampled), then you want at least 100 channels. Because you are time-limiting your spectra to N-lags, your spectrum will be convolved with the sinc-response of this effective rect function. To improve resolution, you can take the lag response, or the inverse Fourier transform of the averaged spectra, and apply a window function, eg. Hamming window, then Fourier transform to spectra. This window will reduce the sidelobes in the spectra, but it will make the frequency channels wider. So if you want 100kHz resolution in the spectra, you'll need more channels, eg. 200-channels. 

 

If you would like some references on digital signal processing, just ask. 

 

Cheers, 

Dave 

--- Quote End ---  

 

 

Hello Dave, 

 

Thanks for all, 

 

I would like a reference on digital signal processing, because I didn't understand very well what you said. 

 

thanks
0 Kudos