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.

