SLiCAP模擬電路設(shè)計簡介
學習如何使用基于Python的符號模擬器程序SLiCAP設(shè)計和驗證模擬電路。
本文引用地址:http://www.ex-cimer.com/article/202411/464795.htm讓我們面對現(xiàn)實吧——從SPICE模擬中提取有用的設(shè)計信息可能具有挑戰(zhàn)性。如果你是一名模擬設(shè)計師,你花了多少時間在SPICE中更改參數(shù),迭代地重新運行程序,并檢查數(shù)值結(jié)果?
在本文中,我們將討論一個有用的開源Python包,稱為SLiCAP(符號線性電路分析程序的縮寫)。正如我們將看到的,SLiCAP通過提供設(shè)計信息來補充基于SPICE的標準模擬器,而不需要繁瑣的試錯程序。我們將首先介紹SLiCAP的一些關(guān)鍵功能;然后,我們將通過使用SLiCAP設(shè)計和驗證一個簡單的負反饋電壓放大器來演示這些功能。
SLiCAP能做什么?
SLiCAP最大的賣點之一是它能夠求解線性電路設(shè)計方程。它可以計算直流和動態(tài)頻率行為的電路解,在后一種情況下,使用拉普拉斯域傳遞函數(shù)、根軌跡分析和零極點分析。符號和數(shù)字噪聲分析也是可能的。
SLiCAP還具有專用的參數(shù)步進功能。許多器件,例如晶體管,表現(xiàn)為非線性。我們可以使用參數(shù)步進函數(shù)來改變這些組件線性化的操作點。
對于我們這些不太喜歡文檔的人來說,SLiCAP也可以在這方面提供幫助。Python應(yīng)用程序允許我們在后處理腳本中直接使用SLiCAP輸出。當我們完成設(shè)計過程時,應(yīng)用程序可以同時生成記錄它的HTML頁面。
請注意,這是對SLiCAP功能的介紹,而不是一個全面的列表。我們將在本文稍后討論更多內(nèi)容,例如與網(wǎng)表生成相關(guān)的內(nèi)容。然而,建議讀者查閱SLiCAP手冊,以更全面地了解該程序的功能。
手冊的“如何使用SLiCAP”部分包括詳細的工作流程。我們可以大致概括為:
設(shè)置電路網(wǎng)表。
在Python中定義SLiCAP指令。
執(zhí)行指令。
使用結(jié)果來確定電路參數(shù)的大小(后處理)和/或驗證您的設(shè)計。
生成索引HTML報告。
為了更好地理解SLiCAP提供了什么,讓我們通過一個設(shè)計示例來了解。
利用SLiCAP設(shè)計負反饋放大器
在這個例子中,我們將使用SLiCAP的漸近增益模型來設(shè)計負反饋放大器的增益和動態(tài)行為。然后,我們將使用SLiCAP生成的波特圖在頻域中評估我們的設(shè)計。雖然我們不會深入探討編碼技術(shù),但這個例子應(yīng)該提供足夠的細節(jié)來說明程序的底層設(shè)計理念。
要求
我們的目標是設(shè)計具有以下規(guī)格的電壓-電壓放大器的關(guān)鍵組件:
源到負載的放大系數(shù)Av=20 V/V。
–3 dB帶寬(fBW)為500 kHz或更大。
為了演示,我們假設(shè)負載具有無限阻抗,而電源具有零阻抗。讓我們進一步假設(shè)所選電路拓撲是具有電阻分壓器反饋和高增益運算放大器控制器的負反饋配置。我們最初的設(shè)計目標現(xiàn)在歸結(jié)為:
確定兩個電阻器的尺寸。
選擇運算放大器。
必須完成上述操作,以滿足Av和fBW的要求。
設(shè)置SLiCAP網(wǎng)表
為了解決網(wǎng)絡(luò)問題,SLiCAP需要一個電路網(wǎng)表作為輸入。您可以手動創(chuàng)建網(wǎng)表或?qū)刖W(wǎng)表——網(wǎng)表語法與SPICE兼容。如果您選擇手動創(chuàng)建網(wǎng)表,SLiCAP有許多內(nèi)置模型,包括運算放大器和晶體管的線性化模型,用于無源和有源元件。
因為閱讀原理圖比網(wǎng)表文本更容易,所以您可能更喜歡在SPICE中構(gòu)建原理圖并生成網(wǎng)表。如果您選擇該路由,則可以將以下任何一種與SLiCAP設(shè)備符號一起使用:
KiCad。
LTspice。
gSchem。
萊普頓·埃達。
說明和語法詳細信息可以在SLiCAP用戶指南中找到。
回到我們的設(shè)計示例,我選擇在LTspice中生成網(wǎng)表。此過程將生成.cir文件,如圖1所示,以及電路拓撲。
圖1左:LTspice中的電路拓撲和原理圖捕獲 右:SLiCAP網(wǎng)表創(chuàng)建
內(nèi)置設(shè)備模型(上述.model語句中的OV)用作放大器的控制器。輸出端的電壓源由輸入端子之間的差分電壓控制,模擬電壓反饋運算放大器的小信號動態(tài)行為。
模型參數(shù)可用于確定輸入和輸出阻抗以及電壓增益的屬性。因為我們想保持這個例子簡單,所以我們使用了一個高度理想化的運算放大器模型。它的積分電壓增益等于 2πGBs2πGBs,其中GB是運算放大器的增益帶寬乘積。
設(shè)計方法與漸近反饋模型
在我們運行SLiCAP模擬之前,讓我們檢查一下我們將用于負反饋放大器的兩步設(shè)計方法。
在第一步中,我們通過將運算放大器替換為零器(具有無限電流、電壓、跨導和跨阻抗增益的理想放大器)來確定理想增益。如果回路增益參考變量選擇正確,則這與漸近增益A∞(s)一致。通過假設(shè)控制器增益為無窮大,可以找到漸近增益。
在第二步中,我們確定控制器的非理想性的影響,包括有限的增益和帶寬限制。該信息嵌入拉普拉斯域伺服函數(shù)S(S)中,可以通過以下方程找到:
其中L(s)是環(huán)路增益。
源到負載增益G(s)是漸近增益和伺服增益的乘積:
簡而言之,步驟1告訴您如何根據(jù)所需的傳遞函數(shù)設(shè)計反饋網(wǎng)絡(luò)。步驟2告訴您如何選擇控制器的性能方面(如增益和帶寬),以便源負載增益G(s)仍然可以接受。這種方法的優(yōu)點在于將反饋網(wǎng)絡(luò)的設(shè)計與控制器的設(shè)計分開。
有關(guān)兩步設(shè)計方法和漸近反饋模型的更多信息,請參閱Anton Montagne的“結(jié)構(gòu)化電子設(shè)計:放大器設(shè)計的概念方法”。這本書可以在網(wǎng)上免費下載PDF。
定義和執(zhí)行指令
讓我們從SLiCAP設(shè)計過程中中斷的地方繼續(xù)。到目前為止,我們已經(jīng)通過網(wǎng)表定義了電路。下一步將定義SLiCAP指令,為我們感興趣的特定性能方面提供信息。這就是Python編碼的開始。
定義指令的第一步是創(chuàng)建指令對象的實例,并將電路對象分配給指令。如圖2中的代碼片段所示,這意味著將之前創(chuàng)建的.cir網(wǎng)表文件連接到指令。
圖2創(chuàng)建SLiCAP指令實例并將其連接到.cir網(wǎng)表文件
請記住,我們感興趣的是設(shè)計源到負載的傳遞函數(shù)G(s),使直流電壓增益為Av=20,帶寬fBW=500 kHz。因此,我們希望獲得符號設(shè)計方程。因此,我們將模擬類型設(shè)置為符號。由于這些需要是拉普拉斯域傳遞函數(shù),我們還將數(shù)據(jù)類型設(shè)置為拉普拉斯。
電源電壓和負載(檢測器)電壓也需要定義。我們還希望使用漸近增益模型作為設(shè)計方法,這要求我們定義一個環(huán)路增益參考變量。這將是用作控制器的運算放大器模型的電壓控制電壓源。
上述所有指令屬性都已編碼,如圖3所示。
圖3 用Python編寫SLiCAP指令屬性并執(zhí)行指令
在執(zhí)行指令之前,我們還有最后一步要完成,即定義增益類型?;叵胍幌律弦还?jié),源到負載的傳遞、漸近增益和伺服增益之間存在關(guān)系。此外,伺服增益取決于環(huán)路增益。這就是為什么在圖3中,我們對每種增益類型執(zhí)行一次指令。
使用SLiCAP輸出進行設(shè)計
現(xiàn)在我們已經(jīng)運行了模擬,我們可以使用結(jié)果來促進我們的設(shè)計過程。圖4顯示了運行Python腳本生成的HTML報告的一部分。
圖4生成的HTML報告的片段,顯示了不同增益類型的電壓放大器傳遞函數(shù)
正如預(yù)期的那樣,漸近增益(A∞)僅取決于電阻反饋比。由于電壓增益要求(Av=20),該比率已經(jīng)固定。
另一方面,環(huán)路增益表現(xiàn)為積分器,單位增益頻率等于GB和電阻反饋比的乘積。我們還可以從圖4的輸出中觀察到,環(huán)路增益的單位增益頻率將決定伺服函數(shù)的帶寬S(S)和源到負載的傳輸帶寬G(S)。
這些觀察結(jié)果為我們的設(shè)計奠定了基礎(chǔ)。由于電阻比已經(jīng)由Av要求固定,很明顯,電路的帶寬只能通過改變所選運算放大器的增益帶寬積來設(shè)計。
接下來,讓我們使用Python作為計算器來完成我們的設(shè)計。圖5顯示了當我們使用設(shè)計方程來確定電阻器的尺寸以使Av=20時產(chǎn)生的HTML輸出。
圖5 生成的HTML報告的片段,顯示了基于Av要求的R1計算
基于這個電阻分壓比,我們在選擇R1和R2時有一個自由度。在這種情況下,我們選擇R1并根據(jù)給定的公式計算R2。一般來說,我們會添加限制設(shè)計自由度的噪聲和功耗要求,但這些超出了這個簡單示例的范圍。
最后,圖6顯示了用于確定運算放大器最小增益帶寬乘積的HTML輸出。
圖6生成的HTML報告的片段,顯示帶寬要求的最小GB計算
順便說一句,您可能已經(jīng)注意到上圖中的“環(huán)路增益極點乘積”。雖然我們不會在本文中討論它,但我之前提到的教科書第11章對環(huán)路增益極點積的概念(和重要性)進行了深入的解釋。
SLiCAP中的設(shè)計驗證
我們最初的設(shè)計目標——正確確定R1、R2和GB的大小——現(xiàn)在已經(jīng)實現(xiàn)。然而,我們?nèi)孕栩炞C這三個參數(shù)是否滿足性能要求。為此,我們在SLiCAP中使用選定的參數(shù)值運行數(shù)值模擬。然后,SLiCAP Python包將為我們一直在研究的不同增益類型創(chuàng)建波特圖:
漸近增益。
環(huán)路增益。
伺服增益。
源到負載的轉(zhuǎn)換(簡稱為增益)。
圖7和圖8分別顯示了震級和相位波特圖。
圖7 SLiCAP為R1=190 kΩ,R2=10 kΩ,GB=10 MHz生成的幅度波特圖
圖8 SLiCAP生成的R1=190 kΩ、R2=10 kΩ、GB=10 MHz的相位波特圖
源到負載的傳輸具有Av=20的直流幅度(約等于26dB)和fBW=500kHz的帶寬,這意味著滿足了要求。其他增益類型對應(yīng)于我們之前發(fā)現(xiàn)的拉普拉斯傳遞函數(shù)。超出帶寬的G(s)和s(s)的一階衰減來自環(huán)路增益中的一階積分器,環(huán)路增益本身來自運算放大器的電壓增益。
總結(jié)
我們在本文中使用的模型非常簡單,可能太簡單了,無法準確地表示一個真實的應(yīng)用程序。更現(xiàn)實的示例電路可能包括以下任何或所有內(nèi)容:
負載阻抗。
源阻抗。
運算放大器輸入和輸出阻抗。
運算放大器電壓增益中的額外極點和零點。
在設(shè)計過程的第一部分,訣竅是了解在環(huán)路增益中引入主導極點和/或零點的模型組件。這應(yīng)該返回有限階環(huán)路增益?zhèn)鬟f函數(shù),有助于確保零極點位置滿足帶寬要求。稍后,我們可以在數(shù)值模擬中增加復雜性,以驗證整個電路。
盡管簡單,但我們的設(shè)計示例準確地反映了SLiCAP的結(jié)構(gòu)化設(shè)計理念。在更實際的層面上,它表明SLiCAP能夠在相當短的時間內(nèi)呈現(xiàn)有助于元件選擇、驗證電路和記錄過程的方程??偠灾琒LiCAP為模擬電子工程師提供了一個絕佳的機會,可以加快和自動化他們的一些放大器設(shè)計。
評論