天气: 小晴
心情: 小兴奋
1. While 语句 在Ports&Subsystem模块库中的While Iterator模块创建类似C语言的循环控制流。
While控制流语句中,在每个时间步上都要反复执行While Iterator Subsystem中的内容,即原子子系统中的内容,直到满足While Iterator模块指定的条件。
While子系统中所有模块会把每个迭代作为一个时间步进行处理,因此,在While子系统中,带有状态的模块的输出取决于上一时刻的输入,这种模块的输出反映了在While循环中上一次迭代的输入值,而不是上一个仿真时间步的输入值。
While Iterator模块
在对话框中的"While loop type"参数,可以选择不同的while或do-while循环类型
① do-while
只有一个输入:while的条件输入,它必须在子系统内提供。
在每个时间步内,While Iterator模块会执行一次子系统内所有模块,然后检查while条件输入是否为真,若为真,再执行,直到"Maximum number of iterations“参数值。
②while
两个输入:while条件输入和初始条件(IC)输入
初始条件(IC)信号必须由while子系统外提供。
如果IC输入为真,While Iterator模块会执行一次子系统内的所有模块,然后检查while条件输入(cond端口)是否为真,若为真,则While Iterator模块会再执行一次子系统内所有模块,直到”Maximum number of iterations". 若该变量为-1,则不限制重复次数。
通过While Iterator模块中"Show iteration number port"复选框,可以输出循环次数。
2.For语句
在Ports&Subsystems模块中的For Iterator Subsystem子系统模块可以实现C语言的For循环语句。
For Iterator模块(在For Iterator Subsystem中)允许用户指定循环变量的最大值,或从外部指定最大值,并为下一个循环值指定可选的外部源。如果不为下一个循环变量指定外部源,那么下一个循环值可由当前值+1来确定,即in=in+1
For Iterator 模块:
① States when starting 参数设置为reset,在每个时间步内的第一次循环之前将系统状态重新设置为初始值;参数设置为held,使得子系统从每个时间步内的最后一次循环到下一个时间步开始一直保持状态值不变。
② Iteration limit source参数用来设置循环变量:
若设置参数值为"internal",那么"Iteration limit"参数值将决定循环次数
若设置参数值为"external", 那么For Iterator模块上N端口中的输入信号将决定循环次数,循环变量的下一个值将从外部输入端口输入,这个值必须在For Iterator Subsystem子系统的外部资源
③Show iteration variable复选框 For Iterator模块会输出循环值
④Set next i(iteration variable) externally参数, For Iterator模块会显示一个附加输入,这个输入用来连接外部的循环变量,当前循环的输入值作为下一个循环的循环变量值。