逻辑分析仪基础
表1 逻辑分析仪触发功能摘要
触发序列:
虽然逻辑分析仪触发通常很简单,但它们却需要复杂的程序。例如,可能想在某一信号的上升沿后跟另一信号的上升沿时触发。这意味着逻辑分析器必须在开始寻找下一个上升沿之前找到第一个上升沿。由于拥有一个可查找触发的步骤序列,因此它被称为触发序列。序列的每个步骤被称为一个序列步骤。
每个序列步骤由两部分组成:条件和操作。条件是指布尔逻辑表达式,例如"If ADDR = 1000"或"If there is a rising edge on SIG1"。操作是指符合条件时逻辑分析仪应当执行的内容。操作的示例包括触发逻辑分析仪、转至另一序列步骤以及启动定时器。这类似于编程中的 If/Then 语句。
触发序列中的每个步骤都被指定一个数字。执行的第一个序列步骤总是序列步骤 1,但由于"转到"操作,剩余的序列步骤可以以任意顺序执行。
执行一个序列步骤且布尔逻辑表达式均为假时,逻辑分析仪将采集下一样本并再次执行同一序列步骤。例如一个简单的示例,考虑以下触发序列:
1. If DATA = 7000 then Trigger
如果采集以下样本,逻辑分析仪将在采集样本 #6 时触发。
样本号 ADDR DATA 1 1000 2000 2 1010 3000 3 1020 4000 4 1030 5000 5 1040 6000 6 1050 7000 <- 此处为逻辑分析仪的触发位置 7 1060 2000
实际上,序列步骤 1 相当于"Keep acquiring more samples until DATA=7000, then trigger"。
如果符合一个序列步骤中的布尔逻辑表达式,那么在执行下一序列步骤之前总是采集另一样本。换句话说,如果一个样本符合序列步骤 1 的条件,在执行序列步骤 2 前将采集另一样本。这意味着一个单独的样本不可能符合多个序列步骤的条件。每个序列步骤都可以看作是代表了在不同点及时发生的事件。两个序列步骤可以从不用于指定同时发生的两个事件。
例如,考虑以下触发序列:
1. If ADDR = 1000 then Go to 2 2. If DATA = 2000 then Trigger
如果采集以下样本,逻辑分析仪将在采集样本 #7 时触发。
样本号 ADDR DATA 1 1000 2000 <- 此样本符合序列步骤 #1 中的条件 2 1010 3000 3 1020 4000 4 1030 5000 5 1040 6000 6 1050 7000 7 1060 2000 <- 此处为逻辑分析仪的触发位置
请注意,由于在符合序列步骤 1 中的条件和测试序列步骤 2 中的条件二者之间采集了新的样本,因此逻辑分析仪不会在采集样本 #1 时触发。可将此触发序列看作是"Find ADDR = 1000 followed by DATA = 2000 and then trigger"。触发序列中的多序列步骤暗示了"后接"。
逻辑分析仪触发后,将不会再次触发。换句话说,即使度个样本符合触发条件,逻辑分析仪也只触发一次。例如,使用"ADDR=1000"作为触发,如果逻辑分析器采集以下样本,它将会在采集样本 #2 时触发,并且只在采集样本 #2 时触发。
样本号 ADDR 1 0000 2 1000 <- 此处为逻辑分析仪的触发位置 3 2000 4 1000 <- 逻辑分析仪不会在此处再次触发 5 1040
一个经常遇到的问题是"如果不符合序列步骤中的条件会怎样?"例如,有一个条件是"If ADDR = 1000 Then Trigger",那么如果当前样本是 ADDR = 2000,结果会怎样?逻辑分析仪只采集下一样本并试图再次执行此序列步骤。实际上,如果触发条件是"ADDR = 1000",这相当于"持续采集样本直到找到条件为 ADDR=1000 的样本"。因此,如果设置一个从不符合的触发条件,逻辑分析器将不会触发。
当符合序列步骤中的条件时,使用"转到"操作时下一步将执行哪个序列步骤将会非常清楚,但是如果没有使用"转到"操作,则不可能知道执行哪个序列步骤。在一些逻辑分析仪上,如果没有"转到",这意味着应当执行下一序列步骤。在其他逻辑分析仪上,意味着将再次执行同一序列步骤。由于比较混乱,最好使用"转到"操作而不依靠默认。状态和定时模块通过在每个序列步骤中自动包含一个"转到"或"触发"操作来解决这一问题。例如: If ADDR = 1000 and DATA = 2000 then Go to 1 <- 这是自动添加的
布尔逻辑表达式:当多个序列步骤表示"后跟"时,可以在序列步骤内使用布尔逻辑表达式。示例:
If ADDR = 1000 and DATA = 2000 此表达式意指在同一样本中 ADDR 必须等于 1000 且 DATA 等于 2000,才能符合此表达式。换句话说,在 ADDR 等于 1000 的同时 DATA 等于 2000。因此,如果要在同时发生两个事件时触发,则应使用布尔逻辑表达式。常见错误是应使用布尔逻辑表达式时尝试使用两个序列步骤,或者应使用两个序列步骤时尝试使用布尔逻辑表达式。当多个事件同时发生时使用布尔逻辑表达式,而在一个事件接着一个事件发生时使用多个序列步骤。