您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > Xilinx的FFT使用说明
FFTcore使用说明V0.1By梁贵2014年1月17日星期五遇到的问题:1、使用FFTCore得到的数据比matlab得到的差别很大,可以看一下你的相位精度位宽设置,可以适当提高相位精度位宽,可以设置的和数据位宽一样(或者16位以上为宜)。2、仿真的时候一直没有输出,输出延时与FFT的长度有关,如果要求延时小,尽量用短的FFT,如果要求精度,不要求时间可以选择较长的FFT,如果是8196的FFT,从第一输入数据,到第一FFT数据输出,大概需要等待3*8196个时钟周期。精度和延时的折中可以试一试2048点FFT。FFT算法简介在matlab中对应的函数为fft,fft在执行时会按照double型去执行,有些采集到的数据为了减少截断效应,需要乘上窗函数(在matlab中可以用wintool调出窗函数窗口0~1)。此时会遇到一个问题,窗函数的系数大多都为小数,如果要处理小数则涉及到要处理定点问题,为了方便,直接将窗函数乘以65536,或者更大的一个数,需要为2幂次方。之后再将采集数据与窗函数相乘,然后再进行移位,得到一个16位的经过窗函数处理的数据,之后再经过FFTcore进行处理。FFT(FastFourierTransform)快速傅里叶变换,是离散傅里叶变换的一种高效算法,对离散时间信号进行傅里叶变换。12/00,11NjnkNnXkxnekN……(1.1)傅里叶的逆变换为12/010,...,1NjnkNnxnXkenNN(1.2)分析傅里叶变换公式(1.1),里面涉及到都是乘加操作,xk的输出必须先得到所有的xn,故FFT的延时还是很严重的,长度越长乘加操作也越多,消耗的时间也越多。FFTcore(版本V7.1)使用说明在第一页中,你可以选择通道数,如果选择多通道则无法选择流水线结构;还需要选择变换的长度,具体长度,可以根据具体的应用场景,先用matlab仿真得到合适的长度,然后在选择。一般1024就可以了,特殊情况下可以选择8192或者更长。最后需要选择实现结构和目标时钟频率,时钟频率根据自己的设计选择,这里我的时钟为100Mhz,实现结构为流水线结构(通信处理应该一般都是流水线结构)。最后一个是变换长度选项,即是否在做FFT的时候是否可以更改变换的长度,如果需要做频谱仪的话,可以选中这个选项,如果不做,则可以不用选择。NFFT对应的变化长度关系如下图所示。流水线对应的其他引脚功能如下图所示START:input指示将输入有效的数据进行FFTFWD_INV:input指示是进行正变换(1),还是逆变换(0)FWD_INV_WE:inputFWD_INV_WE的使能信号,1有效,0有效如果要进行正变换FWD_INV_WE=1FWD_INV=1或者FWD_INV_WE=0FWD_INV任意如果要进行逆变换FWD_INV_WE=0FWD_INV=0XN_INDEX:output输入序列的计数指示,如果是1024则,XN_INDEX从0递增到1023,需要注意的是START信号xn_re和xn_im的关系。XK_INDEX:output输出序列的计数指示。FRD(Readyfordata):output准备好数据指示BUSY:Corestateindicator,如果core正在计算FFT,则BUSY为高,否则为低DV(DataValid):数据有效指示,如果为高,意味着将有数据输出,参见时序图。EDONE:EarlyDonestrobe,FFT计算完成指示,比有效数据早一个周期DONE:FFT计算完成指示。CORE第二页需要选择的是输入数据是定点数还是浮点数,一般在FPGA中输入的数据多为定点数,如果选择浮点数,则输入的浮点数,需要为32位且满足IEEE-754单精度浮点数。32位单精度(来自维基百科)还需要选择精度选择,输入数据宽度(输入的为有符号数)根据自己的设计确定,相位因子位宽(相位因子的位宽影响FFT之后的精度,因子位宽较低,则噪声很高,因子位宽交宽则噪声低,但是需要消耗更多的资源)可以设置与数据位宽相同。还需要选择截位选项如果对资源没有要求建议选择不截位,即unscaled。还有其他引脚RoundingModes舍入模式类似matlab中round函数一种模式为Truncation截断模式一种模式为四舍五入如果是0.5的话,如果这个数是奇数则上去整,如果这个数为偶数则下取整。如果选择ConvergentRounding会消耗更多的资源。输出顺序选择自然顺序就好了,方便处理,这样会消耗更多资源。输入数据时序如果没有特殊要求,则只需选择nooffset即可。第三页基本上没有要改的,稍微的改动对设计影响不大,主要是影响FPGA内部的资源,到底是用SliceLogic资源还是XtremeDSPSlice到此完整的FFTCORE已经结束了。
本文标题:Xilinx的FFT使用说明
链接地址:https://www.777doc.com/doc-4379723 .html