搜索
您的当前位置:首页正文

电力谐波检测中基于FPGA的FFT设计与实现

来源:二三四教育网


电力谐波检测中基于FPGA的FFT设计与实现

谐波检测/基-4 FFT算法/复数乘法器/FPGA

1 引言

随着电力电子技术在工业和生活中的大量应用,由其产生的谐波已成了电力系统谐波污染中最主要污染源,对于谐波治理关键因素在于谐波测量,现今主要采用的谐波测量方法有,基于瞬时无功功率的谐波测量,基于神经网络的谐波测量,基于小波变换的谐波测量,基于傅里叶变换的谐波测量[1]。其中基于傅里叶变换(FFT)的谐波检测方法由于其计算方便、实现简单,因而受到了广泛的应用[2]。

FFT的基本思想在于:可将一个长度为N的序列的离散傅里叶变换逐次分解为较短的离散傅里叶变换来计算,这些短序列的DFT可重新组合成原序列的DFT,而总的运算次数却比直接的DFT运算要少得多,从而达到提高速度的目的[3]。随着超大规模可编程逻辑门阵列(FPGA)技术的发展,新一代的FPGA内部都集成了高速数字信号处理模块和大容量、高速RAM模块,因此,采用FPGA芯片可以方便地实现FFT处理器[4]。

2 算法概述

2.1 快速傅立叶变换FFT原理

离散傅立叶变换定义了时域与频域之间的一种变换,设在时域上x(n)是长度为N的离散复序列,其离散傅立叶变换(DFT)定义为:

(k=0,1,…,N-1) (1)

通过(1)式计算X(k)需要N次复数乘法和N-1次复数加法。所以,N个K值共需N2次复数乘法及N(N-1)次复数加法[5]。对DFT算法分解的依据是利用特性:

的一些固有的

(1)周期性:

(2)对称性:

(3)可约性:

利用的周期性、对称性和可约性,使得DFT运算中的有些项可以合并,将常序

列的DFT分解为短序列的DFT,FFT就是基于这种思路发展起来的。FFT算法依据运算的

基不同,可以分为基-2、基-4、基-8等,并且随着基的数目增多,运算量也增大的很快[6]。

各种算法的运算次数计算如附表所示。可以看出从基-2到基-4,乘法和加法的运算次数发生了比较大的跳变,而从基-4到基-8到基-16,运算次数变法的幅度就不是很明显了。从算法的复杂程度来看,基-2最简单,基-4比基-2复杂一些,而基-8和基-16的复杂程度与基-4相比跳变得很明显。综合考虑基-4FFT在运算速度和控制的复杂性方面具有较高的性价比[7]。因此,为了提高数据吞吐率和降低处理器的时钟工作频率,提高运算速度,采用基-4 FFT时域抽取算法。

附表 几种不同运算基的FFT运算比较

2.2 基-4 FFT 算法

采用按时域抽取(DIT)的分解方法,将N点DFT分解为两个N/2点的DFT,即基-2分解,其分解原理为:

设N=2M (M为整数),并将x(n)分解为偶数与奇数两序列之和,式(1)可分解为:

(2)

根据的可约性,,式(2)变为:

(3)

设定,,则式(3)变为:

(4)

而后半N/2点的DFT为:

(5)

根据的周期性有,再根据的对称性有,式(5)变为:

(6)

对于N=2S点的基-2FFT运算可分解为S级,每级包含N/2个蝶形运算单元。

对DFT的分解可以继续下去,将基-2 FFT的N/2 点DFT再分解为N/4点DFT,即

基-4分解。N点的基-4 FFT的运算方程为:

(7)

(8)

(9)

(10)

其中k=0,1,…,N/4-1。

设,,,],

,则式(7)-(10)变为,设序列x(n)的长度为N=4P,其中P

为正整数,则基-4 FFT按时间抽取的蝶算方程为:

其中s为基-4 FFT蝶算单元的级数,其表达式如下:

(11)

(12)

(13)

(14)

式中a=x(n),,,,s为基

-4FFT碟算单元的级数,其表达式为,s=1,2,…,p;n=b2×4s+b1,b

1=0,1,…4s-1-1,b2=0,1,…,4p-s-1。

根据这个抽取规律可得到如图1所示的蝶形运算信号流图:

该信号流图可简单表示为图2所示形式:

对于N=4S点的基-4 FFT运算可分解为级,每一级都包含N/4个蝶形单元[8]。

图1 基-4 FFT蝶形运算流图

图 2 基-4 蝶形运算简单信号流图

图3 FFT结构框图

3 FPGA概述

FPGA是一类高集成度的可编程逻辑器件,起源于美国的Xillnx公司于80年代中期推出第一块FPGA。在这二十几年的发展中,FPGA的硬件体系结构和软件开发工具都在不断的完善,日趋成熟。由于FPGA结合了微电子技术、电路技术、EDA技术,使设计者可以集中精力进行所需逻辑功能的设计,缩短设计周期,提高设计质量[9]。现今的FPGA具有以下特点:

(1)内部时钟速度可高达450MHz,且具有丰富的全局时钟资源和数字时钟管理模块(DCM),可以获得较小的时钟扭曲;

(2)具有为算术运算而特别设计的硬件结构,如18bit*18bit嵌入式硬件乘法器、快速进位链等;

(3)包含丰富的模块化RAM。

4 基于FPGA的FFT结构器设计

4.1 FFT结构设计

在实际电力系统谐波检测中,当A/D采样电路完成电流电压信号的采样和转换后,控制芯片发出信号启动FPGA,将转换后的数据存储于FPGA的片内双口RAM1中,然后经过FFT蝶形运算单元进行数字信号处理,分析出各次谐波,再将其分析结果数据存储于片内双口RAM2中,供处理器读出。

由FFT结构框图3可知:FFT处理器被分成以下几个主要功能模块进行设计:蝶形运算模块、数据地址产生模块、逻辑控制模块等,其中蝶形运算模块是关系整个处理器的运行速度与资源的核心部分,是FFT处理器的基本运算单元。

各模块的功能说明:

(1)逻辑控制模块:逻辑控制单元的功能是控制系统中各单元的工作顺序。使系统按照预先设定的流程工作;

(2)数据地址产生模块:产生双口RAM和存放旋转因子的ROM的地址信息,包括读地址和写地址;

(3)蝶形运算模块:采用并行蝶算结构,完成4点DFT运算和乘旋转因子运算;

(4)数据选择模块:采用块浮点方法,根据蝶形运算结果对18Bit数据进行选择,取

16Bit;

(5)双口RAM:存储输入数据和中间处理数据;

(6)ROM:存储旋转因子数据。

4.2 复数乘法器的设计

在FFT 的实现过程中,需要进行大量的复数乘法运算,旋转因子复数乘法通常由4次实数乘法和2次加法或减法运算实现,而乘法运算会占用较多的处理器资源,因此高效率的复数乘法器设计对于高速FFT处理器的实现至关重要。通过优化,提前计算出其中一个数值,可以减少一次乘法运算,但相应的增加占处理器资源小的加减法运算,从而可以只用3次实数乘法和5次加法或减法运算实现。

如复数旋转因子乘法M+jN=(X+jY)(C+jD),可得M=XC-YD,N=YC+XD,然而C和D可以通过提前计算得知,优化M和N得表达式可得:M=(C-D)×Y+C×(X-Y),N=(C+D)×X-C×(X-Y),可见M和N表达式中C×(X-Y)部分相同,因而在整个运算过程中,只需要完成三次实数乘法即可,仅仅只是额外的增加两次加法运算。

4.3 Rom因子表设计

Rom因子表是存放旋转因子分实部和虚部事先写入存储器中,各级旋转因子可由式(15)-(18)计算得到。Rom因子表在读使能信号下,读出相应地址的旋转因子的实部和虚部到蝶形运算单元[10]。

(15)

(16)

(17)

(18)

(19)

5 结束语

本文较为详细的介绍了基-4 FFT算法进行谐波检测的原理,以及与其他基算法,基-4算法的优越性,并优化了其复数乘法设计器的设计,简单介绍了FPGA的特点,并以FPGA为硬件平台实现了FFT处理器的架构设计。

雷立煜 廖力清

更多请访问:中国自动化网(http://www.ca800.com)

因篇幅问题不能全部显示,请点此查看更多更全内容

Top