《数字器件的MAST模型.ppt》由会员分享,可在线阅读,更多相关《数字器件的MAST模型.ppt(34页珍藏版)》请在三一办公上搜索。
1、数字器件的MAST模型,模拟器件模型的仿真特点,在SABER中很多时域器件模型都是模拟器件,即在作时域分析时的时间变化是连续的,但是在仿真时也是将连续函数离散化,其离散点就是仿真的步长。在通常情况下,仿真器的步长是根据仿真精度来确定的。也可以使用仿真器变量来控制仿真的步长。,数字器件模型的仿真特点,在SABER中,用MAST语言建立数字器件模型就是在模型中控制仿真器的下一个仿真点。数字器件状态的变化时刻及变化结果是比较关注的,而状态的变化过程是不太关注的。在数字器件模型中最关键点就是在模板体中建立when段。,数字器件模型数值的特点,数字器件模型在时间上是不连续的,在数值上也是离散的。在SAB
2、ER中有两类类型提供数字器件的离散数字量。logic_4和logic_3。它们的值分别是:logic_0,logic_1,logic_x,logic_z。其中logic_x为不确定状态,而logic_z为高阻状态。定义:state logic_4 cp1,cp2,连接点特点,状态转换、事件特点,仿真过程特点,返回初始化,数字器件模型中常用术语和连接点的特点,truefalse,HIGHLOW,onoff closedopen,10在模拟器件中定义了一个连接点就等价地定义了一个量纲和一对变量(across变量和through变量),而在数字器件中定义的连接点就定义了量纲和状态(state),其连
3、接点类型为state,它表示一组数字,与各个离散时刻连接起来。,返回,数字器件模型事件的特点,事件是数字器件端点在指定时刻从一个状态过渡到另一个状态,而这种过渡过程也是指定的。建立的数字器件模型时,必须要在模板器件的端点指定事件,否则仿真器将无法进行仿真,返回,数字器件仿真过程的特点,SABER仿真器对数字器件的仿真是基于事件队列而不是基于事件步长,SABER仿真器根据设计需要对所有需要计算的数字模板的事件进行自动排序。而when段的执行完全依赖事件队列的事件,如果在事件队列中没有事件存在,则模板体中的when段将不能执行。,When段,常用函数,初始化,when段的特征,when段是在数字模
4、型中常用的段,而在模拟器件模型中不用这个段。对于模拟器件模型的端点特征通常都是在方程段中进行描述,在方程段中的方程总是与var变量或pin-type型变量联系在一起的。在数字器件中的when段的作用与模拟器件方程段的作用相似,它也是来描述数字器件端点特征的。,when段作用的特征,when段是一个操作段,该段的操作总是和时间联系在一起的,即在什么时候操作。它可以离散模拟信号,操作数字信号,测试模拟波形穿越门槛,确定触发事件,确定仿真器的时间等。,when段的定义,when(condition)statements 定义when段的关键词为when,条件将被监测,一旦条件满足就将执行函数体中的s
5、tatements。但是,在when段中使用的条件总是和时间联系在一起的,在when段中的条件总有时间的概念。,返回,数字器件模型中常用函数,在数字模板中常用的概念是事件,其很多过程都是由事件触发的;而与事件相关的触发函数为schedule_event;handle;event_on;deschedule。其中前两个函数为事件设置函数,event_on为事件监视函数,deschedule函数为事件解除函数。只有当对象设置为事件后,event_on和deschedule函数才可以用。,事件设置函数,事件监视函数,事件解除函数,返回到过程特点,事件驱动函数,在事件驱动函数中shedule_even
6、t和handle函数的用法如下:schedule_event(3u,out1,l4_0)handle=schedule_event(3u,out1,l4_0)上述函数就是在指定时刻对指定的变量进行赋值,函数中的第一个变量为指定时刻,第二个变量为指定变量,第三个变量为指定变量。上述第二函数返回了一个函数的句柄。,事件驱动函数与普通赋值的区别,从上述叙述中可以看出,从表面上看事件驱动函数schedule_event就是一个赋值函数,只不过schedule_event与指定的时刻有关,其实,用事件驱动函数schedule_event赋值与普通的赋值函数有本质的区别。用schedule_event函数
7、赋值是将对象设置进了event队列中。,返回,事件监视函数,event_on(state_var,old_var)函数可以有两个变量,其中第二个变量为可选项。该函数中的state_var变量为被监视变量,当监视的对象事件发生时,该函数的返回值为1,同时将事件发生前state_var变量的值赋给old_var变量,否则该函数的返回值为0。该函数通常作为when段的条件使用,该函数的第二个变量也不常用。when(event_on(out1),返回,事件解除函数,deschedule 函数用于将对象从事件队列中退出,但是在使用该函数时必须获得事件对象的句柄,因此在将对象设置进事件队列时,必须获得该对
8、象的句柄。handle=schedule_event(3u,out1,l4_0)deschedule(handle),返回,数字器件的初始化,由模拟器件组成的系统,在初始化时都是将所有的节点初始电压设置为0,将电容器设置为开路,将电感器设置为短路,然后通过直流分析求得系统的节点电压。数字系统在初始化时首先将logic_4的节点值设置为logic_x,然后再检查是否有节点设置了不为logic_x的初始值,最后再作直流分析。,数值特征,数字器件内部变量的初始化,数字模板也经常使用局部变量,局部变量的类型也是state型变量,其量纲不一定是logic_4,初始化这些局部变量通常有两种方法,一种是在w
9、hen段中初始化,它就是指定一个值,另一种方法就是在函数定义的时候初始化这个变量。用第一种方法就是将对象放置在一个事件队列中,而用第二种方法就没有将对象放置在事件队列中。因此根据需要选择。,模型小结,数字器件模型小结,1 数字器件连接点类型为state类型。2 数字器件模型中通常没有方程段,而描述端点特征的段通常是when段,当然在一个模板体中可能有多个when段。3 数字器件模型的仿真通常和仿真步长无关,其采用的是事件触发方式。4 数字器件的初始化必须是显式的,而模拟器件的初始化通常是隐式的。,实例,与门器件符号及其逻辑真值表,与门器件的MAST模型,1 template and in1 i
10、n2 out=td2 state logic_4 in1,in2,out#state connection points3 number td=04 5 state logic_4 out_state#internal state declaration6 when(event_on(in1)|event_on(in2)7 if(in1=l4_1)&(in2=l4_1)#AND logic8 out_state=l4_19 10 else out_state=l4_01112 if(driven(out)=out_state)#update AND gate output13 schedule
11、_event(time+td,out,out_state)14 15 16,模板头,when段,driven函数,初始化,时钟模板,与门器件模型的头说明,数字器件模板的关键词是template,在数字器件的关键词不能使用element template数字器件的连接点必须定义为state类型。需要注意的是只有数字器件才将器件的连接点定义为state。模板头中的argument定义的是延时时间。,返回,函数模板体中的when段,when statement 是数字模板中最基本函数段,在本段中主要是通过对列入事件队列中的对象事件的监视和赋值。在一个模板体中可以有多个when statement,w
12、hen statement 一般情况下在模板体中使用,但它也可以在网表中使用。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
13、_state)但是当端点出现冲突的时候,driven函数将调用冲突解决机制。,MAST语言中数字器件的冲突解决机制,当数字器件的端点受多个驱动作用的时候,就可能引起冲突。SABER仿真器调用C语言写的一个模板,该模板叫l4cnfr。该模板的解决机制如下,MAST语言中数字器件的冲突解决机制(1),and.1 in11 in12 out=td=10nand.2 in21 in22 out=td=10nwhen(dc_init)schedule_event(time,in11,l4_0)schedule_event(time,in12,l4_0)schedule_event(time,in21,l
14、4_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模型,1 template clock ckout=freq,duty2 stat
15、e logic_4 ckout3 number freq=0,#clock frequency4 duty=0.5#clock duty cycle(time pulsed/period)5 6 state nu tick#internal wake-up state78 number ton=0,#clock on-time9 toff=0#clock off-time10,模板头,时钟模块的MAST模型(1),11 parameters#calculate off and on time12 if(freq 0)13 ton=duty/freq14 toff=1/freq-ton15 16
16、 17 when(dc_init)18 schedule_event(time,ckout,l4_0)19 20#start clock ticking after delay time21 when(time_init)22 if(freq 0)schedule_event(time,tick,1)23,时钟模块的MAST模型(2),24 when(event_on(tick)25 if(driven(ckout)=l4_0)26#turn clock on(set to 1)27 if(ton 0)28 schedule_event(time,ckout,l4_1)29 schedule_
17、event(time+ton,tick,1)30 31 32 else#turn clock off(set to 0)33 if(toff 0)34 schedule_event(time,ckout,l4_0)35 schedule_event(time+toff,tick,1)36,when段1的特征,when段2的特征,模板头说明,1 state logic_4 ckout 该模板的连接点类型为state,说明该模板是数字型器件。且该模板只有一个输出端点。2 在该模板的头说明中定义了两个数值型变量,一个是占空比,另一个是时钟频率。,返回模板,when 段的数目和第一个when的作用,在
18、这个模块的模板体中有三个when段,但这三个when段的作用不同。第一个when段中使用了仿真器变量dc_init,它表面在开始作直流分析执行这段程序,在其它时候不执行这段程序,这段程序的作用是初始化ckout变量,将ckout变量的值赋为1。,返回第一when段,第二、三个when段的作用,在第二个when段中,使用了仿真器变量time_init,该变量在时域仿真开始时为1,该when段的作用是在时域仿真开始时初始化tick变量。time_init变量在重新进行时域仿真分析时该变量的值为0。(使用了alter或continuous命令)在第三个when段中就构成了时钟脉冲。,返回when 段,