cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
ofdmradar
Observer
Observer
10,756 Views
Registered: ‎01-19-2011

Xilinx FFT v8

Jump to solution
I have a MAT file contains a matrix of size 900 by 4096 where is element is complex.
I want to perform fft by using xilinx fft v8 block.
pls help me in this regard. I am very much new in FPGA.
Anwar
0 Kudos
1 Solution

Accepted Solutions
francism
Xilinx Employee
Xilinx Employee
8,146 Views
Registered: ‎05-23-2008

Get the MAt file and load it into the workspace

Use FromWorkspace to take the data from the worksapce into the simualink environment.

Get system generator and feed the data into a sysgen design. You can either use sysgen FFT, or you bring in the latest FFT via the backbox method into sysgen.

This will allow you to at least test your system.

 

regards

Mike

View solution in original post

0 Kudos
16 Replies
francism
Xilinx Employee
Xilinx Employee
10,746 Views
Registered: ‎05-23-2008

Hi

you could have a look at the datasheet for the FFT on the xilinx website. Also there is a c-model for the core.

 

As you have a mat file I would suggest the use of system generator,.

 

Mike

0 Kudos
ofdmradar
Observer
Observer
10,742 Views
Registered: ‎01-19-2011

Thanks for reply.

 

How can I upload data from mat file, should I use ROM from xilinx blockset? pls suggest me.

Anwar
0 Kudos
ywu
Xilinx Employee
Xilinx Employee
10,699 Views
Registered: ‎11-28-2007

What's your application?

 

What's the data format you're planing to use on HW: fixed point (data width) or floating point (single or double precision)?

 

What's the required FFT frame size? Note that the FFT core supports frame size up to 64K.

 

Are you doing simulation only or do you have a FPGA board to test your design?

 

In any case, the on-chip memories are probably not enough to hold the entire 4096x900 matrix. Even if they were, it is not very interesting to process static data stored in ROM. You need to find other ways to get data to the FFT core.

 

 

 

 


@ofdmradar wrote:

Thanks for reply.

 

How can I upload data from mat file, should I use ROM from xilinx blockset? pls suggest me.


 

Cheers,
Jim
0 Kudos
ofdmradar
Observer
Observer
10,660 Views
Registered: ‎01-19-2011

I am going to process Raw data to reconstruct image for Synthetic Aperture RADAR (SAR) application.

 

Data format I am planning to use on HW: Floating point (double precision)

FFT frame size: 1x4096

 

I have Xilinx Virtex-6 ML605 FPGA Board

 

Pls suggest me how can I fed data to FFT core to compute FFT. I have data saved on MAT file that contains 900 rows and 4096 columns and I need to perform FFT row by row where each row contains 4096 data elements. Data is in complex form.

 

Thanks for response.

 

Anwar
0 Kudos
rcingham
Teacher
Teacher
10,636 Views
Registered: ‎09-09-2010

 


@ofdmradar wrote:

Data format I am planning to use on HW: Floating point (double precision)

 


And that is going to be the show-stopper...

 


 


------------------------------------------
"If it don't work in simulation, it won't work on the board."
0 Kudos
ofdmradar
Observer
Observer
10,630 Views
Registered: ‎01-19-2011

I didn't get wht u mean.

Anwar
0 Kudos
rcingham
Teacher
Teacher
10,618 Views
Registered: ‎09-09-2010

The Xilinx CoreGen tools output fixed-point arithmetic blocks. Unless someone more familiar with them can contradict me!


Floating-point arithmetic is much harder to implement in FPGAs, and uses a lot more resources. Doubly so for double-precision.


It is unlikely you will be able to achieve what you want to do unless you can convert your algorithm to fixed-point arithmetic, with scaling to prevent overflows and other bad things.


 


------------------------------------------
"If it don't work in simulation, it won't work on the board."
ywu
Xilinx Employee
Xilinx Employee
10,613 Views
Registered: ‎11-28-2007

The FFT core does support single precision floating point input.

 

Anyway, as rcingham suggested, you should look into converting your algorithm to use fixed point data as they are a lot easier to handle in FPGAs.

 

 


@rcingham wrote:

The Xilinx CoreGen tools output fixed-point arithmetic blocks. Unless someone more familiar with them can contradict me!


Floating-point arithmetic is much harder to implement in FPGAs, and uses a lot more resources. Doubly so for double-precision.


It is unlikely you will be able to achieve what you want to do unless you can convert your algorithm to fixed-point arithmetic, with scaling to prevent overflows and other bad things.


 


 

Cheers,
Jim
0 Kudos
ofdmradar
Observer
Observer
10,582 Views
Registered: ‎01-19-2011

Thanks a lot.

 

I have converted my data to fixed point.

Could u pls suggest me how can I fed these data from MAT file to xilinx FFT core. The MAT file contains complex data of 900 (rows) by 4096 (columns). I need to perform FFT row-wise.

Anwar
0 Kudos
ywu
Xilinx Employee
Xilinx Employee
7,238 Views
Registered: ‎11-28-2007

If you're only doing simulation in Matlab/System Generator, you read one element out of the matrix, split it into real and imaginary parts, and connect them to two gateway in blocks. The real input goes to xn_re port of the fft core and the imaginary input goes to the xn_im input.

 

If this doesn't make sense to you, I suggest you go through the "System Generator Get Started Video" below:

 

http://www.xilinx.com/training/free-video-courses.htm#DSP

 

 

 


@ofdmradar wrote:

Thanks a lot.

 

I have converted my data to fixed point.

Could u pls suggest me how can I fed these data from MAT file to xilinx FFT core. The MAT file contains complex data of 900 (rows) by 4096 (columns). I need to perform FFT row-wise.


 

Cheers,
Jim
0 Kudos
ofdmradar
Observer
Observer
7,221 Views
Registered: ‎01-19-2011

Thanks a lot.

 

Now I am getting correct result by using a vector with complex values.

But the problem when I am trying to use a matrix with more than one rows.

For example, I am using a matrix with two rows and eight columns.

1+1i  2+2i  3+3i  4+4i  5+5i  6+6i  7+7i  8+8i

9+9i  0+0i  1+1i  2+2i  3+3i  4+4i  5+5i  6+6i

 

I would like to compute 8 point FFT (row-wise).

 

Please find the attached model which I am using.

Anwar
0 Kudos
eschei
Xilinx Employee
Xilinx Employee
7,213 Views
Registered: ‎02-09-2009

Hi,

 

You can just use matlab to manipulate the matrix into a 1D array, then feed this directly into the FFT one complex sample at a time.

 

Example:

 

let y = your current 8x8 matrix.

 

Then create a new array using the reshape function:

 

z = reshape (y',1,64);

 

Regards,

-es

0 Kudos
ofdmradar
Observer
Observer
7,193 Views
Registered: ‎01-19-2011

Complement of the day.

 

I have got the correct result using the method you suggest.

 

Actually, I am working on raw data processing for Synthetic Aperture Radar.

 

I have raw data that contains a large matrix of size: 900x4096

Could u pls suggest me how can I feed this matrix to xilinx FFT block.

I need to compute FFT row-wise.

As my matrix contains 900 rows, I would like to feed 1st row, then 2nd row and so on and save output of all rows to workspace sequentially.

 

I have attached my Xilinx Model.

Pls help me in this regard.

 

Anwar
0 Kudos
francism
Xilinx Employee
Xilinx Employee
8,147 Views
Registered: ‎05-23-2008

Get the MAt file and load it into the workspace

Use FromWorkspace to take the data from the worksapce into the simualink environment.

Get system generator and feed the data into a sysgen design. You can either use sysgen FFT, or you bring in the latest FFT via the backbox method into sysgen.

This will allow you to at least test your system.

 

regards

Mike

View solution in original post

0 Kudos
ofdmradar
Observer
Observer
7,060 Views
Registered: ‎01-19-2011

Thanks for reply.

I am getting correct result for FFT/IFFT now.

 

Could u pls tell me how can I perform fftshift on my output data?

Pls reply.

 

regards

Anowar

Anwar
0 Kudos
xud
Xilinx Employee
Xilinx Employee
6,925 Views
Registered: ‎08-02-2007

This message was moved by Xilinx Forum Moderator. If you have any questions, please contact Forum Moderator.

0 Kudos