针对fft算法基于fpga实现可配置的ip核。采用基于流水线结构和快速并行算法实现了蝶形运算和4k点fft的输入点数、数据位宽、分解基自由配置。使用verilog语言编写,利用modelsim仿真,由ise综合并下载,在xilinx公司的virtex-5 xc5vfx70t器件上以200 mhz的时钟实现验证,运算结果与其他设计的运算效率对比有一定优势。
在现代声纳、雷达、通信、图像处理等领域中,数字信号处理系统经常要进行高速、高精度的fff运算。现场可编程逻辑阵列(fpga)是一种可定制集成电路,具有面向数字信号处理算法的物理结构。用fpga实现fft处理器具有硬件系统简单、功耗低的优点,同时具有开发时间较短、成本较低的优势。基于fpga实现的数字信号处理系统具有较高的实时性和嵌入性,并能方便地实现系统集成与功能扩展。基于fpga的硬件实现fft通常有两种方法:(1)并行方法,其采用多个蝶形处理器并行运算,能对较高的数据采样率进行运算,但其硬件规模较大,当在fpga上要实现较大点数的fft时较为困难。(2)串行方法,采用一个蝶形处理器完成运算,使用的逻辑资源较少,但运算速度较慢。本文在串行方法的基础上实现了一种在fpga上实现的可配置fft ip核,具有输入点数可配置(实现0~4 096点自由配置)、数据位宽可配置、分解基可配置的特性。
1 原理分析
自从基2快速算法出现以来,人们仍在不断寻求更快的算法。基4 fft算法比最初的基2 fft算法更快,但从理论上讲,用较大的基数还可进一步减少运算次数,但要以程序(或硬件)变得更复杂为代价。提高fff处理速度的4个主要技术途径是采用流水线结构、并行运算、增加蝶形处理单元数目和高基数结构。
1.1 基2算法基本原理
点数n是2的整数次幂,将x(n)先按n的奇偶分成两组
1.2 基4算法基本原理
与基2算法类似,对于n点有限长序列x(n)的dft按照时域分解展开有
2 可配置fft ip核硬件结构
现有的fft ip核在硬件实现时不具备并行度可配置能力,只提供全循环、全流水、循环展开与流水结合等形式下的某种特定实现,可重用性较差,难以适应不同的计算吞吐量和对计算资源和计算时间的需求。可配置fft ip核技术实现fft算法流水、循环等并行化参数的可配置问题,兼顾fft转换点数、输入输出数据位宽、蝶形运算基数、输入输出fifo深度的可配置,满足不同应用条件下ip复用的需求,适应各种环境和数据吞吐量的fft运算。可配置fftip核功能组成如图1所示。
如图1所示,该ip主要包括ram、rom、地址产生模块、移位模块、选择数据排序模块、可配置蝶形运算单元、精度调整模块和输出数据排序模块,din_r和din_i是fft输入数据的实部和虚部,dout_r和dout_i是fft变换结果的实部和虚部。ram1和ram2存储了fft迭代过程中的输入数据,ram3和ram4存储了fft迭代过程中的计算结果,ram1和ram2、ram3和ram4均为乒乓结构。地址产生模块主要产生向ram写入数据和从ram读出数据的地址。rom中存储了fft需要的旋转因子。
2.1 ip核整体方案
设计可配置fft处理,其整体结构如图2所示,设计采用基2蝶形和基4蝶形运算两种配置方式,供用户选择。输入数据实部和虚部分开存储,需4个ram,为实现对连续流输入可连续流输出,其模块构成如图2所示。
如图2所示,外部输入数据的实数部分din_r、虚数部分din_i,以及输入数据的地址信号adr,首先进入ram_addr单元,选择合适的时钟周期将不同点数的原始数据送入ram单元,当输入数据的实数和虚数以及其地址准备好的时候,rdy输出1。bit_sft单元完成输入数据地址的移位变换,实现奇偶分离。当数据地址准备好时,rdy输出1,当ram_addr或bit_sft这两个单元中的一个单元准备好时,便可触发ram单元,将外部数据写入到ram的指定地址。ram中的数据符合可配置点数要求后,进入num_in单元,其中输出的数据dor/doi就是符合基2蝶形或基4蝶形运算的数据顺序。这些原始数据进入蝶形运算单元butterfly,蝶形单元通过u_select单元选择蝶形运算的分解基,实现基2蝶形运算、基4蝶形运算的可配置功能。其中r4_fft是基4蝶形运算单元,b2_fft是基2蝶形运算单元,蝶形运算过程中所需的旋转因子存储在rom_rat单元中,根据选择不同分解基的蝶形运算,butierfly单元产生相应的地址,选择其计算过程中的旋转因子。当蝶形运算完成后,结果数据进入u_cnorm单元,进行顺序调整和精度处理;其中pr信号是用户指定的精度信号,pr[1:0]可提供3种精度,ovf信号是数据溢出信号,若置1表明fft结果数据超出了表示范围,则要按照截位处理以保证数据准确。当数据输入完成后,结果数据进入num_out单元,由于dit算法输出结果以倒序形式输出,所有需要num_out进行地址调整,fft变换结束后的结果实数部分dout_r,虚数部分是dout_i,地址信号是r_addr,以正确的顺序和形式输出。
2.2 可配置蝶形单元模块
在fft ip核的蝶形运算单元设计中,蝶形单元的运算过程:第一个时钟周期是将下结点与旋转因子复乘的实数乘法进行计算;第二个时钟周期是将复乘中的实数进行加减运算;在第三个时钟周期是计算复乘结果与上结点的加减运算,即将蝶形运算单元的结果输出。可配置蝶形运算通过在基2和基4两种分解基之间切换来实现,其模块图如图3所示。
如图3所示,数据输入时能信号en信号置1,则整个蝶形运算单元的数据输入模块num_in、旋转因子模块rom_rat、分解基选择模块u_select进入使能状态;start信号置1,则分解基选择单元u_select模块开始进入状态机。根据用户设置,如果选择基2算法蝶形运算单元,则将输入数据的实部和虚部送入r2_fft模块;如果选择基4算法蝶形运算单元,则将输入数据的实部和虚部送入r4_fft模块;如果选择混合基,则需要在状态机中加入判断条件,准确控制分支。当蝶形运算完成时,fft运算结果数据的实数部分dout_r[nb+2:0],虚数部分dout_i[nb+2:0]比输入数据的位数[nb:0]扩展了3位,用于精度调整模块进行精度控制。
蝶形运算的旋转因子存储在rom_rat中,其中存储了基4运算和基2运算的旋转因子,实部和虚部分开存储,通过外部信号en对其使能,为控制rom存储空间的占用,不同分解基的旋转因子可公用,通过地址信号adr选取控制。
3 仿真、综合结果分析与验证
将设计的ip核进行基于modelsim的仿真,设置时钟频率为200 mhz,数据位宽为36位,在基2和基4两种分解基下,分析1 024点和4 096点的运算效率,其仿真图像如下所示。
图4是1 024,点的基2算法仿真结果,在这种算法下完成数据录入的时间点为113.1μs,完成结果输出的时间点为123.4μs,运算时间为10.3μs。图5是1 024点的基4算法仿真结果,在该种算法下完成数据录入的时间点51.3μs,完成结果输出的时间点是61.6μs,运算时间为8.3 μs。
图6是4 096点的基2算法仿真结果,在这种算法下完成数据录入的时间点533.1μs,完成结果输出的时间点是574.1μs,运算时间为40 μs。图7是4096点的基4算法仿真结果,在该种算法下完成数据录入的时间点为245.7 μs,完成结果输出的时间点是286.9μs,运算时间为41.2μs。
板级验证选用xilinx公司的virtex-5 xc5vfx70t器件进行综合、布局布线和时序分析。将得到的数据与其他设计实现进行比较,其消耗的资源,以及在200 mhz时钟情况下不同点数的fft处理器进行一次处理需要的时间,与文献换算后得到的数值对比如表1所示。
4 结束语
本文设计的可配置fft ip核具有灵活性强、容易扩展和设计可复用的特点,实现分解基可配置、位宽可配置、输入输出点数可配置。从验证结果可以看出,本文数据的可配置ip核具有结构简单及占用硬件资源适当的特点,在fpga中以实现高速数字信号处理,在处理速度和灵活性方面更有优势。随着处理点数的增加,其优越性将更加明显。
DRAM现货价格呈现出上涨趋势 预计DRAM合约价有望在2020年逐步回升
iPhone8什么时候上市:苹果给iPhone8配上史上最强处理器,只为实现这个功能!
灵动微MM32F0133C6P的规格配置是怎样的
简单实现完全集成的4线RTD温度测量系统,适用于高精度测量应用
雷军透露红米Redmi新机部分细节 保留3.5mm耳机孔而且是现货发售
可配置FFT IP核的实现及基础教程
空中飞行汽车,这是脑洞还是现实
A13的性能到底是什么水平 与骁龙855Plus相比怎么样
毫米波雷达的应用场景是怎样的
英威腾IVC2H型PLC在木工机械设备中的应用
XP Power推出输出隔离的30W DC-DC转换器RDC30
美国商务部或正试探不再授予华为临时许可
我应该对你失望吗佳能EOS 6D Mark II?传感器动态范围惨遭尼康D750吊打
如何避免3D打印机使用过程中出现拉丝
iphone8什么时候上市:iPhone8真机曝光,或将告别全金属机身!设计和工艺的全面革新
智能家居市场概况及应用传感器介绍
全SiC模块的应用要点:缓冲电容器
最新黑科技 将光电二极管制成可清洗柔软织物
sdr技术应用及发展
新迪数字受邀出席浙江省工业软件产业技术联盟成立大会