0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SaberRD調(diào)用外部C程序仿真步驟

冬至子 ? 來(lái)源:KINGBOL ? 作者:Nano ? 2023-12-06 14:17 ? 次閱讀

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

建模步驟

建模步驟

  1. ?用MAST語(yǔ)言編寫(xiě)一個(gè)template,其實(shí)就是一個(gè)saber和外部程序的接口??梢杂糜浭卤揪帉?xiě),保存成*.sin文件。
  2. 采用C語(yǔ)言描述模型的行為特征,包括模型的端口及內(nèi)部邏輯,該步驟建立了模型的源文件,后綴為.c的文件;
  3. 采用編譯指令對(duì)C源文件進(jìn)行編譯,生成動(dòng)態(tài)鏈接庫(kù)文件,后綴為.dll。該步驟之前需要安裝C編譯器,如VS2019等;
  4. 在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é)果

圖片

  • 設(shè)置k為2.0

圖片

  • 仿真可得與預(yù)想一致結(jié)果

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 仿真器
    +關(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
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    SaberRD示例設(shè)計(jì):三相230V交流轉(zhuǎn)28V直流變換器

    隨著對(duì)產(chǎn)品質(zhì)量和可靠性要求的不斷提高,仿真已成為產(chǎn)品開(kāi)發(fā)過(guò)程中的關(guān)鍵步驟SaberRD 一直有助于為設(shè)計(jì)人員提供所有必要的功能,以最大限度地減少電路仿真工作。
    的頭像 發(fā)表于 12-06 11:20 ?1457次閱讀
    <b class='flag-5'>SaberRD</b>示例設(shè)計(jì):三相230V交流轉(zhuǎn)28V直流變換器

    SaberRD外部模型導(dǎo)入功能—IBIS TOOL

    SaberRD為工程師提供強(qiáng)有力的庫(kù)支持,包含超過(guò)30000個(gè)模型
    的頭像 發(fā)表于 12-06 17:15 ?1226次閱讀
    <b class='flag-5'>SaberRD</b><b class='flag-5'>外部</b>模型導(dǎo)入功能—IBIS TOOL

    怎么用LabVIEW調(diào)用C語(yǔ)言程序

    本帖最后由 eehome 于 2013-1-5 10:10 編輯 小生有C語(yǔ)言程序,想用LabVIEW調(diào)用,但是不知道怎么調(diào)用,操作步驟
    發(fā)表于 12-25 21:07

    labview應(yīng)用程序調(diào)用外部vi的問(wèn)題

    說(shuō)一下流程,就是一個(gè)主VI,使用“打開(kāi)VI引用”來(lái)根據(jù)路徑調(diào)用外部VI,執(zhí)行外部VI的某些功能作用。1、在未生成應(yīng)用程序時(shí),不會(huì)報(bào)錯(cuò)。2、生成應(yīng)用
    發(fā)表于 09-16 14:17

    兩種數(shù)控仿真軟件外部程序輸入技巧淺析

    兩種數(shù)控仿真軟件外部程序輸入技巧淺析
    發(fā)表于 02-25 08:38 ?1174次閱讀
    兩種數(shù)控<b class='flag-5'>仿真</b>軟件<b class='flag-5'>外部</b><b class='flag-5'>程序</b>輸入技巧淺析

    PID算法Matlab仿真程序C程序

    PID算法Matlab仿真程序C程序 有需要的看一看,不收積分。
    發(fā)表于 11-20 17:06 ?76次下載

    C#_調(diào)用外部dll

    自己感覺(jué)不錯(cuò)的一個(gè)調(diào)用動(dòng)態(tài)鏈接庫(kù)的教程。
    發(fā)表于 11-24 14:52 ?0次下載

    LabVIEW外部程序(C和matlab)接口相關(guān)資料

    LabVIEW外部程序(C和matlab)接口相關(guān)資料LabVIEW外部程序(C和matlab)
    發(fā)表于 08-22 15:24 ?0次下載

    如何在Quartus13.0中調(diào)用Modelsim詳細(xì)的步驟說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是結(jié)合實(shí)例,通過(guò)圖片及配套文字解說(shuō),分步驟詳細(xì)介紹了Quartus13.0環(huán)境中調(diào)用Modelsim進(jìn)行功能仿真。
    發(fā)表于 07-01 08:00 ?8次下載
    如何在Quartus13.0中<b class='flag-5'>調(diào)用</b>Modelsim詳細(xì)的<b class='flag-5'>步驟</b>說(shuō)明

    Oracle外部例程-plsql調(diào)用com對(duì)象講解

    Oracle外部例程-plsql調(diào)用com對(duì)象講解(現(xiàn)代電源技術(shù)試卷西建大)-該文檔為Oracle外部例程-plsql調(diào)用com對(duì)象講解文檔,是一份不錯(cuò)的參考文檔,感興趣的可以看看,,
    發(fā)表于 09-28 13:36 ?14次下載
    Oracle<b class='flag-5'>外部</b>例程-plsql<b class='flag-5'>調(diào)用</b>com對(duì)象講解

    Oracle如何實(shí)現(xiàn)外部調(diào)用功能講解

    Oracle如何實(shí)現(xiàn)外部調(diào)用功能講解(直流穩(wěn)壓電源技術(shù)參數(shù))-該文檔為Oracle如何實(shí)現(xiàn)外部調(diào)用功能講解文檔,是一份不錯(cuò)的參考文檔,感興趣的可以看看,,,,,,,,,
    發(fā)表于 09-28 13:46 ?10次下載
    Oracle如何實(shí)現(xiàn)<b class='flag-5'>外部</b><b class='flag-5'>調(diào)用</b>功能講解

    Oracle調(diào)用外部動(dòng)態(tài)庫(kù)的設(shè)置方法

    Oracle調(diào)用外部動(dòng)態(tài)庫(kù)的設(shè)置方法(電源技術(shù)及應(yīng)用總結(jié))-該文檔為Oracle調(diào)用外部動(dòng)態(tài)庫(kù)的設(shè)置講解文檔,是一份不錯(cuò)的參考資料,感興趣的可以先下載看看,,,,,,,,,,,,,
    發(fā)表于 09-28 13:57 ?12次下載
    Oracle<b class='flag-5'>調(diào)用</b><b class='flag-5'>外部</b>動(dòng)態(tài)庫(kù)的設(shè)置方法

    如何使用TSMaster調(diào)用外部DLL/LIB程序

    調(diào)用外部DLL/LIB程序在用戶(hù)自定義開(kāi)發(fā)過(guò)程中,常常會(huì)遇到需要調(diào)用外部DLL/LIB程序文件的
    的頭像 發(fā)表于 08-16 09:36 ?1265次閱讀
    如何使用TSMaster<b class='flag-5'>調(diào)用</b><b class='flag-5'>外部</b>DLL/LIB<b class='flag-5'>程序</b>

    Vivado調(diào)用Modelsim仿真

    Modelsim是十分常用的外部仿真工具,在Vivado中也可以調(diào)用Modelsim進(jìn)行仿真,下面將介紹如何對(duì)vivado進(jìn)行配置并調(diào)用Mo
    的頭像 發(fā)表于 07-24 09:04 ?3452次閱讀
    Vivado<b class='flag-5'>調(diào)用</b>Modelsim<b class='flag-5'>仿真</b>

    運(yùn)行c程序的基本步驟

    運(yùn)行C程序的基本步驟可以分為以下四個(gè)主要步驟:編寫(xiě)程序、編譯程序、鏈接
    的頭像 發(fā)表于 11-27 16:21 ?5297次閱讀