作者:Jens Sorensen, Shane O’Meara, and Dara O’Sullivan
這是由兩部分組成的系列中的第 2 部分。第1部分討論了在電機控制應用中使用sinc濾波器解調Σ-Δ編碼數據。闡述了同步sinc濾波器脈沖響應對脈寬調制(PWM)的重要性,并提出了同步策略;但是,同步方案使得難以正確配置系統。
在本系列的第2部分中,提出了一種針對同步優化的新型sinc濾波器結構。該濾波器可提高需要對反饋鏈進行嚴格定時控制的應用中的測量性能。然后,第 2 部分繼續討論使用 HDL 代碼實現 sinc濾波器,以及如何針對 FPGA 實現優化濾波器。最后,介紹了在基于FPGA的三相伺服驅動器上進行的測量。
針對同步優化的 Sinc 濾波器
如第1部分所述,通過將sinc濾波器脈沖響應與PWM正確對齊,可以實現無混疊Σ-Δ測量。雖然該方法很簡單,但很難(在許多情況下甚至不可能)找到提供所需結果的系統配置。為了說明這一點,假設sinc濾波器和PWM模塊共享一個以f f運行的公共系統時鐘源。.sys.調制器時鐘,f麥克利克,然后由公式1確定。
其中 D麥克利克是調制器時鐘的時鐘分頻器。類似地,PWM頻率f。普瓦姆,由公式 2 確定。
其中 D脈寬調制是確定PWM頻率的時鐘分頻器。最后,sinc濾波器的抽取率(數據速率)由公式3給出。
其中 D12 月是抽取時鐘的時鐘分頻器。為了避免脈沖響應和PWM周期之間的漂移,PWM周期內必須有一個整數個抽取周期:
其中 N 是整數。通過組合等式2、等式3和等式4:
顯然,只有有限的時鐘縮放器選擇,Dx,滿足公式 5。此外,大多數情況下,時鐘縮放器的選擇方式有嚴格的限制。例如,系統可能需要以特定的PWM頻率(例如,10 kHz)運行或使用特定的調制器時鐘(例如,20 MHz)。另一個復雜因素是選擇調制器時鐘時的選項數量有限。例如,如果 f.sys為 100 MHz,是 D 唯一合理的選擇麥克利克落在 5 到 10 的有限整數范圍內(20 MHz 低至 10 MHz)。
鑒于所有這些限制,很難(如果不是不可能的話)找到在脈沖響應和PWM之間提供所需對齊的時鐘刻度。通常的情況是,用戶被迫選擇滿足公式5的時鐘縮放器,而不是選擇產生所需PWM頻率、調制器時鐘和信噪比(SNR)的時鐘刻度。此外,如果其中一個頻率隨時間變化,則無法找到有效的配置。這在多軸系統中很常見,其中單個運動控制器同步網絡中的多個電機控制器。
雖然對準方案提供了出色的測量性能,但它可能被證明是不切實際的。在下一節中,將介紹一種新型的sinc濾波器。該濾波器提供最佳的測量性能,同時允許用戶獨立選擇所有時鐘分頻器。
沖洗 Sinc 過濾器
傳統的三階sinc濾波器如圖1所示。濾波器通過調整系統時鐘來生成ADC的調制器時鐘,作為回報,ADC產生到濾波器的1位數據流。濾波器功能本身由三個級聯積分器組成,1/(1 – z–1),時鐘速率與調制器和三個級聯微分器相同,1 – z–1,在抽取的時鐘上計時。
圖1.傳統的三階sinc濾波器。
sinc濾波器和ADC通過連續向兩者施加時鐘來工作。因此,濾波器以抽取時鐘確定的固定速率連續輸出數據。濾波器的數據速率通常高于電機控制算法的更新速率,因此許多濾波器輸出被抑制。只有當脈沖響應以理想測量為中心時,輸出才會被捕獲并用作反饋。
使用空間矢量調制時,相電流在每個PWM周期中僅取其平均值兩次。在此之后,每個PWM周期只有兩個可能的無混疊sinc數據輸出,因此無需讓濾波器連續運行。實際上,僅在需要反饋時才啟用測量,然后在所有其他時間禁用測量就足夠了。換言之,測量工作在開關模式下,與傳統ADC沒有什么不同。
開關工作模式的一個問題是調制器和濾波器時鐘來自同一系統時鐘。這意味著濾波器和ADC都以開關模式工作,不建議這樣做,因為這會導致性能降低。原因是ADC中的調制器是具有一定建立時間和阻尼的高階系統。因此,當首次向ADC施加時鐘時,調制器需要建立,然后才能信任輸出比特流。為了解決這些問題,提出了一種新的濾波器結構(見圖2)。
圖2.Sinc濾波器設計用于開關操作和所有狀態的沖洗。
作為標準sinc濾波器,該內核由三個級聯積分器和三個級聯微分器組成。但是,該濾波器具有允許新操作模式的幾個功能。首先,濾波器具有新的時鐘發生器功能,可將調制器時鐘與積分器時鐘分開。這樣就可以連續為ADC提供時鐘,但只能在獲得測量時啟用積分器時鐘。其次,過濾器具有新的過濾器控制功能。參照同步脈沖,控制模塊處理操作濾波器所需的所有時序和觸發。濾波器控制器的主要功能是刷新濾波器,這涉及初始化所有濾波器狀態,定時器在開始新測量之前進行過濾,以及在正確的實例上啟用/禁用積分器時鐘。最后,濾波器具有新的緩沖器和中斷控制單元,該單元對輸出數據進行分類并捕獲正確的測量值。緩沖器和中斷單元還通過中斷來通知電機控制應用,當新的測量準備被使用時。圖3中的時序圖顯示了濾波器的工作原理。
圖3.sinc濾波器在開關模式下工作的時序圖。
為了開始測量,將同步脈沖(同步脈沖)施加到濾波器控制器。通常,該脈沖表示新的PWM周期的開始。同步脈沖啟動一個定時器,該定時器配置為在所需測量點之前正好 1.5 個抽取周期失效。此時,積分器時鐘和抽取時鐘使能,濾波過程開始。經過3個抽取周期(三階sinc濾波器的建立時間)后,緩沖器和中斷控制器捕獲數據輸出并置位中斷。在圖3中,請注意測量如何以同步脈沖為中心。該序列在下一個同步脈沖處重復,但一旦濾波器啟動,調制器時鐘保持導通。
所提出的sinc濾波器解決了傳統sinc濾波器的同步問題。濾波器及其工作模式不對PWM頻率、調制器時鐘或抽取率做出任何假設。它適用于所有系統配置,即使PWM頻率隨時間變化也是如此。由于濾波器在每次測量時都會有效復位,因此它對時鐘之間的漂移也不敏感。
單弦濾波器的HDL實現
作者發現,一些公開的sinc濾波器HDL示例存在對濾波器性能產生負面影響或導致意外行為的缺點。本節將討論一些實現問題,以及如何設計HDL代碼以在FPGA上獲得最佳性能。
集成商
在最純凈的形式中,sinc3濾波器由三個級聯積分器和三個級聯微分器組成,見圖1。首先,考慮 z 域中的純積分器2:
其中 u 是輸入,y 是輸出。積分器具有差分方程:
這個一階方程等效于累加器,非常適合在FPGA等時鐘邏輯中實現。一種常見的實現方法是D型觸發器累加器,如圖4所示。
圖4.實現帶有D型觸發器的蓄能器。
該電路可以在FPGA上實現,只有很少的邏輯門。現在,當級聯三個純積分器時,z域中的傳遞函數由公式8定義。
三個級聯積分器的差分方程如公式9所示:
請注意樣本 n 處的輸入如何影響樣本 n 處的輸出。
如果三個積分器使用圖4中的D型翻轉累加器實現,則結果如圖5所示。
圖5.三個級聯累加器采用 D 型觸發器實現。
由于這是一個時鐘電路,輸入的變化需要幾個時鐘才能影響輸出。當檢查級聯累加器的差分方程時,這一點變得更加清晰(參見公式10)。
這個差分方程與純積分器的差分方程完全不同(參見公式9)。使用累加器時,輸入需要兩個時鐘才能影響輸出,而對于純積分器,輸入會立即影響輸出。為了說明這一點,圖6分別顯示了在樣品編號5處應用單位步進時公式9和公式10的階躍響應。正如所懷疑的那樣,與積分器相比,累加器延遲了兩個樣本。
圖6.三個級聯積分器和三個級聯累加器的階躍響應。
在大多數公開可用的sinc濾波器示例中,建議使用D型觸發器累加器實現積分器。這樣做的主要論點是門數少,但輕量級實現是有代價的。與濾波器的群延遲相比,兩個調制器時鐘的額外延遲似乎微不足道,但延遲會影響濾波器衰減更高頻率的能力,因此,累加器實現提供的有效位數比純積分器少。此外,所提出的沖洗sinc濾波器需要一個理想的傳遞函數才能正常工作。出于這些原因,任何sinc濾波器實現都不應依賴于累加器來實現積分器級。
為了獲得理想的sinc3響應,提出了與公式9差值的直接實現。結果如圖 7 所示。請注意框圖如何由兩部分組成:時鐘邏輯部分(觸發器)和組合部分(求和)。這種實現需要更多的門,但它具有所需的濾波器性能和延遲。
圖7.實現三個級聯集成器。
差異化因素
與積分器類似,許多公開提供的sinc濾波器示例錯誤地實現了微分器級,從而導致濾波器性能降低和意外延遲。本節討論差異化器階段,并就如何實現FPGA以獲得最佳性能提出建議。首先,考慮公式11中z域中的純微分器和公式12中的相應差分。2
為了在FPGA上實現差異化,最常用的是D型觸發器,請參見圖8。
圖8.采用 D 型觸發器實現的差分器。
以下 HDL 代碼片段說明了實現三個 D 型觸發器微分器的常用方法。這里使用了偽Verilog,但這些原則也適用于其他語言。
圖9.三個微分器作為時鐘邏輯實現。
與任何時鐘分配一樣,首先計算所有右側語句并分配給左側語句。3一切都是計時的,所有作業都是并行更新的。這是一個問題,因為輸出項(yx[n]) 依賴于延遲項 (u[n-1] 和 yx[n-1])首先更新。因此,前面的 Verilog 代碼段實現了邏輯,如圖 10 所示。
圖 10.通過時鐘分配實現的差異化因素。
由于時鐘分配,微分器的延遲是六個時鐘,而不是預期的三個時鐘。由于微分器與抽取時鐘一起計時,這有效地使濾波器的群延遲和建立時間加倍。但是,它也會影響濾波器的衰減,并且頻率響應不是理想的三階墳弦的頻率響應。圖10中的實現常見于已發布的sinc濾波器示例中,但強烈建議選擇一種模擬理想微分器階段的方法。
前面的Verilog代碼片段可以分為兩部分:計算電流輸出的組合部分和更新延遲狀態的時鐘邏輯部分。這種分離使得將組合部分移動到始終時鐘塊之外成為可能,如圖 11 所示的代碼片段所示。
圖 11.三個微分器作為時鐘邏輯和組合邏輯的混合實現。
使用組合賦值,沒有與 y 計算相關的額外延遲x總延遲從 6 個時鐘降低到理想的 3 個時鐘。推薦的微分器實現方案框圖如圖12所示。
圖 12.使用時鐘邏輯和組合邏輯混合實現三個級聯微分器。
通過結合所提出的級聯積分器和微分器的實現方案,sinc濾波器在衰減和延遲方面獲得了理想的特性。所有基于Σ-Δ的測量都將受益于優化的濾波器實現,尤其是依賴于了解確切濾波器延遲的刷新sinc。
測量
所提出的 Σ-Δ 測量系統已與基于 Xilinx Zynq-7020 SoC 的伺服電機控制器一起實施和測試。??4該系統由一個 60 V 三相永磁伺服電機 (Kinco SMH40S5)和三相開關電壓源逆變器。SoC 運行磁場定向電機控制算法,以及用于實時捕獲測量數據的軟件。
對于相電流測量,該系統具有兩個隔離式Σ-Δ型ADC (ADuM7701),后接兩個三階sinc濾波器。sinc濾波器是使用本文中討論的設計建議實現的,包括刷新sinc工作模式。為了進行比較,將介紹傳統的連續運行過濾器和沖洗過濾器的測量結果。
雖然控制系統具有閉環磁場定向控制,但所有測量均使用開環控制進行。閉合電流環路對測量噪聲很敏感,噪聲將通過電流環路耦合。通過開環操作,可以消除電流控制器的任何影響,從而可以直接比較結果。
除了模式配置和與PWM的對齊外,測量都是使用相同的配置完成的,包括抽取率,設置為125。因此,測量結果的任何差異都可能導致sinc3脈沖響應是否與PWM正確對齊。控制算法以10 kHz執行,調制器時鐘為12.5 MHz。
具有連續sinc濾波器操作的未對齊脈沖響應
在第一個示例中(見圖13a),脈沖響應與PWM波形無關。圖13b顯示了當電機停止但電源逆變器在所有相位上以50%的占空比切換時的兩相電流測量結果。在這種操作模式下,測量顯示測量的噪聲水平。圖13b顯示了電機以600 rpm開環運行時的相電流。電機有四個極對,因此電氣周期為 25 ms。兩張圖都顯示出顯著的噪聲,會嚴重影響任何閉環電流控制器的性能。噪聲電平與基波相電流的大小無關,因此輕負載時的噪聲相對較差。本例中的噪聲是由未對齊的sinc濾波器脈沖響應引起的,它對sinc濾波器的抽取率(衰減)幾乎沒有增加。
圖 13.sinc濾波器脈沖響應與PWM不一致的連續工作模式。
通過連續 Sinc 濾波器操作實現一致的脈沖響應
圖14顯示了每個PWM周期的抽取周期為整數個且脈沖響應與理想測量點對齊時的測量結果。圖 14 中的結果與圖 13 中的結果直接相當。
比較圖13和圖14時,濾波器使用相同的抽取率,但噪聲水平顯著降低。這些示例說明了系統配置和同步對于充分利用基于Σ-Δ的信號鏈的性能是多么重要。
圖 14.連續工作模式,sinc濾波器脈沖響應與PWM對齊。
沖洗 Sinc 過濾器
雖然圖14中連續工作的sinc濾波器的結果令人滿意,但濾波器仍然難以找到支持同步的配置。雖然可以將連續工作的sinc濾波器與PWM同步,但這通常不切實際。這個問題可以通過沖洗sinc過濾器解決。
圖15顯示了沖洗sinc濾波器的測量結果。濾波器配置為僅圍繞理想測量點運行 3 個抽取周期。正如預期的那樣,性能類似于圖14中的連續工作濾波器。
為了進行比較,沖洗過濾器使用與連續運行過濾器完全相同的配置。不同之處在于,連續工作的濾波器必須使用這種配置,否則性能會下降,如圖13中的結果所示。另一方面,沖洗過濾器將在任何可能的系統配置下保持其最佳性能。
圖 15.沖洗 sinc 濾波器,其 sinc 濾波器脈沖響應與 PWM 對齊。
未對齊、連續工作的sinc濾波器(圖13a)的噪聲幅度約為16位信號中的120個計數。這相當于噪聲引起的大約低7位的損失。沖洗sinc濾波器(圖15a)的噪聲電平約為16位信號中的5個計數,對應于噪聲損失不到3位。
總結
基于Σ-Δ的相電流測量廣泛用于電機驅動器,但要獲得最佳性能,需要正確配置整個系統。本文討論了可能導致性能不佳的來源以及如何正確設置系統。
配置系統以實現最佳電流反饋性能可能具有挑戰性,在某些情況下甚至是不可能的。為了解決這個問題,提出了一種新型的sinc濾波器。濾波器在開關模式下工作,保證在任何系統配置下的最佳性能。
在FPGA上實現sinc濾波器需要開發HDL代碼。本文討論了幾種降低濾波器延遲和增加衰減的實現技術。
最后,本文介紹了幾個測量結果,說明了沖洗sinc濾波器同步和性能的重要性。
審核編輯:郭婷
-
驅動器
+關注
關注
52文章
8226瀏覽量
146253 -
濾波器
+關注
關注
161文章
7795瀏覽量
177994 -
電機控制
+關注
關注
3534文章
1876瀏覽量
268740
發布評論請先 登錄
相關推薦
評論