hi andrew,
the information in your email below will be helpful
to all instrument developers using FFT block.
is there an easy way to display this information in the
fft parameter selection window?
eg: "click here for guidance on the choice of these parameters"
or "see fft documentation for guidance on these parameters"
or display the information directly, next to each parameter's
selection window?
thanks,
dan
Hi John
The FFT is a good place to optimise for various things. The ROACH has
plenty of multipliers in comparison to the iBOB so be sure to optimise
for logic in the FFT unless you are very short of multipliers and have
logic to spare. Complex multiplication can be done with a lot of
adders and 3 multipliers or 4 multipliers and 2 adders. Optimising for
multipliers uses the former approach and optimising for logic the latter.
Another place where some optimisation can be found is to enable the
"Use DSP48s for adders" option recently added to the FFT. This uses
the ALUs in the DSP48E blocks in the ROACH to implement the adders for
the butterfly operation and saves a significant amount of logic in the
FFT (around 1/6 of slices).
A final logic saving in the FFT can be had by choosing the latencies
for various operations judiciously. Increasing latencies generally
increases the amount of logic used but increases the possible clock
rate of the design. I use the following latencies for the FFT in a
design that makes timing at just over 200MHz; BRAM latency: 2,
Multiplier latency: 2, Adder latency: 1. I have played a little with
these and to increase the clock rate to above 250MHz would require
increasing the BRAM latency to 3.
Also be sure to specify the Virtex5 target architecture. The FFT is
constructed to allow various optimisations using this setting. Also
leave the "Specify multiplier use..." option unenabled.
If the above steps don't help, then consider changing other things
(accumulators etc).
Regards
Andrew
2009/11/11 John Ford <[email protected] <mailto:[email protected]>>
OK, so my naive port of guppi from bee2/ibob to roach failed,
because I
ran out of resources. After Randy and I updated the 5 designs and
combined them into one design, in my initial try at the port, I
told the
dual 2^12 PFB/FFT blocks to optimize for multipliers. I promptly
ran out
of slices. So this time I told it to optimize for logic. We'll
see what
that does this time...
But it occurs to me also that we have some whopping big vector
accumulators (using the gavrt_library vector accumulator) that might
profitably use the QDR memory vacc instead of the on-chip BRAMs, which
might free up some room in the chip. Also we have some reordering
going
on to pack up the packets into the format we want. Might be able
to do
something different with that.
What do you all think? Any other re-work that I should do when
porting
from the 7.1 bee2/ibob platforms to the 10.1 (actually, 11.3 on Linux,
since Windows ran out of memory) ROACH platforms?
BTW, svn doesn't seem to have the workshop tutorial #5 in it?
John