FPGA Intellectual Property
PCI Express*, Networking and Connectivity, Memory Interfaces, DSP IP, and Video IP

IFFT Info !

Altera_Forum
Honored Contributor II
1,218 Views

Allo, 

 

I would like to have a output of 8192 samples @ 16bits real only with IFFT core. 

I have a input of 4096 samples@16bits in real only (imaginary is 0) !! 

 

It's correct ? 

 

I set the Transform length to 8192 @16 bits and 8 bits twiddle !!! 

It's correct or the Transform length must be 4096 to produce 8192 output in IFFT Mode ? 

 

Thank you 

Jean
0 Kudos
6 Replies
Altera_Forum
Honored Contributor II
386 Views

No you can't. 

Given 4096 points vector in frequency domain(before ifft) your frequency points are relative to your vector size. By doubling the transform you create distortion. 

 

If you have Matlab, you can see: 

 

x= real(fft(cos(2*pi**1/10))); % example of your input y1= real(ifft(x)); y2 = real(ifft(x,8192)); plot(real(y1(1:200)));hold plot(real(y2(1:200)),'r') 

 

Don't get mixed up with zero padding of time vectors or increasing fft resolution(this is possible) 

 

An alternative for you is to to repeat a copy of 4096 samples mirrorwise then do ifft on 8192 points, this is equivalent to upsampling in time domain.
0 Kudos
Altera_Forum
Honored Contributor II
386 Views

Ok, 

 

If I understood it,  

I must have a input vector of 8192 points ( 4096 samples + 4096 to zero) ? 

 

Jean
0 Kudos
Altera_Forum
Honored Contributor II
386 Views

It will help if I know why you think your input vector is 4096 points(this can't be arbitrary, I mean you are in frequency domain and frequency content is dependant on the grid). So make sure what you are after before getting sucked into further complications. 

 

For example a vector indexed 1:100 in the frequency domain implies: 

frequencies [0: .5Fs] are represented by values indexed 1:50(positive frequenies) 

frequencies from [.5Fs:Fs] are represented by values indexed 51:100(also means negative frequencies).  

For real signals, the values indexed 1:50 must be a reflection copy of values indexed 51:100(symmetrical) 

 

In other words your original 4096 vector must make sense. And your 8192 can't be constructed by zero padding(your original vector must show reflection around midpoint of 4096/2, then you must reflect around new midpoint for new resolution at 8192/2).
0 Kudos
Altera_Forum
Honored Contributor II
386 Views

My design is very simple, 

 

I want to make a OFDM transmitter with 4096 carriers in natural order 

Index(0) = frequency 0 

Index(1) = frequency 1 (12.207 kHz) 

Index(4095) = frequency 4095 (50MHz) 

 

My sampling rate is 100MHz and no négatif frequency 

 

------------------------------------------------------------------------------------------------------------------------------------------------------- 

Also, I try to simulate in fonctional mode and the FFT core not work! 

 

In burst mode, Sink_ready signal is still high (active) and according to the doc, it should be active only for the length of a block (FIFO) and this length, I do not know !!!!! 

 

Do you have a idea about this ? 

 

Thank you to help me.
0 Kudos
Altera_Forum
Honored Contributor II
386 Views

I don't know about your IP core but can talk cofdm theory: 

 

Your vector is 4096 points, Your Fs = 100MHz , your target is that first point on this grid(frequency 1 after dc) = 12.207KHz 

 

All you have to do is think of an input that has a grid of 8192 in the first place. Then you set this vector to values for amplitude at all frequencies up to 50MHz: 

 

(100MHz * 1/8192 = 12.207KHz). 

(100MHz * 4096/8192 = 50MHz). 

 

If you are constructing the vector then yes you first think of 4096 then make amplitudes beyond 4096 a reflection of 1:4096 as below 

 

vector_8192 = [1:4096 4096:1] 

 

Though strictly speaking I believe, the dc value should not be repeated at reflection.
0 Kudos
Altera_Forum
Honored Contributor II
386 Views

The IP core is the Altera IP core version:  

core version v9.0 Build 235 release date February, 2009 ordering code(s) IP-FFT product id(s) 0034 vendor id 0x6AF7  

The 4096 to 8192 Is to meet nyquist theorem 

 

 

0 Kudos
Reply