URL
https://opencores.org/ocsvn/dblclockfft/dblclockfft/trunk
Subversion Repositories dblclockfft
Compare Revisions
- This comparison shows the changes necessary to convert path
/dblclockfft/trunk/sw
- from Rev 15 to Rev 16
- ↔ Reverse comparison
Rev 15 → Rev 16
/fftgen.cpp
1,3 → 1,54
///////////////////////////////////////////////////////////////////////////// |
// |
// Filename: fftgen.v |
// |
// Project: A Doubletime Pipelined FFT |
// |
// Purpose: This is the core generator for the project. Every part |
// and piece of this project begins and ends in this program. |
// Once built, this program will build an FFT (or IFFT) core |
// of arbitrary width, precision, etc., that will run at |
// two samples per clock. (Incidentally, I didn't pick two |
// samples per clock because it was easier, but rather because |
// there weren't any two-sample per clock FFT's posted on |
// opencores.com. Further, FFT's running at one sample per |
// clock aren't that hard to find.) |
// |
// You can find the documentation for this program in two places. |
// One is in the usage() function below. The second is in the |
// 'doc'uments directory that comes with this package, |
// specifically in the spec.pdf file. If it's not there, type |
// make in the documents directory to build it. |
// |
// Creator: Dan Gisselquist, Ph.D. |
// Gisselquist Tecnology, LLC |
// |
/////////////////////////////////////////////////////////////////////////// |
// |
// Copyright (C) 2015, Gisselquist Technology, LLC |
// |
// This program is free software (firmware): you can redistribute it and/or |
// modify it under the terms of the GNU General Public License as published |
// by the Free Software Foundation, either version 3 of the License, or (at |
// your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, but WITHOUT |
// ANY WARRANTY; without even the implied warranty of MERCHANTIBILITY or |
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
// for more details. |
// |
// You should have received a copy of the GNU General Public License along |
// with this program. (It's in the $(ROOT)/doc directory, run make with no |
// target there if the PDF file isn't present.) If not, see |
// <http://www.gnu.org/licenses/> for a copy. |
// |
// License: GPL, v3, as defined and found on www.gnu.org, |
// http://www.gnu.org/licenses/gpl.html |
// |
// |
/////////////////////////////////////////////////////////////////////////// |
// |
// |
#include <stdio.h> |
#include <stdlib.h> |
#include <unistd.h> |
812,8 → 863,10
"\treg\tsigned\t[(CWIDTH+IWIDTH+3-1):0] mpy_r, mpy_i;\n" |
"\treg\tsigned\t[(CWIDTH+IWIDTH+3-1):0] rnd;\n" |
"\tgenerate\n" |
"\tif ((ROUND==0)||(CWIDTH+IWIDTH-OWIDTH-SHIFT<1))\n" |
"\tif ((ROUND==0)||(CWIDTH+IWIDTH-OWIDTH-SHIFT<2))\n" |
"\t\tassign rnd = ({(CWIDTH+IWIDTH+3){1'b0}});\n" |
"\telse if ((IWIDTH+CWIDTH)-(OWIDTH+SHIFT) == 2)\n" |
"\t\tassign rnd = ({ {(OWIDTH+4+SHIFT){1'b0}},1'b1 });\n" |
"\telse\n" |
"\t\tassign rnd = ({ {(OWIDTH+4+SHIFT){1'b0}},1'b1,\n" |
"\t\t\t\t{((IWIDTH+CWIDTH+3)-(OWIDTH+SHIFT+5)){1'b0}} });\n" |
1594,3 → 1647,4
} |
} |
|
|
/Makefile
1,3 → 1,48
############################################################################/ |
## |
## Filename: fftgen.v |
## |
## Project: A Doubletime Pipelined FFT |
## |
## Purpose: This is the main Makefile for the FFT core generator. |
## It is very simple in its construction, the most complicated |
## parts being the building of the Verilator simulation--a |
## step that may not be required for your project. |
## |
## To build the FFT generator, just type 'make' on a line |
## by itself. For a quick tutorial in how to run the |
## generator, just type './fftgen -h' to read the usage() |
## statement. |
## |
## Creator: Dan Gisselquist, Ph.D. |
## Gisselquist Tecnology, LLC |
## |
##########################################################################/ |
## |
## Copyright (C) 2015, Gisselquist Technology, LLC |
## |
## This program is free software (firmware): you can redistribute it and/or |
## modify it under the terms of the GNU General Public License as published |
## by the Free Software Foundation, either version 3 of the License, or (at |
## your option) any later version. |
## |
## This program is distributed in the hope that it will be useful, but WITHOUT |
## ANY WARRANTY; without even the implied warranty of MERCHANTIBILITY or |
## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
## for more details. |
## |
## You should have received a copy of the GNU General Public License along |
## with this program. (It's in the $(ROOT)/doc directory, run make with no |
## target there if the PDF file isn't present.) If not, see |
## <http:##www.gnu.org/licenses/> for a copy. |
## |
## License: GPL, v3, as defined and found on www.gnu.org, |
## http:##www.gnu.org/licenses/gpl.html |
## |
## |
##########################################################################/ |
## |
## |
# This is really simple ... |
all: fftgen |
CORED := fft-core |
12,6 → 57,13
.PHONY: test |
test: fft ifft shiftaddmpy butterfly dblreverse qtrstage dblstage fftstage_o2048 |
|
# |
# Although these parameters, a 2048 point FFT of 16 bits input, aren't |
# the only parameters the FFT can do, they are the ones that the test |
# benches depend upon. If you change these, and you are welcome to do so, |
# you may need to adjust the test benches if you wish to prove that your |
# changes work. |
# |
.PHONY: fft |
fft: fftgen |
./fftgen -f 2048 -n 16 |