基於FPGA的三相SPWM的設計及其優化

目前,變頻調速一般採用微處理器和專用芯片來實現。但是普通的專用芯片運算速度受微處理器系統時鐘影響,且開發週期長,硬件調試不方便[1]。隨着微電子技術和EDA軟件的發展,出現的FPGA幾乎克服了所有這些不足,所以本設計採用了FPGA方案。

       三相SPWM的產生一般可以通過三相相位上互差120°的正弦波與三角波比較來實現。三相正弦表可以由三個獨立的相位互差120°的正弦表組成,這在設計思路上是簡單的,但實際中卻有很大的浪費。

       目前有人採用了分時複用的方法來減少三相正弦表所佔用的邏輯門[1]。從正弦波的波形可以看出,正弦波具有很好的對稱性,還能對正弦表再進行優化。

       因此,本文提出了利用分時複用以及正弦波的對稱性,對三相正弦表進一步優化,以進一步減少正弦表所佔用的邏輯門,提高FPGA的利用率。

       1 數據的合成

  數據合成由分時複用電路和運算電路兩部分組成。通過分時複用,使得所需的正弦表減少到原來的1/3,即產生三相正弦波只需一個正弦表。運算電路利用正弦波的對稱性,使得實現一個完整週期的正弦波只需1/4週期的正弦表。兩者結合,從而完成三相正弦波只需一個1/4週期的 正弦表,達到最大程度的節省資源的目的。

   1.1 分時複用原理及其應用

  分時複用的原理是各路信號佔用同一信道的不同時間間隙進行信號傳輸。具體到本電路就是利用對正弦表尋址的高速度,使一個正弦表在不同時間段查詢不同相的正弦波的幅值,以達到減少正弦表所佔用的FPGA資源的目的。  

  電路的具體實現:三路在相位上互差120°的地址數據並行輸入,通過一個三選一的選擇器來進行選擇,選擇器的控制端接三進制的計數器[1]。如,計數器爲0時,輸出的是A相的地址。計數器爲1時,輸出的是B相的地址。計數器爲2時,輸出的是C相的地址。因此只要使輸入的三相地址週期性變化,就實現了並行輸入的三相地址數據在時間上形成了連續,也就實現了三相地址數據的合成。這樣就可以利用一個正弦表來得到三相的正弦值。把正弦表減少到沒有采用分時複用時的1/3。該部分電路的仿真波形如圖1所示。圖中ADDA,ADDB,ADDC分別爲A相,B相和C相的相位值。ADDRESS爲合成一路後的相位值。

三項地址合成電路的仿真波形

  1.2 正弦波的對稱性及其應用

  由正弦波波形可知,正弦波具有很好的對稱性。π/2~π的幅值大小與0~π/2的幅值大小相同,只是他們在時間上出現的順序剛好相反。π~3π/2的幅值與0~π/2的幅值的絕對值相同,極性相反。3π/2~2π部分的幅值與π~3π/2的大小相等,只是時間上出現的順序相反。因此,根據正弦波的對稱性,只在正弦表ROM中存有相位0~π/2時的幅值。利用0~π/2相位時的幅值產生完整的正弦波波形。 產生正弦波首先需要對正弦表進行尋址,把量化的相位值轉化爲對應的量化的幅值。由於正弦表ROM中僅存有相位0~π/2時的幅值,而π/2~π,3π/2~2π的絕對值與相位0~π/2的幅值在時間上出現的順序相反,因此,要獲得π/2~π,3π/2~2π的幅值必須對相位0~π/2時的幅值進行反向尋址。反相尋址通過地址輸入矢量取反來實現[2]。本設計把週期2π量化爲8位,即對一個正弦波週期進行256次取樣。因此對0~π/2相位尋址所需的地址線爲64條。ADDRESS定義爲STD_LOGIC_VECTOR(7DOWNTO0),ADDRESS低6位用於對ROM表進行尋址,當地址數據ADDRESS(6)爲“1”時,對地址ADDRESS的低6位取反再對ROM尋址。

  正弦波的負半周的形成。由於負半周的幅值與正半周的幅值在極性上相反,因此對輸出的對應的幅值取反。幅值是否取反由輸入的地址數據ADDRESS(7)決定,當ADDRESS(7)爲“1”時,對應的輸出幅值取反[2]。並把ADDRESS(7)取反作爲最終輸出的正弦波幅值的最高位。這樣做實際上把正弦波向Y軸正方向平移了一個幅值,避免了幅值出現負值。

  這樣在分時複用的基礎上,通過利用正弦波的對稱性,完成了三相數據只需一個1/4週期的ROM即可查詢。在分時複用和利用正弦波對稱性2個相對獨立的模塊連接的過程中必須考慮到時序的問題。如果只是把2個模塊簡單的連接到一塊,只能產生一相的SPWM,如果時序上解決不好,產生的三相正弦波精度會受到影響,一個週期的正弦波不再由256個點組成,如果這樣,也就失去了優化的意義。

  2 數據的分離

  由以上可知,從一個1/4正弦波週期的ROM表中可以得到三相相位互差120°的正弦波的幅值,但是由於輸入的三相地址在時間上是連續的,即對ROM表尋址的地址只有一路,因此,雖然得到了三相正弦波的幅值,可是他們是按ADDRESS中各相之間的關係混合在一起的。因此,必須對所得到的幅值進行分離,才能得到三相正弦波。由波形ADDRESS中各相地址的相互關係可知,分離數據只要把分時複用的合成部分反接即可,仿真波形如圖2所示(爲了使在同一個波形中可以同時看清DATA中的各項數據,圖2對MAXPLUSⅡ的仿真波形的2.0μs之前的輸出零部分進行了截去。)圖中DATA爲根據1/4週期正弦表所得的三相混合數據,DATAA,DATAB,DATAC分別爲分離後A相,B相和C相的相位對應的幅值。由三相正弦波幅值之間的相互關係和變化趨勢可以得知,輸出的數據是正確的。最後把所得的三相數據鎖存,再與產生的三角波比較產生三相六路SPWM。

三項數據分離部分的仿真波形

  3 結語

  由以上分析及仿真可知,採用一個1/4週期的正弦表實現三相正弦數據的查詢是可行的。這將極大的節省所用FPGA的門數,提高其利用率,極大地降低編程的勞動量,且輸出的三相正弦波與不利用分時複用和正弦波對稱性時相比,精度不受任何影響,每個正弦週期還是由256個點組成,只是正弦波的頻率有所降低,這是由於系統的速度和佔用面積之間本來就是一種矛盾。圖3是本次設計產生的三相六路SPWM,系統仿真的時鐘週期爲200ns,由於FPGA的系統時鐘頻率可以達到很高,所以不會對輸出的SPWM頻率產生影響。

三相六路SPWM仿真波形

 

  參考文獻

  [1]李明峯,葉劍利.分時複用時CPLD設計變頻系統中的應用[J].單片機與嵌入式系統應用,2002.[2]DanielJ.Modulating direct digital synthesizer in a quicklogic FPGA.[3]潘鬆,王國棟.VHDL實用教程[M].成都:電子科技大學出版社,2000.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章