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