在上一讲我们介绍了Trigger Expression可以做简单的与或操作。实际上TriggerExpression可以做更加丰富的语法描述,以利于我们更精确的捕捉特定情况下的信号状态。下面我们先介绍一下TriggerExpression都支持哪些语法:
与操作&:
顾名思义,该TE的表达式表示当两个条件同时满足的时候触发信号捕捉。如
TU1 & TU2
表示当TU1和TU2的条件同时满足的时候开始抓取信号。
或操作|:
当两个条件有一个满足的时候触发信号捕捉。如
TU1 | TU2
表示当TU1和TU2两个条件有任意一个条件满足的时候开始抓取信号。
异或^:
当两个条件一个满足同时另一个不满足的时候触发信号捕捉。如
TU1 ^ TU2
表示当TU1和TU2有且只有一个条件满足的时候开始抓取信号。
顺序表达式THEN:
当一个条件成立后,然后等待第二个条件成立的时候开始抓取信号。如:
TU1 THEN TU2
表示当TU1成立,等待TU2成立的时候开始抓取信号。
顺序表达式NEXT:
NEXT与THEN有些类似。不同之处在于NEXT要求第二个条件必须在第一个条件满足后的下一个周期满足才可以抓取信号。如:
TU1 NEXT TU2
表示当TU1成立,且下一个采样时钟的周期TU2也满足开始抓取信号。
计数表达式 #:
设置条件满足的次数做为触发信号,如:
TU1 #2
表示当TU1满足2次的时候才开始抓取信号。
TU1 THEN TU2 #2
当TU1成立,然后出现两次TU2的时候开始抓取信号。
连续计数表达式##:
##与#有些类似,不同之处在于##要求必须是连续出现的,中间不能出现中断。如:
TU1 ##5 THEN TU2
表示TU1必须连续5个采样周期保持为有效,然后判断TU2是否有效来决定是否开始抓取信号。
可以看到,触发表达式可以有很复杂的形式,用来跟踪实际逻辑运行中可能出现的复杂的情况来抓取信号。后面我们会做一些例子看看这些表达式是如何工作的。同时需要注意的是,触发表达式对大小写是敏感的,注意设置TE的时候不要犯这个低级错误。
硬禾小帮手 - 硬件工程师的设计助手
硬禾学堂 - 硬件工程师的在线学习平台