逻辑编程问题
目前项目中用的FFT的IP core都是串行的,对于高速通信电路来说速度完全不够,想要自己开发并行的FFT,1024点就够,没什么思路,看了文献觉得实现跟文献说说还是两码事,请问有啥经验,或者代码
1024点并行FFT,就这个
XILINX FFT IP核介绍与测试 http://xilinx.eetrend.com/article/6144
楼主可以参考一下 xilinx的篇文章介绍
Xilinx FFT IP核V7.1是Xilinx公司配套其FPGA开发工具ISE14.1推出的,其最大的系统时钟频率达到了550MHz,最大的数据吞吐量达到550MSPS,最高可进行65536点的FFT运算,最大输入数据和相位因子位宽为34bit,支持所有的主流Xilinx FPGA芯片。同时,Xilinx FFT IP核V7.1可以实现变换长度为N点实数或复数形式的FFT变换及FFT逆变换(IFFT),N的取值范围是(8~65536)。输入数据实部和虚部都要以位宽为M bits的二进制补码形式表示,M取值范围是(8~34);同样,相位因子位宽取值范围也是(8~34)。数据、相位因子以及输出数据重排序的缓存数据,在FFT实现的过程中,都可以用块RAM或者分布式RAM进行存储。对于Burst I/O结构, 块RAM可以存储任意点数的数据和相位因子,而分布式RAM则只能存储点数不大于1024点的数据和相位因子;对于Streaming I/O结构,可采用混合存储的方法,先选择使用块RAM存储器的阶数的数量,然后对剩余的采用分布式RAM。
关键看你需要那一部分
如果是运行结果:STM32好像都可以胜任
如果需要效率:DSP是首选。
是串行是因為FPGA一般可以給您Programmable I/O口是有限的,所以通常都是串行很正常
如果您要做並行的FFT,大量點意表您需要很多I/O口,大封裝的FPGA不是沒有,但可能您現在用的無法作
還有一個問題,我做過128 Bit I/O口也可發現FPGA本身溫度會飆高,這是跟同時觸發Flip-flop有很大關係,這點您也要考慮
看來您還需要作一些取捨了,小小意見
有一种思路是将1024FFt分成多个128、256的FFT进行并行运算,但最后如何在合成原始信号的计算结果就不清楚了。也存在问题,分拆后,频域的频谱分辨率好像是下降了吧。
不知道理解的对不对。