【導讀】在LTspice中進行電路仿真時,目標通常是深入了解電路的模擬行為并做出設計權衡。同時,電路的輸出很可能會被數字化并進行后處理,因此將生成的數字元件納入LTspice仿真往往更具挑戰性。
在這篇博客文章中,我將介紹一些電路元件,以幫助您在LTspice中對數字濾波器進行建模。這樣,您就可以探索對數字化信號施加濾波后的模擬電路的行為與性能。
介紹一種簡單的數字濾波器:移動平均FIR濾波器
我們從最簡單的低通濾波器示例,即移動平均濾波器開始講起。維基百科關于FIR濾波器的文章展示了一個非常簡單的使用三個抽頭的移動平均示例。

圖1:移動平均FIR濾波器的框圖
《面向科學家和工程師的數字信號處理指南》第15章也是理解移動平均濾波器的有用參考資料。
在上述三抽頭示例中,輸出為輸入信號連續三個采樣點的平均值:

此算法還可進一步簡化,以減少所需的乘法模塊數量:

實現起來十分簡單。那么如何在LTspice中實現這一功能呢?
在LTspice中引入濾波器模塊
要在LTspice中實現此濾波器,需要三種函數:單位延遲、加法和乘法。
單位延遲模塊可通過任意電壓源(LTspice元件庫中的bv)配合delay()函數來實現。此模塊需要設置采樣頻率。該參數應在原理圖的頂層使用.PARAM指令進行設置。例如以下指令:
.param Fs=1000
可將采樣頻率設置為1ksps。單位延遲模塊會將采樣頻率轉換為采樣周期(1ms),并利用該值使模塊的輸入信號產生相應的延遲。

圖2:LTspice單位延遲模塊原理圖
加法模塊和乘法模塊的實現則更為簡單,無需了解采樣周期。兩者均可直接通過壓控電壓源來實現。加法模塊需要兩個輸入信號進行相加。乘法模塊需要一個輸入信號,并使用參數M來設定乘數。

圖3:LTspice加法器模塊原理圖

圖4:LTspice乘法器模塊原理圖
在LTspice中實現移動平均FIR濾波器
將上述三個模塊組合,即可在LTspice中創建一個簡化的移動平均FIR濾波器。如需探索此示例,請打開附件.zip壓縮包中的Moving Average FIR Filter.asc文件。為確保LTspice能夠找到所有必需的文件,請在打開原理圖前先解壓該.zip文件。
Moving-Average-FIR-Filter.zip
上述示例中的濾波器模塊已封裝為層次化模塊,雙擊相應模塊即可打開其底層原理圖。在該壓縮包的各個模塊文件夾中,均包含一個.asc文件和一個.asy文件。其中,.asc文件為底層原理圖,.asy文件為對應的符號文件。

圖5:三抽頭移動平均FIR LTspice原理圖
在瞬態仿真中探索結果
從菜單欄選擇“Simulate -> Run/Pause”(仿真 -> 運行/暫停),以執行原理圖中由.TRAN指令指定的瞬態仿真。圖6展示了濾波器電路的輸入節點、輸出節點及內部延遲節點。點擊原理圖中的節點即可繪制波形,隨后右鍵單擊波形并選擇“Add Plot Pane Below”(在下方添加繪圖面板),以創建多個顯示面板。

圖6:顯示移動平均特性的瞬態仿真結果
由于LTspice本質上仍是模擬仿真器,必須確保輸入信號能夠準確表征數字信號。在本例中,已確保信號的變化速度不超過采樣率。另一種方法則是使用采樣保持電路對信號進行數字化處理。
在交流仿真中探索結果
在頂層原理圖中,右鍵單擊.AC指令并點擊“OK”,即可激活該指令,此時,.TRAN指令將被注釋掉(顯示為藍色)。

圖7:.AC指令已啟用,.TRAN指令已禁用
繪制輸出波形可顯示濾波器的幅頻與相頻響應。請注意,.AC指令中的截止頻率被設置為奈奎斯特頻率Fs/2。

圖8:FIR濾波器交流分析:幅度與相位隨頻率的變化
為使圖形更接近維基百科文章示例中的圖像,請右鍵單擊縱軸并將刻度更改為線性坐標;然后右鍵單擊橫軸,取消勾選“Logarithmic”(對數)。

圖9:將幅度軸更改為線性刻度

圖10:將頻率軸更改為線性刻度
經此設置后,將生成一幅線性-線性坐標圖,更加貼近維基百科示例中的幅頻與相頻曲線。

圖11:FIR頻率響應的線性-線性坐標圖
在交流仿真中觀察混疊現象
最初將截止頻率設置為奈奎斯特頻率(Fs/2),是為了確保頻率響應符合數字濾波器的預期表現;畢竟數字濾波器并不存在超出奈奎斯特頻率的概念。
而在純模擬仿真中加入數字濾波器的真正價值在于,能夠觀察到數字濾波器作用于連續信號時的實際表現;換言之,可以直觀地觀察到混疊效應。
下面通過將.AC指令的截止頻率擴展至奈奎斯特頻率的若干倍來進行深入探討。圖12展示了截止頻率擴展至5倍奈奎斯特頻率的仿真結果。

圖12:顯示混疊區域的頻率響應線性-線性坐標圖
這種兼容模擬仿真的數字濾波器模型,使您能夠在信號鏈輸出端仿真濾波與混疊的綜合效果。我將在未來的博客文章中對此展開進一步探討,敬請期待!
*特別感謝Steve Potratz向我介紹了LTspice中的數字濾波器模型。



