From: Brian Drummond on
On Thu, 3 Jun 2010 13:19:18 -0700 (PDT), Vivek Menon
<vivek.menon79(a)gmail.com> wrote:

>Alan:
>
>Thanks for these tips.

>> 2. Look for being off by an output stride permutation or transpose.
>I am not sure how to check this. Can you elaborate ?

You started quite well, in your previous post.

You observed:

> �xk_re[0] 117467 Matlab:f2_r[0] 117467

and

> But on closer observation, the 64th value obtained from Xilinx
> simulation is same as the 2nd value, i.e.
> xk_re[64] 6002.34 = Matlab:f2_r[1] 6002.34

Just take this further. Compare
xk_re[128] with Matlab:f2_r[2]
xk_re[192] with Matlab:f2_r[3]
xk_re[256] with Matlab:f2_r[4]
and so on.

A pattern might become visible.

The solution may turn out to be as simple as re-ordering address bits in
one output array to match the other.

- Brian
From: Brian Drummond on
On Thu, 3 Jun 2010 20:28:11 -0700 (PDT), Vivek Menon
<vivek.menon79(a)gmail.com> wrote:

>Brian:
>
>Thanks for that info. As per your suggestion, I tried looking for a
>pattern and I got
>
>xk_re[0] = 117020.000000 out1[0] = 117020.000000
>xk_re[64] = 6299.545898 out1[1] = 6299.546058
>xk_re[128] = -480.795319 out1[2] = -480.795307
>xk_re[192] = -2098.480957 out1[3] = -2098.480978

>But why did this happen?? I did setup the Xilinx FFT core as 4096 pt
>natural order output with 32 bit floating point. Now I need to reorder
>the data as per this logic, then do the complex multiplication and
>then take an IFFT. Now I am not sure if my IFFT values will match
>Matlab.

At this point I think the next step is to read some introductory
material about FFTs, paying attention to how FFTs can be decomposed
into simpler ones. That should help you understand what is going on.

- Brian