//定点
/*Source: Numerical Recipe In C
* Modified by IIT Madras
* The following code computes 32point FFT
* The bit reversal positions are precomputed and stored in the header files.
* The Twiddle Factor is decomposed into following form:
* exp(ia + ib) = exp(ia)*exp(ib) = exp(ia) + Z*exp(ia)
* Where Z = exp(ib) - 1 = -(1 - cos(b)) + isin(b) = -2*sin^2(b/2) + isin(b)
* Z is precomputed and stored in header file.
* */
#include "32fft.h"
#include "32fftvalues.h"
using namespace std;
void bitreverse(data_comp data_IN[N], data_comp data_OUT[N]) {
//do 32point bit reversal
bitreversal_label1: for (int i=0;i<N;i++) {
int index = rev_32[i];
data_OUT[i] = data_IN[index];
}
}
void FFT0(int FFT_stage,int pass_check,int index_shift,int pass_shift,data_comp data_IN[N], data_comp data_OUT[N]){
int butterfly_span=0,butterfly_pass=0;
FFT_label1: for (int i = 0; i < N/2; i++) {
int index = butterfly_span << index_shift;
int Ulimit = butterfly_span + (butterfly_pass<<pass_shift);
int Llimit = Ulimit + FFT_stage;
data_comp Product = W[index] * data_IN[Llimit];//calculate the product
data_OUT[Llimit] = data_IN[Ulimit]
vitis hls fft_demo
最新推荐文章于 2024-04-07 10:46:11 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)