OpenCores
URL https://opencores.org/ocsvn/dblclockfft/dblclockfft/trunk

Subversion Repositories dblclockfft

[/] [dblclockfft/] [trunk/] [README.md] - Blame information for rev 32

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 32 dgisselq
# A Double-Clocked FFT Core Generator
2
 
3
The Double Clocked FFT project contains all of the software necessary to
4
create the IP to generate an arbitrary sized FFT that will clock two samples
5
in at each clock cycle, and after some pipeline delay it will clock two
6
samples out at every clock cycle.
7
 
8
The FFT generated by this approach is very configurable.  By simple adjustment
9
of a command line parameter, the FFT may be made to be a forward FFT or an
10
inverse FFT.  The number of bits processed, kept, and maintained by this
11
FFT are also configurable.  Even the number of bits used for the twiddle
12
factors, or whether or not to bit reverse the outputs, are all configurable
13
parts to this FFT core.
14
 
15
These features make the Double Clocked FFT very different and unique among the
16
other open HDL cores you may fine.
17
 
18
For those who wish to get started right away, please download the package,
19
change into the ``sw`` directory and run ``make``.  There is no need to
20
run a configure script, ``fftgen`` is completely portable C++.  Then, once
21
built, go ahead and run ``fftgen`` without any arguments.  This will cause
22
``fftgen`` to print a usage statement to the screen.  Review the usage
23
statement, and run ``fftgen`` a second time with the arguments you need.
24
 
25
Alternatively, you _could_ read the specification.
26
 
27
## Genesis
28
This FFT comes from my attempts to design and implement a signal processing
29
algorithm inside a generic FPGA, but only on a limited budget.  As such,
30
I don't yet have the FPGA board I wish to place this algorithm onto, neither
31
do I have any expensive modeling or simulation capabilities.  I'm using
32
Verilator for my modeling and simulation needs.  This makes
33
using a vendor supplied IP core, such as an FFT, difficult if not impossible
34
to use.
35
 
36
My problem was made worse when I learned that the published maximum clock
37
speed for a device wasn't necessarily the maximum clock speed that I could
38
achieve.  My design needed to process the incoming signal at 500 MHz to be
39
commercially viable.  500 MHz is not necessarily a clock speed
40
that can be easily achieved.  250 MHz, on the other hand, is much more within
41
the realm of possibility.  Achieving a 500 MHz performance with a 250 MHz
42
clock, however, requires an FFT that accepts two samples per clock.
43
 
44
This, then, was and is the genesis of this project.
45
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.