教育装备采购网
第七届图书馆 校体购1

逻辑分析仪功能/用途

教育装备采购网 2010-12-28 09:22 围观736次
  1. 什么是记录长度,又称存储深度 --->
  2. 两种基本测量模式 --->
  3. 如何设置逻辑分析仪的触发 --->
  4. 深入了解逻辑分析仪 入门手册 pdf(泰克)
  5. 得心应手的逻辑分析仪 pdf(安捷伦)
  6. 邏輯分析儀應用在數位設計上的基本概念 pdf(安捷伦)
  7. 实现逻分析仪成功探测的6项提示 pdf(安捷伦)
  8. 客观评估逻辑分析仪 pdf(安捷伦)
  9. 8 Hints for Solving Common Debugging Problems with Your Logic Analyzer pdf(安捷伦)

一、记录长度

举例:假设一台逻辑分析仪 每通道存储深度 128k

时钟设置 100kHz ,总记录时长 10us x 128k = 1.28s

时钟设置 1MHz ,总记录时长 1us x 128k = 128ms

时钟设置 10MHz ,总记录时长 0.1us x 128k = 12.8ms

无论台式或者虚拟PC式的,存储深度都只取决于仪器本身的内部快速存储器,
长时间数据记录可通过触发方式来分段记录,如挑选适当的触发点、触发延时捕获,等方式。

二、两种基本测量模式

1. 非同步模式(Asynchronous Mode)

非同步模式又称为“时序分析”(Timing),它在屏幕上显示波形的方式和示波器十分相似。与示波器不同的是:

a. 示波器只有2~4个信道,但逻辑分析仪却有8~200多个信道;

b. 另一个不同点是,逻辑分析仪将待测信号记录为一连串的“1”(高)与“0”(低)。若在取样时刻波形的位超过分析仪预设的电压临界值(电压门限)时,仪器就会记录为“1”,反之则记录为“0”。

通常我们在数字分析上,并不需要知道仔细的波形变化,需要的是逻辑的高低电平以及芯片上不同管脚的时序关系。在非同步模式中,取样的脉冲信号是由逻辑分析仪内部提供的,因此与待测物的脉冲是非同步的。 

2. 同步模式(Synchronous Mode)

同步模式称为“状态分析”(State),它的取样脉冲信号即是由待测物所提供的,因而称为“同步”。它不象“时序分析”用波形来显示信号和时间的关系。“状态分析”通常是用列表形式来呈现待分析的信号。“状态分析”最适用于用在读取微处理器数据流上的信息。通常把它设定为以6位码来显示采集到的信息。若加上反汇编软件,便可自动把6位码翻译成汇编代码,方便找出硬件或软件上的错误。

三、如何设定触发

  设定逻辑分析仪的触发有时非常困难且耗时,即使知道如何写程序,也不一定会做触发设定。这是因为就逻辑分析仪而言,有许多独特的概念。但是只要一旦了解这些概念,触发设定就一点也不困难了。本文的目的即在说明触发设定的概念,以及如何有效利用它们。
  比如,为嵌入式系统进行故障查找时,需要监控系统中许多信号及其数据流的实时行为,而逻辑分析仪是最能观察到嵌入式系统内详细数据的工具。不过,逻辑分析仪也不是魔术,要建立正确的触发,才能正确对嵌入式系统进行故障查找。

逻辑分析仪中的内存可比喻成一条很长的输送带,从待测物(DUT)撷取到的取样点,便是输送带上的物品。在输送带的一端放上新的物品时,旧的物品便会在另一端被取出。换句话说,因为逻辑分析仪的存储深度(亦即可储存的取样点)有限,因此当存储记录满时,再多撷取一个新的取样点,就需要删除一个最旧的取样点。以这样的比喻来看,逻辑分析仪的触发设定就像是“操作员站在输送带前,寻找某一个特殊的物品,他同时可控制整条输送带,在此物品被运送到某一个特定的位置时停止运送”。这个特殊的物品便是「触发点」。当逻辑分析仪检测到在内存的某个适当位置,撷取到符合触发条件的取样点时,逻辑分析仪便会停止搜集数据。同时,触发位置是可以设在内存内任何地方的。

触发序列 (Trigger Sequence)
    虽然逻辑分析仪的触发条件通常很直觉而简单,但却有可能需要做相当复杂的程序编辑,例如,使用者可能希望紧接在一个信号的上升沿后,另一个信号又产生上升沿时,将它定为触发点。由于需要一连串的步骤才能找到触发点,因此可称这些步骤为触发顺序,而其中的每一个步骤则称为触发状态。
每一个触发状态都由条件与动作两部份组成。条件即为布尔代数,例如,「若ADDR=1000」或「若SIG1产生一个上升沿」;动作则为当条件符合时,逻辑分析仪应执行的工作。例如:触发逻辑分析仪、转到另一状态(Go To)、或激活定时器,类似于程序编辑中的If/Then叙述。每一个触发状态都会依序编号,起始时一定是执行第一个触发状态,但其它状态则可依照Go To指令,以任意顺序来执行。当一个触发点在某一状态中不符合条件时,逻辑分析仪会撷取下一个取样点,并验证是否符合该状态的条件。以下面的触发状态为例:
If DATA = 7000 Then Trigger
    逻辑分析仪会不断搜集取样点,直到DATA为7000时才做触发。一旦逻辑分析仪触发后,即使符合触发条件的取样点不只一个,它也不会再触发。
若此条件不符合,逻辑分析仪将搜集下一个取样点并执行同一状态进行比较。若取样点符合条件,逻辑分析仪便会在另一个触发状态执行前,撷取到下一个取样点,因此绝不会有一个点符合两层以上的条件,而且每一状态代表的是在不同时间点发生的事件。
 又以下面的触发顺序为例:
  If ADDR=1000 Then Go To 2
  If DATA=2000 Then Trigger
    若逻辑分析仪撷取到的数据如下,虽然第一点可符合条件1,但触发点应发生在第7个点:

Sample No. ADDR DATA 备注
1 1000 2000 此取样点符合第一层的条件
2 1010 3000  
3 1020 4000  
4 1030 5000  
5 1040 6000  
6 1050 7000  
7 1060 2000 此为逻辑分析仪触发的点

    由于新的取样点会在第一状态条件符合后,与开始测试第二状态条件之前被撷取到,因此逻辑分析仪不会在第一状态便触发。较佳的触发顺序逻辑应为「Find ADDR=1000 followed by DATA=2000 and then trigger」。下一步若触发状态的条件能够符合,逻辑分析仪便会跳至「Go To」指定的层数执行,但若没有「Go To」指令可执行,下一步该执行哪一状态便只能由逻辑分析仪决定了。有些逻辑分析仪在此时会直接执行下一状态,有些则会再执行原来那一状态,因此,为了避免如此模棱两可,最好能明白指示「Go To」这个动作。

布尔代数
    若需要以数个条件同时发生的情况作为触发点,则应使用布尔代数,例如「If ADDR=1000 AND DATA=2000」。
到底要使用多层式触发顺序,还是采用布尔代数,混淆二者是触发设定中常见的错误。通常布尔代数是用于许多事件同时发生时;而对于一个事件发生在另一事件之后,有排列先后的情形,则应使用多层式触发顺序。

分支(Branching)
    分支与C语言中的Switch叙述,或Basic语言中的Select Case相类似,都可提供具有个别动作之复合条件的测试方法。例如:
1.If ADDR<1000 Then Go To 2 (此为第一状态的第一个分支)
Else If ADDR>2000 Then GoTo 3 (此为第一状态的第二个分支)
Else If DATA=2000 Then Trigger (此为第一状态的第三个分支)
2.If DATA<=7000 Then Trigger
3.If SIG1 rising edge Then Trigger
    第一状态含有三个分支,因此有三种可能的动作,若能符合第一分支的条件,则其它分支便不做测试;同时,即使一个取样点能符合多个分支的条件,最多也只能执行一个分支的动作。

    另一种触发则可利用并行计数器(occurrence counter),找到一个事件发生第N次的情况。以下的例子可设定当「ADDR=1000」发生5次时做触发:
1.If ADDR=1000 occurs 5 times
Then Trigger
使用定时器(Timer)
    在某些例子中,使用者有兴趣的是信号间的相互影响,此时可使用定时器来核对事件间所耗费的时间。若想在一个边沿信号(edge),与前一个边沿信号相隔 500ns 以内时做触发,就需要使用定时器。要记得的是,定时器必须在检测前激活。设定定时器的关键在于,要辨别何时激活与何时做检测。定时器需在检测到SIG1的上升沿时激活,并在出现SIG2上升沿时检测。因此,这样的测量可设定为:
1.If theres a Rising Edge on SIG1, then Start Timer 1 Go to 2.
2.If theres a Rising Edge on SIG2 And Timer 1 < 500ns then Trigger.
     以上的触发顺序看似正确,其实隐藏了一个很危险的缺陷。若SIG1与SIG2的上升缘相隔超过500 ns时会发生什么事?没错,逻辑分析仪不会做触发,因为Timer1会持续计时,使得触发条件永远也无法满足,但稍后可能又出现SIG1,并在 500ns 内发生了SIG2。
    若要解决这个问题,应在定时器每超过 500ns 而没触发时,重新回到第一状态,寻找SIG1的上升沿,正确的触发顺序应为:
1.If theres a Rising Edge on SIG1, then Start Timer1 Go to 2.
2.If theres a Rising Edge on SIG2 And
Timer1<500 ns then Trigger
Else If Timer1>=500 ns, then
Reset Timer1 Go to 1

节省内存
    为嵌入式软件纠错时,常遇到无法精确指出到底是汇编语言中哪一行指令是程序的问题所在。只知道错误点接着百万状态后,发生了不正常动作,因此可在此现象作触发,但却因内存有限,而无法同时看到原因(错误)与现象(问题)。两种最简单节省内存的方法是时钟与储存资格限制。

时钟限定(Clock Qualification)
分析仪采用系统时钟做为状态分析的取样率,同时撷取几个其它信号,例如:*TA与TSIZ,作为时钟限定。因此只有当系统时钟为上升沿,同时*TA(K-clock)为低基准时,才储存该取样点。

存储限定(Storage Qualification)
    存储限定也可达到有效运用逻辑分析仪内存的目的,更进一步地,在触发点前后可采用不同的存储设定。最简单的存储限定是预设储存(default storage),除非触发状态另有特别的设定,否则就须储存取样点。因此,如果只想要储存 ADDR 在 1000 至 2000 的点,则预设储存应设定为「ADDR In Range 1000 to 2000」,若全部不存,则可设为储存「Nothing」。
    有些问题是不能单用逻辑分析仪解决的,因为通常是在见到不正常现象时,才触发逻辑分析仪。例如为找出系统总是周期性死机(crash)的原因 ,我们发现某一变量A总是在死机前变成72,所以选择在A=72前提下做触发,但如此一来,触发后待测系统却继续动作直到过了十万状态后才死机。若能在撷取到代表系统即将毁损的信号时,让系统暂停,再单步执行直到系统死机,便可找出真正的问题。这就要使用内部模块触发(Intermodule Trigger)功能,连结逻辑分析仪与能控制该处理器执行(Run Control)的仿真器,在找到A=72时暂停待测物,以观察究竟发生了什么状况,导致周期性死机。
    通常逻辑分析仪的触发设定与软件的编辑大不相同,如果能以事先定义的触发函数以及具有完整说明的现成触发为参考,设定的工作便可简化许多。只有在没有任何一项可使用时,才需要自己编辑触发顺序。最后,在面临较复杂的触发设定时,别忘了先将问题分解,再一项一项地进行处理,同时活用逻辑分析仪中不同模块的功能组合,以扩大其使用功效。

 

校体购终极页

版权与免责声明:

① 凡本网注明"来源:教育装备采购网"的所有作品,版权均属于教育装备采购网,未经本网授权不得转载、摘编或利用其它方式使用。已获本网授权的作品,应在授权范围内使用,并注明"来源:教育装备采购网"。违者本网将追究相关法律责任。

② 本网凡注明"来源:XXX(非本网)"的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,且不承担此类作品侵权行为的直接责任及连带责任。如其他媒体、网站或个人从本网下载使用,必须保留本网注明的"稿件来源",并自负版权等法律责任。

③ 如涉及作品内容、版权等问题,请在作品发表之日起两周内与本网联系,否则视为放弃相关权利。

校体购产品