当前位置:首页 > 通信技术 > 通信技术
[导读]摘要 利用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系统,该方法设计简单、资源利用率高、运算速度快,试验证明具有良好性能。同时针对非整数倍周期截断导致的频谱泄露问题,提出了一种通过加窗改进的方法,经硬件平台验证,其改进效果明显。由于加窗导致的幅值变化问题,本文尚未作详细论证,有待进一步的研究。

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

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭