返回介绍

17.7.6 或操作

发布于 2020-09-09 22:55:53 字数 2014 浏览 1115 评论 0 收藏 0

当希望两个操作数序列中至少有一个匹配的时候,我们可以使用or操作符。

sequence_expr ::=    // 引用自附录A.2.10
    ...
  | sequence_expr or sequence_expr

语法17-8 — or操作符语法(摘录自附录A)

or操作符的两个操作数均为序列。

对于下面的例子,如果操作数te1te2为表达式,那么这个例子在te1te2中至少有一个计算成“真”的任意时钟标记上匹配。

te1 or te2

图17-8演示了一个or操作的例子,其中te1te2为表达式。符合序列在时钟标记7和13处不会匹配,因为在这些时间标记上,无论te1还是te2都为“假”。在所有其它的时钟标记上符合序列都是匹配的,因为两个操作数中至少有一个可以被计算成“真”。

图17-8 — 两个序列的或操作

te1te2都是序列的时候,对于下面的序列:

te1 or te2

如果两个操作数序列中至少有一个匹配的时候上面的序列会匹配。te1或者te2的每一次匹配都会引起复合序列的一次匹配,并且符合序列匹配的结束时间与te1te2匹配的结束时间相同。换句话说,复合序列的匹配集合是te1匹配集合与te2匹配集合的联合。

下面的例子显示了一个具有or操作符的序列,其中的两个操作数都是序列。图17-9演示了这个例子。

(te1 ##2 te2) or (te3 ##2 te4 ##2 te5)

图17-9 — 两个序列的或操作(or)

在这个例子中,两个操作数序列为:(te1 ##2 te2)(te3 ##2 te4 ##2 te5)。第一个序列要求te1首先被计算成“真”,跟着是te2在两个时钟标记之后被计算成“真”。第二个序列要求te3被计算成“真”,跟着是te4在两个时钟标记之后被计算成“真”,然后是te5在两个时钟标记之后被计算成“真”。图17-9显示了时钟标记8处的计算尝试。第一个序列在时钟标记10处匹配,第二个序列在时钟标记12处匹配。所以复合序列的匹配就被识别出来。

在下面的例子中,第一个操作数序列具有一个串联操作符,其范围从1到5。

(te1 ##[1:5] te2) or (te3 ##2 te4 ##2 te5)

第一个操作数序列要求te1被计算成“真”,并且te2在1、2、3、4或5个时钟标记之后被计算成真。第二个操作数序列要求te3被计算成“真”,te4在两个时钟标记之后被计算成“真”,te5在另外两个时钟周期后被计算成“真”。复合序列在两个操作数中至少一个匹配的任意时钟标记上匹配。正如图17-10所显示的,对于时钟标记8处的尝试,第一个操作数序列在时钟标记9、10、11、12和13处匹配,而第二个操作书在时钟标记12处匹配。因此,复合序列在时钟标记9、10、11、13处的每一个上具有一次匹配,并在时钟标记12处具有两次匹配。

图17-10 — 两个序列的或(or)操作,包含一个时间范围

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文