资源描述:
《fft处理器的fpga设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、第34卷第3期航空计算技术Vol134No132004年9月AeronauticalComputerTechniqueSep12004FFT处理器的FPGA设计刘国栋,陈伯孝,陈多芳(西安电子科技大学雷达信号处理国家重点实验室,陕西西安710071)摘要:在雷达信号处理中,FFT占有很重要的位置,其运算时间影响整个系统的性能。传统的实现方法速度很慢,难以满足雷达信号处理的实时性要求。针对这一现状,本文研究FFT算法的VHDL程序设计方法;讨论新一代大容量、高速FPGA实现FFT处理中的若干问题;时序分析结果与matlab计算结果相一致,验证了程序的正确
2、性。利用FPGA实现FFT处理,运算速度非常快,可以满足需要高速处理的应用场合。关键词:FFT;FPGA;VHDL中图分类号:TN957151文献标识码:A文章编号:16712654X(2004)0320101204引言1FFT算法简介FFT(FastFourierTransform)是DFT(DiscreteFourier蝶形运算是FFT算法的基本运算单位。蝶形运KTransform)的快速算法,在数字信号处理中具有非常重算符号如图1所示,其中WN为旋转因子。设序列M要的地位,并广泛应用于雷达、通信等领域。对于FFTx(n)的长度为N,且满足N=2,
3、M为整数。那么此的工程实现,目前比较通用的方法有两种:高速DSP序列的FFT运算流图由M级蝶形运算构成。或者专用FFT处理芯片。例如AD公司的2106X系列DSP实现1024点基2的复FFT大约需要0.5ms,这种处理速度不能满足某些高速处理要求;若用专用FFT处理芯片PDSP16510完成相同的运算则需要98μs,尽图1蝶形运算符号管速度尚可,但外围电路复杂,并且价格昂贵。传统的运算流图是输入倒序,输出顺序的。这种随着超大规模可编程门阵列(FPGA)的迅速发展,算法的优点是:在同一级运算中,每个蝶形的两个输新一代FPGA内部有高速数字信号处理(DSP
4、)模块和入数据只对计算本蝶形有用,而且每个蝶形的输入输大容量、高速RAM模块,这为利用FPGA实现FFT处出数据节点又同在一条水平线上,这就意味着计算完理成为可能。例如Altera公司新推出的Stratix系列一个蝶形运算后,所得输出数据可以立即存入原输入FPGA,内部带有总容量达10Mbits的RAM,读写时钟数据所占用的存储单元,即同址运算。因此在工程实频率高达269MHz;内部集成了多达28个数字信号处现时可以节省存储单元。但是,这种算法的缺点是:理(DSP)模块,可以配置成224个9×9的乘法器,工每级运算的几何结构是变化的,无法在程序中进行循
5、作频率可以达到250MHz。这些资源使得基于FPGA环控制,所以不便于扩展。的大容量FFT工程实现相对于其他方法具有很大的FFT算法的另一种运算流图是输入顺序、输出倒优势。序,如图2所示(以N=8为例)。这种算法的优点是:尽管Altera、Xilinx等FPGA厂家及其第三方有关每级运算的几何结构是固定的,所以在程序中非常容公司也开发了基于FPGA的FFT处理器,但需要购买易实现循环控制,在不同级运算中只需要改变旋转因且价格较贵。本文主要研究基2FFT的VHDL程序设子;而且便于扩展,对于不同点数的FFT,只需改变相计方法,并进行逻辑综合与时序分析,讨
6、论FFT算法应的地址产生器。因此,这种结构在FPGA中进行的FPGA实现。FFT处理更为合适。其缺点是:蝶形的输入输出数据节点不在一条水收稿日期:2004206214作者简介:刘国栋(1979-)男,山东泰安人,硕士研究生,研究方向为雷达系统与雷达信号处理。·102·航空计算技术第34卷第3期平线上,所以每个蝶形运算所得数据不能存入原数据的存储单元。因此,同样实现16位数据宽度的N点复FFT需要4N×16bits的存储空间,即存储空间是传统同址运算方法的两倍。图4时序图一般采用14位A/D,所以可以采用末位补零的方法将输入补足16位。dat-out-r
7、e、dat-out-im表示输出结果的实部和虚部。时序图如图4所示,其中start-fft是内部信号。当fft运算完成后,done变高;内部进程检测到done变高时,开始利用时钟沿从数据线上取数,同时图2输入顺序,输出倒序的算法流图将计算结果输出;取满N个数后,start-fft有效,启动下一次FFT运算。2FFT处理的FPGA硬件设计程序主要包含4个模块:存放每级计算结果的Stratix系列FPGA有丰富的乘法器资源,而复FFTRAM;存放旋转因子的ROM;蝶形运算单元;地址产生的每一个蝶形运算需要4个乘法器,因此在FPGA中单元。每一个蝶形运算可以
8、用4个乘法器在一个时钟周期内1)RAM模块:由RAM1和RAM2构成,分别存放完成。输入或者每