Hi all!For me is very interesting can I use FFT for filtering purposes or I should only use FIR convolution? And if FFT is useful in that case, there is a boundary between it and for for the effective usage in terms of resource usage and so on.
--- Quote Start --- Thank you very much, kaz! So as I understand FFT is inefficient for filter design, what is the purpose for using fft megacore produced by altera? --- Quote End --- to make money. You will need it for some applications that required moving from time domain to frequency domain or vice versa e.g. cofdm mod/demod
We use the FFT for channelization of the spectrum. The core is now free with the subscription version of quartus. So if you have the subscription version, you can try it out.If you are doing more than 5-10 channels the FFT will be the better solution. We are using it to do 127 channels. Is it the most efficient resource for what you are doing? Don't know. but can it be done? Yes. Pete
Thank you, Pete!And why you don't use FIR? It also have multiple channels. It will be very interesting if somebody will tell the way he use the core in practice.
--- Quote Start --- Thank you, Pete! And why you don't use FIR? It also have multiple c It will be very interesting if somebody will tell the way he use the core in practice. --- Quote End --- If I understood Pete: For one signal you can do one fft first then for each channel (filter) you set its stopband to zero and do ifft per channel. So still plenty of resource and delay of framing fft/ifft.
--- Quote Start --- If I understood Pete: For one signal you can do one fft first then for each channel (filter) you set its stopband to zero and do ifft per channel. So still plenty of resource and delay of framing fft/ifft. --- Quote End --- 1) Framing delay can be reduced to zero by using tricky algorithm of convolution (based on dividing impulse response in parts). This article is about - http://www.cs.ust.hk/mjg_lib/bibs/dpsu/dpsu.files/ga95.pdf. But this algorithm (as i understood) is targeted for DSP processors foremost. 2) Resource utilization is more complicated problem. There are differerent ways of implementation of FFT in FPGA (i mean implementations of both methods - DIT/DIF and pipelined FFT), some of them expected to be more efficient than Altera IP Core. But in my opinion using FFT convolution in FPGA instead of FIR in case of low sampling rate of signal (relative to system clock) is not efficient way of using internal resources.
The system has multiple channels, that all need to be decoded simultaneously.They are simple modulations, IE: AM, OOK, FM, GFSK, FSK, and although it can be extended to QAM, etc, the system doesn't require this yet. The FFT is used to channelize the system. and the rest of the bit decoding is done in the frequency domain. There are some simple lowpass IIR filters used in the system, but the maximum clock rate is not as high as what would be required to do true FIR filters for 127 channels. (Either need lots of multipliers, or to run the multipliers extremely fast.) For the simplest case, AM/OOK, the output of the Real and Imaginary output of the FFT is going through a square root function to give magnitude. This is based through a low pass filter giving a slow DC average. This passes through a bit slicer giving 1's and 0's that then pass into a correlator looking for the sync word of the incoming packet. Since I'm decoding in the frequency domain, I'm not filtering in the typical sense. I have worked on systems in the past where a FFT is performed, bins are masked, then an IFFT is performed, but that was used for a system where they need the time domain back, but wanted to apply a complex comb filter. Pete
Lower frequency and/or lower hardware resources.In my use case, I am basically using 1 windowed 256 point FFT that is acting like 127 individual band pass filters and demodulators. The amount of hardware required to do this with classical fir filters is large or must be ran at extreme clock rates. That being said the windowing plays a critical roll in the "achieved" filtering. If you do not window the incoming data, the channels will interfere with each other (Basically you have a very poor band pass filter) because of the discontinuities at the FFT data boundaries. Using a WOLA (basically having a larger window than your FFT size) technique to can achieve great results. Pete