基于MSP430系列微控制器的FFT算法實現(xiàn)
摘要:傅里葉變換算法在供電質(zhì)量監(jiān)測系統(tǒng)中被用來進(jìn)行諧波分析,如何加快分析速度和降低系統(tǒng)成本是當(dāng)前這種監(jiān)測系統(tǒng)設(shè)計關(guān)注的主要問題。TI公司的MSP430系統(tǒng)微控制器具有功耗低、供電范圍寬及外圍模塊齊全等特點,適合實現(xiàn)各種監(jiān)測設(shè)備。該系列芯片內(nèi)部充足的數(shù)據(jù)存儲器滿足快速傅里葉變換算法過程中的數(shù)據(jù)存儲,芯片內(nèi)部大量的代碼存儲器存儲相位因子的計算結(jié)果和所需要的三角函數(shù)數(shù)值,采用查表的方法以提高分析速度;采用芯片內(nèi)部硬件乘法器模塊可以進(jìn)一步提高分析速度。實測結(jié)果顯示對一個信號周期256個采樣點的快速傅里葉變換分析,完成全部計算僅需要0.3 s的時間,前10次諧波的計算相對誤差低于千分之一。所研制的在供電質(zhì)量監(jiān)測系統(tǒng)完全滿足用戶要求。
關(guān)鍵詞:MSP430;快速傅里葉變換;存儲器;微控制器
隨著各種電力電子裝置在電力系統(tǒng)越來越廣泛的應(yīng)用,其非線性的特點使得供電中的諧波失真問題日益嚴(yán)重。監(jiān)測技術(shù)的研究對市電質(zhì)量的補(bǔ)償具有很高的價值,考慮到實際情況,在供電系統(tǒng)質(zhì)量監(jiān)測中需要一些低成本,但分析速度較快的監(jiān)測系統(tǒng)。
離散時間采樣的快速傅里葉變換FFT(fast Fouriertrans form)算法是目前最主要的諧波檢測和分析方法。FFT算法的實現(xiàn)可以采用專用芯片37—40、DSP芯片6—1141—44、FPGA芯片193— 207以及微控制器等。隨著集成電路制造技術(shù)和數(shù)字計算機(jī)技術(shù)的進(jìn)步,微控制器芯片的功能和所能提供的邏輯資源越來越多。MSP430F1611微控制器芯片屬于TI公司MSP430x1xx系列產(chǎn)品中的一種,該芯片具有10240字節(jié)的SRAM(Staric Random Access Memory)存儲器、48 k字節(jié)的程序存儲器、8通道12位ADC、2通道12位DAC、16位×16位硬件乘法器模塊等片內(nèi)資源。硬件乘法器模塊支持8/16位x8/16位有符號,或者無符號的乘法運算,并可以選擇“乘法與累加”功能。采用MSP430系列微控制器實現(xiàn)FFT算法具有超低功耗、低電壓工作、低成本、分析速度快等優(yōu)點,它比采用專用芯片和DSP芯片價格便宜,比采用FPGA芯片容易實現(xiàn)。
1 利用微控制器實現(xiàn)FFT算法
快速傅里葉變換在信號處理中的線性濾、相關(guān)計算、譜分析等方面起著重要的作用。將N點采樣數(shù)據(jù)分解為更短的數(shù)據(jù)段來進(jìn)行計算可以提高計算效率,目前使用最廣泛的是基2的FFT算法。圖1給出基2按時間抽取的快速傅里葉變換中的基本運算過程379-388181-189。
這種運算過程被稱為蝶形運算,因為它的流程圖看起來就像一個蝴蝶。每次蝶形運算包括一次復(fù)數(shù)乘法運算和兩次復(fù)數(shù)加法運算。一旦對一對復(fù)數(shù)(a,b)執(zhí)行了產(chǎn)生(A,B)的蝶形運算,原數(shù)據(jù)就無須再保存,所以可以將結(jié)果(A,B)保存在與數(shù)據(jù)(a,b)相同的數(shù)據(jù)存儲單元。
由于MSP430系列微控制器的開發(fā)軟件不支持復(fù)數(shù)運算,這里復(fù)數(shù)運算需要分解成實部和虛部分別來完成,下面的函數(shù)“fft_2sin”用來實現(xiàn)蝶形運算。
2 利用查表代替相位因子中的三角函數(shù)運算
圖2給出8點數(shù)據(jù)的基2按時間抽取的快速傅里葉變換流程圖。整個數(shù)據(jù)分析需要多個階段才能完成,每個階段需要多次調(diào)用基2的FFT算法函數(shù)。在前面給出的函數(shù)“fft_2 sin”中需要通過三角運算分別完成相位因子實部和虛部的計算。三角函數(shù)計算需要花費大量的時間,但是在分析的數(shù)據(jù)點數(shù)量給定以后可以首先完成相位因子的計算,將計算值存儲在一個數(shù)據(jù)表中,通過查表的方法代替三角函數(shù)計算。修改后的基2的FFT算法函數(shù)如下。
使用MSP430系列微控制器的開發(fā)軟件IAR模擬顯示,在基2的FFT算法函數(shù)中計算相位因子的情況下,完成一次函數(shù)計算需要花費7422時鐘周期;利用查表獲得相位因子的情況下,完成一次函數(shù)計算只需要花費1242時鐘周期。
3 使用硬件乘法器進(jìn)一步加快運算速度
完成采樣數(shù)據(jù)的FFT分析的過程中需要進(jìn)行大量的乘法運算,像其它的微控制器一樣,MSP430系列芯片也是通過調(diào)用內(nèi)部函數(shù)完成這些乘法運算的。利用硬件的方法完成要求的工作比使用軟件模擬的方法快,也就是比利用編程實現(xiàn)的方法要快,但是添加硬件電路也將占用更多的邏輯資源。
TI公司在MSP430系列中的部分芯片中添加了硬件乘法器,利用開發(fā)軟件中的編譯選項可以方便地使用硬件乘法器代替內(nèi)部函數(shù)來實現(xiàn)乘法運算。以完成圖2 給出8點數(shù)據(jù)的基2按時間抽取的快速傅里葉變換流程圖為例,過程包括從采樣數(shù)據(jù)的倒序排列,3個階段基2的FFT計算,最終給出頻譜分量的幅度數(shù)值。不使用硬件乘法器需要46592時鐘周期,使用硬件乘法器需要41183時鐘周期。
4 結(jié)論
使用MSP430F1611微控制器芯片完成一個信號周期256個采樣點的FFT分析,當(dāng)被分析信號為50%占空比的方波,變換頻率分量為0,1,2,3時,方波信號頻譜實際測量值分別為127.500,162.342,0,54.1250,理論上的計算值分別為 127.500,162.338,0,54.1127。分析上訴結(jié)果可以得到實際測量值與理論計算值之間的絕對誤差分別為0,0.004,0,0.012 3,相對誤差為0,0.002 5,0,0.023。
由上面的結(jié)論可以看出,利用程序產(chǎn)生256個采樣數(shù)據(jù),低電平數(shù)據(jù)為0,高電平數(shù)據(jù)為255,整個模擬程序占用芯片程序存儲器3 492字節(jié),數(shù)據(jù)存儲器3 156字節(jié)。完成一次分析需要2 410 975時鐘周期,當(dāng)采用8 MHz的時鐘信號需要約0.3 s,前10次諧波的計算相對誤差低于千分之一。
TI公司新推出的MSP430F5xx系列產(chǎn)品的指令執(zhí)行速度達(dá)到25MIPS,并提供32位×32位硬件乘法器模塊,這將進(jìn)一步提高運算速度。