基于MSP430系列微控制器的FFT算法实现
摘要:傅里叶变换算法在供电质量监测系统中被用来进行谐波分析,如何加快分析速度和降低系统成本是当前这种监测系统设计关注的主要问题。TI公司的MSP430系统微控制器具有功耗低、供电范围宽及外围模块齐全等特点,适合实现各种监测设备。该系列芯片内部充足的数据存储器满足快速傅里叶变换算法过程中的数据存储,芯片内部大量的代码存储器存储相位因子的计算结果和所需要的三角函数数值,采用查表的方法以提高分析速度;采用芯片内部硬件乘法器模块可以进一步提高分析速度。实测结果显示对一个信号周期256个采样点的快速傅里叶变换分析,完成全部计算仅需要0.3 s的时间,前10次谐波的计算相对误差低于千分之一。所研制的在供电质量监测系统完全满足用户要求。
关键词:MSP430;快速傅里叶变换;存储器;微控制器
随着各种电力电子装置在电力系统越来越广泛的应用,其非线性的特点使得供电中的谐波失真问题日益严重。监测技术的研究对市电质量的补偿具有很高的价值,考虑到实际情况,在供电系统质量监测中需要一些低成本,但分析速度较快的监测系统。
离散时间采样的快速傅里叶变换FFT(fast Fouriertrans form)算法是目前最主要的谐波检测和分析方法。FFT算法的实现可以采用专用芯片37—40、DSP芯片6—1141—44、FPGA芯片193— 207以及微控制器等。随着集成电路制造技术和数字计算机技术的进步,微控制器芯片的功能和所能提供的逻辑资源越来越多。MSP430F1611微控制器芯片属于TI公司MSP430x1xx系列产品中的一种,该芯片具有10240字节的SRAM(Staric Random Access Memory)存储器、48 k字节的程序存储器、8通道12位ADC、2通道12位DAC、16位×16位硬件乘法器模块等片内资源。硬件乘法器模块支持8/16位x8/16位有符号,或者无符号的乘法运算,并可以选择“乘法与累加”功能。采用MSP430系列微控制器实现FFT算法具有超低功耗、低电压工作、低成本、分析速度快等优点,它比采用专用芯片和DSP芯片价格便宜,比采用FPGA芯片容易实现。
1 利用微控制器实现FFT算法
快速傅里叶变换在信号处理中的线性滤、相关计算、谱分析等方面起着重要的作用。将N点采样数据分解为更短的数据段来进行计算可以提高计算效率,目前使用最广泛的是基2的FFT算法。图1给出基2按时间抽取的快速傅里叶变换中的基本运算过程379-388181-189。

这种运算过程被称为蝶形运算,因为它的流程图看起来就像一个蝴蝶。每次蝶形运算包括一次复数乘法运算和两次复数加法运算。一旦对一对复数(a,b)执行了产生(A,B)的蝶形运算,原数据就无须再保存,所以可以将结果(A,B)保存在与数据(a,b)相同的数据存储单元。
由于MSP430系列微控制器的开发软件不支持复数运算,这里复数运算需要分解成实部和虚部分别来完成,下面的函数“fft_2sin”用来实现蝶形运算。

2 利用查表代替相位因子中的三角函数运算
图2给出8点数据的基2按时间抽取的快速傅里叶变换流程图。整个数据分析需要多个阶段才能完成,每个阶段需要多次调用基2的FFT算法函数。在前面给出的函数“fft_2 sin”中需要通过三角运算分别完成相位因子实部和虚部的计算。三角函数计算需要花费大量的时间,但是在分析的数据点数量给定以后可以首先完成相位因子的计算,将计算值存储在一个数据表中,通过查表的方法代替三角函数计算。修改后的基2的FFT算法函数如下。

使用MSP430系列微控制器的开发软件IAR模拟显示,在基2的FFT算法函数中计算相位因子的情况下,完成一次函数计算需要花费7422时钟周期;利用查表获得相位因子的情况下,完成一次函数计算只需要花费1242时钟周期。

3 使用硬件乘法器进一步加快运算速度
完成采样数据的FFT分析的过程中需要进行大量的乘法运算,像其它的微控制器一样,MSP430系列芯片也是通过调用内部函数完成这些乘法运算的。利用硬件的方法完成要求的工作比使用软件模拟的方法快,也就是比利用编程实现的方法要快,但是添加硬件电路也将占用更多的逻辑资源。
TI公司在MSP430系列中的部分芯片中添加了硬件乘法器,利用开发软件中的编译选项可以方便地使用硬件乘法器代替内部函数来实现乘法运算。以完成图2 给出8点数据的基2按时间抽取的快速傅里叶变换流程图为例,过程包括从采样数据的倒序排列,3个阶段基2的FFT计算,最终给出频谱分量的幅度数值。不使用硬件乘法器需要46592时钟周期,使用硬件乘法器需要41183时钟周期。
4 结论
使用MSP430F1611微控制器芯片完成一个信号周期256个采样点的
- MSP430单片机在电源控制中的应用(01-09)
- MSP430的直流宽带放大器设计(11-07)
- 提高MSP430G 系列单片机的Flash 擦写寿命方法(08-28)
- 5V单电源供电的宽带放大器的设计与仿真(06-09)
- 基于MSP430的智能数字化SLED控制系统(07-09)
- 基于MSP430 Timer_B的D/A转换及C语言源程序(03-01)
- 濡ゅ倹岣挎鍥╀焊閸曨垼鏆ョ€规悶鍎抽埢鑲╂暜閸繂鎮嬮柟瀛樺姇閻撹法鎷嬮鐔告畬缂佸顑呴〃婊呮啑閿燂拷
闁稿繈鍔嶉弻鐔告媴瀹ュ拋鍔呭☉鏃傚Т閻ㄧ姵锛愰幋婊呯懇濞戞挻姘ㄩ悡锛勬嫚閸☆厾绀夐柟缁樺姇瀹曞矂鎯嶉弬鍨岛鐎规悶鍎扮紞鏃堟嚄閽樺顫旈柨娑樿嫰婵亪骞冮妸銉﹀渐闂侇偆鍠愰崹姘舵⒐婢舵瓕绀嬪ù鍏坚缚椤懘鎯冮崟顐ゆ濡増鍨垫导鎰矙鐎n亞鐟�...
- 濞戞搩鍘炬鍥╀焊閸曨垼鏆ョ€规悶鍎抽埢鑲╂暜閸繂鎮嬮柟瀛樺姇閻撹法鎷嬮鐔告畬缂佸顑呴〃婊呮啑閿燂拷
缂侇噣绠栭埀顒婃嫹30濠㈣埖宀稿Λ顒備焊閸曨垼鏆ラ柛鈺冾攰椤斿嫮鎷犻崜褉鏌ら柨娑樺缁楁挾鈧鍩栧璺ㄦ嫚閹惧懐绀夐柛鏂烘櫅椤掔喖宕ㄥΟ鐑樺渐闂侇偆鍠曢幓顏堝礆妫颁胶顏卞☉鎿冧簻閹酣寮介悡搴f濡増鍨垫导鎰矙鐎n亞鐟庨柣銊ュ椤╋箑效閿燂拷...
- Agilent ADS 闁轰焦鐟ラ鐔煎春绾拋鍞查悹鍥у⒔閳诲吋绺藉Δ鍕垫
濞戞挻鎸搁宥夊箳閸綆鍤﹂柨娑樿嫰閸欏繘妫冮姀锝庡敼閻熸瑯鏋僁S闁告艾瀚~鎺楀礉閻旇鍘撮柛婊冭嫰娴兼劗绮欑€n亞瀹夐柣銏╃厜缁遍亶宕濋埡鍌氫憾闁烩偓鍔嶅〒鍫曟儗椤撶姵鐣遍柡鍐ㄧ埣濡法鈧冻缂氱槐鐧咲S...
- HFSS閻庢冻缂氱弧鍕春绾拋鍞查悹鍥у⒔閳诲吋绺藉Δ鍕垫
閻犙冨缁讳焦绋夐幘鎰佸晙闁瑰搫鐗愰鎶芥晬鐏炶棄寮块梻鍫涘灱椤斿骞掗崷娆禨S闁汇劌瀚慨娑㈡嚄閽樺瀚查幖瀛樻⒒閺併倝鏁嶇仦钘夌盎闁告柡鏅滈崑宥夊礂閵娾晜妗ㄧ紒顖濆吹缁椽宕烽弶娆惧妳濞戞梻濮电敮澶愬箵椤″锭SS...
- CST鐎甸偊鍠楃亸婵嗩啅閵夈倗绋婇悗骞垮€曢悡璺ㄦ媼椤撶喐娈岀紒瀣儏椤ㄦ粎鎲楅敓锟�
闁哄瀛╁Σ鎴澝虹€b晛鐦滈悹浣筋嚋缁辨繈宕楅妸鈺傛〃閻犱礁寮跺绶維T闁告艾瀚伴妴宥夊礉閻旇鍘撮柛婊冭嫰娴兼劗绮欑€n亞瀹夐柣銏╃厜缁辨繈宕濋埡鍌氫憾闊浂鍋婇埀顒傚枙閸ゆ粎鈧冻闄勭敮澶愬箵椤″T閻犱焦宕橀鍛婃償閺冨倹鏆�...
- 閻忓繐瀚伴。鍫曞春閾忚鏀ㄩ柛鈺冾攰椤斿嫮鎷犻崜褉鏌�
濞戞挸娲g粭鈧Δ鍌浬戦妶濂哥嵁閸愬弶鍕鹃悹褍鍤栫槐婵囨交濞嗗海鏄傞悹鍥у⒔閳诲吋绋夋潪鎵☉闁革负鍔岄惃鐘筹紣閹寸偛螚闁哄牜鍨堕。顐﹀春閻旀灚浜i悘鐐存礃鐎氱敻鎳樺鍓х闁瑰灚鎸风粭鍛村锤濮橆剛鏉介柣銊ュ缁楁挻绋夊顒傚敤缁绢厸鍋�...
- 鐎甸偊鍠楃亸婵堜焊閸曨垼鏆ユ繛鏉戭儔閸f椽骞欏鍕▕闁糕晝顢婇鍕嫚閸撗€鏌ら柛姘墦濞夛拷
閻犳劦鍘洪幏閬嶅触閸儲鑲犻柡鍥ㄦ綑閻ゅ嫰骞嗛悪鍛缂傚啯鍨甸崹搴ㄥΥ娓氣偓椤e墎鎷崣妯哄磿闁靛棔鑳堕妵姘枖閵忕姵鐝ら柕鍡曟娣囧﹪宕i柨瀣埍闁挎稑鏈崹婊呮啺娴e湱澹夐柡宥夘棑缁ㄥ潡鏌呴敓锟�...