0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SaberRD调用外部C程序仿真步骤

冬至子 来源:KINGBOL 作者:Nano 2023-12-06 14:17 次阅读

Saber不仅支持MAST语言和VHDL-AMS语言建立模型,也支持C语言建立器件模型,这对熟悉C语言编程的用户带来了很大的方便和实用。采用C语言建立的模型可以像用硬件语言建立的模型一样保存和使用。

使用C编译器,能够将源代码编译为Windows的动态链接库.dll文件或Linux的.so文件。Saber支持最新的C编译器,Windows10平台可支持Microsoft Visual Studio 2019 v16.4.5;Linux平台支持GUN GCC 9.2.0。

01

建模步骤

建模步骤

  1. ‍用MAST语言编写一个template,其实就是一个saber和外部程序的接口。可以用记事本编写,保存成*.sin文件。
  2. 采用C语言描述模型的行为特征,包括模型的端口及内部逻辑,该步骤建立了模型的源文件,后缀为.c的文件;
  3. 采用编译指令对C源文件进行编译,生成动态链接库文件,后缀为.dll。该步骤之前需要安装C编译器,如VS2019等;
  4. 在saber中新建一个symbol,跟上面的template建立连接,仿真的时候用的就是这个symbol,保存成*.ai_sym文件,对模型进行保存使用,也可以将模型添加到模型库中。

上述步骤的关键是动态链接库文件的生成,动态链接库文件是生成Saber模型的基础,是从C文件到Saber模型的桥梁。

02

具体操作:加法器ADD案例

1.MAST语言编写template

  • 声明该template 类型:element,电气型,并定义管脚名称
  • 声明管脚类型:electrical,并用逗号分隔
  • 花括号进入程序内容
  • foreign为外部程序引入
  • val定义全局变量
  • var定义局部变量
  • values定义vi1,vi2的值
  • vosum定义add和
  • equation为固定的方程格式
  • 电流i 从sum流向gnd ,每个模型对节点电流的作用应该是使其增加相应值,+=是赋值符号
  • 固定格式,表示i1的值由随后的关系式确定。

*.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编译器。编译器的版本位数需要和使用的Saber版本位数一致,使用的SaberRD64-T-2022.03版本,所以对应使用64位的编译器。

图片

  • 在命令提示符处键入编译命令“cd”,紧接输入*.c文件所在的文件夹路径
  • 进入文件夹之后键入>cl /LD 文件名称.c
  • 程序会自动进行编译生成*.dll文件

图片

  • 将输出一个名为ADD.dll 的文件,位于当前目录中

图片

4.生成模型

  • 将ADDER文件夹的所有文件复制到电路模型design的根目录下
  • 在saber中新建一个symbol,跟步骤一的template建立连接,仿真的时候用的就是这个symbol,保存成*.ai_sym文件,对模型进行保存、使用,也可以将模型添加到模型库中

图片

图片

5.仿真及结果

图片

  • 设置k为2.0

图片

  • 仿真可得与预想一致结果

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 仿真器
    +关注

    关注

    14

    文章

    1019

    浏览量

    83983
  • VHDL语言
    +关注

    关注

    1

    文章

    113

    浏览量

    18129
  • C语言
    +关注

    关注

    180

    文章

    7616

    浏览量

    138001
  • 加法器
    +关注

    关注

    6

    文章

    183

    浏览量

    30253
收藏 人收藏

    评论

    相关推荐

    SaberRD示例设计:三相230V交流转28V直流变换器

    随着对产品质量和可靠性要求的不断提高,仿真已成为产品开发过程中的关键步骤SaberRD 一直有助于为设计人员提供所有必要的功能,以最大限度地减少电路仿真工作。
    的头像 发表于 12-06 11:20 1781次阅读
    <b class='flag-5'>SaberRD</b>示例设计:三相230V交流转28V直流变换器

    SaberRD外部模型导入功能—IBIS TOOL

    SaberRD为工程师提供强有力的库支持,包含超过30000个模型
    的头像 发表于 12-06 17:15 1568次阅读
    <b class='flag-5'>SaberRD</b><b class='flag-5'>外部</b>模型导入功能—IBIS TOOL

    怎么用LabVIEW调用C语言程序

    本帖最后由 eehome 于 2013-1-5 10:10 编辑 小生有C语言程序,想用LabVIEW调用,但是不知道怎么调用,操作步骤
    发表于 12-25 21:07

    labview应用程序调用外部vi的问题

    说一下流程,就是一个主VI,使用“打开VI引用”来根据路径调用外部VI,执行外部VI的某些功能作用。1、在未生成应用程序时,不会报错。2、生成应用
    发表于 09-16 14:17

    两种数控仿真软件外部程序输入技巧浅析

    两种数控仿真软件外部程序输入技巧浅析
    发表于 02-25 08:38 1192次阅读
    两种数控<b class='flag-5'>仿真</b>软件<b class='flag-5'>外部</b><b class='flag-5'>程序</b>输入技巧浅析

    PID算法Matlab仿真程序C程序

    PID算法Matlab仿真程序C程序 有需要的看一看,不收积分。
    发表于 11-20 17:06 76次下载

    C#_调用外部dll

    自己感觉不错的一个调用动态链接库的教程。
    发表于 11-24 14:52 0次下载

    LabVIEW外部程序(C和matlab)接口相关资料

    LabVIEW外部程序(C和matlab)接口相关资料LabVIEW外部程序(C和matlab)
    发表于 08-22 15:24 0次下载

    如何在Quartus13.0中调用Modelsim详细的步骤说明

    本文档的主要内容详细介绍的是结合实例,通过图片及配套文字解说,分步骤详细介绍了Quartus13.0环境中调用Modelsim进行功能仿真
    发表于 07-01 08:00 10次下载
    如何在Quartus13.0中<b class='flag-5'>调用</b>Modelsim详细的<b class='flag-5'>步骤</b>说明

    Oracle外部例程-plsql调用com对象讲解

    Oracle外部例程-plsql调用com对象讲解(现代电源技术试卷西建大)-该文档为Oracle外部例程-plsql调用com对象讲解文档,是一份不错的参考文档,感兴趣的可以看看,,
    发表于 09-28 13:36 14次下载
    Oracle<b class='flag-5'>外部</b>例程-plsql<b class='flag-5'>调用</b>com对象讲解

    Oracle如何实现外部调用功能讲解

    Oracle如何实现外部调用功能讲解(直流稳压电源技术参数)-该文档为Oracle如何实现外部调用功能讲解文档,是一份不错的参考文档,感兴趣的可以看看,,,,,,,,,
    发表于 09-28 13:46 10次下载
    Oracle如何实现<b class='flag-5'>外部</b><b class='flag-5'>调用</b>功能讲解

    Oracle调用外部动态库的设置方法

    Oracle调用外部动态库的设置方法(电源技术及应用总结)-该文档为Oracle调用外部动态库的设置讲解文档,是一份不错的参考资料,感兴趣的可以先下载看看,,,,,,,,,,,,,
    发表于 09-28 13:57 12次下载
    Oracle<b class='flag-5'>调用</b><b class='flag-5'>外部</b>动态库的设置方法

    如何使用TSMaster调用外部DLL/LIB程序

    调用外部DLL/LIB程序在用户自定义开发过程中,常常会遇到需要调用外部DLL/LIB程序文件的
    的头像 发表于 08-16 09:36 1515次阅读
    如何使用TSMaster<b class='flag-5'>调用</b><b class='flag-5'>外部</b>DLL/LIB<b class='flag-5'>程序</b>

    Vivado调用Modelsim仿真

    Modelsim是十分常用的外部仿真工具,在Vivado中也可以调用Modelsim进行仿真,下面将介绍如何对vivado进行配置并调用Mo
    的头像 发表于 07-24 09:04 4004次阅读
    Vivado<b class='flag-5'>调用</b>Modelsim<b class='flag-5'>仿真</b>

    运行c程序的基本步骤

    运行C程序的基本步骤可以分为以下四个主要步骤:编写程序、编译程序、链接
    的头像 发表于 11-27 16:21 6143次阅读