Saber不僅支持MAST語(yǔ)言和VHDL-AMS語(yǔ)言建立模型,也支持C語(yǔ)言建立器件模型,這對(duì)熟悉C語(yǔ)言編程的用戶(hù)帶來(lái)了很大的方便和實(shí)用。采用C語(yǔ)言建立的模型可以像用硬件語(yǔ)言建立的模型一樣保存和使用。
使用C編譯器,能夠?qū)⒃创a編譯為Windows的動(dòng)態(tài)鏈接庫(kù).dll文件或Linux的.so文件。Saber支持最新的C編譯器,Windows10平臺(tái)可支持Microsoft Visual Studio 2019 v16.4.5;Linux平臺(tái)支持GUN GCC 9.2.0。
01
建模步驟
建模步驟
- ?用MAST語(yǔ)言編寫(xiě)一個(gè)template,其實(shí)就是一個(gè)saber和外部程序的接口??梢杂糜浭卤揪帉?xiě),保存成*.sin文件。
- 采用C語(yǔ)言描述模型的行為特征,包括模型的端口及內(nèi)部邏輯,該步驟建立了模型的源文件,后綴為.c的文件;
- 采用編譯指令對(duì)C源文件進(jìn)行編譯,生成動(dòng)態(tài)鏈接庫(kù)文件,后綴為.dll。該步驟之前需要安裝C編譯器,如VS2019等;
- 在saber中新建一個(gè)symbol,跟上面的template建立連接,仿真的時(shí)候用的就是這個(gè)symbol,保存成*.ai_sym文件,對(duì)模型進(jìn)行保存使用,也可以將模型添加到模型庫(kù)中。
上述步驟的關(guān)鍵是動(dòng)態(tài)鏈接庫(kù)文件的生成,動(dòng)態(tài)鏈接庫(kù)文件是生成Saber模型的基礎(chǔ),是從C文件到Saber模型的橋梁。
02
具體操作:加法器ADD案例
1.MAST語(yǔ)言編寫(xiě)template
- 聲明該template 類(lèi)型:element,電氣型,并定義管腳名稱(chēng)
- 聲明管腳類(lèi)型:electrical,并用逗號(hào)分隔
- 花括號(hào)進(jìn)入程序內(nèi)容
- foreign為外部程序引入
- val定義全局變量
- var定義局部變量
- values定義vi1,vi2的值
- vosum定義add和
- equation為固定的方程格式
- 電流i 從sum流向gnd ,每個(gè)模型對(duì)節(jié)點(diǎn)電流的作用應(yīng)該是使其增加相應(yīng)值,+=是賦值符號(hào)
- 固定格式,表示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
}
注:文件名稱(chēng)和程序名稱(chēng)一致,否則無(wú)法識(shí)別;
并將記事本的*.txt格式改為*.sin。
2.外部程序.c文件
- 灰色字體為頭文件固定格式
- 花括號(hào)進(jìn)入c語(yǔ)言程序,依照c語(yǔ)言邏輯編寫(xiě)程序
*.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;
}
注:文件名稱(chēng)和程序名稱(chēng)一致,否則無(wú)法識(shí)別;
并將記事本的*.txt格式改為*.c。
3.生成.dll文件***
- 確保你可以從命令行訪問(wèn)C編譯器。編譯器的版本位數(shù)需要和使用的Saber版本位數(shù)一致,使用的SaberRD64-T-2022.03版本,所以對(duì)應(yīng)使用64位的編譯器。
- 在命令提示符處鍵入編譯命令“cd”,緊接輸入*.c文件所在的文件夾路徑
- 進(jìn)入文件夾之后鍵入>cl /LD 文件名稱(chēng).c
- 程序會(huì)自動(dòng)進(jìn)行編譯生成*.dll文件
- 將輸出一個(gè)名為ADD.dll 的文件,位于當(dāng)前目錄中
4.生成模型
- 將ADDER文件夾的所有文件復(fù)制到電路模型design的根目錄下
- 在saber中新建一個(gè)symbol,跟步驟一的template建立連接,仿真的時(shí)候用的就是這個(gè)symbol,保存成*.ai_sym文件,對(duì)模型進(jìn)行保存、使用,也可以將模型添加到模型庫(kù)中
5.仿真及結(jié)果
- 將模型加載到design進(jìn)行電路仿真測(cè)試
- 設(shè)置k為2.0
- 仿真可得與預(yù)想一致結(jié)果
-
仿真器
+關(guān)注
關(guān)注
14文章
1014瀏覽量
83591 -
VHDL語(yǔ)言
+關(guān)注
關(guān)注
1文章
113瀏覽量
17974 -
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7595瀏覽量
135880 -
加法器
+關(guān)注
關(guān)注
6文章
183瀏覽量
30062
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論