基于FPGA的數(shù)字三相鎖相環(huán)優(yōu)化設(shè)計(jì)
摘要:數(shù)字三相鎖相環(huán)中含有大量乘法運(yùn)算和三角函數(shù)運(yùn)算,占用大量的硬件邏輯資源。為此,提出一種數(shù)字三相鎖相環(huán)的優(yōu)化實(shí)現(xiàn)方案,利用乘法模塊復(fù)用和CORDIC算法實(shí)現(xiàn)三角函數(shù)運(yùn)算,并用Vetilog HDL硬件描述語言對(duì)優(yōu)化前后的算法進(jìn)行了編碼實(shí)現(xiàn)。仿真和實(shí)驗(yàn)結(jié)果表明,優(yōu)化后的數(shù)字三相鎖相環(huán)大大節(jié)省了FPGA的資源,并能快速、準(zhǔn)確地鎖定相位,具有良好的性能。
關(guān)鍵詞:FPGA;三相鎖相環(huán);乘法復(fù)用;CORDIC
0 引言
在PWM整流器、不間斷電源(UPS)、有源電力濾波器(APF)等需要并網(wǎng)的電力電子裝置控制中,獲得電網(wǎng)電壓的相位是系統(tǒng)控制的前提。一般都采用鎖相環(huán)PLL來獲取電網(wǎng)電壓的相位。三相電網(wǎng)電壓可能存在三相不平衡,電壓有諧波、頻率、相位突變。為了全面反映電網(wǎng)電壓的真實(shí)狀況,采用三相鎖相環(huán)來鎖定電網(wǎng)電壓相位角,而且三相鎖相環(huán)的抗干擾能力更強(qiáng)。采用現(xiàn)場可編程門陣列(FPGA),并以硬件方式實(shí)現(xiàn)三相鎖相環(huán),可充分體現(xiàn)FPGA硬件的高速性,且不受CPU資源的制約。
本文對(duì)數(shù)字三相鎖相環(huán)的系統(tǒng)原理和算法實(shí)現(xiàn)進(jìn)行了研究,并對(duì)三相鎖相環(huán)在FPGA中實(shí)現(xiàn)的算法進(jìn)行了優(yōu)化設(shè)計(jì)。通過采用乘法模塊復(fù)用和基于坐標(biāo)旋轉(zhuǎn)數(shù)字式計(jì)算機(jī)(CORDIC)的算法計(jì)算含有三角函數(shù)的坐標(biāo)轉(zhuǎn)換模塊,節(jié)省了數(shù)字三相鎖相環(huán)實(shí)現(xiàn)所需的硬件開銷。用硬件描述語言Verilog HDL設(shè)計(jì)出了整個(gè)三相鎖相環(huán)系統(tǒng)。該三相鎖相環(huán)在以Altera公司芯片CyconeⅡEP2C15AF256C8為主芯片的實(shí)驗(yàn)板上進(jìn)行了驗(yàn)證。
1 三相鎖相環(huán)的基本原理
1.1 鎖相環(huán)基本原理
鎖相環(huán)一般由鑒相器(PD)、環(huán)路濾波器(LF)、壓控振蕩器(VCO)組成。鎖相環(huán)是一個(gè)相位反饋系統(tǒng)。鑒相器把周期性的輸入信號(hào)與VCO反饋來的相位信號(hào)進(jìn)行比較,得到一個(gè)相位誤差;誤差經(jīng)環(huán)路濾波器進(jìn)行濾波,環(huán)路濾波器的輸出被用作控制信號(hào)送入VCO,用來消除輸入、輸出信號(hào)的相位差。
1.2 三相鎖相環(huán)的結(jié)構(gòu)與原理
三相鎖相環(huán)的拓?fù)浣Y(jié)構(gòu)如圖1所示。
數(shù)字三相鎖相環(huán)的關(guān)鍵模塊是矢量控制中的2個(gè)系統(tǒng)變換:從a-b-c三相靜止坐標(biāo)到α-β兩相靜止坐標(biāo)的Clarke變換(C32)和從α-β兩相靜止坐標(biāo)到d-q兩相旋轉(zhuǎn)坐標(biāo)(基波同步速為ω0)的Park變換(Cdq):
式中:U為電壓的有效值。
鎖相環(huán)未鎖定時(shí)q分量為一交流分量,與已設(shè)的分量q*=0比較得到一直流分量,以此完成鑒相。直流分量再經(jīng)過由PI控制器組成的低通濾波器控制壓控振蕩器,最終使得ω與ω0相等,q分量為0,達(dá)到鎖相。
2 三相鎖相環(huán)的系統(tǒng)仿真
根據(jù)圖1三相鎖相環(huán)的拓?fù)浣Y(jié)構(gòu),在Matlab/Simulink中搭建系統(tǒng)仿真模型。三相電壓為220 V,采樣頻率為fs=5 kHz,壓控振蕩器的中心頻率為f=50 Hz,通過仿真調(diào)整,最終確定Kp=0.02,K1=0.001,使鎖相環(huán)鎖相的速度與精度達(dá)到最佳效果。圖2(a)是三相鎖相環(huán)在0.05 s內(nèi)的三相電壓ua,ub,uc仿真波形;圖2(b)是三相鎖相環(huán)在0.05 s內(nèi)的兩相旋轉(zhuǎn)坐標(biāo)下ud,uq仿真波形,d軸分量大約在0.01 s穩(wěn)定為0,即0.5個(gè)周期達(dá)到鎖相;圖2(c)是三相鎖相環(huán)在0.05 s內(nèi)的三相電壓a相位角θ與VCO輸出相位角θ*的仿真波形,θ與θ*在0.01 s基本完全重合,達(dá)到鎖相。結(jié)果表明,三相鎖相環(huán)可在0.5個(gè)周期內(nèi)快速、準(zhǔn)確地鎖定電網(wǎng)電壓。
3 三相鎖相環(huán)的FPGA設(shè)計(jì)
3.1 未優(yōu)化的三相鎖相環(huán)的FPGA結(jié)構(gòu)
根據(jù)圖1三相鎖相環(huán)的拓?fù)浣Y(jié)構(gòu)及原理,三相鎖相環(huán)的基本硬件結(jié)構(gòu)如圖3所示。
首先通過采樣,將三相電壓離散化并處理為32 b有符號(hào)數(shù),經(jīng)過Clarke變換與相應(yīng)的參數(shù)相乘后相加得到兩相靜止坐標(biāo)的分量μα,μβ。共有5個(gè)乘法運(yùn)算,3個(gè)加法運(yùn)算。然后是Park變換,在此三相鎖相環(huán)中只需要μq分量,需要2個(gè)乘法運(yùn)算,2個(gè)三角函數(shù)計(jì)算,1個(gè)加法運(yùn)算。后面的PI控制器需要2個(gè)乘法運(yùn)算,2個(gè)加法運(yùn)算。最后是VCO需要2個(gè)加法運(yùn)算。整個(gè)運(yùn)算過程共需要9個(gè)乘法運(yùn)算,9個(gè)加法運(yùn)算,2個(gè)三角函數(shù)運(yùn)算。
從對(duì)三相鎖相環(huán)的基本結(jié)構(gòu)分析可知,整個(gè)過程需要9個(gè)乘法運(yùn)算,2個(gè)三角函數(shù)運(yùn)算。在FPGA中實(shí)現(xiàn)乘法運(yùn)算和三角函數(shù)運(yùn)算會(huì)消耗大量的資源。特別是傳統(tǒng)的查表法三角函數(shù)運(yùn)算在消耗大量資源的同時(shí)還存在精度問題。
3.2 三相鎖相環(huán)的優(yōu)化設(shè)計(jì)
由于該設(shè)計(jì)采用25 MHz的系統(tǒng)時(shí)鐘,而采樣頻率為5 MHz,所以設(shè)計(jì)的時(shí)序余量非常大。依據(jù)面積和速度的平衡與互換的基本原則,針對(duì)乘法運(yùn)算多的特點(diǎn),采用乘法復(fù)用,系統(tǒng)中只保留一個(gè)乘法模塊,通過合理選擇,達(dá)到時(shí)分復(fù)用。
在Park變換中存在的三角函數(shù)運(yùn)算,可以通過CORDIC算法優(yōu)化。CORDIC算法是通過基本的加法和移位運(yùn)算來代替乘法和三角函數(shù)運(yùn)算的,特別適合矢量旋轉(zhuǎn)的運(yùn)算。使用迭代的方法,多步完成要旋轉(zhuǎn)的角度。CORDIC算法可以實(shí)現(xiàn)如式(6)所示的運(yùn)算。
式中:x0,x1為初始坐標(biāo);θ為要旋轉(zhuǎn)角度;y0,y1為最終的坐標(biāo)。通過對(duì)式(6)的分析與Park變換相比較可以發(fā)現(xiàn),只要把角度取負(fù),就可以通過CORDIC算法完成整個(gè)Park變換的運(yùn)算。
優(yōu)化后系統(tǒng)的硬件結(jié)構(gòu)如圖4所示。
4 結(jié)語
本文分析了三相鎖相環(huán)的基本原理。針對(duì)FPGA的特點(diǎn)對(duì)鎖相環(huán)進(jìn)行了優(yōu)化設(shè)計(jì),并利用Verilog HDL硬件描述語言編碼實(shí)現(xiàn)。該設(shè)計(jì)可直接用于PWM整流器、UPS等控制系統(tǒng)中。