【逻辑分析仪】触发的设定

  仪器信息网 ·  2011-05-30 22:21  ·  33903 次点击
逻辑分析仪中的内存可比喻成一条很长的输送带,从待测物(DUT)撷取到的取样点,便是输送带上的物品。在输送带的一端放上新的物品时,旧的物品便会在另一端被取出。换句话说,因为逻辑分析仪的存储深度(亦即可储存的取样点)有限,因此当存储记录满时,再多撷取一个新的取样点,就需要删除一个最旧的取样点。当逻辑分析仪检测到在内存的某个适当位置,撷取到符合触发条件的取样点时,逻辑分析仪便会停止搜集数据。同时,触发位置是可以设在内存内任何地方的。
触发顺序(TriggerSequence)
虽然逻辑分析仪的触发条件通常很直觉而简单,但却有可能需要做相当复杂的程序编辑,例如,使用者可能希望紧接在一个信号的上升沿后,另一个信号又产生上升沿时,将它定为触发点。由于需要一连串的步骤才能找到触发点,因此可称这些步骤为触发顺序,而其中的每一个步骤则称为触发状态。
每一个触发状态都由条件与动作两部份组成。条件即为布尔代数,例如,「若ADDR=1000」或「若SIG1产生一个上升沿」;动作则为当条件符合时,逻辑分析仪应执行的工作。例如:触发逻辑分析仪、转到另一状态(GoTo)、或激活定时器,类似于程序编辑中的If/Then叙述。每一个触发状态都会依序编号,起始时一定是执行第一个触发状态,但其它状态则可依照GoTo指令,以任意顺序来执行。当一个触发点在某一状态中不符合条件时,逻辑分析仪会撷取下一个取样点,并验证是否符合该状态的条件。以下面的触发状态为例:
IfDATA=7000ThenTrigger
逻辑分析仪会不断搜集取样点,直到DATA为7000时才做触发。一旦逻辑分析仪触发后,即使符合触发条件的取样点不只一个,它也不会再触发。若此条件不符合,逻辑分析仪将搜集下一个取样点并执行同一状态进行比较。若取样点符合条件,逻辑分析仪便会在另一个触发状态执行前,撷取到下一个取样点,因此绝不会有一个点符合两层以上的条件,而且每一状态代表的是在不同时间点发生的事件。
又以下面的触发顺序为例:
IfADDR=1000ThenGoTo2
IfDATA=2000ThenTrigger
若逻辑分析仪撷取到的数据如下,虽然第一点可符合条件1,但触发点应发生在第7个点:
SampleNo.ADDRDATA
110002000此取样点符合第一层的条件
210103000
310204000
410305000
510406000
610507000
710602000此为逻辑分析仪触发的点
由于新的取样点会在第一状态条件符合后,与开始测试第二状态条件之前被撷取到,因此逻辑分析仪不会在第一状态便触发。较佳的触发顺序逻辑应为「FindADDR=1000followedbyDATA=2000andthentrigger」。下一步若触发状态的条件能够符合,逻辑分析仪便会跳至「GoTo」指定的层数执行,但若没有「GoTo」指令可执行,下一步该执行哪一状态便只能由逻辑分析仪决定了。有些逻辑分析仪在此时会直接执行下一状态,有些则会再执行原来那一状态,因此,为了避免如此模棱两可,最好能明白指示「GoTo」这个动作。
布尔代数
若需要以数个条件同时发生的情况作为触发点,则应使用布尔代数,例如「IfADDR=1000ANDDATA=2000」。
到底要使用多层式触发顺序,还是采用布尔代数,混淆二者是触发设定中常见的错误。通常布尔代数是用于许多事件同时发生时;而对于一个事件发生在另一事件之后,有排列先后的情形,则应使用多层式触发顺序。
分支(Branching)
分支与C语言中的Switch叙述,或Basic语言中的SelectCase相类似,都可提供具有个别动作之复合条件的测试方法。例如:
1.IfADDR2000ThenGoTo3(此为第一状态的第二个分支)
ElseIfDATA=2000ThenTrigger(此为第一状态的第三个分支)
2.IfDATA

0 条回复

暂无讨论,说说你的看法吧!

 回复

你需要  登录  或  注册  后参与讨论!