【導(dǎo)讀】本文是兩篇系列文章的第2部分。 第1部分 介紹了在電機(jī)控制 應(yīng)用中,使用sinc濾波器對(duì)∑-?編碼數(shù)據(jù)進(jìn)行解調(diào)。雖然文中說(shuō)明了同步sinc濾波器的脈沖響應(yīng)對(duì)脈沖寬度調(diào)制(PWM)的重要性,并提出了同步策略,但是,同步方案會(huì)導(dǎo)致難以正確配置系統(tǒng)。
作為本系列的第2部分,本文提出一種針對(duì)同步優(yōu)化的新型sinc濾波器結(jié)構(gòu)。該濾波器可在需要嚴(yán)格控制反饋鏈時(shí)序的應(yīng)用中提高測(cè)量性能。接著,第2部分還將討論采用HDL代碼實(shí)現(xiàn)sinc濾波器的方法,以及如何在FPGA實(shí)現(xiàn)上優(yōu)化濾波器。最后,給出在一個(gè)基于FPGA的3相伺服驅(qū)動(dòng)器上執(zhí)行的測(cè)量結(jié)果。
針對(duì)同步優(yōu)化的sinc濾波器
如第1部分所述,通過(guò)正確對(duì)齊sinc濾波器對(duì)PWM的脈沖響應(yīng),可以實(shí)現(xiàn)無(wú)混疊的∑-?測(cè)量。盡管該方法很簡(jiǎn)單,但是很難(在很多情況下不可能)找到一個(gè)理想的系統(tǒng)配置。為了說(shuō)明這一點(diǎn),假設(shè)sinc濾波器和PWM模塊共用同一個(gè)以 fsys運(yùn)行的系統(tǒng)時(shí)鐘源。調(diào)制器時(shí)鐘 fmclk則由公式1確定。
其中 Dmclk 是調(diào)制器時(shí)鐘的時(shí)鐘分頻數(shù)。同樣,PWM頻率 fpwm由公式2確定。
其中 DPWM 是確定PWM頻率的時(shí)鐘分頻數(shù)。最后,sinc濾波器的抽取率(數(shù)據(jù)速率)由公式3確定。
其中 Ddec 是抽取后時(shí)鐘的時(shí)鐘分頻數(shù)。為了避免脈沖響應(yīng)和PWM周期之間的漂移,一個(gè)PWM周期內(nèi)包含的抽取周期數(shù)量必須為整數(shù):
其中N為整數(shù)。合并公式2、公式3和公式4可得:
顯然,只有有限選擇的時(shí)鐘縮放比例 Dx可滿足公式5。此外,時(shí)鐘縮放比例的選擇方法往往也受到嚴(yán)格限制。例如,系統(tǒng)可能需要以一定的PWM頻率(例如10 kHz)運(yùn)行或使用一定的調(diào)制器 時(shí)鐘(例如20 MHz)。另一個(gè)麻煩是進(jìn)行調(diào)制器時(shí)鐘選擇時(shí),可選數(shù)值有限。例如,如果 fsys 為100 MHz,則 Dmclk僅有的合理選 擇應(yīng)為5到10之間有限范圍內(nèi)的整數(shù)(從20 MHz低至10 MHz)。
考慮到所有這些限制,很難(即便有可能)找到可在脈沖響應(yīng)和PWM之間實(shí)現(xiàn)所需對(duì)齊的時(shí)鐘縮放比例。通常會(huì)發(fā)生的情況是,用戶被迫選擇滿足公式5的時(shí)鐘縮放比例,而非選擇可產(chǎn)生所需PWM頻率、調(diào)制器時(shí)鐘和信噪比(SNR)的時(shí)鐘縮放比例。而且,如果其中一個(gè)頻率隨時(shí)間發(fā)生變化,則無(wú)法找到有效的配 置。這種情況在多軸系統(tǒng)中非常普遍,在這些系統(tǒng)中,單個(gè)運(yùn)動(dòng)控制器會(huì)對(duì)網(wǎng)絡(luò)中的多個(gè)電機(jī)控制器進(jìn)行同步。
雖然對(duì)齊方案可提供出色的測(cè)量性能,但事實(shí)證明它不切實(shí)際。以下章節(jié)將介紹一種新型sinc濾波器。該濾波器可提供出色的測(cè)量性能,同時(shí)允許用戶獨(dú)立選擇所有時(shí)鐘分頻數(shù)。
刷新式sinc濾波器
傳統(tǒng)的三階sinc濾波器如圖1所示。濾波器通過(guò)按比例縮放系統(tǒng)時(shí)鐘來(lái)生成ADC的調(diào)制器時(shí)鐘,而ADC則向?yàn)V波器返回一個(gè)1位數(shù)據(jù)流。濾波器功能本身包括三階級(jí)聯(lián)積分器 1/(1 – z–1)(時(shí)鐘速率與調(diào)制器速率相同)和三階級(jí)聯(lián)微分器 1 – z–1(時(shí)鐘速率為抽取時(shí)鐘)。
圖1. 傳統(tǒng)的三階sinc濾波器。
sinc濾波器和ADC通過(guò)施加于其上的同一個(gè)時(shí)鐘連續(xù)工作。因此,濾波器以由抽取時(shí)鐘確定的固定速率連續(xù)輸出數(shù)據(jù)。來(lái)自濾波器的數(shù)據(jù)速率通常高于電機(jī)控制算法的更新速率,因此許多濾波器輸出被拒絕。只有當(dāng)脈沖響應(yīng)以理想測(cè)量值為中心時(shí),輸出才會(huì)被捕獲并用作反饋。
采用空間矢量調(diào)制,在每個(gè)PWM周期內(nèi)僅取兩次相電流平均值。據(jù)此,每個(gè)PWM周期僅有可能輸出兩個(gè)無(wú)混疊的sinc數(shù)據(jù),因此沒有必要讓濾波器連續(xù)運(yùn)行。實(shí)際上僅在需要反饋時(shí)啟用測(cè)量,然后在所有其他時(shí)間禁用測(cè)量就足夠了。換句話說(shuō),測(cè)量以開關(guān)模式運(yùn)行,與傳統(tǒng)的ADC不同。
開關(guān)模式運(yùn)行的問題在于,調(diào)制器和濾波器時(shí)鐘來(lái)源于相同的系統(tǒng)時(shí)鐘。這意味著濾波器和ADC均以開關(guān)模式運(yùn)行,我們不建議這樣做,因?yàn)檫@會(huì)導(dǎo)致性能下降。其原因是ADC中的調(diào)制器是具有一定建立時(shí)間和阻尼的高階系統(tǒng)。因此,當(dāng)將時(shí)鐘首次施加于ADC時(shí),需要先建立調(diào)制器,然后才能信任其輸出位流。為了解決這些問題,我們提出一種新型濾波器結(jié)構(gòu)(參見圖2)。
圖2. sinc濾波器設(shè)計(jì)為開關(guān)工作模式并對(duì)所有狀態(tài)進(jìn)行刷新。
作為標(biāo)準(zhǔn)的sinc濾波器,其核心由三階級(jí)聯(lián)積分器和三階級(jí)聯(lián)微分器組成。但是,此濾波器具有一些特性,可以允許新的工作模式。首先,濾波器具有新的時(shí)鐘發(fā)生器功能,可將調(diào)制器時(shí)鐘與積分器時(shí)鐘分離。這樣就可以連續(xù)為ADC提供時(shí)鐘,但只在獲取測(cè)量值時(shí)才啟用積分器時(shí)鐘。其次,此濾波器具有新 的濾波器控制功能。以同步脈沖為基準(zhǔn),控制塊處理濾波器工作所需的所有時(shí)序和觸發(fā)。濾波器控制器的主要功能是刷新濾波器,包括初始化所有濾波器狀態(tài)、在開始新測(cè)量之前的計(jì)時(shí)器濾波,以及在適當(dāng)?shù)那樾蜗聠⒂?禁用積分器時(shí)鐘。最后,濾波器具有一個(gè)新的緩沖和中斷控制單元,該單元對(duì)所有輸出數(shù) 據(jù)進(jìn)行排序并捕獲正確的測(cè)量值。當(dāng)新的測(cè)量值準(zhǔn)備就緒時(shí),緩沖和中斷單元還會(huì)通過(guò)中斷來(lái)通知電機(jī)控制應(yīng)用。圖3的時(shí)序圖顯示了此濾波器的工作方式。
圖3. sinc濾波器在開關(guān)模式下的時(shí)序圖。
為了開始測(cè)量,將同步脈沖(sync pulse)施加于濾波器控制器。通常,此脈沖表示一個(gè)新的PWM周期的開始。同步脈沖啟動(dòng)一個(gè)計(jì)時(shí)器,該計(jì)時(shí)器被配置為恰好在所需測(cè)量點(diǎn)之前1.5個(gè)抽取周 期處失效。積分器時(shí)鐘和抽取時(shí)鐘在這一點(diǎn)啟用,濾波過(guò)程開始。經(jīng)過(guò)3個(gè)抽取周期(三階sinc濾波器的建立時(shí)間)后,緩沖和中斷控制器捕獲數(shù)據(jù)輸出并置位中斷。請(qǐng)注意在圖3中測(cè)量值如何以同步脈沖為中心。該序列在下一個(gè)同步脈沖處重復(fù),但是調(diào)制器時(shí)鐘在濾波器開始工作后就一直保持開啟狀態(tài)。
上述sinc濾波器解決了常規(guī)sinc濾波器的同步問題。該濾波器及其工作模式無(wú)需對(duì)PWM頻率、調(diào)制器時(shí)鐘或抽取率做出任何假設(shè)。即使PWM頻率隨時(shí)間變化,它也可以與所有系統(tǒng)配置同樣配合良好。由于每次測(cè)量都會(huì)有效重置濾波器,因此它對(duì)時(shí)鐘之間的漂移也不敏感。
sinc濾波器的HDL實(shí)現(xiàn)
作者發(fā)現(xiàn),一些公開可用的sinc濾波器HDL示例具有一些缺點(diǎn),會(huì)對(duì)濾波器的性能產(chǎn)生負(fù)面影響或?qū)е乱馔庑袨?。本章?jié)將討論一些實(shí)現(xiàn)問題以及如何設(shè)計(jì)HDL代碼以在FPGA上獲得最佳性能。
積分器
最純正的sinc3濾波器由三階級(jí)聯(lián)積分器和三階級(jí)聯(lián)微分器組成(參見圖1)。首先,考慮z-domain2中的純積分器:
其中u是輸入,y是輸出。積分器的差分方程為:
這個(gè)一階方程等于一個(gè)累加器,非常適合在FPGA等時(shí)鐘邏輯中實(shí)現(xiàn)。一種常見的實(shí)現(xiàn)方法是D型觸發(fā)器累加器,如圖4所示。
圖4. 采用D型觸發(fā)器的累加器實(shí)現(xiàn)。
該電路在FPGA上只需幾個(gè)邏輯門即可實(shí)現(xiàn)。于是,當(dāng)三個(gè)純積分器級(jí)聯(lián)時(shí),z域中的轉(zhuǎn)換函數(shù)由公式8確定。
公式9顯示了該三階級(jí)聯(lián)積分器的差分方程:
請(qǐng)注意樣本 n 的輸入如何影響樣本 n 的輸出。
如果使用圖4所示的D型觸發(fā)器累加器來(lái)實(shí)現(xiàn)該三階積分器,則結(jié)果如圖5所示。
圖5. 采用D型觸發(fā)器實(shí)現(xiàn)的三階級(jí)聯(lián)累加器。
由于這是時(shí)鐘電路,因此輸入變化需要經(jīng)過(guò)幾個(gè)時(shí)鐘周期才會(huì)影響到輸出。這一點(diǎn)在查看級(jí)聯(lián)累加器的差分方程(參見公式10)時(shí)會(huì)變得更加清晰。
此差分方程與純積分器的差分方程完全不同(參見公式9)。對(duì)于累加器,輸入需要兩個(gè)時(shí)鐘周期才會(huì)影響輸出,而對(duì)于純積分器,輸入會(huì)立即影響輸出。為了說(shuō)明這一點(diǎn),圖6分別顯示了在5號(hào)樣本處施加單位階躍時(shí)公式9和公式10的階躍響應(yīng)。正如預(yù)期的那樣,累加器相較于積分器延遲了兩個(gè)樣本。
圖6. 三階級(jí)聯(lián)積分器和三階級(jí)聯(lián)累加器的階躍響應(yīng)。
大多數(shù)公開可用的sinc濾波器示例建議使用D型觸發(fā)器累加器實(shí)現(xiàn)積分器。這樣做的主要理由是其所需門數(shù)較少,但是這種簡(jiǎn)單的做法也需要付出一定的代價(jià)。與濾波器的群延遲相比,兩個(gè)調(diào)制器時(shí)鐘的額外延遲看似微不足道,但該延遲影響了濾波器高頻衰減能力,因此,累加器實(shí)現(xiàn)相較于純積分器可提供的 有效位數(shù)更少。此外,上述刷新式sinc濾波器需要理想的轉(zhuǎn)換函數(shù)才能正常工作。鑒于這些原因,任何sinc濾波器實(shí)現(xiàn)都不應(yīng)該依賴?yán)奂悠鱽?lái)實(shí)現(xiàn)積分器級(jí)。
為了獲得理想的sinc3響應(yīng),建議按照公式9直接實(shí)現(xiàn)差分。結(jié)果如圖7所示。請(qǐng)注意功能框圖包含兩個(gè)組成部分:時(shí)鐘邏輯部分(觸發(fā)器)和組合部分(求和)。此實(shí)現(xiàn)需要更多門數(shù),但是它可以提供所需的濾波器性能和延遲。
圖7. 三階級(jí)聯(lián)積分器的實(shí)現(xiàn)。
微分器
與積分器類似,許多公開可用的sinc濾波器示例以錯(cuò)誤的方式實(shí)現(xiàn)微分器級(jí),從而導(dǎo)致濾波器性能下降和意外延遲。本章節(jié)討論了微分器級(jí),并就如何通過(guò)FPGA實(shí)現(xiàn)獲得最佳性能提出了建議。首先,考慮公式11中z域的純微分器以及公式12中相應(yīng)的差分。2
要在FPGA上實(shí)現(xiàn)微分器,最常用的方法是采用D型觸發(fā)器(參見圖8)。
圖8. 采用D型觸發(fā)器實(shí)現(xiàn)的微分器。
下述HDL代碼片段說(shuō)明了實(shí)現(xiàn)三階D型觸發(fā)器微分器的常見方法。這里使用的是Verilog偽碼,但其原理也適用于其他語(yǔ)言。
圖9. 以時(shí)鐘邏輯方式實(shí)現(xiàn)的三階微分器。
與任何時(shí)鐘賦值一樣,先計(jì)算所有右邊的語(yǔ)句,并將其賦值給左邊的語(yǔ)句。3為所有語(yǔ)句提供時(shí)鐘,并對(duì)所有賦值進(jìn)行并行更新。這會(huì)產(chǎn)生一個(gè)問題,因?yàn)檩敵鲰?xiàng) (yx[n])依賴于延遲項(xiàng)(u[n-1] 和 yx[n-1]),后者需要率先更新。因此,上述Verilog代 碼片段的邏輯實(shí)現(xiàn)如圖10所示。
圖10. 通過(guò)時(shí)鐘賦值實(shí)現(xiàn)的微分器。
由于采用時(shí)鐘賦值,微分器的延遲為6個(gè)時(shí)鐘周期,而不是預(yù)期的3個(gè)時(shí)鐘周期。由于微分器由抽取時(shí)鐘提供時(shí)鐘,因此濾波器的群延遲和建立時(shí)間實(shí)際都增加了一倍。但是,這也會(huì)影響濾波器的衰減,而且頻率響應(yīng)不是理想的三階sinc。在已發(fā)布的sinc濾波器示例中經(jīng)??梢钥吹綀D10所示的實(shí)現(xiàn)方式,但是我們強(qiáng)烈建議選擇一種模擬理想微分器級(jí)的方法。
上述Verilog代碼片段可分為兩部分:計(jì)算電流輸出的組合部分和更新延遲狀態(tài)的時(shí)鐘邏輯部分。這種分離使得組合部分可被移至始終受時(shí)鐘控制的功能塊之外,如圖11代碼片段所示。
圖11. 以時(shí)鐘邏輯與組合邏輯混合方式實(shí)現(xiàn)的三階微分器。
使用組合賦值時(shí),沒有與yx計(jì)算相關(guān)的額外延遲,總延遲從6個(gè)時(shí)鐘周期降低到理想的3個(gè)時(shí)鐘周期。推薦的微分器實(shí)現(xiàn)功能框圖如圖12所示。
圖12. 采用時(shí)鐘邏輯和組合邏輯混合實(shí)現(xiàn)的三階級(jí)聯(lián)微分器。
將上述級(jí)聯(lián)積分器與微分器實(shí)現(xiàn)結(jié)合在一起,可使sinc濾波器在衰減和延遲方面獲得理想特性。所有基于∑-?的測(cè)量都將受益于這種優(yōu)化濾波器的實(shí)現(xiàn),尤其是需要知道濾波器確切延遲的刷新式sinc。
測(cè)量
T本文提出的∑-?測(cè)量系統(tǒng)已經(jīng)結(jié)合基于Xilinx ® Zynq®-7020 SoCC的伺服電機(jī)控制器進(jìn)行了實(shí)施和測(cè)試。4該系統(tǒng)由60 V 3相永磁伺服電機(jī)(Kinco SMH40S5)和3相開關(guān)電壓源逆變器組成。SoC運(yùn)行磁場(chǎng) 定向電機(jī)控制算法和用來(lái)實(shí)時(shí)捕獲測(cè)量數(shù)據(jù)的軟件。
對(duì)于相電流測(cè)量,該系統(tǒng)采用兩個(gè)隔離式∑-? ADC (ADuM7701) 跟 隨兩個(gè)三階sinc濾波器。該sinc濾波器的實(shí)現(xiàn)采用了本文所討論的設(shè)計(jì)建議,包括刷新式sinc工作模式。為了進(jìn)行對(duì)比,將顯示傳統(tǒng)的連續(xù)工作模式濾波器和刷新式濾波器的兩種測(cè)量結(jié)果。
雖然控制系統(tǒng)具有閉環(huán)磁場(chǎng)定向控制,所有測(cè)量均通過(guò)開環(huán)控制進(jìn)行。閉合電流環(huán)路對(duì)測(cè)量噪聲很敏感,并且噪聲會(huì)通過(guò)電流環(huán)路發(fā)生耦合。通過(guò)開環(huán)工作,可以消除電流控制器產(chǎn)生的任何影響,從而可以對(duì)結(jié)果進(jìn)行直接比較。
除模式配置和PWM對(duì)齊外,均使用相同的配置(包括抽取率均設(shè)置為125)進(jìn)行測(cè)量。因此,測(cè)量結(jié)果的任何差異都會(huì)是影響sinc3脈沖響應(yīng)能否與PWM正確對(duì)齊的因素??刂扑惴ǖ膱?zhí)行頻率為10 kHz,調(diào)制器時(shí)鐘為12.5 MHz。
采用連續(xù)工作模式sinc濾波器,未對(duì)齊脈沖響應(yīng)
在第一個(gè)示例中(參見圖13a),脈沖響應(yīng)與PWM波形不相關(guān)。圖13b顯示了電機(jī)停止但功率逆變器在所有相上以50%的占空比切換時(shí)兩相電流的測(cè)量結(jié)果。在此工作模式下,測(cè)量顯示了測(cè)量結(jié)果的噪聲水平。圖13b顯示了電機(jī)以600 rpm開環(huán)運(yùn)行時(shí)的相電流。電機(jī)有四個(gè)極點(diǎn)對(duì),因此電氣周期為25 ms。這兩個(gè)圖都 顯示出明顯的噪聲,它將嚴(yán)重影響任何閉環(huán)電流控制器的性能。噪聲電平與基波相電流的幅度無(wú)關(guān),因此在輕負(fù)載時(shí)噪聲性能相對(duì)更差。在此示例中,噪聲是由sinc濾波器脈沖響應(yīng)未對(duì)齊引起的,因此對(duì)sinc濾波器的抽取率(衰減)幾乎沒有或完全沒有任何增加。
圖13. sinc濾波器脈沖響應(yīng)與PWM未對(duì)齊的連續(xù)工作模式。
采用連續(xù)工作模式sinc濾波器,對(duì)齊脈沖響應(yīng)
圖14顯示了當(dāng)每個(gè)PWM周期中的抽取周期數(shù)量為整數(shù),并且脈沖響應(yīng)與理想測(cè)量點(diǎn)對(duì)齊時(shí)的測(cè)量結(jié)果。將圖14中的結(jié)果直接與圖13中的結(jié)果進(jìn)行比較。
比較圖13和圖14可知,雖然濾波器使用的抽取率相同,但噪聲水平已大大降低。這些示例說(shuō)明系統(tǒng)配置和同步對(duì)于充分利用基于∑-?的信號(hào)鏈性能的重要性。
圖14. sinc濾波器脈沖響應(yīng)與PWM對(duì)齊的連續(xù)工作模式。
刷新式sinc濾波器
盡管圖14所示的連續(xù)工作模式sinc濾波器的結(jié)果令人滿意,但該濾波器的挑戰(zhàn)仍然在于如何找到可實(shí)現(xiàn)同步的配置。雖然有可能實(shí)現(xiàn)連續(xù)工作模式sinc濾波器與PWM同步,但這通常并不切實(shí)際。采用刷新式sinc濾波器可以解決該問題。
圖15顯示了刷新式sinc濾波器的測(cè)量結(jié)果。該濾波器配置為在理想測(cè)量點(diǎn)附近僅運(yùn)行3個(gè)抽取周期。正如預(yù)期的那樣,其性能類似于圖14中的連續(xù)工作模式濾波器。
為方便對(duì)比,刷新式濾波器使用的配置與連續(xù)工作模式濾波器完全相同。不同之處在于,連續(xù)工作模式濾波器必須使用此配置,否則性能會(huì)降低,如圖13結(jié)果所示。與之相反,刷新式濾波器可以在任何系統(tǒng)配置下保持最佳性能。
圖15. sinc濾波器脈沖響應(yīng)與PWM對(duì)齊的刷新式sinc濾波器。
采用未對(duì)齊的連續(xù)工作模式sinc濾波器(圖13a),其噪聲大小約為一個(gè)16位信號(hào)中120 LSBs。這相當(dāng)于噪聲導(dǎo)致近低7位信號(hào)的丟 失。刷新式sinc濾波器(圖15a)的噪聲電平大約是一個(gè)16位信號(hào)中5 LSBs,相當(dāng)于噪聲導(dǎo)致的信號(hào)丟失少于3位。
小結(jié)
基于∑-?的相電流測(cè)量已廣泛用于電機(jī)驅(qū)動(dòng)中,但是要獲得最佳性能,還需正確配置整個(gè)系統(tǒng)。本文討論了可能會(huì)導(dǎo)致性能不佳的原因以及如何正確設(shè)置系統(tǒng)。
配置系統(tǒng)以獲得最佳電流反饋性能往往極具挑戰(zhàn)性,在某些情況下甚至是不可能的。為了解決這個(gè)問題,本文提出了一種新型sinc濾波器。該濾波器以開關(guān)模式工作,并保證在任何系統(tǒng)配置下均具有出色的性能。
在FPGA上實(shí)現(xiàn)sinc濾波器需要進(jìn)行HDL代碼開發(fā)。本文討論了降低濾波器延遲并增加衰減的幾種實(shí)現(xiàn)技術(shù)。
最后,本文展示了幾種測(cè)量結(jié)果,這些結(jié)果說(shuō)明了刷新式sinc濾波器同步的重要性及其性能。
參考電路
1作者: Dara O’Sullivan, Jens Sorensen 和 Aengus Murray, AN-1265: 使用ADSP-CM402F/ADSP-CM403F/ADSP-CM407F/ADSP-CM408F sinc 濾波器和AD7403實(shí)現(xiàn)隔離式電機(jī)控制反饋, ADI公司,2015年4月。
2作者:Alan Oppernheim和Ronald Schafer, 離散時(shí)間信號(hào)處理, 第3版,Prentice Hall Inc.,2010年。
3 Rajeev Madhavan. ““Verilog HDL快速參考手冊(cè)”,Automata Publishing Company,1995年。
4 “Zynq-7000 SoC數(shù)據(jù)手冊(cè):概述”, Xilinx, Inc.,2018年7月
5 ““KNC-SRV-SMH40S伺服”, Anaheim Automation, Inc.,2019年4月。
推薦閱讀: