Saber不僅支持MAST語言和VHDL-AMS語言建立模型,也支持C語言建立器件模型,這對熟悉C語言編程的用戶帶來了很大的方便和實用。采用C語言建立的模型可以像用硬件語言建立的模型一樣保存和使用。
使用C編譯器,能夠?qū)⒃创a編譯為Windows的動態(tài)鏈接庫.dll文件或Linux的.so文件。Saber支持最新的C編譯器,Windows10平臺可支持Microsoft Visual Studio 2019 v16.4.5;Linux平臺支持GUN GCC 9.2.0。
01
建模步驟
建模步驟
- ?用MAST語言編寫一個template,其實就是一個saber和外部程序的接口。可以用記事本編寫,保存成*.sin文件。
- 采用C語言描述模型的行為特征,包括模型的端口及內(nèi)部邏輯,該步驟建立了模型的源文件,后綴為.c的文件;
- 采用編譯指令對C源文件進行編譯,生成動態(tài)鏈接庫文件,后綴為.dll。該步驟之前需要安裝C編譯器,如VS2019等;
- 在saber中新建一個symbol,跟上面的template建立連接,仿真的時候用的就是這個symbol,保存成*.ai_sym文件,對模型進行保存使用,也可以將模型添加到模型庫中。
上述步驟的關(guān)鍵是動態(tài)鏈接庫文件的生成,動態(tài)鏈接庫文件是生成Saber模型的基礎(chǔ),是從C文件到Saber模型的橋梁。
02
具體操作:加法器ADD案例
1.MAST語言編寫template
- 聲明該template 類型:element,電氣型,并定義管腳名稱
- 聲明管腳類型:electrical,并用逗號分隔
- 花括號進入程序內(nèi)容
- foreign為外部程序引入
- val定義全局變量
- var定義局部變量
- values定義vi1,vi2的值
- vosum定義add和
- equation為固定的方程格式
- 電流i 從sum流向gnd ,每個模型對節(jié)點電流的作用應(yīng)該是使其增加相應(yīng)值,+=是賦值符號
- 固定格式,表示i1的值由隨后的關(guān)系式確定。
*.sin 文本:
template ADDER_1 in1 in2 out1 out2 = k
input nu in1,in2
output nu out1,out2
number k=1
{
foreign PWM
val nu a,b
a=PWM(k*in1,in2)
b=PWM(in1,k*in2)
out1=a
out2=b
}
注:文件名稱和程序名稱一致,否則無法識別;
并將記事本的*.txt格式改為*.sin。
2.外部程序.c文件
- 灰色字體為頭文件固定格式
- 花括號進入c語言程序,依照c語言邏輯編寫程序
*.c 文本:
_declspec(dllexport) void PWM
(in,nin,ifl,nifl,out,nout,ofl,nofl,undef,ier)
double in; / pointer to input parameter */
int nin; / number of input parameter */
int ifl; / not used here */
int nifl; / not used here */
double out; / pointer to output parameter */
int nout; / number of output parameter */
int ofl; / not used here */
int nofl; / not used here */
double undef; / not used here */
int ier; / not used here */
/* End of Saber header information */
{
double in1,in2,out1,out2;
in1=in[0];
in2=in[1];
out1=in1+in2;
out2=in1+in2;
out[0]=out1;
out[1]=out2;
}
注:文件名稱和程序名稱一致,否則無法識別;
并將記事本的*.txt格式改為*.c。
3.生成.dll文件***
- 確保你可以從命令行訪問C編譯器。編譯器的版本位數(shù)需要和使用的Saber版本位數(shù)一致,使用的SaberRD64-T-2022.03版本,所以對應(yīng)使用64位的編譯器。
- 在命令提示符處鍵入編譯命令“cd”,緊接輸入*.c文件所在的文件夾路徑
- 進入文件夾之后鍵入>cl /LD 文件名稱.c
- 程序會自動進行編譯生成*.dll文件
- 將輸出一個名為ADD.dll 的文件,位于當(dāng)前目錄中
4.生成模型
- 將ADDER文件夾的所有文件復(fù)制到電路模型design的根目錄下
- 在saber中新建一個symbol,跟步驟一的template建立連接,仿真的時候用的就是這個symbol,保存成*.ai_sym文件,對模型進行保存、使用,也可以將模型添加到模型庫中
5.仿真及結(jié)果
- 將模型加載到design進行電路仿真測試
- 設(shè)置k為2.0
- 仿真可得與預(yù)想一致結(jié)果
-
仿真器
+關(guān)注
關(guān)注
14文章
1016瀏覽量
83647 -
VHDL語言
+關(guān)注
關(guān)注
1文章
113瀏覽量
17988 -
C語言
+關(guān)注
關(guān)注
180文章
7601瀏覽量
136251 -
加法器
+關(guān)注
關(guān)注
6文章
183瀏覽量
30093
發(fā)布評論請先 登錄
相關(guān)推薦
評論