葉品勇,吳銀福,邵宗衛(wèi),關(guān)繼勇,陳新之,周兆慶
(1.南京電研電力自動(dòng)化股份有限公司,南京 210000;2.南京國(guó)電南自自動(dòng)化有限公司,南京 211100)
隨著智能電網(wǎng)的推進(jìn)和相關(guān)技術(shù)研究的深入,對(duì)繼電保護(hù)及自動(dòng)化設(shè)備的精度和動(dòng)態(tài)響應(yīng)的考核要求越來(lái)越高,因此需要一款能夠模擬電壓、電流輸出信號(hào)的信號(hào)發(fā)生裝置。該裝置應(yīng)具備調(diào)頻、調(diào)相、調(diào)幅、采樣率可調(diào)以及諧波疊加等各項(xiàng)繼電保護(hù)測(cè)試儀的功能,同時(shí)還應(yīng)具備輸出信號(hào)可編程功能。
現(xiàn)場(chǎng)可編程邏輯門(mén)陣列(FPGA)因靈活性、可靠性和集成度高而逐漸受人矚目。由于計(jì)算精度與存儲(chǔ)容量的矛盾,在存儲(chǔ)資源有限的FPGA芯片中,常用的查找表實(shí)現(xiàn)余弦函數(shù)離散值的方法已沒(méi)有優(yōu)勢(shì)[1-8]。因此,本文提出了一種查找表與拉格朗日插值相結(jié)合的算法,結(jié)合兩者的優(yōu)勢(shì),在保證精度的前提下優(yōu)化了算法的輸出時(shí)延和資源消耗。
連續(xù)余弦函數(shù)常見(jiàn)的表達(dá)式為F=Acos(ωt+φ)=Acos(2πft+φ),式中:A為幅值;f為頻率;φ為初相角。在數(shù)字系統(tǒng)中需要對(duì)連續(xù)函數(shù)進(jìn)行離散化處理,離散余弦函數(shù)常見(jiàn)的表達(dá)式為
k=0,1,2,…。
(1)
式中:s為采樣率,即每秒采樣點(diǎn)數(shù);k為采樣序號(hào)。
根據(jù)式(1)可直接計(jì)算每點(diǎn)對(duì)應(yīng)的采樣點(diǎn)數(shù)據(jù),然而這種方式需要消耗大量的FPGA邏輯資源且計(jì)算延時(shí)長(zhǎng)。采用查表法,如果查找表顆粒度太粗,則精度不夠,顆粒度太細(xì),則需要建立一個(gè)龐大的查找表,占用大量的FPGA存儲(chǔ)資源。鑒于此,為了在FPGA中實(shí)現(xiàn)余弦函數(shù)離散值生成器,綜合考慮邏輯資源和運(yùn)算速度,采用查表插值法是一種較合適的方法。
首先,建立一個(gè)整周波查找表,為了減少FPGA邏輯資源消耗,在滿(mǎn)足精度的前提下采用定點(diǎn)數(shù)表示。將F=32 768 cosθ均勻分割成1 024份,每份偏移角度為 2π/1 024,按四舍五入取,形成查表插值法的基準(zhǔn)查找表,見(jiàn)表1。將基準(zhǔn)查找表中1 024個(gè)采樣點(diǎn)按順序排列,波形如圖1所示。
表1 余弦函數(shù)基準(zhǔn)查找表Tab.1 Cosine function reference lookup
圖1 余弦函數(shù)基準(zhǔn)采樣點(diǎn)波形Fig.1 Waveform at cosine function reference sampling point
其次,需要計(jì)算出弧度落在基準(zhǔn)查找表的哪個(gè)區(qū)間及在區(qū)間中的偏移位置。將式(1)中的弧度除以基準(zhǔn)表最小步長(zhǎng)2π/1 024,得到式(2)。
(2)
另外,為采用定點(diǎn)數(shù)處理,將兩個(gè)基準(zhǔn)點(diǎn)之間的步長(zhǎng)均分為1 024等份,即將式(2)分子分母均乘以1 024得到式(3)。
k=0,1,2,…。
(3)
k=0,1,2,…。
(4)
計(jì)算式(4)所得商即為基準(zhǔn)查找表的左區(qū)間序號(hào),商加1即為基準(zhǔn)查找表的右區(qū)間序號(hào),余數(shù)為區(qū)間內(nèi)的相對(duì)偏移位置。
令n為式(4)的商,r為式(4)的余數(shù),由于余弦函數(shù)為周期性函數(shù),且基準(zhǔn)查找表只記錄1個(gè)周波的數(shù)值(分為1 024個(gè)基準(zhǔn)點(diǎn)),因此需要對(duì)n進(jìn)行求模運(yùn)算,令n′=n%1 024,則離散值插值區(qū)間為[n′,n′+1]。
根據(jù)以上計(jì)算可獲知余弦函數(shù)離散值對(duì)應(yīng)的插值區(qū)間和插值偏移位置,采用一階線(xiàn)性插值算法再乘以幅值A(chǔ),可計(jì)算出余弦函數(shù)離散值
(5)
由以上算法推演過(guò)程可見(jiàn),實(shí)現(xiàn)一項(xiàng)諧波輸出需要配置4個(gè)參數(shù),分別為采樣率s(單位Hz)、頻率f′(單位Hz/1 024,如:頻率50.01 Hz表示為51 210)、初相角φ′(單位π/1 024,如:初相角1.5 π表示為1 536)和幅值A(chǔ)??稍贔PGA內(nèi)部維護(hù)多組配置信息,分別計(jì)算出相應(yīng)的諧波分量,相加后可實(shí)現(xiàn)多項(xiàng)諧波分量疊加信號(hào)輸出。
為了提高FPGA運(yùn)算速度和簡(jiǎn)化FPGA運(yùn)算邏輯,上述運(yùn)算過(guò)程盡量避免除法運(yùn)算而采用移位來(lái)實(shí)現(xiàn)。式(4)求商運(yùn)算可簡(jiǎn)化為右移10位實(shí)現(xiàn),求余數(shù)運(yùn)算可簡(jiǎn)化為取數(shù)值低10位數(shù)據(jù)實(shí)現(xiàn);同理,對(duì)n進(jìn)行求模運(yùn)算也可簡(jiǎn)化為取數(shù)值低10位數(shù)據(jù)來(lái)實(shí)現(xiàn)。需要注意,式(4)中1 024f′/s無(wú)法避免除法運(yùn)算,但該數(shù)值只與配置項(xiàng)有關(guān),因此,只需在初始時(shí)刻和配置項(xiàng)改變時(shí)刻計(jì)算一次,后期無(wú)需重復(fù)計(jì)算。
綜上所述,實(shí)現(xiàn)余弦函數(shù)離散值生成器的計(jì)算流程如圖2所示。
查表插值算法中采用了一階線(xiàn)性插值,由此會(huì)引進(jìn)誤差,如圖3所示。
由拉格朗日插值多項(xiàng)式插值余項(xiàng)可知,一階線(xiàn)性插值誤差為
R1(x)=f(x)-L1(x)=
ξ∈(xn,xn+1) 。
(6)
圖4 算法驗(yàn)證波形Fig.4 Algorithm validation waveform
圖2 余弦函數(shù)離散值生成器計(jì)算流程Fig.2 Computational flow of cosine function discrete value generator
圖3 插值誤差示意Fig.3 Schematic of interpolation error
由于式(6)是一個(gè)誤差區(qū)間,不方便誤差估算,因此采用最大誤差進(jìn)行估算。
可見(jiàn),算法精度很高,且算法精度不受諧波頻率的影響,遠(yuǎn)遠(yuǎn)超過(guò)了目前智能電網(wǎng)對(duì)信號(hào)發(fā)生測(cè)試裝置精度的要求。
為了驗(yàn)證算法的正確性,在Xilinx公司的Artix7芯片上進(jìn)行了板級(jí)驗(yàn)證,通過(guò)調(diào)用Vivado的Debug調(diào)試工具,將關(guān)鍵信號(hào)添加到信號(hào)觀(guān)察窗口,以判斷算法是否執(zhí)行正確,如圖4所示。
該驗(yàn)證程序占用 331 Flip-Flop (觸發(fā)器)、152LUT(查找表)、2 048字節(jié)Block-RAM、6 DSP48。系統(tǒng)時(shí)鐘頻率為125 MHz,每11個(gè)時(shí)鐘周期(即88 ns)完成一次離散值計(jì)算。
可見(jiàn),實(shí)際測(cè)試中本文提出的算法是正確可行的,具有占用FPGA資源少、響應(yīng)速度快的優(yōu)點(diǎn)。
圖5 余弦函數(shù)離散值幅頻特性Fig.5 Amplitude-frequency characteristic of cosine function discrete value
本文提出了基于查找表與拉格朗日插值的用于實(shí)現(xiàn)余弦函數(shù)離散值的方法,該方法結(jié)合了兩者的優(yōu)勢(shì),具有占用FPGA資源少、響應(yīng)速度快、精度高、配置靈活等優(yōu)點(diǎn),可以很好地滿(mǎn)足智能電網(wǎng)繼電保護(hù)測(cè)試儀的功能需求。