当前位置:首页 > 通信技术 > 通信技术
[导读]摘要 利用FPGA IP核设计了一种快速、高效的傅里叶变换系统。针对非整数倍信号周期截断所导致的频谱泄露问题,提出了一种通过时输入信号加窗处理来抑制频谱泄露的方法。利用Modelsim和Matlab对设计方案进行了仿真,同

摘要 利用FPGA IP核设计了一种快速、高效的傅里叶变换系统。针对非整数倍信号周期截断所导致的频谱泄露问题,提出了一种通过时输入信号加窗处理来抑制频谱泄露的方法。利用Modelsim和Matlab对设计方案进行了仿真,同时在Altera公司的CycloneⅡ硬件平台上进行了验证。验证结果表明,系统性能良好,改进效果明显。

FFT是离散傅里叶变换(DFT)的一种快速算法,被广泛应用于频谱分析、音频编码、图像处理等数字信号处理领域。FFT运算复杂,需要大量的存储器和运算单元,其硬件实现平台多种多样。DSP需要外置存储器和特定接口,限制了运算速度。ASIC虽能满足速度要求,但其硬件电路复杂、可扩展性差、且价格昂贵。FPGA具有陕速并行运算、高集成度、低功耗等特点,且具有丰富的IP核资源,方便调用,适合FFT算法的实现。

对于512点FFT处理器,如果该512个输入数据不是信号周期的整数倍,即非整数倍周期截断,则会出现频谱泄露现象。窗函数处理的宗旨是减小频谱泄露。常规的FFT硬件实现方法均不考虑由于非整数倍截断导致的频谱泄露问题。针对以上问题,本文设计了一种基于Altera IP核的512点FFT系统,同时通过对输入信号的加窗处理,抑制了非整数倍信号周期截断所产生的频谱泄露。

1 原理概述

1.1 FFT原理

离散傅里叶变换(DFT)算法为

FFT为DFT的快速算法,其方法多种多样,基本可以分为按时间抽取法和按频率抽取法两类。此处介绍基-4频率抽取法。令N=4M,对式(1)N点的DFT可按如下方法作按频率出抽取

4个等式可定义为一个蝶形运算,蝶形运算可看作基-4FFT基本运算单元。参与蝶形运算的4个节点是有规律的,分别为(n)、(n+N/4)、(n+2N/4)和(n+3N/4)。接着再将X(4r)、X(4r+1)、X(4r+2)和X(4r+3)分别分解为4个长度为N/16的序列,基本结构是每一级的运算由N/4个蝶形运算构成,经过迭代log4N次后完成计算。FFT算法的本质是利用系数

的共轭对称性和周期性,将长序列DFT分解成短序列DFT,避免了大量的重复运算,从而提高运算效率。

1.2 窗函数原理

当对输入信号非整数倍周期截断,即512个输入数据不是输入信号周期的整数倍时,会出现频谱泄露现象。对输入信号进行加窗处理,可以有效地抑制频谱泄露。常用的窗函数有矩形窗(Rectangle Window)、汉宁窗(Hanning Window)、海明窗(Hamming Window)、布拉克曼窗(Blackman Window)等,不同的窗函数具有不同的特点,表现在主瓣旁瓣宽度,频率识别精度及幅度识别精度等方面。图1为Matlab仿真图,分别为原始信号,原始信号加窗(海明窗)结果,原始信号做512点FFT结果,原始信号加窗后再做512点FFT结果,这4幅图直观形象地描述了时域信号做FFT后的频域结果,以及原始信号是否加窗对FFT结果的影响。

2 FFT IP核

FFT IP核是高速执行的,参数可配置的FFT处理器,可以实现复数形式的FFT变换和IFFT变换。想要正确地使用FFT IP核,首先需要了解其引擎结构、数据流结构和关键管脚信号。

2.1 引擎结构

FFI IP核有两种不同的引擎结构:四输出和单输出,结构如图2(a)和图2(b)所示。核心区别在于FFT蝶形处理器的吞吐量。一个时钟周期内,四输出结构可以计算出所有4个蝶形输出,单输出结构可以计算出一个蝶形输出。

2.2 数据流结构

FFI IP核支持流、变量流、缓冲突发、突发4种数据流结构。流结构允许连续输入数据,同时输出连续的复数数据流。变量流产生一个与流结构类似的连续输出数据流。缓冲突发结构需要存储资源相对较少,但平均吞吐量也相应降低。突发结构的执行过程与缓冲突发结构类似,对于给定的参数设置,突发结构需要更少的存储资源。

其中,clk为时钟信号;reset_n为复位信号;inverse为FFT处理器变换模式选择信号,选择FFT或IFFF;sink_valid为输入数据有效信号;sink_sop为输入第一个数据标志信号;sink_eop为输入最后一个数据标志信号;sink_real为输入实部数据;sink_imag为输入虚部数据;sink_error为输入错误标志;source_ready为输出等待状态标志;sink_ready为输入等待状态标志;source_error为输出错误标志;source_real为结果实部数据;source_imag为结果虚部数据;source_exp为结果补偿系数;source_valid为结果有效信号;source_sop为

输出第一个数据标志信号;source_eop为输出最后一个数据标志信号。

3 方案设计

系统主要由三部分组成:A/D采集模块、FPGA处理模块及MCU运算显示模块,系统框图如图4所示。A/D采集外部信号数据,将其存入FPGA内部缓存RAM。当FFT输入有效时,读取缓存中的数据,同时与窗函数表中的对应系数做乘法运算,结果输入FFT核中,FFT核处理结束后将数据存入缓存RAM中。单片机读取缓存RAM中的结果数据,进行相应的模值计算,并通过LCD显示结果频谱图形。该方案的核心在于窗函数与FFT运算核的设计与实现。

3.1 窗函数设计

前端数据缓存采用双口RAM核,深度512,位宽8 bit,存放A/D采集到的信号数据。窗函数表采用ROM核,深度512,位宽8 bit,存放窗函数数据。通过Matlab生成512点Hamming窗函数系数表,由于该数据为浮点数,而本设计中全部采用定点运算,故对窗函数系数进行256倍放大,将其变为定点整数,数据范围为0~255。将系数表生成mif文件,作为ROM的初始化文件。该RAM和ROM采用同一套读出地址,保证相应数据同步读出,做乘法运算,得到16 bit结果数据。由于Hamming窗数据是实际数据的256倍,所以需要对乘法结果进行右移8位操作,得到8bit FFT输入数据。设计模块如图5所示,该模块实现了输入信号数据的加窗处理。

3.2 FFT核设计

FFT核采用MegaWizard FFT v11.1,变换点数选择512,数据精度8 bit,引擎结构选择单输出结构,引擎数为1,I/O数据流结构选择突发(Burst)结构。FFT输出数据有3种:实部数据、虚部数据和补偿指数数据。采用两个双口RAM核,深度均为512,宽度均为8 bit,分别存放

FFT核的实部结果数据和虚部结果数据。由于每512个FFT输出数据,补偿指数均相同,所以设置一个8 bit的寄存器存放补偿指数即可。设计模块如图6所示,该模块实现了加窗处理后的信号数据的快速傅里叶变换。

4 仿真与硬件验证

4.1 系统仿真

FPGA开发环境为QuartusII 11.1,仿真环境为Modelsiml0.0。仿真时,由Matlab生成波形数据mif文件,作为仿真测试数据文件存入波形缓存RAM中。通过Quartus II调用Modesim对测试工程进行仿真,仿真时序如图7所示。经时序分析可知,工作时钟频率为100 MHz(period= 10 ns),每进行一次512点处理到全部输出处理结果共耗时36.9μs。

将仿真结果数据导入Matlab,得到结果由图8(a)知,对信号周期整数倍截断FFT处理后,得到单一的正确的频谱图;如图8(b)知,对信号周期非整数倍截断FFT处理后,频谱出现严重泄露,且幅度值下降;如图8(c)知,对信号周期非整数倍截断,加窗后做FFT处理,频谱泄露现象有明显的改进,但幅度值因为加窗处理而相应下降。仿真结果表明,FFT系统设计正确,且加窗处理对信号周期非整数倍截断导致的频谱泄露问题有良好的改进效果。

4.2 硬件验证

ADC选用ADS9238,它是一款高速高动态范围A/D转换器,12 bit,最高采样时钟达65 MSample·s-1。MCU选用c8051F120单片机,LCD选用ZLG320240K-FFSSWE-YBC,分辨率为320×240,可以满足字符、汉字及图形等各种显示需求。FPGA选用Altera公司的Cyclone II EP2C8Q208 C8N,该芯片资源丰富,包含8256个LEs,36个4 kbit Block RAM,18个内部乘法器和208个I/O资源,并支持FFT IP核。

FFT处理时钟为100 MHz,A/D采样率为10 MHz,采样点数为512,故频谱分辨率f=10 MHz/512=19.531 kHz。当输入信号为390.625 kHz时,512个采样点表示20个信号周期;当输入信号为400.390 kHz时,512个采样点表示20.5个信号周期。在加窗和不加窗两种情况下分别对频率为390.625 kHz和400.390 kHz的正弦信号进行采样,得到如图9的结果。

图9中(a)为不加窗的情况下对390.625 kHz的输入信号进行采样,由于512个点正好是20倍截断,所以只在频谱的第20个点有单一幅值,说明FFT系统工作正常。而且由于是整数倍截断,结果没有频谱泄露;图9(b)为不加窗的情况下对400.390 kHz的输入信号进行采样,由于512个点正好为20.5倍截断,非整数倍截断,所以结果中存在严重的频谱泄露;图9(c)为加窗的情况下对400.390 kHz的输入信号进行采样,可以看到,频谱泄露现象得到较好的改善。硬件测试结果表明,FFT系统设计正确,且加窗处理对信号周期非整数倍截断导致的频谱泄露问题有良好的改进效果。

5 结束语

本文利用Altera公司的IP核设计了一种FFT系统,该方法设计简单、资源利用率高、运算速度快,试验证明具有良好性能。同时针对非整数倍周期截断导致的频谱泄露问题,提出了一种通过加窗改进的方法,经硬件平台验证,其改进效果明显。由于加窗导致的幅值变化问题,本文尚未作详细论证,有待进一步的研究。

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

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

关键字: BALANCE SMART FFT 振动分析

Bluespec支持加速器功能的RISC-V处理器将Achronix的FPGA转化为可编程SoC

关键字: RISC-V处理器 FPGA SoC

为无处不在的端侧设备插上AI的翅膀,AMD发布第二代Versal™ 自适应 SoC

关键字: AMD FPGA 自适应SoC AI 边缘计算

Pmod接口可以说是数字电路板的连接革命。随着科技的飞速发展,数字电路板间的通信与连接技术也在不断创新和进步。Pmod接口,作为一种新兴的数字接口标准,正逐渐成为数字电路板间通信的桥梁,为电子设备的连接和通信带来了革命性...

关键字: pmod接口 FPGA 数字电路板

近日举办的GTC大会把人工智能/机器学习(AI/ML)领域中的算力比拼又带到了一个新的高度,这不只是说明了通用图形处理器(GPGPU)时代的来临,而是包括GPU、FPGA和NPU等一众数据处理加速器时代的来临,就像GPU...

关键字: FPGA AI 图形处理器

当我们提到成本优化型FPGA,往往与简化逻辑资源、有限I/O和较低制造工艺联系在一起。诚然,在成本受限的系统设计中,对于价格、功耗和尺寸的要求更为敏感;但随着一系列创新应用的发展、随着边缘AI的深化,成本优化型FPGA也...

关键字: AMD FPGA Spartan 边缘计算

全球领先的高性能现场可编程门阵列(FPGA)和嵌入式FPGA(eFPGA)半导体知识产权(IP)提供商Achronix Semiconductor公司宣布,该公司参加了由私募股权和风险投资公司Baird Capital举...

关键字: FPGA 智能汽车 eFPGA

全新 FPGA 能为嵌入式视觉、医疗、工业互联、机器人与视频应用提供高数量 I/O、功率效率以及卓越的安全功能

关键字: FPGA 嵌入式视觉 机器人

Altera致力于为客户提供端到端的FPGA、易于使用的AI、软件和弹性供应链。

关键字: FPGA AI

在半导体领域,大部分对于AI的关注都集中在GPU或专用AI加速器芯片(如NPU和TPU)上。但事实证明,有相当多的组件可以直接影响甚至运行AI工作负载。FPGA就是其中之一。

关键字: FPGA AI 半导体
关闭
关闭