朱耀國,屈盼讓,蔡曉樂
(中國航空工業(yè)集團公司西安航空計算技術(shù)研究所,陜西 西安 710068)
隨著航空工業(yè)的發(fā)展,多電飛機目前代表著先進飛機的發(fā)展趨勢,多電飛機是使用電力系統(tǒng)部分取代原來的液壓、氣壓和機械系統(tǒng)的飛機[1]。隨著多電飛機的發(fā)展,機載電氣設(shè)備占機載設(shè)備比例不斷提升,采用PWM脈沖寬度調(diào)制技術(shù)的機載電氣設(shè)備,如步進電機、電液伺服閥、風(fēng)機、調(diào)光燈等,在多電飛機中廣泛使用。
PWM利用半導(dǎo)體開關(guān)器件的導(dǎo)通與關(guān)斷,將直流電壓變?yōu)殡妷好}沖列,通過控制電壓脈沖列的周期與電壓脈沖的寬度,即占空比,達到變壓變頻及控制和消除諧波的目的的一種控制技術(shù)[2]。以電機調(diào)速為例,在脈沖作用下,電機斷電時,速度逐漸減小;當(dāng)電機通電時,速度增加,只要按照一定規(guī)律,改變電機的通電時間,就可實現(xiàn)電機的速度控制[3]。但是在實際應(yīng)用中如果未作處理,立即更新參數(shù),那么在當(dāng)前的PWM輸出周期可能會發(fā)生錯誤輸出。
基于FPGA的PWM輸出控制電路結(jié)構(gòu)框圖如圖1所示,電路由DSP、FPGA、電平轉(zhuǎn)換電路、28 V/開驅(qū)動電路組成。DSP通過EMIF總線與FPGA間通訊,對PWM控制的參數(shù)進行讀寫;FPGA根據(jù)DSP寫入的PWM控制參數(shù)生成PWM驅(qū)動脈沖;電平轉(zhuǎn)換電路將FPGA的輸出引腳上發(fā)出的3.3/0 V驅(qū)動脈沖轉(zhuǎn)換為28V/開驅(qū)動電路的輸入控制電平;28 V/開驅(qū)動電路根據(jù)輸入脈沖發(fā)出相應(yīng)的PWM輸出。
圖1 基于FPGA的PWM輸出控制電路結(jié)構(gòu)框圖
外部存儲器接口(EMIF),External Memory Interface,是DSP器件上的一種接口。對于一些對存儲空間超過DSP自身片上存儲資源的應(yīng)用,EMIF控制器可以用來訪問額外的片外存儲器資源,額外的外部存儲資源既可以用來保存程序指令,也可以用來保存數(shù)據(jù)[4]。EMIF總線屬于并行總線,具備分開的16位并行地址總線/數(shù)據(jù)總線,以及片選使能、讀使能、寫使能信號[5]。
在本文的設(shè)計中,F(xiàn)PGA作為EMIF總線的從機被DSP訪問,由DSP通過EMIF總線向FPGA寫入PWM周期、高電平時間數(shù)據(jù),以及PWM使能信號。其中PWM周期PWM_PERIOD及PWM高電平時間PWM_HIGH均為32位數(shù)據(jù),需要EMIF總線分兩次依次寫入高16位及低16位以配置數(shù)據(jù),1 lsb數(shù)據(jù)表示20 ns,支持配置時間20 ns~85 s; PWM_ENB為16位數(shù)據(jù),最低兩位被寫為"11"時表示PWM輸出使能,"00"、"10"、"01"表示不允許PWM輸出使能。
在無PWM輸出防錯機制下,當(dāng)PWM輸出使能時,F(xiàn)PGA內(nèi)部的計時器開始工作;內(nèi)部計時器從0開始計數(shù),當(dāng)計數(shù)器的值等于周期值時重新歸零計數(shù);當(dāng)計數(shù)器的值小于等于高電平時間的值時,PWM輸出為高;當(dāng)計數(shù)器的值大于高電平時間的值時,PWM輸出為低,這樣就生成了PWM波。
但是在PWM輸出過程中,如果DSP突然對周期或高電平時間修改,可能產(chǎn)生如下問題:
1) 當(dāng)計數(shù)器的值大于舊的高電平時間,小于最新的高電平時間時,當(dāng)新的高電平時間更新后,原本已由高變低的波形,在該周期內(nèi)將再次由低變高,在計數(shù)器達到新的高電平時間后,波形再次由高變低,這樣實際占空比發(fā)生了錯誤;
2) 當(dāng)計數(shù)器的值小于舊的高電平時間,大于新的高電平時間時,當(dāng)新的高電平時間更新后,原本為高的波形將瞬間變?yōu)榈?,直至本次周期結(jié)束,這樣實際占空比發(fā)生了錯誤;
3) 無論計數(shù)器的值運行至多少,當(dāng)高電平時間不變,而周期值瞬間變化時,實際輸出的PWM的波形的占空比發(fā)生了變化,發(fā)生了錯誤。
圖2 信號流圖
在了解了不具備防錯機制的PWM輸出策略可能產(chǎn)生的原因后,對PWM輸出的策略進行了修改,增加了周期及高電平時間緩存寄存器并擇時刷新,作為PWM波發(fā)生的依據(jù),而不直接使用EMIF總線寫入的周期及高電平時間寄存器,具體的信號流圖如圖2所示,具體策略如下:
1) 當(dāng)PWM波正在輸出時,如果僅高電平時間發(fā)生了變化,此時FPGA將對新舊高電平時間進行對比,若計數(shù)器均小于兩者,那么新的高電平時間將直接刷新緩存,參與PWM波的生成;若計數(shù)器均大于兩者,或者介于兩者之間時,那么新的高電平時間將在本次PWM周期結(jié)束后再刷新緩存,參與下一次的PWM波生成;
2) 當(dāng)PWM波正在輸出時,如果周期值發(fā)生了改變,新的周期值永遠在本次PWM周期結(jié)束后再刷新緩存;
3) 當(dāng)PWM輸出不使能時,如果周期或高電平時間發(fā)生了變化,那么直接刷新緩存。
經(jīng)過上述措施,可有效避免在參數(shù)瞬變的過程中導(dǎo)致PWM波形的輸出錯誤。
本文提出了一種基于FPGA的PWM防錯輸出控制電路,能夠自由配置PWM輸出的周期及占空比,且具備防錯輸出機制。經(jīng)過實際測試,在基于FPGA的PWM輸出電路基礎(chǔ)上引入防錯輸出機制后,PWM輸出因參數(shù)瞬變帶來的錯誤輸出現(xiàn)象消除,尤其在需要對PWM輸出占空比監(jiān)測的使用場景中,有效避免了占空比的突變。