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