Hi Casperites,

I’m happy to announce the second (much-improved) version of my FFT, the 
“BxBFFT”.  This FFT compares very favorably to CASPER's fft_wideband_real. 
using only a fraction of the resources:

vs CASPER FFT:                                   BxBFFT uses 26% of the LUTs, 
20% of the DSPs, 68% of the BRAM
vs CASPER improved FFT, proposed by Ryan Monroe: BxBFFT uses 87% of the LUTs, 
43% of the DSPs, 75% of the BRAM

(A PDF with a more exact comparison is available on my web site.)

As you can see, savings are substantial.  For large applications, this may mean 
the BxBFFT is actually cheaper than the (free) Casper FFT, because the BxBFFT 
will more than pay for itself through savings in electricity, in cooling, and 
in lower maintenance costs from board degradation related to heat or power 
usage.  There are other possible savings to be had, such as lower board count, 
lower FPGA count, or use of smaller and less expensive FPGAs — since the lower 
resource counts of the BxBFFT mean that more science will fit on a single FPGA 
or on a single board, and thus fewer FPGAs and boards may be required.

The BxBFFT also plays better with free software, since it has a simple and 
non-proprietary interface, with no requirement for Matlab or Simulink.  
(Although support is provided to use it with Matlab if you insist.)  It is 
released with (obfuscated) source code, so you can use it with your favorite 
open-source tools such as the free Icarus Verilog, the free GTKWave waveform 
viewer, g++ or GNU Octave (or Matlab) for simulation, and GNUPlot to view time 
and spectral plots.  These are all what I use.  The BxBFFT ships with 
operational tests using these tools.  Furthermore, it is just a subroutine, so 
it doesn’t have the proprietary tie-in of software that’s integrated with a 
proprietary development environment, such as Matlab or Simulink.  You don’t 
need to worry about what’s inside it, since you can easily test it externally 
to verify it properly performs an FFT algorithm.  (It’s just a matrix 
transform.  You can fully test it algorithmically with a set of basis vectors.) 
 If you ever wanted to replace the BxBFFT with an open-source version, you just 
develop your own open-source FFT and match the input and output interfaces.  
What will keep you using the BxBFFT is that I’ve taken a lot of time to 
optimize it and make it better, not that it has some hook to catch you.

The BxBFFT also offers opportunities for better science, since lower resource 
utilization means that there are more resources available in an FPGA for other 
interesting pursuits.  For example, bit widths can be increased to improve 
immunity to sources of interference.  This is also available with the CASPER 
FFT, but to a more limited degree since a Casper FFT fills up the FPGA faster.  
This isn’t available with Ryan Monroe’s optimizations, since they rely on 
18-bit data widths for their operation.  Another example of how lower resource 
utilization helps is that it may allow longer FFTs in the same FPGA, for higher 
spectral resolution.

The BxBFFT has many additional features.  For example, it supports complex FFTs 
or real-to-complex FFTs (like fft_wideband_real).  The BxBFFT supports 
non-power-of-2 FFTs, and it supports demux factors that are non-power-of-2.  
The BxBFFT supports internal amplitude monitoring and control, to avoid 
overflow yet keep amplitude levels high for best interference rejection in long 
FFTs.  The BxBFFT has a design suitable for operation in satellites (is anyone 
doing radio telescopes in space?).  The BxBFFT supports performing multiple 
FFTs simultaneously in the same unit (“MVFFT” functionality), so the FFTs can 
share control logic and twiddle tables for even higher resource savings.  To 
help the testers among us, the BxBFFT simulation models don’t just give 
bit-identical answers when compared to the Verilog, but also cycle-identical 
answers.  This helps those people doing low-level debugging and testing to more 
easily identify and debug system problems.

The BxBFFT does have some minuses for Casperites.  It currently only supports 
Xilinx Series-7 and above — no Series-5 or Series-6 support.  The BxBFFT also 
isn’t currently integrated with any Casper flow (in part because this has 
seemed difficult due to CASPER’s proprietary matlab/simulink tie-in).

For more information, please see my web site:   http://www.bitbybitsp.com 
<http://www.bitbybitsp.com/>.  There you will find more information on 
features, options, and resources.

In celebration of this release, I’ve made available a tutorial on the signal 
processing mathematics of how Polyphase Filter Banks (PFBs) work.  This is 
available now on my web site; look for the tutorials tab.  My next major 
product will be a PFB.

Regards,

Ross

Ross Martin
Bit by Bit Signal Processing LLC
[email protected]
+1-623-487-8011



> On Jan 30, 2019, at 3:49 PM, Ross Martin <[email protected]> wrote:
> 
> Hi Everyone,
> 
> I'd like to let you know about a new commercial FFT product that I've just 
> released, which I call the BxBFFT.
> 
> The BxBFFT is a high-speed streaming FFT that currently works in 
> Vivado-supported Xilinx FPGAs.  It supports FFT sizes that are arbitrary 
> multiples of 2, 3, 5, and 7.  It supports FFTs with built-in real-to-complex 
> conversion.  It supports all "demux factors" that evenly divide into the FFT 
> size.  For example, I can deliver a 2100-point FFT with a demux factor of 7.  
> Or with a demux factor of 20 or 21 or 35.
> 
> It's my belief that resources used by the BxBFFT are comparable to the CASPER 
> FFT for powers of 2, but I haven't seen a lot of data yet on the CASPER FFT 
> to confirm this.  The BxBFFT uses 18-bit coefficients with 27-bit data for 
> high dynamic range and high protection against overflow.
> 
> BxBFFTs that aren't powers of 2 are highly optimized, and thus the penalty 
> for their departure from power-of-2 is typically small.
> 
> You can find more info on sizing at www.bxbfft.com.  I've listed resource and 
> speed estimates for over 3000 different sizes/demux factors in the 
> downloadable text files there, obtained from successful Vivado compiles.  
> These cover FFT sizes from 100 to 20000, and demux factors from 1 to 16.  
> Larger sizes and demux factors are easily possible, but the list was getting 
> a bit big.  The information currently is for the complex-to-complex BxBFFT in 
> Ultrascale+ chips, but I'll be adding Ultrascale and 7-series FPGA resources 
> and achievable clock speeds soon.  (It takes nearly 4 days for Vivado to make 
> the 3000 bitfiles.)  I’ll then proceed to add sizing for real-to-complex 
> BxBFFTs.
> 
> I'm happy to answer questions, either on this forum or in private email, as 
> appropriate.
> 
> Lastly but not least, allow me to introduce myself.  :-)  None of you know 
> me; I come from a background in radar, optical processing, and communication 
> systems at Lockheed Martin.  My last work there was in channelized and 
> beamformed digital communications satellites.  While working on that, I got 
> excited about the applications of polyphase filter banks.  So about two years 
> ago I left to form my own company building PFBs.  The first step is to build 
> the required FFT, which I'm now releasing.
> 
> Please pardon the commercial nature of this post, but I believe this is of 
> sufficient interest to the group to justify it.
> 
> Regards,
> 
> Ross Martin
> Bit by Bit Signal Processing LLC
> [email protected]
> +1-623-487-8011
> 

-- 
You received this message because you are subscribed to the Google Groups 
"[email protected]" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/663DA22B-A416-4E40-9D64-721F80264247%40ieee.org.

Reply via email to