信号边缘跟踪运算符
信号变化和前面是什么
在数字系统中,信号通常由逻辑值表示-逻辑0(假)*和*逻辑1(真)。 这种情况下的变化是这两种状态之间的转换。
在连续系统中(例如,使用模拟信号),值可以是任何数字,并且信号*越过某个阈值*的时刻被认为是重要的—特别是值零。
信号变化称为*边缘*。 主要有两种类型:
-
上升沿-通过`0`从较低值到较高值的信号转换(例如,从`-1`到'0.5'`;
-
下降沿-信号通过`0`从较高值到较低值(例如,从`1`到`-0.2`)的转换。
运算符操作的逻辑
每个运算符("上升`,"下降","交叉")都是一个表达式,仅当信号以某种方式变化时才返回值"true"。 其余的时间是’假'。
让我们考虑每个操作员的操作条件。
"上升(x)"运算符
当信号"x"从下到上(上升)越过零时,"上升(x)"运算符返回"真"。
这种情况发生在两种情况下:
-
`X’的先前值为负,而当前值已变为零或正。;
-
`X’的前一个值为零,当前值已变为正。
因此,'上升(x)'是正方向过渡的检测器。
例如,让变量’x`从'-0’改变。2` → 0.1
. 在这种情况下,"上升(x)"运算符将返回"真",因为从下到上有一个零交叉。 如果’x`从`0.1`变为'-0.1',那么*运算符将不起作用*。
类似地,'rising(x-0.5)`跟踪`x'*从下到上穿过值0.5*的时刻。 例如:
-
'x’是'0.4',变成'0'。6`→'上升(x-0.5)'将返回’真`;
-
'x’为'0.6`,变为`0.4`→'rising(x-0.5)`返回’false'。
"下降(x)"运算符
当信号`x`从上到下穿过零时,`falling(x)`运算符返回`true'。 它被触发时:
-
`X’的前一个正值,如果当前值为零或负;
-
`X’的前一个零值,如果当前值已变为负值。
因此,'下降(x)'对负方向的转变做出反应。
+ 例子::
-
'x`为'0.2',变为'-0.1'→'falling(x)'返回’true`;
-
'x’是'-0.1`,变成`0.2'→不会工作。
对于’falling(x-0.5)`是相同的:当`x`从上到下穿过`0.5’时,操作符将被触发。 例如:
-
'x`从`0.6`变为`0.4'→触发;
-
'X`从'0.4’变为'0'。6'→不起作用。
'交叉(x)`运算符
'Crossing(x)运算符是一个通用运算符,它在任何信号通过零(或另一个指定阈值)时返回`true
,而不管方向如何。 它是在以下条件之一下触发的:
-
前值为正,当前值为零或负。;
-
前值为零,当前值为非零。;
-
前值为负,当前值为零或正。
因此,'crossing(x)`运算符捕获*通过零*的任何过渡—向上(上升)和向下(下降)。 例如:
-
'x`从'0.6’变为'0.4'→'crossing(x-0.5)'将返回’true`;
-
'X`从'0.4’变为'0'。6'→也’真`;
-
'X’保持低于`0.5`或高于`0.5`,不越过阈值→`false'。
应特别注意如何处理*等于零*。 与简单条件`x>0’不同,这些运算符不会忽略零,而是将其视为在转换逻辑中起重要作用的边界状态。 例如: -如果信号为零并变为正→这被认为是上升沿; -如果它是零,变成负→这是一个下降的前沿; -如果它是零,并成为非零(无论)→这是一个`交叉`触发器。 |