文本阅读:
3.8对控制流的操作63
还可以在控制流上进行4种类型的操作,从而获得另外的控制流。对控制流的这些操作在音频信号上并没有对应的操作。这些操作的存在也在很大程度上解释了为什么引入一整套与音频信号并行的控制结构是有用的。输入。:延时时间第一类是各种延时(Delay)操作,它
们根据一个控制流对时间值进行偏置。在实
时系统中,延时不可能取负值。一个控制流
可以被延时一个常量,也可以在每个事件上
使用不同的延时量。
时间
在实际使用中有2种不同类型的延时:
简单(Simple)与复合(Compound)。图3.10TTT(输入)
给出了两者的示例。作用在控制流上的简单延时为每个事件预先制定其在未来到达的时刻
表。不过,如果又有一个事件在第一个事件被不)输出之前到达的话,那么第一个事件将会被遗(b)弃,第二个事件将被输出。在复合延时中,输。
入中的每个事件都会产生一个输出,即使在输出出现之前有其他输入到达也是如此。/31】在一个控制流上进行延时操作:(o)框图;
控制流上的第2类操作是合并(B)控制流上简单延时的效果;(c)复合延时的效果(merging):将两个控制流中的所有事件合并成一个新的控制流。图3.11a所示为这种操作以及其余类型的操作是如何用框图表示的。
图3.11b所示为合并两个流的结果。两个流可能在同一时刻包含一个以上的事件。如果被合并的两个流在同一时刻包含多个事件,那么被合并的流将以一个预先指定的顺序同时包含这些事件。
控制流上的第3类操作是删减(Pruning)。删减一个控制流意味着监视相关的数据并仅让某些元素通过。在图3.11c所示的例子中,各个事件(每个事件都有一个相关的编号)仅在其编号为正时才能通过。
最后一个概念是让一个控制流与另外一个控制流重同步(Resynchronizing),如图3.11d所示。一个控制流(源)提供的数值被放在第2个控制流(同步)的时间序列上。送往输出的数值总是源控制流中最新的取值。请注意,源控制流中的任意一个事件都可能出现不止一次(如图所示),而另一方面,它也可能根本不出现。
我们仍旧不得不考虑当2个流在同一时刻都包含一个事件的情况。应该把同步控制流看成是出现在源控制流之前(这样输出将获得源控制流中的前一个事件)么?或者把源事件看成是先发生的,那么其取值应该在同一个时刻被输出吗?如何消除这种歧义是一个设计问