MATLAB 是一款功能強大的工具,可用于快速分析從模數(shù)轉(zhuǎn)換器 (ADC) 輸出捕獲的數(shù)據(jù)。本應(yīng)用筆記演示了如何使用MATLAB來避免邏輯分析儀存儲器深度的限制。描述并比較了三種代碼切換方法(基本、高級和反向)。給出了所有三種方法的結(jié)果。
介紹
檢定高速模數(shù)轉(zhuǎn)換器(ADC)需要捕獲和分析數(shù)字輸出代碼。邏輯分析儀存儲器深度的限制經(jīng)常妨礙捕獲足夠的數(shù)據(jù)點來創(chuàng)建高分辨率FFT或INL/DNL圖形的精確表示。規(guī)避此問題的一種簡單方法是使用 MATLAB 等數(shù)學工具連接多組數(shù)據(jù)(圖 1)。連接數(shù)據(jù)的一個缺點是較大的不連續(xù)性,這通常存在于兩個數(shù)據(jù)集之間的點。雖然不連續(xù)性對 INL/DNL 圖幾乎沒有影響,但它會對高分辨率 FFT 造成嚴重破壞(圖 2)。
圖1.串聯(lián)數(shù)據(jù)揭示了兩個數(shù)據(jù)集之間的不連續(xù)性。
圖2.a) 捕獲并分析了單個 16384 點數(shù)據(jù)集;b) 捕獲、連接和分析了兩個 8192 點數(shù)據(jù)集??p合技術(shù)。
可以通過在每個數(shù)據(jù)集中搜索相同的點組(通常為三個或四個)并在這些點處將兩個數(shù)據(jù)集“拼接”在一起來消除不連續(xù)性(圖 3)。完成此拼接的最簡單方法是記錄第一個數(shù)據(jù)集中的最后四個點,然后在第二個數(shù)據(jù)集中搜索一組相同的點。第二個數(shù)據(jù)集中的這個位置稱為“縫合點”。第二個數(shù)據(jù)集中此拼接點之前的任何數(shù)據(jù)都將被丟棄;第二個數(shù)據(jù)集的其余部分附加到第一個數(shù)據(jù)集。這種技術(shù)稱為基本代碼拼接,實現(xiàn)起來相當簡單,并且在 MATLAB 中執(zhí)行速度非???。
圖3.基本代碼拼接會產(chǎn)生最終的“拼接”矩陣。
使用基本代碼拼接,有時需要丟棄多達一半的第二個數(shù)據(jù)集,以便找到與第一個數(shù)據(jù)集的最后四個點匹配的一組點?;蛘?,在第一個數(shù)據(jù)集的末尾丟棄一些樣本通常有助于找到更接近第二個數(shù)據(jù)集開頭的拼接點(圖 4)。但是,尋找從第一個數(shù)據(jù)集的尾端和第二個數(shù)據(jù)集的前端丟棄樣本的匹配可能很難實現(xiàn)。此過程稱為高級代碼拼接。找到產(chǎn)生最大結(jié)果數(shù)據(jù)集的理想拼接點需要相當深思熟慮和編程技能。但是,如果實施得當,高級代碼拼接通常會產(chǎn)生一個最終數(shù)據(jù)集,該數(shù)據(jù)集至少是兩個較小數(shù)據(jù)集之和的 90%。
圖4.高級代碼拼接尋找理想的拼接點,從而產(chǎn)生最終的“拼接”矩陣。
將第二個數(shù)據(jù)集(矩陣B)拼接在第一個數(shù)據(jù)集(矩陣A)前面稱為反向代碼拼接,也可能產(chǎn)生更大的數(shù)據(jù)集(圖5)。然而,這種技術(shù)使處理時間加倍,因為當數(shù)據(jù)集 A 在數(shù)據(jù)集 B 之前,當數(shù)據(jù)集 A 在數(shù)據(jù)集 B 之后時,必須找到拼接點。此外,反向代碼拼接與其他拼接技術(shù)結(jié)合使用時通常產(chǎn)生最小的收益。因此,由于反向代碼拼接所需的處理時間大幅增加,在速度較慢的PC上,額外的代碼增益可能不合理。表 1 詳細介紹了三種代碼拼接方法之間的比較。
圖5.反向代碼拼接使處理時間加倍,通常代碼增益最小。
縫合技術(shù) | 最終數(shù)據(jù)集的大小 | 描述 | ||||
數(shù)據(jù)集編號 |
# 代碼 (平均) |
兩個數(shù)據(jù)集 的百分比(平均值) |
||||
1 + 2 | 3 + 4 | 1 + 4 | ||||
連接? | 不適用 | 16384 | 100% | 會產(chǎn)生錯誤的FFT;但是,可以從這些數(shù)據(jù)中提取INL/DNL。 | ||
基本 | 11060 | 8192? | 14384 | 11212 | 68.4% | FFT可用于計算品質(zhì)因數(shù)。 |
反向 | 11060 | 8192? | 14384 | 11212 | 68.4% | |
高深 | 13790 | 16046 | 16022 | 15286 | 93.3% | |
高級 + 反向 |
15427 | 16176 | 16022 | 15875 | 96.9% | |
*使用上述技術(shù)將兩個 8K(8192 代碼)數(shù)據(jù)集拼接在一起。為了確保準確性,使用四組8192點數(shù)據(jù)(標記為1到4)重復測試三次。對每個測試的結(jié)果數(shù)據(jù)進行平均,并顯示在測試數(shù)據(jù)的右側(cè)。 ?串聯(lián)始終產(chǎn)生 100% 的可用數(shù)據(jù)。 ?無法將數(shù)據(jù)集拼接在一起。 |
MATLAB 功能說明
附加的 MATLAB 代碼(附錄 A 和 B 中的 StitchMatrices 和 FindStitchPoint)將上述主題組合成一個易于使用的函數(shù)。這些函數(shù)接受兩個數(shù)據(jù)集(MATLAB 中的單列矩陣)和多個啟用高級/反向代碼拼接功能的輸入參數(shù)。FindStitchPoint 例程標識數(shù)據(jù)集 A 和 B 中的偏移量。StitchMatrices 例程丟棄數(shù)據(jù)集 A 和 B 并使用 FindStitchPoint 例程中的偏移量將數(shù)據(jù)集 A 和 B 組合在一起。此外,最終數(shù)據(jù)集中的針跡點記錄在PrevStitchBins矩陣中以進行后處理。將多個數(shù)據(jù)集拼接在一起時,PrevStitchBins會保留舊拼接點的位置。
結(jié)論
將兩組數(shù)據(jù)拼接在一起可以產(chǎn)生可接受的結(jié)果。圖 6 描述了使用上述拼接技術(shù)拼接在一起的三個 8192 點數(shù)據(jù)集(使用五個拼接點)的 FFT 圖。得到的FFT與上面圖16384a所示的2點連續(xù)數(shù)據(jù)集幾乎相同。
圖6.將代碼拼接在一起可產(chǎn)生精確的FFT圖。
審核編輯:郭婷
-
轉(zhuǎn)換器
+關(guān)注
關(guān)注
27文章
8694瀏覽量
147085 -
matlab
+關(guān)注
關(guān)注
185文章
2974瀏覽量
230382 -
adc
+關(guān)注
關(guān)注
98文章
6495瀏覽量
544461
發(fā)布評論請先 登錄
相關(guān)推薦
評論