MAST語言建模-文檔資料_第1頁
MAST語言建模-文檔資料_第2頁
MAST語言建模-文檔資料_第3頁
MAST語言建模-文檔資料_第4頁
MAST語言建模-文檔資料_第5頁
已閱讀5頁,還剩149頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

MAST語言建模MAST語言建模1MAST語言建模概述MAST語言是一種硬件描述語言,它是用數(shù)學(xué)的方法來描述的,它可以描述硬件的結(jié)構(gòu),也可以描述硬件的功能。建立描述硬件結(jié)構(gòu)的模型比較難,如果建立得比較好,其精度較高;建立描述功能的硬件模型相對比較簡單,但在使用這種模型的時候受到比較多的限制。MAST語言建模概述MAST語言是一種硬件描述語言,它是用數(shù)2MAST語言的結(jié)構(gòu)和功能MAST語言可以描述很多種類型的器件,包括模擬器件、數(shù)字器件等。MAST語言的結(jié)構(gòu)主要包括兩種方式,一種是structured方式,另一種是unstructured方式。structured方式就是將程序體分成許多段,即在程序體中包括許多程序段;unstructured的程序體中的程序沒有分段。MAST語言的結(jié)構(gòu)和功能MAST語言可以描述很多種類型的器件3structured和unstructured的比較structured和unstructured的比較4理想恒流源的模型templateisourcepm=iselectricalp,mnumberis=100{equations{i(p->m)+=is}}理想恒流源的模型templateisourcepm=5理想恒流源模板簡介模板頭、頭說明和模板體,在模板體中包含方程段。模板頭說明模板名、模板的連接點和使用模板時需要賦值的變量,這個變量必須是在網(wǎng)表中進行賦值。定義模板頭的格式為:templatetemplate_nameconnectionpoints=arguments定義模板頭的關(guān)鍵字為template和elementtemplate。這兩者的區(qū)別一個是內(nèi)部節(jié)點可見而另一個是內(nèi)部節(jié)點不可見。理想恒流源模板簡介模板頭、頭說明和模板體,在模板體中包含方程6理想恒流源模板簡介(續(xù)1)template_name是模板名,在通常情況下該模板的文件名和這個模板應(yīng)該一致。Connectionpoints是定義的端點名,而argument則是使用這個模板時需要賦值的變量,這個變量是通過網(wǎng)表來賦值的。模板頭說明:說明在模板頭中出現(xiàn)的除模板名以外的所有變量,它應(yīng)位于模板頭之下。在恒流源模板中,有兩個類型的變量需要說明,一個是節(jié)點類型,另一個是變量類型。理想恒流源模板簡介(續(xù)1)template_name是模板名7理想恒流源模板簡介(續(xù)2)模板連接點是一種特殊的數(shù)據(jù)類型,在SABER中叫pin類型。它與建立的模板有關(guān)。pin類型可以是機械連接點、熱連接點電連接點。由于在恒流源的連接點是電,因此其連接點說明為electricalp,m。作為頭說明的另一部分就是對模板參數(shù)的說明,它需要說明的是模板參數(shù)的類型,即數(shù)的類型。關(guān)于數(shù)的類型將在后面講述。在本模板中就定義了一個數(shù)。numberis理想恒流源模板簡介(續(xù)2)模板連接點是一種特殊的數(shù)據(jù)類型,在8理想恒流源模板簡介(續(xù)3)對于一個模板來講,連接點和模板參數(shù)并不是必須的,在一些模板中并沒有連接點,也有一些模板就可能沒有參數(shù)。對于一個模板而言,通常情況下除了模板頭以外還有模板體,模板體都是在一對括號中,在isource模板中的模板體就是一個方程段。理想恒流源模板簡介(續(xù)3)對于一個模板來講,連接點和模板參數(shù)9理想恒流源模板簡介(續(xù)4)isource中的方程段是用MAST語言結(jié)構(gòu)體的形式描述恒流源的特征,實際上就是用模板方程來描述器件模擬端口的特征。在恒流源模型中,電流是從p點流進從m點流出,因此在方程段中要描述這一特征,在MAST中描述這一特征i(p->m)+=is理想恒流源模板簡介(續(xù)4)isource中的方程段是用MA10系統(tǒng)對模板的調(diào)用假設(shè)有一個系統(tǒng)調(diào)用了這個恒流源模板isource,在這個系統(tǒng)中這個恒流源的名字為i1,這個恒流源的兩端與節(jié)點a、b相連,恒流源電流的大小為2,則調(diào)用這個模板的語句為:isource.i1ab=is=2,網(wǎng)表與模板間的對應(yīng)關(guān)系:isource.i1ab=is=2templateisourcepm=is系統(tǒng)對模板的調(diào)用假設(shè)有一個系統(tǒng)調(diào)用了這個恒流源模板isour11理想恒流源模型的創(chuàng)建上述模型描述的電流從p點流進、m點流出,其電流的大小為is,在使用這個器件時在網(wǎng)表中要對這個值進行賦值。用任何文本編輯器編寫上述這段文本后,以文件的擴展名為.sin存盤。通常情況下文件名和模板名要一致,如果文件名和模板名不一致時在使用這個模板的網(wǎng)表中要包含這個文件。理想恒流源模型的創(chuàng)建上述模型描述的電流從p點流進、m點流出,12線性電容模板templatecapacitorpm=capelectricalp,mnumbercap{equations{i(p->m)+=d_by_dt(cap*(v(p)-v(m)))}}線性電容模板templatecapacitorpm=13MAST模板的搜尋機制當(dāng)SABER仿真器遇到了先前沒有定義的模板時x,它首先在x.sin文件中尋找該模板。如果沒有這個文件,則SABER仿真器將在include語句中所包含的文件中去尋找x模板,如果在include文件中仍沒有找到x模板,則將在映射文件中尋找x模板,如果仍沒有找到該模板,就送出錯誤信息。MAST模板的搜尋機制當(dāng)SABER仿真器遇到了先前沒有定義的14pin類型數(shù)據(jù)在MAST語言中,所謂指針就是元件模板的對外連接點的一種形式,它也是模板對外連接的最常用的一種形式,定義指針實際上就是定義了元件的一種連接方式。pin類型數(shù)據(jù)是SABER仿真器中定義的一種數(shù)據(jù),這種數(shù)據(jù)是專門針對器件的連接點,它包括很多種類型的連接點,它們是通過量綱來定義連接端點的類型的。pin類型數(shù)據(jù)在MAST語言中,所謂指針就是元件模板的對外15pin類型數(shù)據(jù)(1)每定義一種連接點就定義了一對變量,一個是cross變量,另一個是through變量。定義一個端點和定義一個連接點的cross變量和through變量是等價的。在定義一個pin變量的同時也定義了這個變量的量綱。pin類型數(shù)據(jù)(1)每定義一種連接點就定義了一對變量,一個16模擬量單位的定義unit{“縮寫”,”全稱”,”描述”}名字unit{“rpm”,”revolutions/minute”,”argularvelocity”}wunit{"A","Amperes","Current"}iunit{"V","Volts","Voltage"}v模擬量單位的定義unit{“縮寫”,”全稱”,”描述”}名17cross變量和through變量cross變量是系統(tǒng)變量,其主要特征是經(jīng)過任何一個回路,cross變量值的和位0。在電氣系統(tǒng)中的cross變量是系統(tǒng)中節(jié)點電位。through變量是與cross變量相對應(yīng)的系統(tǒng)變量,through變量的主要特征是任意一節(jié)點其值的和為0。在電氣系統(tǒng)中的through變量為電流。cross變量和through變量cross變量是系統(tǒng)變18連接點的定義pinidentiferacrossuint1throughunit2或pinidentiferthroughunit1acrossunit2pinelectricalthroughiacrossvpinrotationalthroughwacrosst在編程時,之所以可以利用electrical這樣的端點定義,是因為在SABER中有一個文件unit.sin,在其中定義了這個端點。在這個文件中定義的所有其它端點,都可以在編程中不需要定義直接使用,但是如果要使用在該文件中沒有定義的端點,則需要自己定義。連接點的定義pinidentiferacrossuin19SABER仿真的過程SABER仿真的過程20節(jié)點分析法根據(jù)電路的結(jié)構(gòu),應(yīng)用KCL定律,用節(jié)點電壓去表示之路電流,最后求解節(jié)點電壓的方法叫節(jié)點電壓法。從上面的敘述可以看出,節(jié)點電壓法是根據(jù)電路的結(jié)構(gòu),首先求出電路的節(jié)點電壓,然后再求電路中各個之路的電流。節(jié)點分析法根據(jù)電路的結(jié)構(gòu),應(yīng)用KCL定律,用節(jié)點電壓去表示之21SABER仿真過程(續(xù)1)SABER仿真器解方程時采用的是節(jié)點法,在通常情況下器件端點電壓是由系統(tǒng)的結(jié)構(gòu)決定了,也就是說如果系統(tǒng)的結(jié)構(gòu)一定則系統(tǒng)中各個器件端點電壓就是一定的,因此SABER仿真器認為系統(tǒng)中各個器件的端點電壓是已知的,而需要求的就是各個器件的電流。SABER仿真過程(續(xù)1)SABER仿真器解方程時采用的是節(jié)22SABER仿真過程(續(xù)2)SABER仿真過程(續(xù)2)23恒電壓源的工作過程從前面的介紹可以知道,仿真器是以獲得電流為最終目的,如果一個系統(tǒng)的一個之路的電流沒有獲得,仿真器則認為沒有達到最終的目。但是恒壓源的的電流受系統(tǒng)結(jié)構(gòu)的限制,如果系統(tǒng)結(jié)構(gòu)不能確定,則恒壓源的電流將不能確定。恒電壓源的工作過程從前面的介紹可以知道,仿真器是以獲得電流為24恒電壓源模板templatevsourcepm=vselectricalp,mnumbervs{variivsequations{i(p->m)+=ivsivs:v(p)-v(m)=vs}}恒電壓源模板templatevsourcepm=v25恒電壓源模板簡介在SABER仿真器都是采用節(jié)點法解方程,并以求解之路電流為最終目的,也就是說如果求得了之路電流,SABER仿真器就認為完成了任務(wù)。在恒電壓源模塊中,由于電源電壓和電流之間的關(guān)系受系統(tǒng)的影響,在系統(tǒng)不確定時不可能通過電源的電壓來求得電源的電流。恒電壓源模板簡介在SABER仿真器都是采用節(jié)點法解方程,并以26恒電壓源模板簡介(續(xù))在模板體中設(shè)置一個變量,該變量為系統(tǒng)變量(var型變量),用這個變量來描述電源的電流。電源電流的確定要滿足兩個條件,一要滿足電源電壓恒定,二要滿足KVL定律。在模板中有多少個系統(tǒng)變量,在方程段中就應(yīng)該有多少個方程。恒電壓源模板簡介(續(xù))在模板體中設(shè)置一個變量,該變量為系統(tǒng)變27在模板體中設(shè)置系統(tǒng)變量的方法var是在模板體中常用的變量,var型變量為系統(tǒng)變量。在系統(tǒng)中如果增加一個var變量,則在方程段中就要增加一個方程來求解該變量。varunitname[,name...]在方程段中指定方程的格式為:var_variable:expression1=expression2在模板體中設(shè)置系統(tǒng)變量的方法var是在模板體中常用的變量,v28

templateinductorpm=indelectricalp,mnumberind{variilequations{i(p->m)+=ilil:v(p)-v(m)=d_by_dt(ind*il)}}templateinductorpm=ind29線性電感模板的特點在前面已經(jīng)講過,SABER仿真器是以解之路電流為最終目的,因此在方程段中建立方程時都是以解電流為目的。但是在電感的特征方程中電流是電壓的積分,為了將其轉(zhuǎn)換為微分方式,在模板體中添加了一個系統(tǒng)變量,利用系統(tǒng)變量來轉(zhuǎn)換這種關(guān)系。線性電感模板的特點在前面已經(jīng)講過,SABER仿真器是以解之路30在模板間使用MAST系統(tǒng)變量在本部分主要內(nèi)容是模板間的參數(shù)相互調(diào)用而不需要連接點,這類器件比較多,在SABER元件庫中也有這類器件,例如互感器件,受控源等。在模板間使用MAST系統(tǒng)變量在本部分主要內(nèi)容是模板間的參數(shù)相31耦合元件的使用耦合元件的使用32耦合器件的仿真波形耦合器件的仿真波形33在模板間使用MAST系統(tǒng)的方法在一個模板中定義了一個through變量,如果在系統(tǒng)中的其它模板要用這個變量的值,則可以在模板中定義一個端點變量,該變量的類型為ref型,模板可以從ref型端點變量中輸入through變量值,而不需要經(jīng)過連接點。在模板間使用MAST系統(tǒng)的方法在一個模板中定義了一個thro34CCVS模板templatecvtcipm=kreficielectricalp,mnumberk{variiequations{i(p->m)+=ii:v(p)-v(m)=k*ci}}CCVS模板templatecvtcipm=k35CCVS模板的特點該模板在頭說明中定義了一個ref變量,該變量為一個端口變量,其值為仿真系統(tǒng)中其它模板的through變量,但是ref型端點變量由兩部分組成,一部分是引用模板名,另一部分是模板中被引用的變量名。CCVS模板的特點該模板在頭說明中定義了一個ref變量,該變36ref型變量的特點ref變量和var變量都是系統(tǒng)變量,對于任何一個系統(tǒng)變量都因該有一個方程與之對應(yīng)。對于一個pin類型數(shù)據(jù),它有兩個系統(tǒng)變量,一個是對應(yīng)的through變量和cross變量,SABER仿真器認為cross變量為已知量,在通常情況下它通過KCL定律來求解through變量;對于設(shè)置的var變量,在方程段中因該指定方程來求解該變量;對于ref變量,也因該有一個方程來求解這個變量,但這個方程不在定義ref變量的模板內(nèi),而在被引用的模板內(nèi)。ref型變量的特點ref變量和var變量都是系統(tǒng)變量,對于37ref型變量的特點(續(xù))ref變量的定義通常在模板頭中。refunitpnameCCVS模板的引用方法:cvt.1i(v.1)ab=1kv.1cd=5v模板是SABER庫中的模板,而i是其作為var變量的分支電流。從這個引用中可以看到,ref變量的賦值有兩部分,一個是模板的實例名,另一個是模板實例中的through變量名。ref型變量的特點(續(xù))ref變量的定義通常在模板頭中。38CCVS模板方程段的特點在本模板的方程段中添加了一個方程來求解系統(tǒng)變量,這個系統(tǒng)變量是在模板體中設(shè)置的,其設(shè)置的原因與恒電壓源的情況相同。CCVS模板方程段的特點在本模板的方程段中添加了一個方程來求39互感器件模板的使用inductor.l1p:p1m:m1=ind=1inductor.l2p:p2m:m2=ind=2mutind.1i1:il(inductor.l1)i2:il(inductor.l2)=\m=0.98*sqrt(ind(inductor.l1)*ind(inductor.l2))互感器件模板的使用inductor.l1p:p1m:m140互感器件模板templatemutindi1i2=mrefii1,i2numberm{equations{i1-=d_by_dt(m*i2)i2-=d_by_dt(m*i1)}}在本模板中,沒有確定電流i1和i2,在這個模板中的i1和i2都是引入量,求這兩個量的方程分別在電感模板中方程段il:v(p)-v(m)=_by_dt(ind*i)在本模板的方程段中定義了變量i1和i2的關(guān)系?;ジ衅骷0錿emplatemutindi1i2=41CCVS模板和互感模板的區(qū)別這兩個模板的相同點就是這兩個模板都用了ref型變量,從這兩個模板中可以體會到ref變量的使用。這兩個模板的不同點就是在方程段中,CCVS模板在方程中沒有方程來描述ref變量,但在互感模板中的方程段中的方程就描述了兩個ref變量間的關(guān)系。無論在方程段中是否有方程來描述ref變量,但是該方程決不是求解ref變量,ref變量在本模板中不能求解,它的解因該在被引用的模板中。CCVS模板和互感模板的區(qū)別這兩個模板的相同點就是這兩個模板42電容模板elementtemplatecapacitor_1pm=cap,icelectricalp,mnumbercap,ic=undef{valqqcvalvvcvalues{vc=v(p)-v(m)#voltageacrosscap.qc=vc*cap#chargestoredincap.}control_section{initial_condition(vc,ic)}equations{i(p->m)+=d_by_dt(qc)#currentthroughcap.}}電容模板elementtemplatecapacitor43電容模板的特點在模板定義中使用的是elementtemplate而不是template,這說明這個模板內(nèi)部節(jié)點可見。在頭說明中添加了一個量ic,這個量描述的是電容初始狀況。在頭說明還用了一個數(shù)字就是undef,這在SABER仿真器中是一個數(shù),這個數(shù)可以對變量賦值,在本模板中它對ic賦值。它可以用在條件語句中,但是這個數(shù)不能計算。ic=undef表明如果沒有其它值賦值的情況下,電容初始狀況可以忽略不計。電容模板的特點在模板定義中使用的是elementtempl44電容模板的特點(續(xù)1)在建立實際系統(tǒng)時常常使用value段,這主要是因為:定義一種變量,val型變量,這種變量主要好處就是可以通過extract指令來提取,這樣在不增加仿真時間的情況下可以獲得更多的信息。一個val變量通常作為中間變量。而val變量的賦值就在value段中。調(diào)用foreign例程和噪聲源的定義通常都是在這段。value段既是一個程序段,也是一個說明段。作為程序段,在執(zhí)行該段程序時是從上到下的順序,因此在編程時引用的變量一定要在前面定義;作為一個說明段,仿真認為需要該變量時才會執(zhí)行該段對應(yīng)的語句。電容模板的特點(續(xù)1)在建立實際系統(tǒng)時常常使用value段,45電容模板的特點(續(xù)2)電容模板的另一個特點就是在仿真完成后需要提取一些變量,為仿真提供更多的信息。在仿真結(jié)束后,本模板可以提供電容兩端的電壓和電容儲存的電荷,這兩個量可以通過extract命令來提取,也可以在siglist中設(shè)置。因此在Value中定義了兩個val變量。電容模板的特點(續(xù)2)電容模板的另一個特點就是在仿真完成后需46Value段的特點在value段中可以包括賦值語句和條件語句,賦值語句的格式為:variable=expressionvalue段既是一個順序段,也是一個說明段。作為程序段,在執(zhí)行該段程序時是從上到下的順序,因此在編程時引用的變量一定要在前面定義;作為一個說明段,仿真認為需要該變量時才會執(zhí)行該段對應(yīng)的語句。

value段的關(guān)鍵詞是value.Value段的特點在value段中可以包括賦值語句和條件語句47Value段的特點(續(xù))只有仿真器需要提取相關(guān)變量時才會執(zhí)行Value段;當(dāng)方程段中需要Value段中的變量時才會執(zhí)行Value段。如果不需要時,模板中的Value段是不會被執(zhí)行的。因此在模板程序中編寫Value段不會增加仿真時間(在提供相同信息的情況下),但是如果在需要的話,模板程序可以提供更多的信息。Value段的特點(續(xù))只有仿真器需要提取相關(guān)變量時才會執(zhí)行48val變量的定義val變量必須為局部變量,即val變量必須在程序的模板體中定義。valunitname[,name,name,...]valqqcvalvvval型變量必須在value段中賦值。如果模板為unstructured,則必須在模板體中賦值。val變量的定義val變量必須為局部變量,即val變量必須49控制段控制段是為仿真器提供仿真系統(tǒng)的系統(tǒng)信息而不是仿真系統(tǒng)中元件的信息,控制段的關(guān)鍵詞是control_section,在關(guān)鍵詞后接{}。在本模板中,使用了initial_condition(vc,ic),它確定的是系統(tǒng)仿真時的電容初始條件是端電壓為vc??刂贫慰刂贫问菫榉抡嫫魈峁┓抡嫦到y(tǒng)的系統(tǒng)信息而不是仿真系統(tǒng)中50initial_condition的使用在一些模板中,需要確定其初始條件,確定初始條件通常都是在控制段中。initial_condition(variable,value)其中variable為需要確定初始條件的系統(tǒng)變量或系統(tǒng)變量的差,value為初始條件的值。initial_condition的使用在一些模板中,需要確51多類型電壓源下面將建立一個電壓源模板,該模板有如下功能:1)提供恒壓源在作直流分析和時域分析2)在作時域分析時電壓源提供一個指數(shù)函數(shù)的電壓波形。3)在作小信號AC分析時,它可以作為一個頻域信號。這個電壓源模擬了三種不同的輸出函數(shù)。多類型電壓源下面將建立一個電壓源模板,該模板有如下功能:52多類型電壓源模板1elementtemplatevsource_1pm=supply,tran,ac2electricalp,m#headerdeclarations3numbersupply=045struc{#startoftranstructure6numberv1=0,#initialvoltage7v2=0,#voltageattime=inf8tau=0.000001#timeconstant9}tran=()#endoftranstructure1011struc{#startofacstructure12numbermag=0,#ACmagnitude13phase=0#ACphase14}ac=()#endofacstructure//////////////////////////////////////////////////////////////////////////////////////////////////15{#starttemplatebody16variis#localdeclarations17valvvs組合數(shù)簡單數(shù)多類型電壓源模板1elementtemplatevso53多類型電壓源模板(續(xù))values{19if(dc_domain|time_domain){#Iflargesignal20if((tran->v1~=0|tran->v2~=0)&tran->tau>0){21#Ifwaveformisdefined22vs=tran->v1+(tran->v2-tran->v1)*(1-exp(-time/tran->tau))23}#sourcevoltage=waveform24#atcurrenttime25else{#otherwise26vs=supply#sourcevoltage=supply27}28}29elseif(freq_mag){#orifsourceisacmagnitude30vs=ac->mag#sourcevoltage=magnitude31}32elseif(freq_phase){#orifsourceisacphase33vs=ac->phase#sourcevoltage=phase34}模板體結(jié)構(gòu)V段的作用方程段多類型電壓源模板(續(xù))values{模板體結(jié)構(gòu)V段的作用方54多類型電壓源模板的特點在模板頭說明中定義了一個supply變量,該變量在直流分析或時域分析時提供恒壓源。在頭說明中,定義了兩個結(jié)構(gòu)體,用于確定時域分析時的指數(shù)電壓源和頻域分析的激勵源。在結(jié)構(gòu)體中,使用了仿真器變量(simvar),在value段中使用了使用了條件判據(jù)。多類型電壓源模板的特點在模板頭說明中定義了一個supply變55MAST語言中的簡單數(shù)簡單數(shù)據(jù):簡單數(shù)據(jù)有三種類型,它們分別是number,enum,string。它們分別是數(shù)值型數(shù)據(jù),枚舉型數(shù)據(jù)和字符數(shù)據(jù)。數(shù)值型數(shù)據(jù):在MAST語言中,實數(shù)和整數(shù)都可以對數(shù)值型變量賦值,在使用是不區(qū)別。枚舉型數(shù)據(jù)的定義:對象的名字有有限個,而在一個時刻其中只有一個是正確的。字符數(shù)據(jù):這些數(shù)據(jù)就是有字符串組成,其內(nèi)容通常要用引號。數(shù)值枚舉字符電源MAST語言中的簡單數(shù)簡單數(shù)據(jù):簡單數(shù)據(jù)有三種類型,它們分別56MAST語言中的數(shù)值型數(shù)據(jù)數(shù)值型變量的定義:numberid1[=init],id2[=init]e.gnumbervcc=5,dc_input,rload=10k,cload如果上述數(shù)據(jù)是一個中的變量,則可以通過網(wǎng)表賦值,其賦值的方式分別為(argument),(templatename.refconnectionpoint=5,2.7,10k,47n)(templatename.refconnectionpoint=cload=47n,vcc=5,dc_input=2.7,rload=10k)返回MAST語言中的數(shù)值型數(shù)據(jù)數(shù)值型變量的定義:返回57MAST語言中的枚舉數(shù)enum{evalue[,evalue]}id[=[int1],[int2]]e.g.enum{_n,_p}bjt_type=_n如果定義的枚舉型數(shù)據(jù)為一個變量,則可以在網(wǎng)表中對該變量賦值(argument).templatename.refconnectionpoint=bjt_type=_n返回MAST語言中的枚舉數(shù)enum{evalue[,eval58MAST語言中的字符數(shù)字符數(shù)的定義stringid[[=init][,init]]stringcoretype=“iron”如果字符為一個變量,則其值可以通過網(wǎng)表賦值,其賦值方式為:templatename.refconnectionpoint=coretype=“iron”

返回MAST語言中的字符數(shù)字符數(shù)的定義返回59MAST語言中組合數(shù)據(jù)組合數(shù)據(jù):組合數(shù)據(jù)有兩種基本類型,一種是結(jié)構(gòu)數(shù)據(jù)(struc),另一種是聯(lián)合數(shù)據(jù)(union)。采用結(jié)構(gòu)數(shù)據(jù)的目的是把一些相關(guān)變量構(gòu)成一個整體,而采用聯(lián)合變量的目的是希望一個變量在不同的時候處理不同類型的信息。組合數(shù)據(jù)都由四個部分組成,關(guān)鍵詞、數(shù)據(jù)名、數(shù)據(jù)定義和數(shù)據(jù)對象的實體。但是聯(lián)合數(shù)據(jù)的每一個實體只有數(shù)據(jù)定義中的一個對象,而結(jié)構(gòu)數(shù)據(jù)則沒有這個特點。電源聯(lián)合結(jié)構(gòu)MAST語言中組合數(shù)據(jù)組合數(shù)據(jù):組合數(shù)據(jù)有兩種基本類型,一種60結(jié)構(gòu)體的定義結(jié)構(gòu)體是一種數(shù)據(jù)類型,其定義的方式為:struc[structurename]{member[member][...]}id[=initial_value][,id=initial_value,...]struc為定義結(jié)果體的關(guān)鍵詞,structurename為結(jié)構(gòu)體的名,member為結(jié)構(gòu)體成員,id為結(jié)構(gòu)體變量。由于本設(shè)計中描述指數(shù)輸出波形的函數(shù)為:Vout=V1+(V2-V1)?(1-e)(-time/t),因此在tran這個結(jié)構(gòu)變量中的成員為3;結(jié)構(gòu)體的定義結(jié)構(gòu)體是一種數(shù)據(jù)類型,其定義的方式為:61結(jié)構(gòu)體的定義實例

struc{#startoftranstructurenumberv1=0,#initialvoltagev2=0,#voltageattime=inftau=0.000001#timeconstant}tran=()#endoftranstructure///////////////////////////////////////////////////////5struc{6numberv1=0,7v2=0,8tau=0.0000019}tran=()struc{numberv1,v2,tau}tran=(0,0,0.000001)

結(jié)構(gòu)體的定義實例struc{#startoftr62結(jié)構(gòu)體的使用結(jié)構(gòu)體變量的值要么在初始化結(jié)構(gòu)體獲得,要么通過網(wǎng)表傳輸進來,如果一個結(jié)構(gòu)體的數(shù)據(jù)在初始化時就賦值了,在網(wǎng)表中又賦值,則仿真器將采用網(wǎng)表輸入的數(shù)據(jù),如果一個結(jié)構(gòu)體在初始化時沒有賦值,在網(wǎng)表中也沒有賦值,則在仿真時將報錯。返回結(jié)構(gòu)體的使用結(jié)構(gòu)體變量的值要么在初始化結(jié)構(gòu)體獲得,要么通過網(wǎng)63聯(lián)合數(shù)據(jù)的定義聯(lián)合數(shù)據(jù)的定義:定義結(jié)構(gòu)數(shù)據(jù)用關(guān)鍵詞union,其定義的語法為unionunionname{declarationdeclaration}id[[=init],[init]….]聯(lián)合數(shù)據(jù)的定義聯(lián)合數(shù)據(jù)的定義:定義結(jié)構(gòu)數(shù)據(jù)用關(guān)鍵詞union64聯(lián)合數(shù)據(jù)的定義實例unionsource{numberdcstruc{numbermagnumberphase}ac}input1=(dc=5),input2=(ac=())定義了一個聯(lián)合類型的數(shù)據(jù),該數(shù)據(jù)由兩個選項dc和ac組成,其中ac為一個結(jié)構(gòu)體。聯(lián)合數(shù)據(jù)的定義實例unionsource{65聯(lián)合數(shù)據(jù)的定義實例(1)unionsource{numberdcstruc{numbermagnumberphase}ac}input1,input2unionsourceinput1=(dc=5),input2=(ac)在模板頭中引用時為templatename.refconnectionpoint=input2=(ac=(mag=1,phase=0))返回聯(lián)合數(shù)據(jù)的定義實例(1)unionsource{返回66模板函數(shù)體的結(jié)構(gòu)電壓源模板仿真器變量條件判斷模板函數(shù)體的結(jié)構(gòu)電壓源模板仿真器變量條件判斷67仿真器系統(tǒng)變量SABER仿真器中有一套仿真器系統(tǒng)變量,用它們來判斷仿真器所進行的仿真類型和對仿真器的控制。這些變量為系統(tǒng)的內(nèi)部變量,在使用這些變量時,不需要定義這些變量。如果將這些定義變量時使用了這些變量名,出現(xiàn)的后果不可預(yù)計。仿真器系統(tǒng)變量SABER仿真器中有一套仿真器系統(tǒng)變量,用它們68仿真器系統(tǒng)變量表直流時域控制模板體結(jié)構(gòu)頻域仿真器系統(tǒng)變量表直流時域控制模板體結(jié)構(gòu)頻域69頻域分析仿真器系統(tǒng)變量的說明freq_domain:系統(tǒng)作頻域分析時該變量值為1,其它情況下該變量值為0。freq_mag:在作頻域分析時且仿真器需要相量的幅值時該變量為1,其它情況該變量為0。freq_phase:在作頻域分析時且仿真器需要相量的相角時該變量為1,其它情況該變量為0。freq:頻域仿真當(dāng)前時刻的頻率。變量表頻域分析仿真器系統(tǒng)變量的說明freq_domain:系統(tǒng)作70時域分析仿真器系統(tǒng)變量的說明time_domain確定的是系統(tǒng)是否在作時域暫態(tài)仿真,如果系統(tǒng)在作時域暫態(tài)仿真,該變量的值不為0,否則該變量的值為0。time_init和tr_start都是在時域分析開始時該變量的值為1,但是在使用continuous和alter命令時time_init將不會為1而tr_start將會為1。tr_done和time_step_done分別在時域仿真完成時和時域仿真的每一個補償完成時被設(shè)置為1。變量表時域分析仿真器系統(tǒng)變量的說明time_domain確定的是系71控制型仿真器變量的說明time確定的是系統(tǒng)在作時域暫態(tài)分析時仿真器當(dāng)前的時間,仿真器在作其它分析時該變量的值為0Next_time用于指定仿真的下一個時間點。Step_size用于獲得當(dāng)前仿真步長值。Statistic:當(dāng)系統(tǒng)在作統(tǒng)計仿真的時候,該變量的值為1。變量表控制型仿真器變量的說明time確定的是系統(tǒng)在作時域暫態(tài)分析72直流分析仿真器系統(tǒng)變量的說明dc_domain:系統(tǒng)在作直流分析時該變量的值為1,其它情況下該變量的值為0。dc_init:在開始作直流分析時該變量的值為1,這些直流分析包括工作點分析(dc)、dt分析和dctr分析的直流部分。dc_start:這時SABER早期版本的一個變量,為了與早期版本兼容,仍保留了這個變量,這個變量的作用與dc_init相同,但在作dt分析時,該變量無效。在SABER的后期版本中,也是首先將dc_init量賦為1后dc_start才變?yōu)?。dc_done:就是在直流分析完成后該變量的值為1。變量表直流分析仿真器系統(tǒng)變量的說明dc_domain:系統(tǒng)在作直流73MAST語言中的條件判據(jù)MAST語言的條件判據(jù)與其它高級語言的條件判據(jù)基本相同,其結(jié)構(gòu)為if(condition1)statement1elseif(condition2)statement2...elsestatementNifelse是MAST語言的關(guān)鍵詞,condition為MAST語言的條件,如果條件為假則其值為0,如果條件為真,則其不為0。MAST語言中的條件判據(jù)MAST語言的條件判據(jù)與其它高級語言74MAST語言的運算符==等于~=不等于>大于>=大于或等于<小于<=小于或等于模板體結(jié)構(gòu)MAST語言的運算符==等于模板體結(jié)構(gòu)75value段的作用在value段中,主要任務(wù)就是就是對變量vs賦值,不同的情況對變量vs賦不同的值,vs變量是一個中間變量,在方程段中根據(jù)vs變量的值和KVL來確定電壓源的電流。value段的作用在value段中,主要任務(wù)就是就是對變量v76多類型電壓源模板的方程段equation{i(p->m)+=isis:v(p)-v(m)=vs}電源模板多類型電壓源模板的方程段equation{電源模板77MAST語言建模MAST語言建模78MAST語言建模概述MAST語言是一種硬件描述語言,它是用數(shù)學(xué)的方法來描述的,它可以描述硬件的結(jié)構(gòu),也可以描述硬件的功能。建立描述硬件結(jié)構(gòu)的模型比較難,如果建立得比較好,其精度較高;建立描述功能的硬件模型相對比較簡單,但在使用這種模型的時候受到比較多的限制。MAST語言建模概述MAST語言是一種硬件描述語言,它是用數(shù)79MAST語言的結(jié)構(gòu)和功能MAST語言可以描述很多種類型的器件,包括模擬器件、數(shù)字器件等。MAST語言的結(jié)構(gòu)主要包括兩種方式,一種是structured方式,另一種是unstructured方式。structured方式就是將程序體分成許多段,即在程序體中包括許多程序段;unstructured的程序體中的程序沒有分段。MAST語言的結(jié)構(gòu)和功能MAST語言可以描述很多種類型的器件80structured和unstructured的比較structured和unstructured的比較81理想恒流源的模型templateisourcepm=iselectricalp,mnumberis=100{equations{i(p->m)+=is}}理想恒流源的模型templateisourcepm=82理想恒流源模板簡介模板頭、頭說明和模板體,在模板體中包含方程段。模板頭說明模板名、模板的連接點和使用模板時需要賦值的變量,這個變量必須是在網(wǎng)表中進行賦值。定義模板頭的格式為:templatetemplate_nameconnectionpoints=arguments定義模板頭的關(guān)鍵字為template和elementtemplate。這兩者的區(qū)別一個是內(nèi)部節(jié)點可見而另一個是內(nèi)部節(jié)點不可見。理想恒流源模板簡介模板頭、頭說明和模板體,在模板體中包含方程83理想恒流源模板簡介(續(xù)1)template_name是模板名,在通常情況下該模板的文件名和這個模板應(yīng)該一致。Connectionpoints是定義的端點名,而argument則是使用這個模板時需要賦值的變量,這個變量是通過網(wǎng)表來賦值的。模板頭說明:說明在模板頭中出現(xiàn)的除模板名以外的所有變量,它應(yīng)位于模板頭之下。在恒流源模板中,有兩個類型的變量需要說明,一個是節(jié)點類型,另一個是變量類型。理想恒流源模板簡介(續(xù)1)template_name是模板名84理想恒流源模板簡介(續(xù)2)模板連接點是一種特殊的數(shù)據(jù)類型,在SABER中叫pin類型。它與建立的模板有關(guān)。pin類型可以是機械連接點、熱連接點電連接點。由于在恒流源的連接點是電,因此其連接點說明為electricalp,m。作為頭說明的另一部分就是對模板參數(shù)的說明,它需要說明的是模板參數(shù)的類型,即數(shù)的類型。關(guān)于數(shù)的類型將在后面講述。在本模板中就定義了一個數(shù)。numberis理想恒流源模板簡介(續(xù)2)模板連接點是一種特殊的數(shù)據(jù)類型,在85理想恒流源模板簡介(續(xù)3)對于一個模板來講,連接點和模板參數(shù)并不是必須的,在一些模板中并沒有連接點,也有一些模板就可能沒有參數(shù)。對于一個模板而言,通常情況下除了模板頭以外還有模板體,模板體都是在一對括號中,在isource模板中的模板體就是一個方程段。理想恒流源模板簡介(續(xù)3)對于一個模板來講,連接點和模板參數(shù)86理想恒流源模板簡介(續(xù)4)isource中的方程段是用MAST語言結(jié)構(gòu)體的形式描述恒流源的特征,實際上就是用模板方程來描述器件模擬端口的特征。在恒流源模型中,電流是從p點流進從m點流出,因此在方程段中要描述這一特征,在MAST中描述這一特征i(p->m)+=is理想恒流源模板簡介(續(xù)4)isource中的方程段是用MA87系統(tǒng)對模板的調(diào)用假設(shè)有一個系統(tǒng)調(diào)用了這個恒流源模板isource,在這個系統(tǒng)中這個恒流源的名字為i1,這個恒流源的兩端與節(jié)點a、b相連,恒流源電流的大小為2,則調(diào)用這個模板的語句為:isource.i1ab=is=2,網(wǎng)表與模板間的對應(yīng)關(guān)系:isource.i1ab=is=2templateisourcepm=is系統(tǒng)對模板的調(diào)用假設(shè)有一個系統(tǒng)調(diào)用了這個恒流源模板isour88理想恒流源模型的創(chuàng)建上述模型描述的電流從p點流進、m點流出,其電流的大小為is,在使用這個器件時在網(wǎng)表中要對這個值進行賦值。用任何文本編輯器編寫上述這段文本后,以文件的擴展名為.sin存盤。通常情況下文件名和模板名要一致,如果文件名和模板名不一致時在使用這個模板的網(wǎng)表中要包含這個文件。理想恒流源模型的創(chuàng)建上述模型描述的電流從p點流進、m點流出,89線性電容模板templatecapacitorpm=capelectricalp,mnumbercap{equations{i(p->m)+=d_by_dt(cap*(v(p)-v(m)))}}線性電容模板templatecapacitorpm=90MAST模板的搜尋機制當(dāng)SABER仿真器遇到了先前沒有定義的模板時x,它首先在x.sin文件中尋找該模板。如果沒有這個文件,則SABER仿真器將在include語句中所包含的文件中去尋找x模板,如果在include文件中仍沒有找到x模板,則將在映射文件中尋找x模板,如果仍沒有找到該模板,就送出錯誤信息。MAST模板的搜尋機制當(dāng)SABER仿真器遇到了先前沒有定義的91pin類型數(shù)據(jù)在MAST語言中,所謂指針就是元件模板的對外連接點的一種形式,它也是模板對外連接的最常用的一種形式,定義指針實際上就是定義了元件的一種連接方式。pin類型數(shù)據(jù)是SABER仿真器中定義的一種數(shù)據(jù),這種數(shù)據(jù)是專門針對器件的連接點,它包括很多種類型的連接點,它們是通過量綱來定義連接端點的類型的。pin類型數(shù)據(jù)在MAST語言中,所謂指針就是元件模板的對外92pin類型數(shù)據(jù)(1)每定義一種連接點就定義了一對變量,一個是cross變量,另一個是through變量。定義一個端點和定義一個連接點的cross變量和through變量是等價的。在定義一個pin變量的同時也定義了這個變量的量綱。pin類型數(shù)據(jù)(1)每定義一種連接點就定義了一對變量,一個93模擬量單位的定義unit{“縮寫”,”全稱”,”描述”}名字unit{“rpm”,”revolutions/minute”,”argularvelocity”}wunit{"A","Amperes","Current"}iunit{"V","Volts","Voltage"}v模擬量單位的定義unit{“縮寫”,”全稱”,”描述”}名94cross變量和through變量cross變量是系統(tǒng)變量,其主要特征是經(jīng)過任何一個回路,cross變量值的和位0。在電氣系統(tǒng)中的cross變量是系統(tǒng)中節(jié)點電位。through變量是與cross變量相對應(yīng)的系統(tǒng)變量,through變量的主要特征是任意一節(jié)點其值的和為0。在電氣系統(tǒng)中的through變量為電流。cross變量和through變量cross變量是系統(tǒng)變95連接點的定義pinidentiferacrossuint1throughunit2或pinidentiferthroughunit1acrossunit2pinelectricalthroughiacrossvpinrotationalthroughwacrosst在編程時,之所以可以利用electrical這樣的端點定義,是因為在SABER中有一個文件unit.sin,在其中定義了這個端點。在這個文件中定義的所有其它端點,都可以在編程中不需要定義直接使用,但是如果要使用在該文件中沒有定義的端點,則需要自己定義。連接點的定義pinidentiferacrossuin96SABER仿真的過程SABER仿真的過程97節(jié)點分析法根據(jù)電路的結(jié)構(gòu),應(yīng)用KCL定律,用節(jié)點電壓去表示之路電流,最后求解節(jié)點電壓的方法叫節(jié)點電壓法。從上面的敘述可以看出,節(jié)點電壓法是根據(jù)電路的結(jié)構(gòu),首先求出電路的節(jié)點電壓,然后再求電路中各個之路的電流。節(jié)點分析法根據(jù)電路的結(jié)構(gòu),應(yīng)用KCL定律,用節(jié)點電壓去表示之98SABER仿真過程(續(xù)1)SABER仿真器解方程時采用的是節(jié)點法,在通常情況下器件端點電壓是由系統(tǒng)的結(jié)構(gòu)決定了,也就是說如果系統(tǒng)的結(jié)構(gòu)一定則系統(tǒng)中各個器件端點電壓就是一定的,因此SABER仿真器認為系統(tǒng)中各個器件的端點電壓是已知的,而需要求的就是各個器件的電流。SABER仿真過程(續(xù)1)SABER仿真器解方程時采用的是節(jié)99SABER仿真過程(續(xù)2)SABER仿真過程(續(xù)2)100恒電壓源的工作過程從前面的介紹可以知道,仿真器是以獲得電流為最終目的,如果一個系統(tǒng)的一個之路的電流沒有獲得,仿真器則認為沒有達到最終的目。但是恒壓源的的電流受系統(tǒng)結(jié)構(gòu)的限制,如果系統(tǒng)結(jié)構(gòu)不能確定,則恒壓源的電流將不能確定。恒電壓源的工作過程從前面的介紹可以知道,仿真器是以獲得電流為101恒電壓源模板templatevsourcepm=vselectricalp,mnumbervs{variivsequations{i(p->m)+=ivsivs:v(p)-v(m)=vs}}恒電壓源模板templatevsourcepm=v102恒電壓源模板簡介在SABER仿真器都是采用節(jié)點法解方程,并以求解之路電流為最終目的,也就是說如果求得了之路電流,SABER仿真器就認為完成了任務(wù)。在恒電壓源模塊中,由于電源電壓和電流之間的關(guān)系受系統(tǒng)的影響,在系統(tǒng)不確定時不可能通過電源的電壓來求得電源的電流。恒電壓源模板簡介在SABER仿真器都是采用節(jié)點法解方程,并以103恒電壓源模板簡介(續(xù))在模板體中設(shè)置一個變量,該變量為系統(tǒng)變量(var型變量),用這個變量來描述電源的電流。電源電流的確定要滿足兩個條件,一要滿足電源電壓恒定,二要滿足KVL定律。在模板中有多少個系統(tǒng)變量,在方程段中就應(yīng)該有多少個方程。恒電壓源模板簡介(續(xù))在模板體中設(shè)置一個變量,該變量為系統(tǒng)變104在模板體中設(shè)置系統(tǒng)變量的方法var是在模板體中常用的變量,var型變量為系統(tǒng)變量。在系統(tǒng)中如果增加一個var變量,則在方程段中就要增加一個方程來求解該變量。varunitname[,name...]在方程段中指定方程的格式為:var_variable:expression1=expression2在模板體中設(shè)置系統(tǒng)變量的方法var是在模板體中常用的變量,v105

templateinductorpm=indelectricalp,mnumberind{variilequations{i(p->m)+=ilil:v(p)-v(m)=d_by_dt(ind*il)}}templateinductorpm=ind106線性電感模板的特點在前面已經(jīng)講過,SABER仿真器是以解之路電流為最終目的,因此在方程段中建立方程時都是以解電流為目的。但是在電感的特征方程中電流是電壓的積分,為了將其轉(zhuǎn)換為微分方式,在模板體中添加了一個系統(tǒng)變量,利用系統(tǒng)變量來轉(zhuǎn)換這種關(guān)系。線性電感模板的特點在前面已經(jīng)講過,SABER仿真器是以解之路107在模板間使用MAST系統(tǒng)變量在本部分主要內(nèi)容是模板間的參數(shù)相互調(diào)用而不需要連接點,這類器件比較多,在SABER元件庫中也有這類器件,例如互感器件,受控源等。在模板間使用MAST系統(tǒng)變量在本部分主要內(nèi)容是模板間的參數(shù)相108耦合元件的使用耦合元件的使用109耦合器件的仿真波形耦合器件的仿真波形110在模板間使用MAST系統(tǒng)的方法在一個模板中定義了一個through變量,如果在系統(tǒng)中的其它模板要用這個變量的值,則可以在模板中定義一個端點變量,該變量的類型為ref型,模板可以從ref型端點變量中輸入through變量值,而不需要經(jīng)過連接點。在模板間使用MAST系統(tǒng)的方法在一個模板中定義了一個thro111CCVS模板templatecvtcipm=kreficielectricalp,mnumberk{variiequations{i(p->m)+=ii:v(p)-v(m)=k*ci}}CCVS模板templatecvtcipm=k112CCVS模板的特點該模板在頭說明中定義了一個ref變量,該變量為一個端口變量,其值為仿真系統(tǒng)中其它模板的through變量,但是ref型端點變量由兩部分組成,一部分是引用模板名,另一部分是模板中被引用的變量名。CCVS模板的特點該模板在頭說明中定義了一個ref變量,該變113ref型變量的特點ref變量和var變量都是系統(tǒng)變量,對于任何一個系統(tǒng)變量都因該有一個方程與之對應(yīng)。對于一個pin類型數(shù)據(jù),它有兩個系統(tǒng)變量,一個是對應(yīng)的through變量和cross變量,SABER仿真器認為cross變量為已知量,在通常情況下它通過KCL定律來求解through變量;對于設(shè)置的var變量,在方程段中因該指定方程來求解該變量;對于ref變量,也因該有一個方程來求解這個變量,但這個方程不在定義ref變量的模板內(nèi),而在被引用的模板內(nèi)。ref型變量的特點ref變量和var變量都是系統(tǒng)變量,對于114ref型變量的特點(續(xù))ref變量的定義通常在模板頭中。refunitpnameCCVS模板的引用方法:cvt.1i(v.1)ab=1kv.1cd=5v模板是SABER庫中的模板,而i是其作為var變量的分支電流。從這個引用中可以看到,ref變量的賦值有兩部分,一個是模板的實例名,另一個是模板實例中的through變量名。ref型變量的特點(續(xù))ref變量的定義通常在模板頭中。115CCVS模板方程段的特點在本模板的方程段中添加了一個方程來求解系統(tǒng)變量,這個系統(tǒng)變量是在模板體中設(shè)置的,其設(shè)置的原因與恒電壓源的情況相同。CCVS模板方程段的特點在本模板的方程段中添加了一個方程來求116互感器件模板的使用inductor.l1p:p1m:m1=ind=1inductor.l2p:p2m:m2=ind=2mutind.1i1:il(inductor.l1)i2:il(inductor.l2)=\m=0.98*sqrt(ind(inductor.l1)*ind(inductor.l2))互感器件模板的使用inductor.l1p:p1m:m1117互感器件模板templatemutindi1i2=mrefii1,i2numberm{equations{i1-=d_by_dt(m*i2)i2-=d_by_dt(m*i1)}}在本模板中,沒有確定電流i1和i2,在這個模板中的i1和i2都是引入量,求這兩個量的方程分別在電感模板中方程段il:v(p)-v(m)=_by_dt(ind*i)在本模板的方程段中定義了變量i1和i2的關(guān)系?;ジ衅骷0錿emplatemutindi1i2=118CCVS模板和互感模板的區(qū)別這兩個模板的相同點就是這兩個模板都用了ref型變量,從這兩個模板中可以體會到ref變量的使用。這兩個模板的不同點就是在方程段中,CCVS模板在方程中沒有方程來描述ref變量,但在互感模板中的方程段中的方程就描述了兩個ref變量間的關(guān)系。無論在方程段中是否有方程來描述ref變量,但是該方程決不是求解ref變量,ref變量在本模板中不能求解,它的解因該在被引用的模板中。CCVS模板和互感模板的區(qū)別這兩個模板的相同點就是這兩個模板119電容模板elementtemplatecapacitor_1pm=cap,icelectricalp,mnumbercap,ic=undef{valqqcvalvvcvalues{vc=v(p)-v(m)#voltageacrosscap.qc=vc*cap#chargestoredincap.}control_section{initial_condition(vc,ic)}equations{i(p->m)+=d_by_dt(qc)#currentthroughcap.}}電容模板elementtemplatecapacitor120電容模板的特點在模板定義中使用的是elementtemplate而不是template,這說明這個模板內(nèi)部節(jié)點可見。在頭說明中添加了一個量ic,這個量描述的是電容初始狀況。在頭說明還用了一個數(shù)字就是undef,這在SABER仿真器中是一個數(shù),這個數(shù)可以對變量賦值,在本模板中它對ic賦值。它可以用在條件語句中,但是這個數(shù)不能計算。ic=undef表明如果沒有其它值賦值的情況下,電容初始狀況可以忽略不計。電容模板的特點在模板定義中使用的是elementtempl121電容模板的特點(續(xù)1)在建立實際系統(tǒng)時常常使用value段,這主要是因為:定義一種變量,val型變量,這種變量主要好處就是可以通過extract指令來提取,這樣在不增加仿真時間的情況下可以獲得更多的信息。一個val變量通常作為中間變量。而val變量的賦值就在value段中。調(diào)用foreign例程和噪聲源的定義通常都是在這段。value段既是一個程序段,也是一個說明段。作為程序段,在執(zhí)行該段程序時是從上到下的順序,因此在編程時引用的變量一定要在前面定義;作為一個說明段,仿真認為需要該變量時才會執(zhí)行該段對應(yīng)的語句。電容模板的特點(續(xù)1)在建立實際系統(tǒng)時常常使用value段,122電容模板的特點(續(xù)2)電容模板的另一個特點就是在仿真完成后需要提取一些變量,為仿真提供更多的信息。在仿真結(jié)束后,本模板可以提供電容兩端的電壓和電容儲存的電荷,這兩個量可以通過extract命令來提取,也可以在siglist中設(shè)置。因此在Value中定義了兩個val變量。電容模板的特點(續(xù)2)電容模板的另一個特點就是在仿真完成后需123Value段的特點在value段中可以包括賦值語句和條件語句,賦值語句的格式為:variable=expressionvalue段既是一個順序段,也是一個說明段。作為程序段,在執(zhí)行該段程序時是從上到下的順序,因此在編程時引用的變量一定要在前面定義;作為一個說明段,仿真認為需要該變量時才會執(zhí)行該段對應(yīng)的語句。

value段的關(guān)鍵詞是value.Value段的特點在value段中可以包括賦值語句和條件語句124Value段的特點(續(xù))只有仿真器需要提取相關(guān)變量時才會執(zhí)行Value段;當(dāng)方程段中需要Value段中的變量時才會執(zhí)行Value段。如果不需要時,模板中的Value段是不會被執(zhí)行的。因此在模板程序中編寫Value段不會增加仿真時間(在提供相同信息的情況下),但是如果在需要的話,模板程序可以提供更多的信息。Value段的特點(續(xù))只有仿真器需要提取相關(guān)變量時才會執(zhí)行125val變量的定義val變量必須為局部變量,即val變量必須在程序的模板體中定義。valunitname[,name,name,...]valqqcvalvvval型變量必須在value段中賦值。如果模板為unstructured,則必須在模板體中賦值。val變量的定義val變量必須為局部變量,即val變量必須126控制段控制段是為仿真器提供仿真系統(tǒng)的系統(tǒng)信息而不是仿真系統(tǒng)中元件的信息,控制段的關(guān)鍵詞是control_section,在關(guān)鍵詞后接{}。在本模板中,使用了initial_condition(vc,ic),它確定的是系統(tǒng)仿真時的電容初始條件是端電壓為vc??刂贫慰刂贫问菫榉抡嫫魈峁┓抡嫦到y(tǒng)的系統(tǒng)信息而不是仿真系統(tǒng)中127initial_condition的使用在一些模板中,需要確定其初始條件,確定初始條件通常都是在控制段中。initial_condition(variable,value)其中variable為需要確定初始條件的系統(tǒng)變量或系統(tǒng)變量的差,value為初始條件的值。initial_condition的使用在一些模板中,需要確128多類型電壓源下面將建立一個電壓源模板,該模板有如下功能:1)提供恒壓源在作直流分析和時域分析2)在作時域分析時電壓源提供一個指數(shù)函數(shù)的電壓波形。3)在作小信號AC分析時,它可以作為一個頻域信號。這個電壓源模擬了三種不同的輸出函數(shù)。多類型電壓源下面將建立一個電壓源模板,該模板有如下功能:129多類型電壓源模板1elementtemplatevsource_1pm=supply,tran,ac2electricalp,m#headerdeclarations3numbersupply=045struc{#startoftranstructure6numberv1=0,#initialvoltage7v2=0,#voltageattime=inf8tau=0.000001#timeconstant9}tran=()#endoftranstructure1011struc{#startofacstructure12numbermag=0,#ACmagnitude13phase=0#ACphase14}ac=()#endofacstructure//////////////////////////////////////////////////////////////////////////////////////////////////15{#starttemplatebody16variis#localdeclarations17valvvs組合數(shù)簡單數(shù)多類型電壓源模板1elementtemplatevso130多類型電壓源模板(續(xù))values{19if(dc_domain|time_domain){#Iflargesignal20if((tran->v1~=0|tran->v2~=0)&tran->tau>0){21#Ifwaveformisdefined22vs=tran->v1+(tran->v2-tran->v1)*(1-exp(-time/tran->tau))23}#sourcevoltage=waveform24#atcurrenttime25else{#otherwise26vs=supply#sourcevoltage=supply27}28}29elseif(freq_mag){#orifsourceisacmagnitude30vs=ac->mag#sourcevoltage=magnitude31}32elseif(freq_phase){#orifsourceisacphase33vs=ac->phase#sourcevoltage=phase34}模板體結(jié)構(gòu)V段的作用方程段多類型電壓源模板(續(xù))values{模板體結(jié)構(gòu)V段的作用方131多類型電壓源模板的特點在模板頭說明中定義了一個supply變量,該變量在直流分析或時域分析時提供恒壓源。在頭說明中,定義了兩個結(jié)構(gòu)體,用于確定時域分析時的指數(shù)電壓源和頻域分析的激勵源。在結(jié)構(gòu)體中,使用了仿真器變量(simvar),在value段中使用了使用了條件判據(jù)。多類型電壓源模板的特點在模板頭說明中定義了一個supply變132MAST語言中的簡單數(shù)簡單數(shù)據(jù):簡單數(shù)據(jù)有三種類型,它們分別是number,enum,string。它們分別是數(shù)值型數(shù)據(jù),枚舉型數(shù)據(jù)和字符數(shù)據(jù)。數(shù)值型數(shù)據(jù):在MAST語言中,實數(shù)和整數(shù)都可以對數(shù)值型變量賦值,在使用是不區(qū)別。枚舉型數(shù)據(jù)的定義:對象的名字有有限個,而在一個時刻其中只有一個是正確的。字符數(shù)據(jù):這些數(shù)據(jù)就是有字符串組成,其內(nèi)容通常要用引號。數(shù)值枚舉字符電源MAST語言中的簡單數(shù)簡單數(shù)據(jù):簡單數(shù)據(jù)有三種類型,它們分別133MAST語言中的數(shù)值型數(shù)據(jù)數(shù)值型變量的定義:numberid1[=init],id2[=init]e.gnumbervcc=5,dc_input,rload=10k,cload如果上述數(shù)據(jù)是一個中的變量,則可以通過網(wǎng)表賦值,其賦值的方式分別為(argument),(templatename.refconnectionpoint=5,2.7,10k,47n)(templatename.refconnectionpoint=cload=47n,vcc=5,dc_input=2.7,rload=10k)返回MAST語言中的數(shù)值型數(shù)據(jù)數(shù)值型變量的定義:返回134MAST語言中的枚舉數(shù)enum{evalue[,evalue]}id[=[int1],[int2]]e.g.enum{_n,_p}bjt_type=_n如果定義的枚舉型數(shù)據(jù)為一個變量,則可以在網(wǎng)表中對該變量賦值(argument).templatename.refconnectionpoint=bjt_type=_n返回MAST語言中的枚舉數(shù)enum{evalue[,eval135MAST語言中的字符數(shù)字符數(shù)的定義stringid[[=init][,init]]stringcoretype=“iron”如果字符為一個變量,則其值可以通過網(wǎng)表賦值,其賦值方式為:templatename.refconnectionpoint=coretype=“iron”

返回MAST語言中的字符數(shù)字符數(shù)的定義返回136MAST語言中組合數(shù)據(jù)組合數(shù)據(jù):組合數(shù)據(jù)有兩種基本類型,一種是結(jié)構(gòu)數(shù)據(jù)(struc),另一種是聯(lián)合數(shù)據(jù)(union)。采用結(jié)構(gòu)數(shù)據(jù)的目的是把一些相關(guān)變量構(gòu)成一個整體,而采用聯(lián)合變量的目的是希望一個變量在不同的時候處理不同類型的信息。組合數(shù)據(jù)都由四個部分組成,關(guān)鍵詞、數(shù)據(jù)名、數(shù)據(jù)定義和數(shù)據(jù)對象的實體。但是聯(lián)合數(shù)據(jù)的每一個實體只有數(shù)據(jù)定義中的一個對象,而結(jié)構(gòu)數(shù)據(jù)則沒有這個特點。電源聯(lián)合結(jié)構(gòu)MAST語言中組合數(shù)據(jù)組合數(shù)據(jù):組合數(shù)據(jù)有兩種基本類型,一種137結(jié)構(gòu)體的定義結(jié)構(gòu)體是一種數(shù)據(jù)類型,其定義的方式為:struc[structurename]{member[member][...]}id[=initial_value][,id=initial_value,...]struc為定義結(jié)果體的關(guān)鍵詞,structurename為結(jié)構(gòu)體的名,member為結(jié)構(gòu)體成員,id為結(jié)構(gòu)體變量。由于本設(shè)計中描述指數(shù)輸出波形的函數(shù)為:Vout=V1+(V2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論