好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Saber-MAST-要点归纳(1).doc

15页
  • 卖家[上传人]:M****1
  • 文档编号:453572225
  • 上传时间:2022-09-14
  • 文档格式:DOC
  • 文档大小:255.50KB
  • / 15 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1. Saber MAST模型分类 MAST可以描述以下三类系统,每一类系统的模型写法各不相同 (1)连续模拟系统(continuous analog systems) 在仿真连续模拟系统时仿真器按照仿真时刻反复求解一系列代表仿真模型的微分方程此类系统的每一个节点(node)都包括两个系统变量(system variable),一个across量和一个through量,通常每个量都与一个单位(unit)关联,在cosmos scope中显示波形时可以显示相应单位以电气模型为例,每一个节点都包括一个across量(电压)和一个though量(电流),单位分别是V和A 连续模拟系统还包括液压系统和磁路系统 (2)事件驱动系统(event driven systems) 此类系统的典型代表是数字逻辑系统,仿真器只有在事件发生时(如输入量发生变化)才计算并更新各个输出此类系统的节点只包含一个无单位量 (3)数据流系统(data flow systems) 此类模型的典型代表是控制系统,和连续模拟系统类似,可以按照时域或频域仿真,但是严格区分输入量和输出量,节点只包含一个无单位量 2. MAST 基本概念 2.1 MAST template基本形式 MAST template 是用MAST语言描述一个仿真模型的基本单位。

      MAST template是按照特定的语法编写的纯文本文件,后缀是.sin MAST template的基本格式包括以下几个部分: (1) template header – 声明template的名称(reference),管脚(pin)和参数(argument) 基本形式如下: template TEMPLATE_NAME PIN1 [PIN2 PIN3…] = ARG1, [ARG2, ARG3 …] PIN_DECLARATION ARG_DECLARATION 容易看出template header由关键字template开始,后面紧跟template的名称,再接下来是管脚(pin)的名称,然后是一个等号(=),接下来是参数名、 值得注意的是等号左边的各个名称不需要用逗号(,)分隔,而等号右边必须用逗号分隔各个参数. (2) template header declaration – 对pin和argument类型的进行声明 MAST的所有变量在使用前都必须声明其类型第一行的模板参数声明以后是管脚的类型声明和参数类型声明.形式如下: PIN_TYPE PIN_NAME ARG_TYPE ARG_NAME 管脚(pin)的类型根据template的类型可以定义为electrical(电气模型)、input/output(控制系统模型)和state(数字系统模型)等。

      参数(argument)类型通常为无单位简单量number. 例2-1 理想电流源 template isource p m = is electrical p,m number is { equations { i(p->m) += is } } 对于参数较多较复杂的模型可以将参数分类,再将同一类的参数定义为一个结构(struct) (3) template body – 对模型的行为进行描述 结构化(structured)的模型包含本地变量声明(local variable declaration)和若干个段(section),各个段分别完成不同的任务 最重要的段是equations section,template在此段中对系统变量(system variable)赋值对于电气模型,需要赋值变量是节点电流;对于控制系统,是输出量 电气模型见例2-1 在连续模拟系统中equations section的任务在于给出用于求解通过模型管脚节点的through量的表达式,对于电气模型而言,即给出节点电流的表达式仿真器利用给出的节点电流的表达式代入每个节点的KCL方程,从而最终求出节点电压,节点电压即系统变量.对于电压源和电感则情况有所区别,此类模型的系统变量是电流而不是电压. 例2-1中i(p—>m)表示从节点p到节点m的电流。

      由于电路网络中可能有多个模型并联在相同节点,每个模型对节点电流的作用应该是使其增加相应值,所以对其赋值应该用+= 例2-2 控制系统的加法器 template adder in1 in2 out = k input in1 in2 output out number k { equations{ out = (in1+in2)*k } } 对于事件驱动型的数字系统,template body中描述输入输出关系的段不是equations section,而是when语句(when statement) 例2—3 逻辑与门 template and in1 in2 out = td state logic_4 in1 in2 out number td=0 { state logic_4 out_state when (event_on(in1) | event_on(in2)) { if ((in1==l4_1) & (in2==l4_1)) { out_state = l4_1 } else out_state = l4_0 if(driven(out)~=out_state) { schedule_event(time+td, out, out_state) } } } 其中template的管脚类型为state,数据类型是logic_4。

      when statement的语法为 when(CONDITION){ ……. } 其中CONDITION通常用带有特定参数的event_on()函数特定信号发生变化的事件,即当作为event_on()的参数的信号发生变化时CONDITION为真,执行when后面的语句 对数字管脚信号的幅值必须使用schedule_event()语句,这样才能将事件加入仿真器的事件队列,从而是输出信号改变以后触发下一级的模块schedule_event的参数如下: schedule_event(TIME, STATE_NAME, VALUE) 表示在指定时刻令指定名称的state变量变为给定的值time是仿真器提供的系统变量,表示当前仿真时刻 在例2—3中参数td反映输出信号发生变化所需的延迟时间.中间变量out_state用于与当前输出管脚状态比较,从而在输入发生变化后仅当输出也发生改变才触发事件 对本地局部变量的复制赋值直接用等号(=)2 MAST template变量声明 在一个template中除了作为模型节点的pin变量和设置参数argument变量以外,通常还必须在template body中声明若干本地变量。

      通常可以分为无单位局部变量、var/ref变量以及val变量. (1)无单位局部变量 – 不与单位关联,不具有实际物理意义,仅在模型内部有效 无单位量通常用作输入参数的中间变量,只可在parameter section中赋值通常声明为简单标量(scalar)类型number. 除了number、enum等标量类型,局部变量还可以声明为复合(composite)类型,如结构(struct)、数组(array)等 例2—4 可变电阻 template var_r p m = r_max, ratio electrical p, m number r_max, ratio { number r parameters{ if(ratio 〉 10 | ratio <= 0){ error(“% , ratio is not of the correct value.”, instance()) } else r = r_max *ratio; } equations{ i(p->m) = (v(p)—v(m) )/ r } } (2)var和ref变量 – 在template中声明的系统变量,在系统范围内有效 var变量通常作为equation section中的系统中间变量,用于作为through量(例如电流)不能直接由关系式表达的情况。

      var变量仅能在eqations section中赋值. 考虑理想电压源的情况,流过电压源的电流由外电路决定,而与模型内部无关,电流无法用内部表达式给出,所以必须引入var变量var变量的声明格式如下: var UNIT VAR_NAME 例2-5 理想电压源 template vsource p m = vs electrical p, m number vs { var i ivs equations { i(p—〉m) += ivs ivs: v(p) - v(m) = vs } } 本例中ivs是var变量,单位是i,表示从节点p流向节点m的电流.ivs: v(p) - v(m) = vs表示ivs的值由随后的关系式确定仅从此式中无法确定ivs,所以仿真器在保证此式成立的情况下根据总体电路来确定ivs 例 2-6 线性电感 template inductor p m = ind electrical p, m number ind { var i il equations { i(p->m) += il il: v(p) - v(m) = d_by_dt(ind*il) } } 本例中il表示电感电流,d_by_dt表示对时间求导数。

      由于MAST的表达式不支持积分运算,因此电感电流与电压的关系必须表示为电压是电流的对时间的导数,所以无法显式给出电流的表达式,故将电流声明为var变量 参看例2-1理想电流源 对于数字系统,与var变量类似的是state变量 ref变量也是系统变量,在系统范围有效,但是在一个template内部声明的ref变量表示在另一个template中声明的var变量 例2-7电流控制电压源 template cvt ci p m = k ref i ci electrical p, m number k { var i i equations { i(p->m) += i i: v(p)-v(m) += k*ci } } (3)val变量 – 本地有单位变量,仅在模型内部有效 val变量通常用作计算模型内部参数的中间变量,仅可在values section赋值.运行时仿真器将value section和equation section合并同时val变量在仿真结束后可以用exact命令提取到cosmos scope中观察. 例 2-8 线性电阻 template res p m = r electrical p, m number p { val p power val i i val v v values{ v = v(p,m) i = v / r p = v*i } equations{ i(p->m) += i } } 本例中i、v和p都可以用exact命令提取并观察. 2.3 MAST与C语言比较 MAST大部分语法形式与C语言相近,但也有很多区别如下: (1)每一行代码用回车换行,而不用分号。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.