当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘 要:针对实时高速信号处理要求,设计并实现了一种基于FPGA的高速流水线结构的基4FFT处理器。根据各种不同基算法的运算量、硬件面积和控制复杂度,选定按时间抽取的基4算法,同时采用单路延时反馈(Single-path Delay Feedback,SDF)流水线结构,提高了处理速度。通过Verilog HDL语言进行模块化描述和验证,结果表明,该FFT处理器具有较高性能。

引言

快速傅里叶变换 (Fast Fourier Transformation,FFT) 作为时域和频域转化的基本运算,是数字谱分析的必要前提。FFT方法是信号处理领域的核心算法之一,它广泛应用于雷达信号处理、观测、数字通信、数据变换、定时定位处理、无线通讯、图像处理等领域。为便于硬件实现,FFT 算法常采用分级运算结构。如今的 FFT 大多采用并行结构,但其运算速度往往受到数据带宽的限制,因而需要增加成倍的存储单元才能满足速度要求。本文对 FFT 算法进行了分析,基于节省运算量、减少硬件面积和提高处理速率的考虑,给出了一个基于 FPGA的高速流水线结构的基 4FFT 处理器的设计方法。

1 基 4FFT 算法

FFT 算法的基本思想是 :利用 DFT 系数的特性 ( 即周期性、对称性和可约性 ) 来合并 DFT 运算中的某些项,把长序列 DFT 变成短序列 DFT,从而减少其运算量,达到提高速度的目的。一般的 FFT 算法可以分为两类 :第一类对时间,对时间序列 x(n) 进行逐次分解,称为时域抽取 FFT 法(Decima-tion-In-Time-FFT,DIT-FFT);第二类对频率,主要对傅里叶变换序列 X(k) 进行分解,称为频域抽取 FFT 法 (Decimation-In-Frequency-FFT,DIF-FFT)。本设计采用 DIT-FFT 法进行设计。

1.1 基 4 DIT-FFT 算法

DFT 将时域信号变换成频域信号后,长度为 N 的有限长序列 x(n) 的离散傅里叶变换可以表示为 :

基于FPGA的高速基4FFT设计与实现

基 4 DIT-FFT 算法的基本原理是 :将一个 N 点的 FFT分解为 4 个 N/4 点的序列,再分别进行 DFT 计算 ;然后再将每个N/4点进一步分解为 4 个N/16点的计算,依此类推。同理,对于多点数还可以进行多级分解。其基 4 蝶形运算如下:

基于FPGA的高速基4FFT设计与实现

其中,X(K), X(k+N/4), X(k+2N/4), X(k+3N/4) 是蝶形运算后的结果。基 4 蝶形运算单元可以用图 1 表示。

1.2 算法比较与选择

一般常用乘法次数和加法次数来衡量一个算法的性能。例如,对于基 4FFT 算法的描述为 :每个蝶形运算为 3 次复数乘法,每级共有 N/4 个基 4 蝶形单元,共有 m 级 ( 其中,N=4m)。表 1 所列是 4 种常用基数算法运算量的比较,表中,l=log2N。

一般情况下,基数越高,总计算量就越少,但是,控制复杂性也会相应提高。就复杂性而言,基 2 算法最容易控制,操作简单 ;基 4 算法控制稍许复杂,但与基 2 相差不大 ;基 8和基 16 算法的控制复杂度与基 4 相比,难度会增大很多。综合考虑运算量与控制复杂度,本文选择基 4 算法来实现设计。

2 基 4 FFT 算法的硬件实现

现今的 FFT 算法大多采用并行结构来实现。由于并行结构的数据输入大多是串行连续输入的,需要进入串并转换,这样会浪费大量时间,尤其是在一些实时高速处理的场合,并行结构难以适应。而流水线结构在实时性和连续性等方面具有天然的优势,所以,本设计采用流水线结构来完成设计。

FFT 算法的流水线结构一般分为 3 种:第一种是单路延时转接器结构 (Single-path Delay Commutator,SDC) ;第二种是多路延时转接器结构 (Multi-path Delay Commutator,MDC) ;第三种是单路延时反馈转接器结构 (Single-path Delay Feedback,SDF)。表 2 所列是流水线结构 FFT 各种指标的比较,其中,k=log4N。

从表 2 可以看出,在运算量上,SDC 占优势,但控制复杂度较高。综合考虑运算量、存储单元及控制复杂度,SDF是最优的选择。因此,本设计采用 SDF 结构。

本文设计实现的一个 1024 点流水线结构基 4-SDF FFT的结构框图如图 2 所示。

2.1 蝶形运算单元

可以将蝶形运算分割为下式 :

基于FPGA的高速基4FFT设计与实现

其中,基于FPGA的高速基4FFT设计与实现是蝶形运算后一状态的结果。经过分割后,可以看出,整个蝶形运算只有 a+b, a-b, a+jb, a-jb 四种计算,分别采用复数加法与减法器就可以完成蝶形运算,从而可大大简化设计和实现的复杂度。图 3 与图 4 分别是蝶形单元所用到的复数加法器与减法器的框图。

2.2高效乘法器

一般两个复数分别为A=a+jb, B=C+jd的复数相乘的计 算过程为:

AB=(a+j b)(c+j d)=(ac-bd)+j(ad+bc)=Fre+j Yim                      (4)

其中,Yre为 AB 结果的实部,Yim为 AB 的虚部。

显然,一次复数乘法共需要4次实数乘法和3次实数加 法,但是,如果进行一定的变换,就可以减少实数乘法的次数。 即:

Yx=ac-bd=ac-ad+ad-bd=(c-d)a+(a-b)d                                      (5)

Yim=ad+bc=ad-bd+bd+bc=(c+d)b+(a-b)d                                 (6)

在计算前,将c-d,c+d,a-b的结果放在存储单元中,这样, 一次复数乘法就只需要3次实数乘法与5次实数加法,显然 会大大节约硬件开销,同时也提高了计算速度。

本设计采用有符号数BOOTH编码的乘法器,根据数据 量化,利用10位的被乘数和10位的乘数进行运算。其计算 结果乘积需要经过饱和,最后取10位结果保留。

2.3旋转因子存储

本设计需要将旋转因子向量= cos i +jsin i的实部和 虚部存储在寄存器中,并利用查找表方式实现向量旋转运算。 这样只需要取在1/8圆内,即[0,…,n/4]之间的旋转因子, 其他的旋转因子都是这1/8圆周区域内旋转因子的变换。按照 旋转因子的周期性和对称性,其他区域的旋转因子,可通过 交换实部虚部和改变正负号来得到。

例如:设点A为[0,…,”4]的一个旋转因子,假设它 写成矢量形式是A=cosx+jsinx,那么,映射到4个象限内的 另外7个投影则是:

sinx+jcosx, -cosx +jsinx, -sinx +jcosx, -cosx+j(-sinx), -sinx+j(-cosx), sinx+j(-cosx), cosx+j(-sinx)

旋转因子一共有8个数据。只需要将这样的一个数据的 实部和虚部的数值(不包括符号)分别存储在寄存器同一个地 址的数据存储单元里,就可以在取出这个数据后,通过变换 安排好它的实部和虚部,然后重新安排它的正负号,就可得到 其他在该级运算中所需要的另外7个旋转因子。

2.4控制单元

每级蝶形运算单元都有自己的控制单元,这主要是控制 蝶形运算单元的工作模式,判断是否进入流水操作,操作数 的选取,RAM的选通,复数乘法的选通,以及产生RAM和 旋转因子的地址。另外,控制单元还需要产生使能信号,以供 下一级的输入使用。

对于蝶形单元的控制,主要是控制其工作模式。在蝶形 单元中,输入数据先存储到第一个存储单元中,同时从第一个 存储单元的相同地址中取出上一次蝶形运算的结果,然后把第 二、三段数据存储到第二、三个存储单元中,同时读出相应的 结果;当最后的一段数据到来时,从存储单元中读取相应的 数据进行蝶形运算,同时输出第一个运算结果,并把其他3 个结果同址写回三个存储单元相对应的位置。

对于旋转因子的控制,由于在寄存器中的旋转因子都是 无符号数,因此在进行复数乘法之前,需要根据控制单元的 指示,重新安排它的正负号。

2.5输出数据地址转换

在系统中,FFT输出的数据也许是给下一级使用。特别是 在OFDM系统中,也需要找回原来的顺序。由于输出数据的 地址是乱序,所以需要有地址产生模块给数据产生地址,以 方便后级使用。输出数据地址转换应按照00、01、10、11输入, 并按照11、10、01、00顺序输出。

3仿真、综合及FPGA实现

本文设计实现了一个1 024点的基4 FFT处理器,数据 处理精度为10位。采用Verilog HDL语言描述整个设计,并 编写测试平台。笔者利用Modelsim SE 6.5对本文的设计进行 了功能仿真验证,运算结果与Matlab计算的结果一致,从而 证明了本文算法的正确性。

在FPGA实现方面,本文选用Xilinx的Spartan-3E-XC- 3S500E芯片,该器件的内部含有4个数字时钟管理器(DCM), 73 kB 的分布 RAM, 360 kB 的 block RAM, 4 个 18X18 的专 用乘法器(Dedicated Multipliers)单元,其中乘法器的工作频 率可达到300 MHz。综合布线工具均采用Xilinx的设计平台ISE9.1,表3所列是其该处理器与一些现有文献中的FFT处 理器核的性能比较,可见本设计具有一定的优势。

4结语

本文通过采用SDF流水线结构设计并实现了一个基于 FPGA的高速基4 FFT处理器,FPGA内部资源消耗明显减少, 并保持了比较高的工作频率,能满足信号处理系统实时处理的 要求。从实现结果可以看出,与并行结构的FFT处理器相比, 流水线结构的处理速度更快。该处理器可适用于超高速场合 以及需要密集型数字信号处理的领域,比如数字通信、数据 变换、定时定位处理、无线通讯、图像处理等。

20210915_6141736b491a4__基于FPGA的高速基4FFT设计与实现

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

上海2024年4月16日 /美通社/ -- 根据研究和经验, 设备和系统50%的故障或失效可直接或间接地是由转子不平衡引起的。在先前申克现场动平衡仪的基础上, 申克又创新了一套更成熟的移动式平衡设备:SmartBalan...

关键字: BALANCE SMART FFT 振动分析

硬件技术在硬件技术方面主要从处理机、存储器和流水线三个方面来实现并行。1.处理机:主要的处理机系列包括CISC、RISC、超标量、VL1W、超流水线、向量以及符号处理机。传统的处理机属于复杂指令系统计算(CISC)结构。...

关键字: 并行处理 处理器 流水线

采用多级指令流水线结构采用流水线技术可使每一时刻都有多条指令重叠执行,以减小 CPI 的值,使 CPU 不浪费空周期。

关键字: CPU 流水线 CPI

摘 要:主要探讨了人体活动识别KNN算法的改进方法,该方法通过快速傅里叶变换算法和相关,性分析,把采集到的 信号时域特,性变成频域特性,从而实现了对人体活动模式的识别。

关键字: 人体活动识别 KNN算法 FFT 频谱分析 相关性分

摘要:在图像信号传输过程中,由于传输网络以及各种数模转换设备和数字处理设备的影响,可能会造成失真杂散信号的产生,其随机不确定,性将导致某些专业图像检测处理设备工作的异常。文中首先分析了图像失真杂散信号产生的原因及其特征,...

关键字: 图像失真 失真杂散信号 FFT 自适应阈值 随机性

在此前的文章中,我已经向你介绍了Kubeflow,这是一个为团队设置的机器学习平台,需要构建机器学习流水线。 在本文中,我们将了解如何采用现有的机器学习详细并将其变成Kubeflow的机器学习流水线,

关键字: 机器学习 流水线 kubeflow

卓大大,打扰一下。我想问下您就是互相关运算和卷积在一定程度上是一样的运算吧?那为什么卷积之后序列长度是2N-1,而互相关运算的结果按照那个频域相乘再求快速傅里叶的逆变换得到的序列长度应该是就是之前的序列长度N吧?为啥和卷...

关键字: FFT LENGTH 位移 TC

Atitit 流水线子线程异常处理  1.1. 大概原理是 FutureTask排除异常 FutureTask.get   can throw ExecutionException,can catch

关键字: atitit 流水线
关闭
关闭