邏輯分析的概念
邏輯分析儀也是非常常用的儀表,與示波器一樣,是數字設計和測量的經典儀器之一。數字電路測量時,何時應使用示波器呢?一般而言,當需要精確參數信息(如時間間隔和電壓讀數)時可以使用示波器。具體來講:
圖1
當需要立即查看多個信號時。邏輯分析儀可以很好地組織和顯示多個信號。一般任務是將多個信號組成一條總線並分配一個自定義名稱。地址、數據和控制總線都是有代表性的示例。
當需要使用與硬體相同的方式查看系統中的信號時。信號顯示在一個時間軸上,這樣就可以查看相對於其他總線信號或時鐘信號的轉變的發生時間。
當需要象接收晶片一樣基於時鐘邊沿,捕獲總線中的信息時。接收晶片基於時鐘邊沿判斷總線上的地址、命令和數據。邏輯分析儀象一個偵聽器,捕獲總線上傳輸的這些信息,並把需要的信息存入存儲器。可設置觸發條件,捕獲需要關注的或出問題的總線上的信息,據此可了解協議或軟體執行的情況。
上面已經簡短討論了邏輯分析儀的一些用法,現在,讓我們更詳細地了解一下有關邏輯分析儀的概念。到目前為止,我們已經很廣泛地使用了「邏輯分析儀」這一術語。實際上,大多數邏輯分析儀中都包含兩個分析儀。
1.定時分析儀:
定時分析儀是邏輯分析儀的一部分,它與示波器相似。事實上,它們之間的關係非常密切。定時分析儀顯示信息的一般形式,這一點與示波器相同,即橫軸表示時間,縱軸表示電壓振幅。因為兩個儀器上的波形都取決於時間,所以這種顯示可以說是「時間域」中的顯示。
2.狀態分析儀:
狀態分析儀非常適用於跟蹤軟體中的缺陷或硬體中的缺陷組件。它有助於確定問題是出現在軟體代碼中還是出現在某些硬體設備中。大多數情況下,狀態分析儀用於在出現特定時鐘信號時查找總線上存在哪些邏輯電平。換句話說,可以了解在時鐘出現且假設數據有效時將顯示哪些「活動狀態」。內存中採集的數據將以列表格式顯示,且帶有連接到各個狀態的時間標籤。
定時分析
定時分析儀使用自己的內部時鐘控制數據採樣。這種類型的時鐘計時會使邏輯分析儀中的數據採樣與被測設備中的時鐘異步。具體來講:
定時分析儀適用於顯示信號活動「相當於其他信號」「何時」發生。
定時分析儀側重於查看各個信號之間的時序關係,而不是與被測設備中控制執行的信號之間的時序關係。
這就是為什麼定時分析儀可以對與被測設備時鐘信號「不同步」或異步的數據進行採樣。
圖2
採集之後採樣點被存儲在內存中,並用於重建方形數字波形。這種要使一切變成方形的處理方式似乎會限制定時分析儀的用處。不過定時分析儀本來也不是打算用作參數儀器的。若要查看信號的上升時間,可以使用示波器。若需校驗幾個或幾百個信號之間的時序關係,對其同時進行查看,則定時分析儀才是正確的選擇。
定時分析儀對輸入通道進行採樣時,該通道信號或者是高電平或者是低電平。如果在進行某一採樣時該通道處於某種狀態(高或低),而在進行下一採樣時變成了相反的狀態,則分析儀可以「知道」輸入信號已在這兩個採樣之間的某個時候發生了跳變。但它不知道具體在何時,因此它將跳變點放在了後一個採樣上,如下圖所示。
圖3
對於跳變實際上是在何時發生以及分析儀何時顯示跳變,存在著某種含糊性。假如跳變是在前一個採樣點之後立即發生的,這種不確定性最多也就是一個採樣周期。不過對於這種方法,在精度和總採樣時間之間也存在著一種折衷。請記住,每個採樣點都只使用一個存儲位置。因此,精度越高(採樣頻率越高),採樣周期越短。
觸發定時分析儀:
使分析儀觸發的一種方法是:相應地配置分析儀,使之從一組信號(總線)中查找上限或下限碼型,或者查找單個信號的上升或下降時鐘沿。當分析儀在數據中發現指定的碼型或時鐘沿時,它便觸發。
碼型觸發用於在總線上查找特定的上限和下限碼型。您可以指定不同的標準,如等於、不等於、在或不在某個範圍內或者大於/小於。
示例:擁有一條包含 8 條信號線的總線。配置了簡單觸發 以指定分析儀在輸入數據等於「AA」碼型時觸發。
圖4
時鐘沿觸發:
時鐘沿觸發對於習慣使用示波器的用戶來說是一個很熟悉的概念。調整示波器上的「triggerlevel」(觸發電平)旋鈕時,可以將其視為設置電壓比較儀的電平:當輸入電壓超過該電平時,電壓比較儀會告知示波器觸發。定時分析儀的時鐘沿觸發大體上與此相同,只不過將觸發電平預先設置成了一個邏輯閾值。
示例:試想一個未正確移位數據的時鐘沿觸發移位寄存器。是數據有問題還是時鐘沿有問題?為檢測設備,我們需要在對其進行定時的同時檢驗數據(基於時鐘沿)。可以告知分析儀在出現時鐘沿時(無論上升或下降)採集數據並獲取移位寄存器的所有輸出。
圖5
在Transitional / Storequalified(跳變/存儲限定)定時模式中,定時分析儀將定期對數據進行採樣,但只有當閾電壓電平中存在信號轉變時才存儲數據。每當定義的總線/信號(未排除的)中的任何位發生轉變時,都要存儲所有通道上的數據。為每個存儲數據樣本存儲一個時間標籤,這樣稍後就可以重新構建和顯示測量。
通常,各個採樣點不會發生轉變。下面將用時間標籤2、5、7 和 14 來舉例說明。當確實發生轉變時,為每個轉變存儲兩個樣本。因此,存儲 1K 的轉變,就會帶有 2K內存的樣本。必須去除一個起始點必需的轉變才能使存儲的最小轉變量達到 1023。
圖6
檢測到時鐘沿時,在分配給定時分析儀的所有通道中存儲兩個樣本。如果在時鐘沿檢測器重置之前出現第二個時鐘沿(在第一個時鐘沿後),為避免數據丟失需要兩個樣本。
在跳變定時中,每個序列步驟只有 2 個分支。在跳變時序中,只有一個全局計數器可用。
跳變時序需要有時間標籤才能重建數據。通過將時間標籤與內存中的測量數據交叉可存儲時間標籤。
默認情況下,分析儀將查找為邏輯分析儀模塊定義的所有總線/信號上的轉變。但是,為增加可用內存深度和採集時間,可以在高級觸發中選擇不存儲某些總線/信號轉變(如將無用信息添加到測量中的時鐘或選通脈衝信號)。
運行測量時,無論總線/信號是否定義或是否分配給邏輯分析儀通道,都將在所有這些通道上採集數據。在跳變時序模式中,如果定義的總線/信號(未排除的)上存在轉變,將保存採集的樣本。
運行跳變時序測量後,如果為以前未分配的邏輯分析儀通道定義新的總線/信號,那麼將顯示在這些通道上採集的數據,但是不可能存儲這些總線/信號上的所有轉變;顯示的數據好似新的總線/信號在運行測量前就已經被排除了。
在跳變時序中,不需要預先存儲數據(觸發前獲得的樣本)。因此,與狀態模式非常相似的是,觸發位置(起始/中心/結束)表明觸發後樣本佔用內存的百分比。觸發前獲得/顯示的樣本數量在不同的測量中會有所變化。
狀態分析
狀態分析儀需要來自被測設備的採樣時鐘信號。這種類型的時鐘計時可使邏輯分析儀中的數據採樣與被測設備中的計時事件同步。具體來講:
狀態分析儀適用於顯示「有效時鐘或控制信號」期間的信號活動是「什麼」。
狀態分析儀側重於查看指定執行時間內的信號活動,而不是與時序無關的信號活動。
這就是為什麼狀態分析儀需要對與被測設備時鐘信號「同步化」或同步的數據進行採樣。
對於微處理器,數據和地址可以出現在相同的信號線上。要採集正確的數據,邏輯分析儀必須對數據採樣加以限制,使之只在所需的數據有效並出現在信號線上時進行。為此,它會從相同的信號線上採集數據樣本,但使用來自被測設備的不同採樣時鐘。
示例:以下時序圖表明,要採集地址,分析儀需要在 MREQ 線下降時進行採樣。
要採集數據,分析儀需要在 WR 線下降(寫周期)或 RD 線下降(讀周期)時進行採樣。
圖7
觸發狀態分析儀:
與定時分析儀相似,狀態分析儀也具有限定要存儲的數據的功能。如果我們正在查找地址總線的上限和下限的特定碼型,當分析儀找到該碼型時,我們可以通知分析儀開始存儲,並且只要分析儀的內存未滿就一直存儲。
簡單觸發示例:
請看下面顯示的「D」觸發器,在正值的時鐘沿出現之前,「D」輸入上的數據是無效的。因此,時鐘輸入為上限時,觸發器的狀態才有效。
圖8
現在,假設我們有並行的八個此類觸發器。如下所示,這八個觸發器都連接到同一時鐘信號。
圖9
當時鐘線上出現高電平時,所有這八個觸發器都會在其「D」輸入處採集數據。此外,每次時鐘線上出現正電平時都會發生有效狀態。下面的簡單觸發指示分析儀在時鐘線上出現高電平時在D0 - D7 這幾條上收集數據。
圖10
假設想查看地址值為406F6 時內存中存儲了哪些數據。對高級觸發進行配置,以在地址總線上查找碼型 406F6(十六進位)以及在RD(內存讀取)時鐘線上查找高電平。
圖11
Pod、通道和時間標籤存儲
Pod和通道的命名約定:
Pod是一組邏輯分析儀通道的組合,共有17個通道,其中數據16個通道,時鐘1個通道。邏輯分析儀的通道數是Pod數的倍數關係。34通道的邏輯分析儀對應兩個Pod,68通道邏輯分析儀對應4個Pod,136通道邏輯分析儀對應8個Pod。
對於模塊化的邏輯分析儀(或稱為邏輯分析系統),以
插槽從上到下以 A 至 F 字母命名。
有一條標有 Pod 2 的電纜連接著每一個邏輯分析儀模塊。知道某個Pod連接到哪個插槽很重要,因為如果在插槽 A 和 B中都有邏輯分析儀模塊,則將有兩條盒電纜標有 Pod 2,但操作界面應用程式會把一條記作 Slot A Pod 2,把另一條記作Slot B Pod 2。分清這兩條電纜很重要。
Slot A Pod 2 等於 Pod A2。A2 與 Slot A Pod 2 可互相替代;同樣,D1 與 Slot DPod 1 也可互相替代。
時鐘Pod (Clock Pod) 由模塊中所有Pod的所有時鐘通道組成。
每個Pod各有一個時鐘通道。所有時鐘通道按 Clk1、Clk2、Clk3等進行編號。如果某邏輯分析儀模塊有兩個邏輯分析儀卡,每卡有四個Pod,則該邏輯分析儀的時鐘通道標記為 Clk1 至 Clk8。
除了 Clk1 外,時鐘通道還可標記為 C1。C1 和 Clk1 是一樣的。
為什麼有時Pod會丟失?
在狀態採樣模式中,在選擇了一般狀態模式採樣選項的情況下,選擇最大採集內存深度需要將一個Pod對保留用於時間標籤存儲。在這種情況下,將內存深度設置為最大值的一半(或更小)將返回Pod。
在狀態採樣模式中,在選擇了高速狀態模式採樣選項的情況下,會將一個Pod對保留用於時間標籤存儲。
在定時採樣模式中,在選擇了跳變/存儲限定定時模式採樣選項的情況下:
該模塊是已分離的邏輯分析儀的一部分。在這種情況下,Pod位於分離分析儀的另一半模塊中。
在操作界面應用程式中,所有模塊都與時間相關;不能關閉 time tagstorage(時間標籤存儲)(雖然以前的 Agilent 邏輯分析系統可以)。
要使用 1/2以上的模塊採集內存,必須將一個Pod保留用於時間標籤存儲。要使用所有Pod,內存使用量不能超過模塊採集內存的1/2。
一般來說,可用定時器數與那些不屬於為時間標籤存儲而保留的Pod數相同。
跳變時序採樣模式也需要時間標籤存儲。
當選擇最小採樣周期時,必須將一個Pod對 保留用於時間標籤存儲。在這種情況下,不能使用1/2(或更少)的模塊採集內存來替代該Pod。
對於其他採樣周期,內存深度和通道數的權衡與狀態採樣模式下的相同。也就是說,要使用 1/2以上的模塊採集內存,必須將一個Pod保留用於時間標籤存儲。要使用所有Pod,內存使用量不能超過模塊採集內存的 1/2。
一般來說,可用定時器數與那些不屬於為時間標籤存儲而保留的Pod數相同。
狀態模式採樣位置、眼定位和眼圖掃描
同步採樣(狀態模式)邏輯分析儀與觸發時鐘沿的觸發相似,因為它們都需要輸入邏輯信號才可以在時鐘事件前(建立時間)和時鐘事件後(保持時間)的一段時間內保持穩定,以便正確解釋邏輯電平。組合建立和保持時間被稱為建立/保持窗口。
被測設備(由於其本身的建立/保持要求)可指定數據在某段時間內在總線上有效。這被稱為數據有效窗口。一般情況下,大多總線上的數據有效窗口小於總線時間周期的一半。
圖13
為了將建立/保持窗口(採樣位置)放置在數據有效窗口內,邏輯分析儀可在每次採樣輸入時調整延遲(以定位每個通道的建立/保持窗口)。
如果可以在單個通道上調整採樣位置,可以使邏輯分析儀的建立/保持窗口變小,因為可以校準由探頭電纜和邏輯分析儀的內部電路板跟蹤引起的偏移效應,而且還可以看到邏輯分析儀的內部採樣電路的建立/保持要求。
但是,手動定位每個通道的建立/保持窗口需要花費大量時間。對於被測設備中的每個信號和每個邏輯分析儀通道來說,必須測量與總線時鐘(帶有示波器)相關的數據有效窗口,重複定位建立/保持窗口並運行測量以查看邏輯分析儀是否正確採集數據,最後再將建立/保持窗口定位在錯誤採集數據的位置之間。
使用具有眼定位 (eyefinder)功能的邏輯分析儀,在手動調整(沒有額外的被測設備)的一小段時間內,可以自動:
定位每個通道上的建立/保持窗口。
針對儘可能寬的數據有效窗口調整閾電壓設置。
眼定位概要:
對於指定的狀態採樣時鐘,眼定位可在時鐘沿前後的一個固定時間範圍內查找數據信號轉變(閾電壓交叉點),並為顯示相關內容以幫助設置最佳採樣位置。
為了了解眼定位顯示,需為每個活動時鐘沿拍攝一張有關該時鐘沿的數據信號轉變的「照片」。將此照片看作快照、定格畫面或頻閃觀測儀(位於時鐘沿中心或與時鐘沿同步)。到達時鐘沿的時間為T=0。
要構建眼定位 顯示,需要將無數張這樣的「照片」堆疊在彼此的頂端。每張「照片」都在 T=0時對齊,此時將達到活動時鐘沿。照片拍自上升沿還是下降沿並沒有關係;它們會在 T=0時對齊。構建顯示後,就無法區分給定信號轉變區域是與時鐘上升沿相關聯,還是與下降沿(或兩者)相關聯。
眼定位工作原理:
通過邏輯分析儀使用少量的偏移延遲對每個通道進行雙重採樣的功能,以及通過使用獨有的 OR操作比較延遲的樣本可進行眼定位 測量。
圖14
圖15
圖16
圖17
圖18
圖19
無論用戶界面中的閾值如何設置,邏輯分析儀的差分輸入將始終應用於接收器。這意味著可通過將電壓閾值手動設置為非零值允許在差分對中使用公共模式電壓。如果信號擺幅中心與地線差距大於 100mV,eye scan 將自動執行此操作。
邏輯分析儀的觸發
圖20
邏輯分析儀觸發就像是放置在傳送帶(上面放置有多個箱子)起始位置上的箱子一樣。它們的任務是「查找特殊的箱子,並在該箱子到達傳送帶的某一特定位置時停止運行傳送帶」。在此類比中,特殊的箱子就是觸發。邏輯分析儀檢測到與觸發條件相匹配的樣本後,就表示當觸發位於內存中的適當位置時應停止繼續採集樣本。
觸發在內存中的位置被稱為觸發位置。通常,觸發位置被設置在中間,以便使觸發前後出現的樣本的最大數量不超出內存範圍。不過,也可以將觸發位置設置在內存中的任意位置。
由於邏輯分析儀觸發提供了大量功能,因此下表將對本文中介紹的功能進行簡要概述。該表將對這些功能進行逐一描述。
表1
雖然邏輯分析儀觸發通常很簡單,但它們卻需要複雜的程序。例如,可能想在某一信號的上升沿後跟另一信號的上升沿時觸發。這意味著邏輯分析器必須在開始尋找下一個上升沿之前找到第一個上升沿。由於擁有一個可查找觸發的步驟序列,因此它被稱為觸發序列。序列的每個步驟被稱為一個序列步驟。
1. If DATA = 7000 then Trigger
樣本號 ADDR DATA 1 1000 2000 2 1010 3000 3 1020 4000 4 1030 5000 5 1040 6000 6 1050 7000 <- 此處為邏輯分析儀的觸發位置 7 1060 2000
1. If ADDR = 1000 then Go to 2 2. If DATA = 2000 then Trigger
樣本號 ADDR DATA 1 1000 2000 <- 此樣本符合序列步驟 #1 中的條件 2 1010 3000 3 1020 4000 4 1030 5000 5 1040 6000 6 1050 7000 7 1060 2000 <- 此處為邏輯分析儀的觸發位置
樣本號 ADDR 1 0000 2 1000 <- 此處為邏輯分析儀的觸發位置 3 2000 4 1000 <- 邏輯分析儀不會在此處再次觸發 5 1040
If ADDR = 1000 and DATA = 2000 then Go to 1 <- 這是自動添加的
If ADDR = 1000 and DATA = 2000 此表達式意指在同一樣本中 ADDR 必須等於 1000 且 DATA 等於 2000
,才能符合此表達式。換句話說,在 ADDR 等於 1000 的同時 DATA
等於 2000。
因此,如果要在同時發生兩個事件時觸發,則應使用布爾邏輯表達式。
常見錯誤是應使用布爾邏輯表達式時嘗試使用兩個序列步驟,或者應使用
兩個序列步驟時嘗試使用布爾邏輯表達式。當多個事件同時發生時使用布
爾邏輯表達式,而在一個事件接著一個事件發生時使用多個序列步驟。
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 中,存在三個分支,因此存在三個可以採用的操作。
如果符合某一分支的條件,則不對其下面的任何分支進行測試。換句話說,無法根據單個樣本執行多個分支,即使該樣本可導致符合多個分支條件。也就是說,每個分支都是一個「ElseIf」。
範圍:指定值的範圍是劃分範圍的一種便捷方式,如「1000 到 2000 範圍內的 ADDR」。大多數邏輯分析儀還支持「not inrange」功能。範圍是一種方便的快捷方式,因此您無需指定「ADDR >= 1000 and ADDR<= 2000」。
標誌:標誌是用於從一個模塊向另一個模塊發送信號的布爾變量。當某種情況在某一模塊中發生而稍後被另一模塊測試時可以設置標誌。在下面的示例中,標誌1 用於跟蹤在模塊 1 的觸發序列中發生的情況,以便在模塊 2 中使用此信息。
1. If ADDR < 5000 then Set Flag 1 Trigger and fill memory
1. If DATA = 5000 and Flag 1 is set then Trigger Else if DATA = 1000 and not Flag 1 then Trigger
If ADDR = 1000 occurs 5 times then Trigger
ADDR In Range 1000 to 2000
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 範圍之內的樣本」。
1. If DATA = 005E then Trigger Else If ADDR in range 5000 to 6FFF then Store Sample Go to 1 Else If ADDR not in range 5000 to 6FFF then Don't Store Sample Go to 1 此外,如果默認存儲設置為「Store Everything」(存儲所有樣本),
可以使用以下指令:
1. If DATA = 005E then Trigger Else If ADDR not in range 5000 to 6FFF then Don't Store Sample Go to 1
圖21
將問題分解為不同時發生的事件。這些事件對應於序列步驟。
掃描觸發函數列表,嘗試找出一些與步驟 1 中確定的事件相匹配的函數。
將所有剩餘事件分解為布爾邏輯表達式及其相應操作。各個布爾邏輯表達式/操作對分別對應於序列步驟中的一個單獨分支。請記住,可能存在只用於為序列步驟處理存儲限定的「存儲」分支。
邏輯分析儀探頭
圖22
圖23
圖24
圖25
圖26
圖27
圖28
長按二維碼識別關注
電子路上與你同行!