科技改變生活 · 科技引領未來
“使用Electronics Workbench,您可以創建與您在紙上已經熟悉的電路圖相同的電路圖,此外,您還可以翻轉電源開關,使原理圖的行為與真實電路一樣。對于其他電子模擬器,您可能需要以文本文件的形式輸入SPICE節點列表,這是一種電路的抽象表示,除了高級電子工程師之外,其他人都無法勝任。”
這個介紹來自一個叫做虛擬電子工作平臺. 使用圖形界面,用戶可以繪制電路原理圖,然后讓計算機分析該電路,以圖形形式顯示結果。它是一種非常有價值的分析工具,但也有其不足之處。首先,當分析復雜電路時,it和其它類似的圖形程序往往不可靠,因為從圖像到計算機代碼的轉換并不是我們希望的那樣精確。其次,由于其圖形要求,它往往需要大量的計算“馬力”來運行,以及支持圖形的計算機操作系統。第三,這些圖形程序可能很昂貴。
但是,在虛擬電子工作平臺有一個強壯的(和自由的!)一個名為SPICE的程序,它根據電路組件和連接的文本文件描述來分析電路。用戶支付的費用虛擬電子工作平臺而其他圖形電路分析程序則是方便的“點擊”界面,而SPICE則做實際的數學分析。
SPICE本身不需要圖形界面,對系統資源的要求也很低。它也是非常可靠的。電子工作臺的制造商希望你認為,在SPICE的原生文本模式下使用SPICE是一項適合火箭科學家的任務,但我寫這篇文章是為了證明他們是錯誤的。SPICE對于簡單的電路來說相當容易使用,它的非圖形界面實際上有助于分析那些難以繪制的電路。我想是編程專家唐納德·克努斯在談到計算機應用程序時打趣道:“你看到的就是你得到的一切”。圖形可能看起來更吸引人,但抽象界面(文本)實際上更有效。
本文并不是關于如何使用SPICE的詳盡教程。我只是想向感興趣的用戶展示如何將其應用于簡單電路的分析,作為專有($$)和buggy程序的替代方案。一旦你學會了基礎知識,還有其他教程更適合帶你走得更遠。使用SPICE——一個最初打算開發集成電路的程序——來分析這里展示的一些非常簡單的電路,看起來有點像用鏈鋸切黃油,但它確實有效!
所有選項和示例都已在SPICE版本2g6上在MS-DOS和Linux操作系統上進行了測試。據我所知,這些簡單版本的SPICE在大多數情況下都不能正常工作。
SPICE是一個用來模擬模擬電子電路的計算機程序。它的初衷是開發集成電路,由此得名:S模擬P有程序我ntegratedC循環Emphasis.
SPICE的起源可以追溯到另一個叫做CANCER的電路模擬程序。由加州大學伯克利分校的Ronald Rohrer教授和他的一些學生在20世紀60年代末開發的癌癥在20世紀70年代初繼續得到改善。當Rohrer離開伯克利時,癌癥被重新編寫并重新命名為SPICE,并于1972年5月作為第1版發布到公共領域。SPICE的第2版于1975年發布(本書中使用的版本2g6是1975年發行版的一個小版本)。伯克利的Donald Pederson教授在決定將SPICE作為一個公共領域的計算機程序發布的過程中發揮了重要作用,他認為所有重大的技術進步都發生在信息自由共享的時候。我要感謝他的遠見。
1985年3月,SPICE的第3版(也在公共領域發布)有了重大改進。版本3是用C語言而不是FORTRAN編寫的,它包含了額外的晶體管類型(例如MESFET)和開關元件。版本3還允許使用字母順序的節點標簽,而不僅僅是數字。不過,為SPICE版本2編寫的指令仍應在版本3中運行。
盡管版本3有額外的功能,我還是選擇在本書中使用2g6版本,因為它似乎是最容易獲得并在不同計算機系統上運行的版本。
用SPICE編寫電路模擬程序非常類似于用任何其他計算機語言編程:您必須在文件中以文本形式鍵入命令,將該文件保存到計算機的硬盤驅動器中,然后使用能夠理解這些命令的程序(編譯器或解釋器)處理該文件的內容。
在解釋的計算機語言中,計算機持有一個稱為口譯譯員翻譯你寫的程序(所謂的源文件)在執行過程中,動態地轉換成計算機自己的語言:
在已編譯的計算機語言中,您編寫的程序通過一個稱為編譯程序. 在你編寫的程序被“編譯”之后,結果可執行文件文件不需要進一步翻譯就可以被計算機直接理解。現在,無論計算機上是否安裝了編譯器軟件,都可以在該計算機上“運行”:
SPICE是一種解釋語言。為了使計算機能夠理解您鍵入的SPICE指令,必須安裝SPICE程序(解釋器):
SPICE源文件通常被稱為“netlist”,盡管它們有時被稱為“decks”,文件中的每一行都被稱為“card”。可愛,你不覺得嗎?網絡列表是由像你這樣的人使用文字處理器或文本編輯器逐行鍵入指令而創建的。對于任何類型的計算機編程來說,文本編輯器都比文字處理器更受歡迎,因為它們生成純ASCII文本,而沒有用于突出顯示文本的特殊嵌入代碼(如italic或粗體字體),這是解釋程序和編譯軟件無法理解的。
與一般編程一樣,為SPICE創建的源文件必須遵循某些編程慣例。它本身就是一種計算機語言,盡管它很簡單。我用BASIC和C/C編寫了程序,并且有閱讀PASCAL和FORTRAN程序的經驗,我認為SPICE語言比任何一種語言都簡單得多。它與標記語言(如HTML)的復雜程度大致相同,可能不那么復雜。
在使用SPICE分析電路時,需要遵循一系列步驟。這個循環從您第一次調用文本編輯程序并制作網絡列表的第一個草稿時開始。下一步是在新的網絡列表上運行SPICE,看看結果如何。如果您是SPICE的新手用戶,那么您第一次嘗試創建一個好的netlist時會遇到一些語法錯誤。別擔心——正如每個計算機程序員都知道的,熟練需要大量的練習。如果您的試運行產生明顯不正確的錯誤消息或結果,則需要重新調用文本編輯程序并修改網絡列表。修改網絡列表后,需要再次運行SPICE并檢查結果。然后,序列看起來像這樣:
要“運行”SPICE“程序”,您需要在終端提示界面輸入命令,例如在MS-DOS、UNIX或MS Windows DOS提示符選項中可以找到的命令:
spice < example.cir
單詞“spice”調用spice解釋程序(前提是計算機上安裝了spice軟件!)“<”符號將源文件的內容重定向到SPICE解釋器,并且示例.cir是此回路示例的源文件的名稱。文件擴展名“.cir“不是強制性的;我看到了”.輸入“(用于“輸入”)和普通的.txt文件“工作也不錯。它甚至可以在netlist文件沒有擴展名的情況下工作。SPICE不在乎你給它起什么名字,只要它的名字與你計算機的文件系統兼容(例如,對于舊的MS-DOS機器,文件名的長度不能超過8個字符,擴展名為3個字符,不能有空格或其他非字母數字字符)。
當輸入此命令時,SPICE將讀取示例.cir文件,分析該文件指定的電路,并將文本報告發送到計算機終端的標準輸出(通常是屏幕上,您可以在屏幕上看到它滾動)。一個典型的SPICE輸出是多個屏幕的信息,因此您可能需要稍微修改一下命令來查看它:
spice < example.cir | more
這個替代方法將SPICE的文本輸出“管道”到“more”實用程序,該實用程序一次只允許顯示一個頁面。這意味著(在英語中)SPICE的文本輸出在一個屏幕滿后停止,并等到用戶按下鍵盤鍵顯示下一個充滿文本的屏幕。如果您只是測試示例電路文件并希望檢查任何錯誤,這是一個很好的方法。
spice < example.cir > example.txt
第二種方法(上面)將SPICE的文本輸出重定向到另一個名為示例.txt,可以查看或打印。此選項對應于前面列出的開發周期的最后一步。本文作者建議,只有在證明示例電路網絡表工作正常之后,才使用這種“重定向”到文本文件的技術,這樣就不會浪費時間在“調試”階段調用文本編輯器來查看輸出
一旦將SPICE輸出存儲在.txt文件文件,您可以使用文本編輯器或(更好的是!)一種文字處理器,用于編輯輸出,刪除任何不必要的橫幅和信息,甚至指定替代字體來突出顯示標題和/或數據,以獲得更精美的外觀。當然,如果您愿意,您可以將輸出打印到紙上。由于SPICE的直接輸出是純ASCII文本,因此無論SPICE是否安裝在計算機上,這樣的文件在任何計算機上都是可以解釋的。此外,純文本格式確保文件將非常小,與圖形屏幕截圖文件生成“點擊”模擬器。
SPICE需要的netlist文件格式非常簡單。netlist文件只不過是一個包含多行文本的純ASCII文本文件,每行描述一個電路元件或特殊的SPICE命令。電路結構是通過給每條線路中每個元件的連接點分配編號來指定的,這些元件之間的連接由公共編號指定。檢查以下示例電路圖及其相應的SPICE文件。請記住,電路圖的存在只是為了使模擬更容易被人類理解。SPICE只了解網絡列表:
Example netlistv1 1 0 dc 15r1 1 0 2.2kr2 1 2 3.3k r3 2 0 150.end
上面顯示的源文件的每一行都在這里解釋:
SPICE電路描述中的電氣公共點(或“節點”)共享公共編號,這與連接大型電路中公共點的導線通常共享公共線標簽的方式相同。
為了模擬這個電路,用戶需要在文本編輯器中輸入這六行文本,并將它們保存為具有唯一名稱的文件(例如示例.cir). 一旦網絡列表被組合并保存到一個文件中,用戶就可以使用前面顯示的命令行語句之一來處理該文件(spice < example.cir),并將在其計算機屏幕上接收此文本輸出:
1*******10/10/99 ******** spice 2g.6 3/15/83 ********07:32:42*****0example netlist 0**** input listing temperature = 27.000 deg c v1 1 0 dc 15 r1 1 0 2.2k r2 1 2 3.3k r3 2 0 150 .end *****10/10/99 ********* spice 2g.6 3/15/83 ******07:32:42******0example netlist 0**** small signal bias solution temperature = 27.000 deg c node voltage node voltage ( 1) 15.0000 ( 2) 0.6522 voltage source currents name current v1 -1.117E-02 total power dissipation 1.67E-01 watts job concluded0 total job time 0.021*******10/10/99 ******** spice 2g.6 3/15/83 ******07:32:42*****0**** input listing temperature = 27.000 deg c
SPICE首先打印輸出頂部使用的時間、日期和版本。然后列出輸入參數(源文件的行),然后顯示從每個節點(參考號)到接地(總是參考號0)的直流電壓讀數。后面是通過每個電壓源的電流讀數列表(在本例中只有一個,v1)。最后,打印總功耗和以秒為單位的計算時間。
SPICE提供的所有輸出值都以科學記數法顯示。
上面顯示的SPICE輸出列表對大多數人的口味來說有點冗長。對于最后的陳述,最好刪去所有不必要的文字,只留下重要的部分。下面是相同輸出的示例,重定向到文本文件(spice < example.cir > example.txt),然后使用文本編輯器明智地進行裁剪,以便最終演示并打印:
example netlist v1 1 0 dc 15 r1 1 0 2.2k r2 1 2 3.3k r3 2 0 150 .end node voltage node voltage( 1) 15.0000 ( 2) 0.6522voltage source currentsname currentv1 -1.117E-02total power dissipation 1.67E-01 watts
SPICE的一個優點是輸入和輸出格式都是純文本,這是最通用、最容易編輯的電子格式。實際上任何計算機將能夠編輯和顯示這種格式,即使SPICE程序本身并不駐留在該計算機上。如果用戶愿意,他或她可以自由地使用字處理程序的高級功能,使輸出看起來更漂亮。甚至可以在輸出的行之間插入注釋,以使讀者更清楚。
如果您以前在命令行shell環境中使用過DOS或UNIX操作系統,您可能想知道為什么我們必須在單詞“spice”和要解釋的網表文件名之間使用“<”符號。為什么不直接輸入文件名作為命令“spice”的第一個參數呢?答案是SPICE可以選擇交互式模式,通過計算機的標準輸入(stdin),網絡列表的每一行都可以被解釋。如果您只需在提示下鍵入“spice”并按[輸入],SPICE將開始解釋您在其中輸入的任何內容(live)。
對于大多數應用程序,最好將您的網絡列表工作保存在一個單獨的文件中,然后讓SPICE在準備好后解釋該文件。這是我鼓勵使用SPICE的方式,所以這是本課中介紹SPICE的方式。為了在命令行環境中以這種方式使用SPICE,我們需要使用“<”重定向符號將netlist文件的內容定向到標準輸入(stdin),然后SPICE可以處理該輸入。
請記住,本教程并不是詳盡無遺的,而且SPICE語言中所有元素的描述都以簡明的形式記錄在這里。SPICE是一個功能非常強大的軟件,有很多選項,我只將其中的一些記錄下來。
全部SPICE源文件中的組件主要由每行中的第一個字母標識。識別字母后面的字符用于將某個類型的一個組件與另一個相同類型的組件(r1、r2、r3、rload、rpullup等)區分開來,并且不需要遵循任何特定的命名約定,只要組件標識字母和區別名稱中使用的字符不超過8個。
例如,假設您正在用“上拉”和“下拉”電阻器模擬數字電路。名字rpullup是有效的,因為它有七個字符長。名字rpulldown,但是,是9個字符長。這可能會導致SPICE解釋網絡列表時出現問題。
如果源文件中沒有其他類似名稱的組件,那么實際上可以避免組件名稱超過8個字符。SPICE只關注每行第一個字段的前8個字符,因此rpulldown實際上被解釋為rpulldow結尾的“n”被忽略了。因此,SPICE會將第一個字段中具有前8個字符的任何其他電阻器視為同一個電阻器,定義了兩次,這將導致錯誤(即。rpulldown1和rpulldown2會被解釋為相同的名字,rpulldow ).
還應該注意的是,SPICE忽略了字符大小寫,因此r1和R1被SPICE解釋為同一個。
SPICE允許在指定組件值時使用度量前綴,這是一個非常方便的特性。然而,SPICE使用的前綴約定與標準公制符號有些不同,主要是因為netlist僅限于標準ASCII字符(排除了前綴“micro”的希臘字母,如μ),而且SPICE不區分大小寫,所以“m”(是“milli”的標準符號)和“m”(是“Mega”的標準符號)的解釋是相同的。以下是SPICE網絡列表中使用的幾個前綴示例:
r1 1 0 2t(電阻器r1,2t=2兆歐=2兆歐)
r2 1 0 4g(電阻器r2,4g=4千兆歐姆=4 GΩ)
r3 1 0 47meg(電阻器r3,47兆歐=47兆歐=47兆歐)
r4 1 0 3.3k(電阻器r4,3.3k=3.3千歐=3.3千歐)
r5 1 0 55m(電阻器r5,55m=55毫歐=55兆歐)
r6 1 0 10u(電阻器r6,10u=10微歐姆10μΩ)
r7 1 0 30n(電阻器r7,30n=30納米歐姆=30 nΩ)
r8 1 0 5p(電阻器r8,5p=5皮歐=5 pΩ)
r9 1 0 250f(電阻器r9,250f=250毫微歐=250 fΩ)
在指定組件值時也允許使用科學符號。例如:
r10 1 0 4.7e3(Resistor R10, 4.7e3 = 4.7 x 103ohms = 4.7 kilo-ohms = 4.7 kΩ)
r11 1 0 1e-12(Resistor R11, 1e-12 = 1 x 10-12ohms = 1 pico-ohm = 1 pΩ)
單位(歐姆、伏特、法拉茲、亨利等)由指定的元件類型自動確定。SPICE“知道”上面所有的例子都是“歐姆”,因為它們都是電阻(r1,r2,r3,…)。如果它們是電容器,那么這些值將被解釋為“法拉德”,如果是電感器,那么“亨利”等。
General form: c[name] [node1] [node2] [value] ic=[initial voltage]Example 1: c1 12 33 10u Example 2: c1 12 33 10u ic=3.5
評論:“初始條件”(ic=)變量是電容器的電壓,單位為volts在直流電分析開始時。這是一個可選值,如果未指定,則假定啟動電壓為零。只有當.tran調用分析選項(使用uic“選項)
General form: l[name] [node1] [node2] [value] ic=[initial current]Example 1: l1 12 33 133m Example 2: l1 12 33 133m ic=12.7m
評論:“初始條件”(ic=)變量是電感器的電流,單位為安培在直流電分析開始時。這是一個可選值,如果未指定,則假定啟動電流為零。只有在調用.tran analysis選項時,SPICE才會解釋電感器的啟動電流值。
General form: k[name] l[name] l[name] [coupling factor]Example 1: k1 l1 l2 0.999
評論:表示0和0之間的完美耦合系數(包含0)將只允許表示1和1之間的完美耦合值。指定耦合電感器(l1,l2或l2,l1)的順序無關緊要。
General form: r[name] [node1] [node2] [value]Example: rload 23 15 3.3k
評論:如果你想知道,在SPICE中沒有關于電阻功耗額定值的聲明。所有的部件都被假定是不可摧毀的。真希望現實生活能如此寬容!
所有半導體元件的電氣特性必須以“一行”開頭.型號,它告訴SPICE該設備將如何工作。中沒有顯式定義的任何參數.型號卡將默認為SPICE中預先編程的值。但是.型號卡片必須包含,并至少指定型號名稱和設備類型(d、npn、pnp、njf、pjf、nmos或pmos)。
General form: d[name] [anode] [cathode] [model]Example: d1 1 2 mod1
二極管型號:
General form: .model [modelname] d [parmtr1=x] [parmtr2=x] . . .Example: .model mod1 dExample: .model mod2 d vj=0.65 rs=1.3
參數定義:
is=飽和電流(安培)
rs=結電阻(單位:歐姆)
n=排放系數(無單位)
tt=運輸時間(秒)
cjo=零偏壓結電容(法拉)
vj=結電位(伏特)
m=級配系數(無單位)
eg=活化能(電子伏特)
xti=飽和電流溫度指數(無單位)
kf=閃爍噪聲系數(無單位)
af=閃爍噪聲指數(無單位)
fc=正向偏置耗盡電容系數(無單位)
bv=反向擊穿電壓(伏特)
ibv=擊穿電壓下的電流(安培)
評論:型號名稱必須以字母開頭,而不是數字。例如,如果計劃為1N4003整流二極管指定型號,則不能使用“1N4003”作為型號名稱。另一種選擇可能是“m1n4003”。
General form: q[name] [collector] [base] [emitter] [model]Example: q1 2 3 0 mod1
BJT晶體管型號:
General form: .model [modelname] [npn or pnp] [parmtr1=x] . . .Example: .model mod1 pnpExample: .model mod2 npn bf=75 is=1e-14
上面顯示的模型示例非常不具體。為了精確地模擬真實的晶體管,需要更多的參數。拿這兩個例子來說,對于流行的2N2222和2N2907晶體管+“)字符表示SPICE中的行延續標記,當您希望在文本編輯器中將單行(卡片)拆分為兩行或多行時:
Example: .model m2n2222 npn is=19f bf=150 vaf=100 ikf=.18+ ise=50p ne=2.5 br=7.5 var=6.4 ikr=12m+ isc=8.7p nc=1.2 rb=50 re=0.4 rc=0.4 cje=26p+ tf=0.5n cjc=11p tr=7n xtb=1.5 kf=0.032f af=1
Example: .model m2n2907 pnp is=1.1p bf=200 nf=1.2 vaf=50 + ikf=0.1 ise=13p ne=1.9 br=6 rc=0.6 cje=23p + vje=0.85 mje=1.25 tf=0.5n cjc=19p vjc=0.5 + mjc=0.2 tr=34n xtb=1.5
參數定義:
is=傳輸飽和電流(安培)
bf=理想最大正向β(無單位)
nf=正向電流發射系數(無單位)
vaf=正向早期電壓(伏特)
ikf=正向β高電流衰減角(單位:安培)
ise=B-E泄漏飽和電流(安培)
ne=B-E泄漏排放系數(無單位)
br=理想最大反向β(無單位)
nr=反向電流發射系數(無單位)
bar=反向早期電壓(伏特)
ikrikr=反向β-高電流衰減角(安培)
Isc=B-C泄漏飽和電流(安培)
nc=B-C泄漏排放系數(無單位)
rb=零偏基極電阻(單位:歐姆)
irb=基本電阻一半值的電流(安培)
rbm=高電流下的最小基極電阻(單位:歐姆)
re=發射極電阻(單位:歐姆)
rc=集電極電阻(單位:歐姆)
cje=B-E零偏壓耗盡電容(法拉)
vje=B-E內置電勢(伏特)
mje=B-E連接指數因子(無單位)
tf=理想正向傳輸時間(秒)
xtf=渡越時間偏差相關系數(無單位)
vtf=B-C電壓與傳輸時間的關系,單位:伏特
itf=高電流參數對傳輸時間的影響,單位:安培
ptf=f=1/(渡越時間)(2)(pi)Hz時的多余相位,單位為度
cjc=B-C零偏壓耗盡電容(法拉)
vjc=B-C內置電勢(伏特)
mjc=B-C結指數因子(無單位)
xjcj=連接在基節點中的B-C耗盡電容分數(無單元)
tr=理想反向運輸時間(秒)
cjs=零偏壓集電極-基板電容(法拉)
vjs=基板結內置電勢(伏特)
mjs=基板結指數因子(無單位)
xtb=正向/反向β溫度指數
eg=溫度對傳輸飽和電流影響的能隙(電子伏特)
xti=影響傳輸飽和電流的溫度指數(無單位)
kf=閃爍噪聲系數(無單位)
af=閃爍噪聲指數(無單位)
fc=正向偏置耗盡電容公式系數(無單位)
評論:與二極管一樣,為特定晶體管類型指定的型號名稱必須以字母開頭,而不是數字。這就是為什么上面給出的2N2222和2N2907類型的BJT分別命名為“m2n2222”和“q2n2907”。
如您所見,SPICE允許對晶體管特性進行非常詳細的規范。上面列出的許多特性遠遠超出了剛學電子學的學生的范圍和興趣,除了知道SPICE用來模擬BJT晶體管的方程外,這些特性甚至沒有任何用處。對于那些有興趣在SPICE中學習晶體管建模的人,可以參考其他書籍,比如Andrei Vladimirescu的SPICE書(ISBN 0-471-60926-9).
General form: j[name] [drain] [gate] [source] [model]Example: j1 2 3 0 mod1
JFET晶體管型號:
General form: .model [modelname] [njf or pjf] [parmtr1=x] . . .Example: .model mod1 pjfExample: .model mod2 njf lambda=1e-5 pb=0.75
參數定義:
vto=閾值電壓(伏特)
β=跨導參數,單位:安培/伏特2
λ=信道長度調制參數,單位為1/V
rd=漏極電阻(單位:歐姆)
rs=電源電阻(單位:歐姆)
cgs=零偏置G-S結電容(法拉)
cgd=零偏置G-D結電容(法拉)
pb=柵極結電位(伏特)
is=柵極結飽和電流(安培)
kf=閃爍噪聲系數(無單位)
af=閃爍噪聲指數(無單位)
fc=正向偏置耗盡電容系數(無單位)
General form: m[name] [drain] [gate] [source] [substrate] [model]Example: m1 2 3 0 0 mod1
MOSFET晶體管型號:
General form: .model [modelname] [nmos or pmos] [parmtr1=x] . . .Example: .model mod1 pmosExample: .model mod2 nmos level=2 phi=0.65 rd=1.5Example: .model mod3 nmos vto=-1 (depletion)Example: .model mod4 nmos vto=1 (enhancement)Example: .model mod5 pmos vto=1 (depletion)Example: .model mod6 pmos vto=-1 (enhancement)
評論:為了區分增強模式和耗盡模式(也稱為耗盡增強模式)晶體管,模型參數“vto必須指定“(零偏壓閾值電壓)。它的默認值是零,但P溝道晶體管的正值(例如1伏)或N溝道晶體管的負值(-1伏)將指定該晶體管為損耗(也稱為耗盡增強 )模式設備。相反,P溝道晶體管上的負值或N溝道晶體管上的正值將指定該晶體管為增強模式設備
請記住,增強模式晶體管通常是關閉的器件,必須通過施加柵極電壓來打開。耗盡模式晶體管通常是“開”的,但可以被“掐斷”,也可以通過施加柵極電壓來增強到更高水平的漏電流,因此又稱為“耗盡增強”mosfet。“的”vto參數指定MOSFET傳導的閾值柵電壓。
交流正弦波電壓源(使用.AC卡指定頻率時):
General form: v[name] [+node] [-node] ac [voltage] [phase] sinExample 1: v1 1 0 ac 12 sinExample 2: v1 1 0 ac 12 240 sin (12 V ∠ 240o)
評論:這種指定交流電壓源的方法可以很好地工作,如果你使用多個不同相位角的電源,但都在同一頻率。如果需要在同一電路中指定不同頻率的源,則必須使用下一種方法!
不使用交流正弦波電源時:
General form: v[name] [+node] [-node] sin([offset] [voltage] + [freq] [delay] [damping factor])Example 1: v1 1 0 sin(0 12 60 0 0)
參數定義:
offset=直流偏置電壓,將交流波形偏移指定的電壓。
voltage=波形的峰值或峰值交流電壓值。
freq=頻率(赫茲)。
delay=時間延遲,或波形的相位偏移,以秒為單位。
damping factor=用于產生衰減幅度波形的數字。
評論:如果使用多個頻率不同的電源,這種指定交流電壓源的方法效果很好。但是,表示相移是很棘手的,因此必須使用延遲因素
直流電壓源(使用.DC卡指定電壓時):
General form: v[name] [+node] [-node] dcExample 1: v1 1 0 dc
評論:如果你希望有SPICE輸出電壓不在引用節點0時,必須使用.直流電分析選項,要使用此選項,必須以這種方式指定至少一個DC源。
直流電壓源(不使用.DC卡指定電壓時):
General form: v[name] [+node] [-node] dc [voltage]Example 1: v1 1 0 dc 12
評論:這里沒什么值得注意的!
脈沖電壓源
General form: v[name] [+node] [-node] pulse ([i] [p] [td] [tr]+ [tf] [pw] [pd])
參數定義:
i=初始值
p=脈沖值
td=延遲時間(所有時間參數以秒為單位)
tr=上升時間
tf=下降時間
pw=脈沖寬度
pd=周期
示例1:v1 1 0脈沖(-3 3 0 0 0 10 m 20 m)
評論:例1是一個在-3到3伏之間振蕩的完美方波,上升和下降時間為零,20毫秒周期,50%的占空比(3伏持續10毫秒,然后-3伏持續10毫秒)。
交流正弦波電流源(使用.AC卡指定頻率時):
General form: i[name] [+node] [-node] ac [current] [phase] sinExample 1: i1 1 0 ac 3 sin (3 amps)Example 2: i1 1 0 ac 1m 240 sin (1 mA ∠ 240o)
評論:這里(和下一個例子中)同樣的注釋適用于交流電壓源。
交流正弦波電流源(不使用.AC卡指定頻率時):
General form: i[name] [+node] [-node] sin([offset] + [current] [freq] 0 0)Example 1: i1 1 0 sin(0 1.5 60 0 0)
直流電流源(使用.DC卡指定電流時):
General form: i[name] [+node] [-node] dcExample 1: i1 1 0 dc
直流電流源(不使用.DC卡指定電流時):
General form: i[name] [+node] [-node] dc [current]Example 1: i1 1 0 dc 12
評論:盡管書上都說直流電流源的第一個節點是正節點,但我在實踐中并沒有發現這一點。實際上,SPICE中的直流電流源推動電流的方向與電壓源(電池)的方向相同消極的先指定節點
脈沖電流源
General form: i[name] [+node] [-node] pulse ([i] [p] [td] [tr]+ [tf] [pw] [pd])
參數定義:
i=初始值
p=脈沖值
td=延遲時間
tr=上升時間
tf=下降時間
pw=脈沖寬度
pd=周期
例1:i1 1 0脈沖(-3m 0 0 17m 34m)
評論:例1是在-3 mA和3 mA之間振蕩的完美方波,上升和下降時間為零,34毫秒周期,占空比為50%(3 mA持續17 ms,然后-3 mA持續17 ms)。
電壓源(取決于):
General form: e[name] [out+node] [out-node] [in+node] [in-node]+ [gain]Example 1: e1 2 0 1 2 999k
評論:相依電壓源很適合用來模擬運算放大器。示例1顯示了這樣一個源如何配置為用作電壓跟隨器,將連接到輸出端(節點2)的輸入端反轉以獲得負反饋,而非反轉輸入端將進入節點1。增益被設置為任意高的值999000。不過,需要注意的是:SPICE不會將獨立電源的輸入視為負載,因此只與獨立電壓源的輸入相連的電壓源將被解釋為“開路”。有關這一點的詳細信息,請參閱運算放大器電路示例。
當前來源(從屬):
交流分析:
General form: .ac [curve] [points] [start] [final]Example 1: .ac lin 1 1000 1000
評論:[曲線]字段可以是“lin”(線性)、“dec”(十進制)或“oct”(倍頻程),指定頻率掃描的(非線性)線性。指定頻率掃描中要執行分析的點的數量(對于十進位掃描,是每十年的點數;對于倍頻程,是每倍頻程的點數)。[start]和[final]字段分別指定掃描的起始頻率和結束頻率。最后一個注意事項:“開始”值不能為零!
直流分析:
General form: .dc [source] [start] [final] [increment]Example 1: .dc vin 1.5 15 0.5
評論:如果要打印或繪制兩個非零節點之間的任何電壓,.dc卡是必需的。否則,默認的“小信號”分析只輸出每個非零節點和節點0之間的電壓。
瞬態分析:
General form: .tran [increment] [stop_time] [start_time] + [comp_interval]Example 1: .tran 1m 50m uic Example 2: .tran .5m 32m 0 .01m
評論:示例1的增量時間為1毫秒,停止時間為50毫秒(如果只指定了兩個參數,則為增量時間和停止時間分別為)。示例2的增量時間為0.5毫秒,停止時間為32毫秒,開始時間為0毫秒(啟動時無延遲),計算間隔為0.01毫秒。
開始時間的默認值為零。瞬態分析總是存在于時間零點,但數據存儲只發生在開始時間和停止時間之間。數據輸出間隔為增量時間或(停止時間-開始時間)/50,取最小值。但是,計算間隔變量可用于強制計算間隔小于其中任何一個。對于較大的總間隔計數itl5變量.選項卡可以設置為更高的號碼。“的”uic選項告訴SPICE“使用初始條件”
繪圖輸出:
General form: .plot [type] [output1] [output2] . . . [output n]Example 1: .plot dc v(1,2) i(v2)Example 2: .plot ac v(3,4) vp(3,4) i(v1) ip(v1)Example 3: .plot tran v(4,5) i(v2)
評論:SPICE不能在一個單點上處理超過8個數據點請求.繪圖或.打印卡片。如果請求超過8個數據點,請使用多個卡!
另外,在使用SPICE版本3時,有一個重要的警告:如果您正在執行交流分析,并且您要求SPICE繪制一個如示例2所示的交流電壓,則五(3,4)命令將只輸出真實的一個長方形復數的分量!SPICE版本2輸出極地的復數的量:如果只要求一個量,則是一個更有意義的量。為了強迫SPICE3給你極性的大小,你必須重寫.打印或.繪圖論據本身:虛擬機(3,4) .
打印輸出:
General form: .print [type] [output1] [output2] . . . [output n]Example 1: .print dc v(1,2) i(v2)Example 2: .print ac v(2,4) i(vinput) vp(2,3)Example 3: .print tran v(4,5) i(v2)
評論:SPICE不能在一個單點上處理超過8個數據點請求.繪圖或.打印卡片。如果請求超過8個數據點,請使用多個卡!
傅里葉分析:
General form: .four [freq] [output1] [output2] . . . [output n]Example 1: .four 60 v(1,2)
評論:這個.4個卡依賴于.tran卡片存在于卡片組的某個地方,有適當的時間段來分析適當的周期。另外,如果.繪圖分析不是和.4個分析,即使全部.tran參數在技術上是正確的。最后.4個只有在交流電源的卡線中指定了交流電源的頻率時,分析選項才起作用,并且不在一個.交流分析選項行
它有助于在.tran卡片分析精度更高。對規定的電壓或電流進行傅里葉分析,直至第9次諧波,[頻率]規范為分析頻譜的基本頻率或起始頻率。
其他:
General form: .options [option1] [option2]Example 1: .options limpts=500Example 2: .options itl5=0Example 3: .options method=gearExample 4: .options listExample 5: .options nopageExample 6: .options numdgt=6
評論:使用此卡可以指定許多選項。也許剛開始使用SPICE的人最需要的是limpts“設置。當運行需要打印或繪制超過201個點的模擬時,必須增加此計算點限制,否則SPICE將終止分析。上面給出的例子(limpts=500)告訴SPICE分配足夠的內存,以便在指定的任何類型的分析(直流、交流或瞬態)中處理至少500個計算點。
在示例2中,我們看到一個迭代變量(itl5)設置為0的值。實際上有六個不同的迭代變量可供用戶操作。它們控制求解非線性方程組的迭代循環極限。變量itl5設置瞬態分析的最大迭代次數。類似于limpts變量,itl5通常需要在.tran卡。設置itl5值為0將完全關閉限制,允許計算機無限迭代周期(無限時間)來計算分析。警告:這可能導致模擬時間過長!
例3帶有“method=gear設置SPICE使用的數值積分方法。默認值是“梯形”而不是“齒輪”,梯形是對曲線下面積的簡單幾何近似,通過將曲線切片為梯形來近似形狀。“gear”方法基于二階或更好的多項式方程,以C.W.gear命名(剛性常方程的數值積分,報告221,伊利諾伊大學計算機科學系,烏爾巴納)。Gear積分法對計算機的要求更高(計算上“昂貴”),有時會給出與梯形法稍有不同的結果。
“的”列表“示例4中顯示的選項給出了所有電路元件及其在最終輸出中各自值的詳細摘要。
默認情況下,SPICE將在輸出中插入ASCII分頁符控制代碼,以分離分析的不同部分。指定“nopage“選項(例5)將阻止這種分頁。
“的”數量“示例6中顯示的選項指定在使用其中一個時輸出的有效位數”.打印“數據輸出選項。SPICE默認精度為4個有效數字。
寬度控制:
General form: .width in=[columns] out=[columns]Example 1: .width out=80
評論:這個.寬度卡片可以用來控制分析后文本輸出行的寬度。當使用.繪圖卡。默認值為120,除非使用此命令將其設置為80,否則這可能會導致80個字符的終端顯示出現問題。
“垃圾進來,垃圾出去。”
匿名
SPICE是一個非常可靠的軟件,但它確實有一些小的怪癖,需要一些人去適應。我所說的“怪癖”是指要求用戶以特定的方式編寫源文件,以便它能夠正常工作而不發出錯誤消息。我愿意不是指SPICE的任何一種錯誤,它會產生錯誤或誤導性的結果:更恰當地稱之為“bug”。說到bug,SPICE也有一些缺陷。
這些怪癖中的一些(或全部)可能是SPICE版本2g6獨有的,它是我唯一廣泛使用的版本。它們可能在以后的版本中被修復。
SPICE要求源文件以電路描述“deck”中的第一個“card”以外的內容開頭。源文件中的第一個字符可以是換行符、標題行或注釋:必須有某物在第一個指定文件行的組件之前。如果沒有,SPICE將完全拒絕進行分析,聲稱“deck”中存在嚴重錯誤(例如不正確的節點連接)
SPICE要求.結束源文件末尾的行不能以換行符或回車符結尾。換言之,當你完成鍵入時”.結束“你不應該打[輸入]鍵盤上的鍵。文本編輯器上的光標應該立即停在.結束“別再往前走了。如果不注意這個怪癖,將會導致缺少。結束卡“分析輸出結尾處的錯誤消息。實際的電路分析不受這個錯誤的影響,所以我通常忽略這個消息。然而,如果你想要得到一個“完美”的輸出,你必須注意這個特性。
在對回路節點進行編號時,您可以有很大的自由度,但是必須在你的網絡列表的某個地方有一個節點0,這樣SPICE就可以工作了。節點0是回路接地的默認節點,它是在單個節點位置指定的所有電壓的參考點。
當SPICE執行簡單的直流分析時,輸出將包含電路中所有非零節點的電壓列表。所有這些電壓讀數的參考點(接地)為節點0。例如:
node voltage node voltage( 1) 15.0000 ( 2) 0.6522
在該分析中,節點1和接地(節點0)之間的直流電壓為15伏,節點2和接地(節點0)之間的直流電壓為0.6522伏。在這兩種情況下,相對于另一個節點,節點0處的電壓極性為負(換句話說,節點1和節點2相對于節點0都是正的)。
SPICE不能處理任何類型的開路。例如,如果網絡列表指定了一個具有開放電壓源的電路,SPICE將拒絕執行分析。這類錯誤的一個主要例子是將電壓源“連接”到電壓相關源(用于模擬運算放大器)的輸入端。SPICE需要看到電流的完整路徑,所以我通常會綁一個高值電阻(稱之為rbogus!) 跨電壓源作為最小負載。
SPICE不能處理電路中某些不間斷的元件回路,即電壓源和電感器。以下循環將導致SPICE中止分析:
netlistl1 2 4 10ml2 2 4 50ml3 2 4 25m
netlistv1 1 0 dc 12 l1 1 0 150m
netlistc1 5 6 33u c2 6 7 47u
SPICE無法處理這些情況的原因源于它執行直流分析的方式:將所有電感器視為短路,將所有電容器視為開路。由于短路(0Ω)和開路(無限電阻)包含或產生數學無窮大,計算機根本無法處理它們,因此如果出現任何這些情況,SPICE將停止分析。
為了使這些元件配置為SPICE所接受,必須在適當的位置插入適當值的電阻器,以消除相應的短路和開路。如果需要串聯電阻,請選擇一個非常低的電阻值。相反,如果需要并聯電阻,則選擇一個非常高的電阻值。例如:
為了解決并聯電感器的問題,在每個有問題的電感器上串聯一個非常低的電阻。
original netlistl1 2 4 10ml2 2 4 50ml3 2 4 25m
fixed netlistrbogus1 2 3 1e-12rbogus2 2 5 1e-12l1 3 4 10ml2 2 4 50ml3 5 4 25m
極低電阻電阻R假象1和R假象2(每一個只有1微微歐姆的電阻)“打破”存在于L one,我 two,還有我 three. 在這里選擇非常低的電阻是很重要的,這樣電路操作就不會受到“固定”的實質性影響
為了固定電壓源/電感回路,將一個極低值的電阻器與兩個元件串聯。
original netlistv1 1 0 dc 12l1 1 0 150m
fixed netlistv1 1 0 dc 12l1 2 0 150mrbogus 1 2 1e-12
與前面的并聯電感器示例一樣,重要的是使校正電阻(R偽造的)電阻非常低,因此不會對電路的運行產生實質性的影響。
為了固定串聯電容器電路,其中一個電容器必須有一個電阻分流。SPICE要求每個電容器都有一個直流電流通路進行分析。
original netlistc1 5 6 33uc2 6 7 47u
fixed netlistc1 5 6 33uc2 6 7 47urbogus 6 7 9e12
R偽造的9兆歐的值為C提供直流電流路徑 one(大約在C two)不會嚴重影響電路的工作。
雖然在SPICE中打印或繪制電壓很容易,但輸出電流值要困難一些。通過聲明適當的電路節點來指定電壓測量值。例如,如果我們想知道導線連接在節點4和節點7之間的電容器上的電壓,我們可以得出.打印聲明如下:
c1 4 7 22u.print ac v(4,7)
但是,如果我們想讓SPICE測量現在的通過那個電容器,就不那么容易了。SPICE中的電流必須與電壓源有關,而不是任意分量。例如:
c1 4 7 22uvinput 6 4 ac 1 sin.print ac i(vinput)
這個.打印該卡指示SPICE打印通過電壓源V的電流輸入,正好與節點4和節點7之間通過電容器的電流相同。但是如果我們的電路中沒有這樣的電壓源來作為電流測量的參考呢?一種解決方案是在電路中插入一個分流電阻,然后測量其兩端的電壓。在這個例子中,我選擇了一個1Ω的分流電阻值來產生1伏特每安培電流通過C one :
c1 4 7 22urshunt 6 4 1.print ac v(6,4)
然而,在我們的電路中插入一個足夠大的額外電阻,使電壓降到預定的電流范圍內,可能會對事情產生不利影響。對于SPICE來說,一個更好的解決方案是這樣的,盡管在現實生活中人們永遠不會尋求這樣一個當前的測量解決方案:
c1 4 7 22u vbogus 6 4 dc 0.print ac i(vbogus)
插入一個零伏的“假”直流電壓源根本不影響電路的工作,但它為SPICE提供了一個方便的地方來進行電流測量。有趣的是,V偽造的當我們要測量交流電流時是直流電源!SPICE將輸出交流電流讀數的事實取決于交流電“規范.打印卡什么的都沒有
還應該注意的是,SPICE為電流測量分配極性的方式有點奇怪。以以下電路為例:
example v1 1 0 r1 1 2 5k r2 2 0 5k .dc v1 10 10 1 .print dc i(v1) .end
在總電壓為10伏,總電阻為10千歐的情況下,SPICE可能會告訴你,通過電壓源V將有1毫安(1e-03)的電流 one但實際上SPICE會輸出消極的1毫安(-1e-03)!SPICE將直流電壓源負端(正常方向)的電流視為電流的負值,而不是電流的正值。有時,我會在直流電路中加入一個“假”電壓源,只是為了讓SPICE輸出a積極的當前值:
examplev1 1 0 r1 1 2 5k r2 2 3 5k vbogus 3 0 dc 0 .dc v1 10 10 1 .print dc i(vbogus) .end
注意V偽造的定位為使電路電流進入其正側(節點3)并退出其負側(節點0)。此方向將確保電路電流的輸出值為正。
當對波形執行傅立葉(頻域)分析時,我發現有必要使用.打印或.繪圖分別是卡片。如果不打印或繪圖,SPICE將在分析期間暫停片刻,然后在輸出“初始瞬態解”后中止作業
同時,在分析由脈沖源函數,你必須給波形一些有限的上升和下降時間,否則傅里葉分析結果將是錯誤的。由于某些原因,一個完美的方波,其上升/下降時間為零,會產生顯著的即使根據SPICE的Fourier分析選項得到的諧波,這對于真實的方波是不正確的。
以下電路是SPICE 2g6的預測試網絡列表,必要時提供簡短說明。請隨意“復制”和“粘貼”任何網絡列表到您自己的SPICE源文件中進行分析和/或修改。我的目標有兩個:給出SPICE網表設計的實例,以進一步理解SPICE網表的語法,并說明SPICE網表在分析簡單電路時是多么的簡單和緊湊。
這些示例的所有輸出列表都已“修剪”了無關信息,使您盡可能簡潔地呈現SPICE輸出。我這樣做主要是為了節省文檔空間。典型的SPICE輸出包含很多標題和摘要信息,這些信息不一定與手頭的任務密切相關。所以,當你自己運行一個模擬時,如果你發現輸出不是確切地就像我在這里展示的一樣!
沒有.直流電卡和a.打印或.繪圖卡,這個網絡列表的輸出將只顯示節點1、2和3的電壓(當然是指節點0)。
網絡列表:
Multiple dc sourcesv1 1 0 dc 24v2 3 0 dc 15r1 1 2 10kr2 2 3 8.1kr3 2 0 4.7k.end
輸出:
node voltage node voltage node voltage( 1) 24.0000 ( 2) 9.7470 ( 3) 15.0000
voltage source currentsname currentv1 -1.425E-03v2 -6.485E-04
total power dissipation 4.39E-02 watts
通過添加.直流電分析卡和指定源V one從24伏到24伏一步(換句話說,24伏穩定),我們可以使用.打印卡片分析,打印出任意兩點之間的電壓。奇怪的是,當.直流電當調用analysis選項時,每個節點(接地)的默認電壓打印輸出將消失,因此我們必須在.打印卡看他們在所有
網絡列表:
Multiple dc sourcesv1 1 0v2 3 0 15r1 1 2 10kr2 2 3 8.1kr3 2 0 4.7k.dc v1 24 24 1.print dc v(1) v(2) v(3) v(1,2) v(2,3).end
輸出:
v1 v(1) v(2) v(3) v(1,2) v(2,3)2.400E+01 2.400E+01 9.747E+00 1.500E+01 1.425E+01 -5.253E+00
對于直流分析,必須規定任何無功分量(C或L)的初始條件(電容器的電壓、電感器的電流)。這是由每個電容器卡的最后一個數據字段提供的(ic=0). 要執行DC分析.tran (&34;瞬變“)必須指定分析選項,第一個數據字段指定時間增量(以秒為單位),第二個數據字段指定總分析時間跨度(以秒為單位),并且uic告訴它在分析時“使用初始條件”。
網絡列表:
RC time delay circuitv1 1 0 dc 10c1 1 2 47u ic=0c2 1 2 22u ic=0r1 2 0 3.3k.tran .05 1 uic.print tran v(1,2).end
輸出:
time v(1,2) 0.000E+00 7.701E-065.000E-02 1.967E+001.000E-01 3.551E+001.500E-01 4.824E+002.000E-01 5.844E+002.500E-01 6.664E+003.000E-01 7.322E+003.500E-01 7.851E+004.000E-01 8.274E+004.500E-01 8.615E+005.000E-01 8.888E+005.500E-01 9.107E+006.000E-01 9.283E+006.500E-01 9.425E+007.000E-01 9.538E+007.500E-01 9.629E+008.000E-01 9.702E+008.500E-01 9.761E+009.000E-01 9.808E+009.500E-01 9.846E+001.000E+00 9.877E+00
本練習演示了如何正確設置正弦波電壓源的瞬時值.繪圖功能(作為瞬變分析)。不足為奇的是,這一組中的傅立葉分析也需要.tran(瞬態)分析選項應在適當的時間范圍內指定。在這個特定的甲板上的時間范圍允許傅里葉分析,精度相當低。進行瞬態分析的基頻周期越多,傅里葉分析的精度就越高。這不是調侃,而是波形的基本原理。
網絡列表:
v1 1 0 sin(0 15 60 0 0)rload 1 0 10k* change tran card to the following for better Fourier precision* .tran 1m 30m .01m and include .options card:* .options itl5=30000.tran 1m 30m .plot tran v(1) .four 60 v(1).end
輸出:
time v(1) -2.000E+01 -1.000E+01 0.000E+00 1.000E+01 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0.000E+00 0.000E+00 . . * . .1.000E-03 5.487E+00 . . . * . .2.000E-03 1.025E+01 . . . * .3.000E-03 1.350E+01 . . . . * .4.000E-03 1.488E+01 . . . . *.5.000E-03 1.425E+01 . . . . * .6.000E-03 1.150E+01 . . . . * .7.000E-03 7.184E+00 . . . * . .8.000E-03 1.879E+00 . . . * . .9.000E-03 -3.714E+00 . . * . . .1.000E-02 -8.762E+00 . . * . . .1.100E-02 -1.265E+01 . * . . . .1.200E-02 -1.466E+01 . * . . . .1.300E-02 -1.465E+01 . * . . . .1.400E-02 -1.265E+01 . * . . . .1.500E-02 -8.769E+00 . . * . . .1.600E-02 -3.709E+00 . . * . . .1.700E-02 1.876E+00 . . . * . .1.800E-02 7.191E+00 . . . * . .1.900E-02 1.149E+01 . . . . * .2.000E-02 1.425E+01 . . . . * .2.100E-02 1.489E+01 . . . . *.2.200E-02 1.349E+01 . . . . * .2.300E-02 1.026E+01 . . . * .2.400E-02 5.491E+00 . . . * . .2.500E-02 1.553E-03 . . * . .2.600E-02 -5.514E+00 . . * . . .2.700E-02 -1.022E+01 . * . . .2.800E-02 -1.349E+01 . * . . . .2.900E-02 -1.495E+01 . * . . . .3.000E-02 -1.427E+01 . * . . . .- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
fourier components of transient response v(1) dc component = -1.885E-03harmonic frequency fourier normalized phase normalizedno (hz) component component (deg) phase (deg)1 6.000E+01 1.494E+01 1.000000 -71.998 0.0002 1.200E+02 1.886E-02 0.001262 -50.162 21.8363 1.800E+02 1.346E-03 0.000090 102.674 174.6714 2.400E+02 1.799E-02 0.001204 -10.866 61.1325 3.000E+02 3.604E-03 0.000241 160.923 232.9216 3.600E+02 5.642E-03 0.000378 -176.247 -104.2507 4.200E+02 2.095E-03 0.000140 122.661 194.6588 4.800E+02 4.574E-03 0.000306 -143.754 -71.7579 5.400E+02 4.896E-03 0.000328 -129.418 -57.420total harmonic distortion = 0.186350 percent
這個.交流卡指定交流分析點,從60Hz到60Hz,在一個點上。當然,這張卡片對于多頻率分析更有用,在多頻率分析中,可以分步分析一系列頻率。這個.打印該卡輸出節點1和節點2之間的交流電壓,以及節點2和接地之間的交流電壓。
網絡列表:
Demo of a simple AC circuitv1 1 0 ac 12 sinr1 1 2 30c1 2 0 100u.ac lin 1 60 60.print ac v(1,2) v(2).end
輸出:
freq v(1,2) v(2) 6.000E+01 8.990E+00 7.949E+00
這個低通濾波器阻斷交流,把直流電傳輸到R負載電阻器。典型的用于抑制整流電路紋波的濾波器,它實際上有一個諧振頻率,從技術上講,它是一個帶通濾波器。然而,不管怎樣,它都可以很好地通過直流和阻斷高頻諧波產生的交直流整流過程。它的性能是用一個從500赫茲到15千赫的交流電源來測量的。如果需要.打印卡可以用.繪圖以圖形方式顯示4節點的交流電壓。
網絡列表:
Lowpass filterv1 2 1 ac 24 sinv2 1 0 dc 24rload 4 0 1kl1 2 3 100ml2 3 4 250mc1 3 0 100u.ac lin 30 500 15k.print ac v(4).plot ac v(4).end
freq v(4) 5.000E+02 1.935E-011.000E+03 3.275E-021.500E+03 1.057E-022.000E+03 4.614E-032.500E+03 2.402E-033.000E+03 1.403E-033.500E+03 8.884E-044.000E+03 5.973E-044.500E+03 4.206E-045.000E+03 3.072E-045.500E+03 2.311E-046.000E+03 1.782E-046.500E+03 1.403E-047.000E+03 1.124E-047.500E+03 9.141E-058.000E+03 7.536E-058.500E+03 6.285E-059.000E+03 5.296E-059.500E+03 4.504E-051.000E+04 3.863E-051.050E+04 3.337E-051.100E+04 2.903E-051.150E+04 2.541E-051.200E+04 2.237E-051.250E+04 1.979E-051.300E+04 1.760E-051.350E+04 1.571E-051.400E+04 1.409E-051.450E+04 1.268E-051.500E+04 1.146E-05
freq v(4) 1.000E-06 1.000E-04 1.000E-02 1.000E+00 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -5.000E+02 1.935E-01 . . . * . 1.000E+03 3.275E-02 . . . * .1.500E+03 1.057E-02 . . * . 2.000E+03 4.614E-03 . . * . . 2.500E+03 2.402E-03 . . * . . 3.000E+03 1.403E-03 . . * . . 3.500E+03 8.884E-04 . . * . . 4.000E+03 5.973E-04 . . * . . 4.500E+03 4.206E-04 . . * . . 5.000E+03 3.072E-04 . . * . . 5.500E+03 2.311E-04 . . * . . 6.000E+03 1.782E-04 . . * . . 6.500E+03 1.403E-04 . .* . . 7.000E+03 1.124E-04 . * . . 7.500E+03 9.141E-05 . * . . 8.000E+03 7.536E-05 . *. . . 8.500E+03 6.285E-05 . *. . . 9.000E+03 5.296E-05 . * . . . 9.500E+03 4.504E-05 . * . . . 1.000E+04 3.863E-05 . * . . . 1.050E+04 3.337E-05 . * . . . 1.100E+04 2.903E-05 . * . . . 1.150E+04 2.541E-05 . * . . . 1.200E+04 2.237E-05 . * . . . 1.250E+04 1.979E-05 . * . . . 1.300E+04 1.760E-05 . * . . . 1.350E+04 1.571E-05 . * . . . 1.400E+04 1.409E-05 . * . . . 1.450E+04 1.268E-05 . * . . . 1.500E+04 1.146E-05 . * . . . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SPICE的一個特點是它不能處理由串聯電壓源和電感組成的電路中的任何回路。因此,V one-我 one-我 two-五 two-五 one是不可接受的。為了避開這個問題,我不得不插入一個低的-回路中某個地方的電阻,用來把它分解。因此,我們有R偽造的在3到4之間(電阻為1微微歐姆)和V two在4和0之間。上面的電路是原來的設計,下面的電路有R偽造的插入以避免SPICE錯誤。
網絡列表:
Multiple ac sourcev1 1 0 ac 55 0 sinv2 4 0 ac 43 25 sinl1 1 2 450mc1 2 0 330ul2 2 3 150mrbogus 3 4 1e-12.ac lin 1 30 30.print ac v(2).end
輸出:
freq v(2) 3.000E+01 1.413E+02
通過各支路的電流由各分流電阻器(1安培=1伏到1Ω)上的電壓降指示,由輸出五(1,2)和五(1,3)合同條款.打印卡。通過每個支路的電流相位由輸出的每個分路電阻器上的電壓降相位表示副總裁(1,2)和副總裁(1,3)術語.打印卡
網絡列表:
phase shiftv1 1 0 ac 4 sinrshunt1 1 2 1rshunt2 1 3 1l1 2 0 1r1 3 0 6.3k.ac lin 1 1000 1000.print ac v(1,2) v(1,3) vp(1,2) vp(1,3).end
輸出:
freq v(1,2) v(1,3) vp(1,2) vp(1,3) 1.000E+03 6.366E-04 6.349E-04 -9.000E+01 0.000E+00
SPICE將變壓器理解為一組相互耦合的電感器。因此,要在SPICE中模擬變壓器,必須將一次繞組和二次繞組指定為單獨的電感器,然后指示SPICE用一個“k“指定耦合常數的卡。對于理想的變壓器模擬,耦合常數應為1。但是,SPICE不能處理這個值,所以我們使用0.999之類的值作為耦合因子。
請注意全部的繞組電感器對必須與其自身耦合k卡,以便模擬正常工作。對于雙繞組變壓器,單繞組k卡就夠了。對于三繞組變壓器,三個k必須指定卡(鏈接L1和L2,L2和L3,還有L1和L3 ).
L1/L2電感比為100:1,降壓變壓比為10:1。在120伏的電壓下,我們可以看到12伏的電壓 two彎曲的。L1/L3電感比100:25(4:1)提供了2:1的降壓變壓比,這應該給我們60伏特的L3繞組電壓為120伏
網絡列表:
transformer v1 1 0 ac 120 sin rbogus0 1 6 1e-3l1 6 0 100 l2 2 4 1l3 3 5 25 k1 l1 l2 0.999 k2 l2 l3 0.999 k3 l1 l3 0.999 r1 2 4 1000 r2 3 5 1000 rbogus1 5 0 1e10rbogus2 4 0 1e10.ac lin 1 60 60 .print ac v(1,0) v(2,0) v(3,0) .end
輸出:
freq v(1) v(2) v(3) 6.000E+01 1.200E+02 1.199E+01 5.993E+01
在本例中,R假象0是一個非常低值的電阻,用于切斷V的源/電感回路 one/我 one. R假象1和R假象2在每個隔離電路上提供接地直流通路所需的非常高的電阻。一次側電路也是直接接地的。沒有這些地面參考,SPICE會產生錯誤!
二極管,就像SPICE中的所有半導體元件一樣,必須對其進行建模,這樣SPICE才能知道它們應該如何工作的所有細節。幸運的是,SPICE附帶了一些通用模型,而二極管是最基本的。注意.型號卡片上只寫著d“作為通用二極管模型模式1. 同樣,由于我們在這里繪制波形,我們需要在一張卡中指定交流電源的所有參數,并使用.tran選項
網絡列表:
fullwave bridge rectifierv1 1 0 sin(0 15 60 0 0)rload 1 0 10kd1 1 2 mod1d2 0 2 mod1d3 3 1 mod1d4 3 0 mod1.model mod1 d.tran .5m 25m.plot tran v(1,0) v(2,3) .end
輸出:
legend:*: v(1) +: v(2,3) time v(1) (*)--------- -2.000E+01 -1.000E+01 0.000E+00 1.000E+01 2.000E+01(+)--------- -5.000E+00 0.000E+00 5.000E+00 1.000E+01 1.500E+01- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0.000E+00 0.000E+00 . + * . .5.000E-04 2.806E+00 . . + . * . .1.000E-03 5.483E+00 . . + * . .1.500E-03 7.929E+00 . . . + * . .2.000E-03 1.013E+01 . . . +* .2.500E-03 1.198E+01 . . . . * + .3.000E-03 1.338E+01 . . . . * + .3.500E-03 1.435E+01 . . . . * +.4.000E-03 1.476E+01 . . . . * +4.500E-03 1.470E+01 . . . . * +5.000E-03 1.406E+01 . . . . * + .5.500E-03 1.299E+01 . . . . * + .6.000E-03 1.139E+01 . . . . *+ .6.500E-03 9.455E+00 . . . + *. .7.000E-03 7.113E+00 . . . + * . .7.500E-03 4.591E+00 . . +. * . .8.000E-03 1.841E+00 . . + . * . .8.500E-03 -9.177E-01 . . + *. . .9.000E-03 -3.689E+00 . . *+ . . .9.500E-03 -6.380E+00 . . * . + . .1.000E-02 -8.784E+00 . . * . + . .1.050E-02 -1.075E+01 . *. . .+ .1.100E-02 -1.255E+01 . * . . . + .1.150E-02 -1.372E+01 . * . . . + .1.200E-02 -1.460E+01 . * . . . +1.250E-02 -1.476E+01 .* . . . +1.300E-02 -1.460E+01 . * . . . +1.350E-02 -1.373E+01 . * . . . + .1.400E-02 -1.254E+01 . * . . . + .1.450E-02 -1.077E+01 . *. . .+ .1.500E-02 -8.726E+00 . . * . + . .1.550E-02 -6.293E+00 . . * . + . .1.600E-02 -3.684E+00 . . x . . .1.650E-02 -9.361E-01 . . + *. . .1.700E-02 1.875E+00 . . + . * . .1.750E-02 4.552E+00 . . +. * . .1.800E-02 7.170E+00 . . . + * . .1.850E-02 9.401E+00 . . . + *. .1.900E-02 1.146E+01 . . . . *+ .1.950E-02 1.293E+01 . . . . * + .2.000E-02 1.414E+01 . . . . * +.2.050E-02 1.464E+01 . . . . * +2.100E-02 1.483E+01 . . . . * +2.150E-02 1.430E+01 . . . . * +.2.200E-02 1.344E+01 . . . . * + .2.250E-02 1.195E+01 . . . . *+ .2.300E-02 1.016E+01 . . . +* .2.350E-02 7.917E+00 . . . + * . .2.400E-02 5.460E+00 . . + * . .2.450E-02 2.809E+00 . . + . * . .2.500E-02 -8.297E-04 . + * . .- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
李楠東