您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 电气技术 > 数字器件的MAST模型
数字器件的MAST模型模拟器件模型的仿真特点•在SABER中很多时域器件模型都是模拟器件,即在作时域分析时的时间变化是连续的,但是在仿真时也是将连续函数离散化,其离散点就是仿真的步长。在通常情况下,仿真器的步长是根据仿真精度来确定的。也可以使用仿真器变量来控制仿真的步长。数字器件模型的仿真特点•在SABER中,用MAST语言建立数字器件模型就是在模型中控制仿真器的下一个仿真点。数字器件状态的变化时刻及变化结果是比较关注的,而状态的变化过程是不太关注的。•在数字器件模型中最关键点就是在模板体中建立when段。数字器件模型数值的特点•数字器件模型在时间上是不连续的,在数值上也是离散的。在SABER中有两类类型提供数字器件的离散数字量。logic_4和logic_3。它们的值分别是:logic_0,logic_1,logic_x,logic_z。其中logic_x为不确定状态,而logic_z为高阻状态。•定义:statelogic_4cp1,cp2连接点特点状态转换、事件特点仿真过程特点返回初始化数字器件模型中常用术语和连接点的特点•true—false,HIGH—LOW,on—off•closed—open,1—0•在模拟器件中定义了一个连接点就等价地定义了一个量纲和一对变量(across变量和through变量),而在数字器件中定义的连接点就定义了量纲和状态(state),其连接点类型为state,它表示一组数字,与各个离散时刻连接起来。返回数字器件模型事件的特点•事件是数字器件端点在指定时刻从一个状态过渡到另一个状态,而这种过渡过程也是指定的。•建立的数字器件模型时,必须要在模板器件的端点指定事件,否则仿真器将无法进行仿真返回数字器件仿真过程的特点•SABER仿真器对数字器件的仿真是基于事件队列而不是基于事件步长,SABER仿真器根据设计需要对所有需要计算的数字模板的事件进行自动排序。而when段的执行完全依赖事件队列的事件,如果在事件队列中没有事件存在,则模板体中的when段将不能执行。When段常用函数初始化when段的特征•when段是在数字模型中常用的段,而在模拟器件模型中不用这个段。对于模拟器件模型的端点特征通常都是在方程段中进行描述,在方程段中的方程总是与var变量或pin-type型变量联系在一起的。在数字器件中的when段的作用与模拟器件方程段的作用相似,它也是来描述数字器件端点特征的。when段作用的特征•when段是一个操作段,该段的操作总是和时间联系在一起的,即在什么时候操作。它可以离散模拟信号,操作数字信号,测试模拟波形穿越门槛,确定触发事件,确定仿真器的时间等。when段的定义•when(condition){•statements•}•定义when段的关键词为when,条件将被监测,一旦条件满足就将执行函数体中的statements。但是,在when段中使用的条件总是和时间联系在一起的,在when段中的条件总有时间的概念。返回数字器件模型中常用函数•在数字模板中常用的概念是事件,其很多过程都是由事件触发的;而与事件相关的触发函数为schedule_event;handle;event_on;deschedule。其中前两个函数为事件设置函数,event_on为事件监视函数,deschedule函数为事件解除函数。•只有当对象设置为事件后,event_on和deschedule函数才可以用。事件设置函数事件监视函数事件解除函数返回到过程特点事件驱动函数•在事件驱动函数中shedule_event和handle函数的用法如下:•schedule_event(3u,out1,l4_0)•handle=schedule_event(3u,out1,l4_0)•上述函数就是在指定时刻对指定的变量进行赋值,函数中的第一个变量为指定时刻,第二个变量为指定变量,第三个变量为指定变量。上述第二函数返回了一个函数的句柄。事件驱动函数与普通赋值的区别•从上述叙述中可以看出,从表面上看事件驱动函数schedule_event就是一个赋值函数,只不过schedule_event与指定的时刻有关,其实,用事件驱动函数schedule_event赋值与普通的赋值函数有本质的区别。用schedule_event函数赋值是将对象设置进了event队列中。返回事件监视函数•event_on(state_var[,old_var])函数可以有两个变量,其中第二个变量为可选项。该函数中的state_var变量为被监视变量,当监视的对象事件发生时,该函数的返回值为1,同时将事件发生前state_var变量的值赋给old_var变量,否则该函数的返回值为0。该函数通常作为when段的条件使用,该函数的第二个变量也不常用。•when(event_on(out1))返回事件解除函数•deschedule函数用于将对象从事件队列中退出,但是在使用该函数时必须获得事件对象的句柄,因此在将对象设置进事件队列时,必须获得该对象的句柄。•handle=schedule_event(3u,out1,l4_0)•deschedule(handle)返回数字器件的初始化•由模拟器件组成的系统,在初始化时都是将所有的节点初始电压设置为0,将电容器设置为开路,将电感器设置为短路,然后通过直流分析求得系统的节点电压。•数字系统在初始化时首先将logic_4的节点值设置为logic_x,然后再检查是否有节点设置了不为logic_x的初始值,最后再作直流分析。数值特征数字器件内部变量的初始化•数字模板也经常使用局部变量,局部变量的类型也是state型变量,其量纲不一定是logic_4,初始化这些局部变量通常有两种方法,一种是在when段中初始化,它就是指定一个值,另一种方法就是在函数定义的时候初始化这个变量。•用第一种方法就是将对象放置在一个事件队列中,而用第二种方法就没有将对象放置在事件队列中。因此根据需要选择。模型小结数字器件模型小结•1数字器件连接点类型为state类型。•2数字器件模型中通常没有方程段,而描述端点特征的段通常是when段,当然在一个模板体中可能有多个when段。•3数字器件模型的仿真通常和仿真步长无关,其采用的是事件触发方式。•4数字器件的初始化必须是显式的,而模拟器件的初始化通常是隐式的。实例与门器件符号及其逻辑真值表与门器件的MAST模型•1templateandin1in2out=td•2statelogic_4in1,in2,out#stateconnectionpoints•3numbertd=0•4{•5statelogic_4out_state#internalstatedeclaration•6when(event_on(in1)|event_on(in2)){•7if((in1==l4_1)&(in2==l4_1)){#ANDlogic•8out_state=l4_1•9}•10elseout_state=l4_0•11•12if(driven(out)~=out_state){#updateANDgateoutput•13schedule_event(time+td,out,out_state)•14}•15}•16}模板头when段driven函数初始化时钟模板与门器件模型的头说明•数字器件模板的关键词是template,在数字器件的关键词不能使用elementtemplate•数字器件的连接点必须定义为state类型。需要注意的是只有数字器件才将器件的连接点定义为state。•模板头中的argument定义的是延时时间。返回函数模板体中的when段•whenstatement是数字模板中最基本函数段,在本段中主要是通过对列入事件队列中的对象事件的监视和赋值。在一个模板体中可以有多个whenstatement,whenstatement一般情况下在模板体中使用,但它也可以在网表中使用。•When(condition){•statements•}when段的执行过程•when段的执行过程是当条件满足时这些下面的statement,在when段中可以使用所有的仿真器变量、条件判据和MAST语言函数。返回driven函数的作用•在本模板中使用了以下判断•if(driven(out)~=out_state){•schedule_event(time+td,out,out_state)•}•该判断语句的功能与如下语句的功能相同•if(out~=out_state){•schedule_event(time+td,out,out_state)•}•但是当端点出现冲突的时候,driven函数将调用冲突解决机制。MAST语言中数字器件的冲突解决机制•当数字器件的端点受多个驱动作用的时候,就可能引起冲突。•SABER仿真器调用C语言写的一个模板,该模板叫l4cnfr。该模板的解决机制如下MAST语言中数字器件的冲突解决机制(1)•and.1in11in12out=td=10n•and.2in21in22out=td=10n•when(dc_init){•schedule_event(time,in11,l4_0)•schedule_event(time,in12,l4_0)•schedule_event(time,in21,l4_0)•schedule_event(time,in22,l4_0)•}•when(time_init){•schedule_event(1u,in11,l4_1)•schedule_event(2u,in12,l4_1)•schedule_event(3u,in21,l4_1)•schedule_event(4u,in22,l4_1)}MAST语言中数字器件的冲突解决机制(2)返回前一页模板的初始化•在本模板中,对模板中的变量没有使用初始化,这表明系统将对所有的连接点使用初始值为logic_x。返回时钟模块的MAST模型•1templateclockckout=freq,duty•2statelogic_4ckout•3numberfreq=0,#clockfrequency•4duty=0.5#clockdutycycle(timepulsed/period)•5{•6statenutick#internalwake-upstate•7•8numberton=0,#clockon-time•9toff=0#clockoff-time•10模板头时钟模块的MAST模型(1)•11parameters{#calculateoffandontime•12if(freq0){•13ton=duty/freq•14toff=1/freq-ton•15}•16}•17when(dc_init){•18schedule_event(time,ckout,l4_0)•19}•20#startclocktickingafterdelaytime•21when(time_init){•22if(freq0)schedule_event(time,tick,1)•23时钟模块的MAST模型(2)•24when(event_on(tick)){•25if(driven(ckout)==l4_0){•26#turnclockon(setto1)•27if(ton0){•28schedule_event(time,ckout,l4_1)•29schedule_event(time+ton,tick,1)•30}•31}•32else{#turnclockoff(setto0)•33if(toff0){•34schedule_event(time,ckout,l4_0)•35schedule_event(time+toff,tick,1)•36}when段1的特征when段2的特征模板头说明•1statelogic_4ckout该模板的连接点类型为state,说明该模板是数字型器件。且该模板只有一个输出端点。•2在该模
本文标题:数字器件的MAST模型
链接地址:https://www.777doc.com/doc-11861667 .html