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