逻辑分析仪基础
分支:分支类似于 C 编程语言中的 Switch 语句和 Basic 中的 Select Case 语句。分支可提供测试多个条件的方法。每个分支都有其独有的操作。下面是多分支的一个示例:
1. If ADDR < 1000 then Go To 2 <- This is a branch of Level 1 Else If ADDR > 2000 then Go To 3 <- This is a 2nd branch of Level 1 Else If DATA = 2000 then Trigger <- This is a 3rd branch of Level 1 2. If DATA <= 7000 then Trigger 3. If there is a Rising Edge on SIG1, then Trigger 在序列步骤 1 中,存在三个分支,因此存在三个可以采用的操作。
如果符合某一分支的条件,则不对其下面的任何分支进行测试。换句话说,无法根据单个样本执行多个分支,即使该样本可导致符合多个分支条件。也就是说,每个分支都是一个"Else If"。
沿:沿表示单个信号从下到上或从上到下的转变。通常,沿被指定为"上升沿"、"下降沿"或"任一时钟沿",其中"上升沿"表示从下到上的转变。在大多数逻辑分析仪上,触发序列中最多可包含两个沿,而有些则只允许包含一个沿。
范围:指定值的范围是划分范围的一种便捷方式,如"1000 到 2000 范围内的 ADDR"。大多数逻辑分析仪还支持"not in range"功能。范围是一种方便的快捷方式,因此您无需指定"ADDR >= 1000 and ADDR <= 2000"。
标志:标志是用于从一个模块向另一个模块发送信号的布尔变量。当某种情况在某一模块中发生而稍后被另一模块测试时可以设置标志。在下面的示例中,标志 1 用于跟踪在模块 1 的触发序列中发生的情况,以便在模块 2 中使用此信息。
模块 1 的触发序列:
1. If ADDR < 5000 then Set Flag 1 Trigger and fill memory
模块 2 的触发序列:
1. If DATA = 5000 and Flag 1 is set then Trigger Else if DATA = 1000 and not Flag 1 then Trigger
计数器:发生计数器用于想要查找事件的"第 N 次"出现的情况。例如,如果想在 ADDR = 1000 第 5 次出现时触发,可以将触发设置为:
If ADDR = 1000 occurs 5 times then Trigger
全局计数器类似于整数变量。全局计数器比发生计数器更灵活,因为它们可用于为复杂事件(例如一个时钟沿后跟另一时钟沿的事件)计数。可以增加、测试和重新设置全局计数器。默认情况下,全局计数器以零开头并且不需要重新设置,除非已在触发序列中使用了它们。一般情况下,如果可能的话,应使用发生计数器代替全局计数器,原因是发生计数器的用法比较简单,而且全局计数器的数量有限。
定时器:定时器用于检查事件之间消耗的时间。例如,如果想在出现一个时钟沿后的 500 ns 内出现另一个时钟沿的情况下引发触发,请使用定时器。使用定时器时要记住的最关键一点是:先启动定时器,然后再对其进行测试。换句话说,定时器无法自动启动。设置定时器的关键是确定在何种情况下进行启动和测试。
存储限定:存储限定用于确定应该存储(即,存入内存)还是丢弃已获得的样本。这可以避免不需要的样本占用逻辑分析仪内存。
设置存储限定最简单的方法是设置"默认存储"。默认存储表示"如果未经序列步骤指定,则进行存储"。例如,可能只想在 ADDR 的范围为 1000 到 2000 时存储样本,那么就应将"默认存储"设置为:
ADDR In Range 1000 to 2000
默认情况下,"默认存储"设置为存储所有已获得的样本。也可以将"默认存储"设置为不存储任何样本,这意味着除非某序列步骤覆盖该默认存储,否则将不存储任何样本。
序列步骤存储限定意味着在某个特定的序列步骤内只存储特定的样本。这意味着在使用 Go To(转到)或 Trigger(触发)操作离开此序列步骤之前,应用该存储限定。如果要为每个序列步骤应用不同的存储限定,该存储限定很有用。例如,可能不希望在 ADDR = 1000 之前存储任何样本,而对于其余的测量,只存储 ADDR 在 1000 到 2000 范围之内的样本。
设置序列步骤存储还需要再使用一条分支指令。例如,在查找 DATA=005E 时,如果只希望存储 ADDR 在 5000 到 6FFF 范围之内的样本,某些情况下可使用以下序列步骤:
1. If DATA = 005E then Trigger Else If ADDR in range 5000 to 6FFF then Store Sample Go to 1 注意存储样本操作的使用。这表示"立即存储内存中最新获得的样本"。而不 表示"从现在起,开始存储"。应当注意,因为当 ADDR 不在 5000 到 6FFF 范围之内时从不执行存储样本操作,所以该分支指令实质上是指"在此序列步骤中,只存储 ADDR 在 5000 到 6FFF 范围之内的样本"。
上述示例似乎说明将只存储 ADDR 在 5000 到 6FFF 范围之内的样本。但是,这取决于默认存储的设置方式。还是使用上述示例,如果默认存储设置为"Store Everything"(存储所有样本)并且有一个样本不在 5000 到 6FFF 的范围之内,则不会执行 Else If 分支指令,而应用该"默认存储"。实际上,该序列步骤说明了样本值在特定范围内时要执行的操作,但没有说明样本值在此范围之外时应执行的操作。因此,如果要明确指定序列步骤存储,请使用以下指令: