洪 江, 何 勰, 张凯杰
(上海船舶运输科学研究所 航运技术与安全国家重点实验室,上海 200135)
基于FPGA的FFT算法在船舶电站监控中的实现
洪 江, 何 勰, 张凯杰
(上海船舶运输科学研究所 航运技术与安全国家重点实验室,上海 200135)
针对船舶电站监控系统的特点及其对参数实时监控的要求,提出基于现场可编程门阵列(Field-Programmable Gate Array, FPGA)的快速傅里叶变换(Fast Fourier Transform,FFT)算法,并将其应用到船舶电站监控系统中。为验证FFT算法在检测识别船舶电压信号方面的有效性,分别在FPGA和MATLAB平台上对船舶电力系统中的电压三次谐波函数信号进行FFT计算。在FPGA中得到的运算结果与MATLAB中得到的运算结果基本一致,表明基于FPGA的FFT算法能有效识别出不同频率的信号成分,在船舶电站监控中对参数检测具有较好的应用价值。
FFT;FPGA;蝶形运算;谐波分析
数字信号处理技术在实际工程中具有非常广泛的应用,数字信号的处理主要采用时域法(即数字滤波)和频域法(即频谱份分析)2种方法。离散傅里叶变换(Discrete Fourier Transform, DFT)是信号处理中最常用的算法之一,在信号处理领域起着核心作用。基于DFT优化改进的快速傅里叶变换算法(Fast Fourier Transform,FFT)已成为数字信号处理的最基本技术之一,已广泛应用于频谱分析、数字滤波、图像处理、语音识别和无线保密通信等领域中。
随着船舶电站监控系统逐渐向智能化方向发展,对电站监控的快速性、实时性和可靠性提出了更高的要求。将基于现场可编程门阵列(Field-Programmable Gate Array, FPGA)的FFT算法运用到船舶电站监控设备中能较好地满足该要求,较好地提升整个船舶电站监控的智能化水平。
在船舶电站监控中,电压参数是整个电力系统中的一个非常重要的性能指标,其品质直接关系到整个电网的品质和安全。因此,船舶电站监控系统必须能快速检测出该参数中的各次谐波,实时监控该参数的数值和波动情况。这里研究如何在FPGA芯片中实现FFT算法,运用在FPGA中设计好的FFT处理器对船舶电力系统中的电压三次谐波函数信号进行检测分析,验证FFT算法的性能。
DFT是信号分析和处理中的一种重要变换,直接计算DFT的运算量与变换区间长度N的平方成正比,当N较大时,运算量成几何级数增长,限制了DFT在实际工程中的应用。在该背景下,基于DFT改进的分裂基FFT算法可减少计算次数,使FFT算法在工程应用中发挥出巨大的优势。
长度为N的有限长序列x(n)的DFT为
(1)
式(1)中:x(n)为时域点;X(k)为频域点;WN为旋转因子。
FFT算法的核心是充分利用旋转因子的周期性和对称性,不断把长序列的DFT分解成几个短序列的DFT,减少DFT的运算次数。FFT算法可按分解方式的不同分为时域抽取算法(DIT)和频域抽取算法(DIF),2种分解方式本质上完全一致,在运算量和复杂性上也完全相同。
采用基-2时域抽取算法(基-2FFT),对其进行简要分析。基-2FFT是将x(n)按n的奇、偶分为x1(n)和x2(n),用2个N/2点DFT来完成一个N点的DFT计算。
(2)
基-2FFT运算的基本单元是蝶形运算单元(见图1)。
由图1可知,进行一次蝶形运算只需进行2次复数乘法和2次加减法运算,则N=2n个点的DFT复数乘法运算量由N2降到N/2log2N次,复数加减法运算量由N(N-1)次降到Nlog2N次。因此,当N取值较大时,运算量会极大地降低,提高了运算效率。
基-2FFT算法中的主要运算参数解析如下。
1)原位计算:序列长为N=2M点的FFT有M级蝶形,每级有N/2个蝶形运算。在同一级中,每个蝶形的2个输入数据只对本蝶形有用,每个蝶形的输入、输出数据节点在同一水平线上。这样,当计算完一个蝶形后,所得的输出数据可立即存入原输入数据所占用的存储单元内。经过M级运算后,原来存放输入序列数据的N个存储单元中可一次存放X(k)的N个值。
3)在同一级中,第L级FFT运算中同一旋转因子用在2M-L个蝶形中,相同旋转因子之间相隔的距离(蝶距)为D=2L。
4)在同一蝶形运算中,第L级的每个蝶形的2个输入数据相距B=2L-1。
5)码位颠倒:输入序列x(n)经过M级时域奇、偶抽选后,输出序列X(k)的顺序和输入序列的顺序关系为倒位关系。
6)蝶形运算的规律:序列经过时域抽选后存入数组中,若蝶形运算的2个输入数据相距B个点,则应用原位计算,蝶形运算可表示为图2的形式。
N=8时的基-2FFT算法的运算流程见图3。
2.1FFT模块的总体设计[3]
FPGA采用逻辑单元阵列LCA结构,主要包括可配置逻辑模块、输入输出模块和内部连线模块。FPGA可实现组合逻辑和时序逻辑功能,这些逻辑通过内部静态存储单元加载编程数据实现,且FPGA允许无限次编程。根据FPGA的结构和功能实现特点,在FPGA平台上设计FFT模块。
基-2FFT模块主要由蝶形运算单元、ROM单元、RAM单元、地址产生单元、时序控制单元和求模运算单元等6部分组成(见图4)。
FFT模块的功能概述如下。
1)蝶形运算单元:采用DIT方式完成基-2蝶形运算,数据从RAM和ROM中读出,1次蝶形运算完成对输入数据的复数乘法和加减法,输出运算结果。
2)RAM单元:在时序控制单元和地址产生单元的控制下,实现实时读入和读出运算参数。
3)ROM单元:主要存放用于FFT运算的旋转因子参数,在时序控制单元和地址产生单元的控制下读出旋转因子参数。
4)地址产生单元:产生RAM的读、写地址和ROM的读地址。
5)时序控制单元:产生各模块的时钟控制信号,控制FFT运算的过程。
2.2蝶形运算单元的设计[4]
蝶形运算单元是FFT模块的核心单元,该单元模块的运算速度直接决定着整个FFT的速度,蝶形运算单元的设计图见图5。
在图5中,2个模块分别为复数乘法运算子单元和加减法运算子单元。首先对输入到蝶形运算单元的信号数据线进行复数的乘法运算,将乘法子单元运算得到的结果输入到加减法运算子单元中进行运算,整个运算过程均在时钟信号的控制下进行。
蝶形运算单元是整个FFT运算的核心部分,下面详细讨论整个FFT算法在FPGA中实现的原理。
2.3FFT算法在FPGA中的实现[5]
FFT在FPGA中的实现见图6,FFT模块的工作原理描述如下。
1)在外部使能信号的控制下,FFT模块开始工作;
2)旋转因子参数已预存储在ROM中,在第1个时钟信号的控制下,初始的信号参数读入到RAM中;
3)在第2个时钟信号和地址控制信号的控制下,ROM的旋转因子参数和RAM中的参数读出,输入到蝶形运算单元中;
4)在第3个时钟信号控制下,蝶形运算单元开始对输入参数进行运算,然后将得到的参数返回到RAM中;
5)继续在时钟信号和地址控制信号的控制下,不断将参数写入到蝶形运算单元中进行迭代,根据预先设置好的迭代次数,当完成最后一次蝶形运算时,将得到的参数写入到求模运算单元中;
6)经过求模运算之后,便得到信号的FFT运算结果。
为验证FFT算法在FPGA中的实现中基于FPGA设计的FFT模块的性能,对船舶电力系统电压中的谐波函数信号进行FFT运算分析。
船舶发电机在产生正常的电压时,经常会掺杂奇数次的谐波,这些谐波对于整个电网具有一定的危害,影响电源品质。在实际应用中,需提前识别出电压中的谐波成分,然后对电压进行相关的滤波,从而保证输出稳定的电压。
船舶发电机电压的三次谐波函数为
y(t)=cos(2pif3t)+cos(2pifbt)+cos(2pi3f3t)
(3)
下面主要用FFT处理器识别电压信号中的50 Hz,1 000 Hz和3 000 Hz的成分,则在电压的三次谐波函数中,fb=50 Hz,f3=1 000 Hz,点数N=1 024,采样频率为51 200 Hz,即采样间隔为0.02 s。
1)三次谐波函数信号在FPGA中运算得到的结果见图7。
2)三次谐波函数信号在MATLAB中的处理结果见图8。
3)由图7和图8可知,频率值约为50 Hz,1 000 Hz和3 000 Hz时,FPGA的运算结果和MATLAB中的仿真结果[6]基本一致,充分说明在“FFT算法在FPGA中的实现”中设计的FFT处理器比较合理,性能较好,符合设计要求,能实现对三次谐波函数信号中的不同频率成分的识别。
本文详细阐述了FFT算法的基本原理。蝶形运算单元是FFT算法的核心,通过采用蝶形运算,可大幅度减少运算次数,提高算法的运算速度,非常适合处理大批量的信号,优势明显。
根据FFT算法的基本原理,在FPGA中设计了FFT处理器,对船舶电力系统中的电压谐波函数信号进行了运算,验证了FFT算法的性能。为验证FFT模块对谐波函数信号识别的有效性,分别在FPGA和MATLAB中对50 Hz,1 000 Hz和3 000 Hz的信号成分进行FFT运算识别。得到的频谱仿真结果显示,在FPGA中运算得到的结果与在MATLAB中得到的结果基本一致,说明设计的FFT模块能有效地识别出不同频率成分的信号。
该基于FPGA的FFT算法模块未来可运用到船舶电站监控的的信号(电压、电流和频率等)谐波分析、电力系统综合保护模块、电力系统的故障诊断中,能较好地提升船舶电站监控系统的快速性和实时性,有效提升整个船舶电力系统的自动化水平。
[1] 胡广书.数字信号处理-理论、算法与实现[M].北京:清华大学出版社,1997.
[2] 程佩青.数字信号处理教程[M].北京:清华大学出版社,2009.
[3] 王林泉,皮亦鸣,陈晓宁,等.基于FPGA的超高速FFT硬件实现[J].电子科技大学学报,2005,34(2):152-155.
[4] 蔡可红,基于FPGA的FFT设计与实现[D],南京:南京理工大学,2006.
[5] 白德风.基于FPGA的FFT信号处理器的设计与实现[D].北京:北京工业大学,2008.
[6] 张志涌.精通MATLAB[M].北京:北京航空航天大学出版社,2011.
FFTAlgorithmProgrammedFPGAforShipPowerPlantMonitoring
HONGJiang,HEXie,ZHANGKaijie
(State Key Laboratory of Navigation and Safety Technology, Shanghai Ship & Shipping Research Institute, Shanghai 200135, China)
This paper puts forward an Field-Programmable Gate Array(FPGA) programmed with an Fast Fourier Transform(FFT) based Algorithm for the real time monitoring system of ship power station. The effectiveness of the design in the voltage signal detection and the third-harmonic analysis is checked in MATLAB environment and with programmed FPGA respectively. The results obtained with the FPGA are basically the same as those from the MATLAB, which proves that the design is successful.
FFT; FPGA; butterfly operation; harmonic analysis
U665.12
A
2017-06-07
洪 江(1988—),男,江西鹰谭人,研究实习员,硕士,主要从事电站自动化系统设计研究。
1674-5949(2017)03-0032-06