PLL三階迴路濾波器 差分方程式推導
PLL三階迴路濾波器 差分方程式推導
本篇文章主要推導PLL三階迴路濾波器的差分方程式,推倒結果可以透過數值方法來獲得濾波器的時域輸出結果, 所推導之方程式與Spectre模擬結果相同。
筆者製作的PLL計算機也是使用相同的方程式進行時域計算。
1.Transfer function
三階迴路濾波器如圖所示
列出三階迴路濾波器的轉移函式,為了後續方便表示,這邊X為濾波器的輸入電流,Y為濾波器的輸出控制電壓
\[H(s) = \frac{Y(s)}{X(s)} = \frac{s \cdot A3 + 1}{s^3 \cdot A2 + s^2 \cdot A1 + s \cdot A0}\]其中的係數為:
\[A3 = R1 * C1\] \[A2 = C1 * C2 * R1 * R2 * C3\] \[A1 = C1 * R1 * (C2 + C3) + C3 * R2 * (C1 + C2)\] \[A0 = C1 + C2 + C3\]交叉相乘後可得
\[sXA3 +X = s^3YA2 + s^2YA1 + sYA0\]2.Differential equation
把s doamim轉移函式轉換成微分方程式,並假設初值都為零。
\[\frac{d}{dt} X A3 + X = \frac{d^3}{dt^3} Y A2 + \frac{d^2}{dt^2} Y A1 + \frac{d}{dt} Y A0\]由於目標是要給電腦算下一個時刻的時域數值,所以這邊離散化微分方程式,為了確保計算上有足夠的收斂性,使用Backward Euler進行離散化, 分別寫出一次、二次、三次微分對應的Backward Euler差分方程式
\[\frac{dA}{dt} \approx \frac{a[n+1] - a[n]}{\Delta t}\] \[\frac{d^2A}{dt^2} \approx \frac{a[n+1] - 2a[n] + a[n-1]}{(\Delta t)^2}\] \[\frac{d^3A}{dt^3} \approx \frac{a[n+1] - 3a[n] + 3a[n-1] - a[n-2]}{(\Delta t)^3}\]把離散化後的結果帶入微分方程式中可得
\[\begin{aligned} A3 \frac{x[n+1] - x[n]}{\Delta t} + x[n+1] = {} & A2 \frac{y[n+1] - 3y[n] + 3y[n-1] - y[n-2]}{(\Delta t)^3} \\ & + A1 \frac{y[n+1] - 2y[n] + y[n-1]}{(\Delta t)^2} \\ & + A0 \frac{y[n+1] - y[n]}{\Delta t} \end{aligned}\]為了獲得濾波器下一個狀態的輸出y[n+1],且x[n]是已知的輸入電流,開始化簡差分方程式,首先兩邊同乘Δt^3
\[\begin{aligned} A3 (\Delta t)^2 (x[n+1] - x[n]) + (\Delta t)^3 x[n+1] = {} & A2 (y[n+1] - 3y[n] + 3y[n-1] - y[n-2]) \\ & + A1 \Delta t (y[n+1] - 2y[n] + y[n-1]) \\ & + A0 (\Delta t)^2 (y[n+1] - y[n]) \end{aligned}\]接著把等式右邊的y[n+1]提出來
\[\begin{aligned} A3 (\Delta t)^2 (x[n+1] - x[n]) + (\Delta t)^3 x[n+1] = {} & y[n+1] \left( A2 + A1 \Delta t + A0 (\Delta t)^2 \right) \\ & - A2 (3y[n] - 3y[n-1] + y[n-2]) \\ & - A1 \Delta t (2y[n] - y[n-1]) \\ & - A0 (\Delta t)^2 y[n] \end{aligned}\]最後獲得
\[\begin{aligned} y[n+1] = \frac{1}{A2 + A1 \Delta t + A0 (\Delta t)^2} \Big\{ & A3 (\Delta t)^2 \big(x[n+1] - x[n]\big) + (\Delta t)^3 x[n+1] \\ & + A2 \big(3y[n] - 3y[n-1] + y[n-2]\big) \\ & + A1 \Delta t \big(2y[n] - y[n-1]\big) \\ & + A0 (\Delta t)^2 y[n] \Big\} \end{aligned}\]由於等式右邊都是已知的數值,故可以直接求解迴路濾波器的輸出控制電壓y[n+1]。
3.Simulation result
最後驗證推導出來的差分方程式是否正確,筆者在spectre上建立理想的PLL行為模型,並同時透過python實現PLL與濾波器差分方程式, 檢查計算出的控制電壓是否與spectre的模擬相同。
可以看到Spectre與方程式算出的控制電壓幾乎重合,可見此方程式可以用來描述PLL行為(當然可以,兩者計算上是相同的), 筆者有將此time domain的計算功能加入開發的PLL計算機內,若有此需求可以用看看該工具。
This post is licensed under CC BY 4.0 by the author.

