您当前的位置:五五电子网电子知识单片机-工控设备DSP/FPGA技术基于Stratix系列FPGA的FFT模块设计与实现 正文
基于Stratix系列FPGA的FFT模块设计与实现

基于Stratix系列FPGA的FFT模块设计与实现

点击数:7478 次   录入时间:03-04 11:46:23   整理:http://www.55dianzi.com   DSP/FPGA技术
    对于w64n,其实部为0、虚部为-l,代入基本蝶算单元化简之后可得:mx1=x1+y2;my1=y1+x2;mx2=x1-xz;my2=y1+x2这样,总共8级的蝶形运算有2级可以不用乘法器和存储旋转因子的ROM,节省了25%的乘法器和ROM资源。
2.5 误差的分析与控制
    对FPGA而言,采用浮点运算带来的硬件开销太大。而如果采用文献[3]所提出的块浮点防溢出方案,在每一级蝶形运算结束之后,都需要找出该级计算结果中的最大值来判断溢出的状态,并以此确定进行下一级运算时每个数据需要移位的位数。这对全并行的工作方式而言,意味着每一级数据都会带来更大的延迟,影响整个运算的速度。而对定点运算而言,虽然存在有限字长效应的影响,但是,只要对数据进行适当的移位处理就可以防止溢出;在数据舍弃时,进行类似4舍5入的运算就可以有效的控制误差。在综合考虑之后,系统采用定点运算方案。在定点运算中,误差主要体现在以下两方面:
    (1)乘法截断误差。2个18位的数据相乘得到36位的积,把该积舍入为18位就会产生误差。由于来自零中频的18位数据实际表征的是模值不大于‘1’的复小数,所以相乘不会产生溢出。去掉次高位多余的符号位并截去后17位。当被截去的各位是‘1’的时候,误差最大;被截去的各位为‘O’时,没有误差。对被截去的部分作类似4舍5入的处理,第20位为‘1’则向上进位,为‘O’则直接舍去,可以有效减小误差。
    (2)加减法溢出误差。2个18位的数据相加减得到19位的结果,在进行下一级运算之前,必须舍去l位,对舍弃的这l位也进行上述的4舍5入运算。2个小数的加减运算而言,把结果全部右移1位就可以防止溢出。

3 波形仿真与性能分析
   
波形仿真选用的输入信号为
    x(n)=Xxexp[j×(03+2x127xnxπ)/256]
    式中。X根据测试的需要分别取18 bit信号的最大值和达到80 dB信噪比所需的最小值13,n的取值范围为0:255。设计工具选用VHDL93版硬件描述语言,在QuartusⅡ4.1平台上进行逻辑综合和时序分析,把仿真结果保存为*.tbl文件格式。在MATLAB中,读取*.tbl文件,并与MATLAB的计算结果进行比较。由于8级运算都作了右移1位的处理,所以实际结果比用MATLAB的计算结果缩小256倍。把MATLAB的计算结果缩小256倍与0uartusⅡ4.1的计算结果比较,如图4所示。图中,左上图为原始序列,右上图为用MATLAB计算的结果,右下图为用FPGA计算的实际结果。在左下图中,把二个结果进行局部放大,MATLAB的计算结果用实线表示,Quartus4.1的仿真结果用“+”表示。可以看出二组结果的吻合性非常好,验证了程序的正确性。仿真采用60 MHz系统主频,在系统进入稳定状态之后(经过38.34μs),每完成1次256点FFT所用时间为4.26μs。对EPlS25器件资源占用情况为:逻辑单元使用15%,内部存储器使用18%,专用DSP使用62.5%。虽然专用DSP块使用较多,但是逻辑单元使用得很少,可以用逻辑单元来构成18x18的乘法器和专用DSP一起完成更多的并行乘法运算。这说明系统还具有很好的可扩展性,要完成更多点数的FFT,只需增加相应蝶形运算的级数即可。

    从结果可以看出,由于运算中采用有效措施防止误差和溢出,在最大数据运算时没有溢出,而且最终运算结果的误差小于10-9。在用达到80 dB信噪比所需最小数据进行运算时,也有很好的分辨率。


4 结束语
   
本文讨论了微波接力机中FFT模块的设计与实现过程。全部电路设计已经过功能仿真、逻辑综合、时延分析并成功下载到FPGA中投入实践应用。实践应用表明用Stratix系列FPGA实现FFT的速度快、稳定性高、易于扩展。在微波接力通信,特别是在接力机对窄带干扰快速识别的应用中有很大的优越性。



上一页  [1] [2] 


本文关键字:暂无联系方式DSP/FPGA技术单片机-工控设备 - DSP/FPGA技术