MATLAB?是一個(gè)強(qiáng)有力的工具,可用來快速分析從模數(shù)轉(zhuǎn)換器(ADC)輸出所捕獲的數(shù)據(jù)。本應(yīng)用筆記演示了如何使用MATLAB來突破邏輯分析儀存儲(chǔ)深度的局限。描述并比較了三種數(shù)碼拼接方式(基本,超前和反轉(zhuǎn))。并給出了三種方法所得的結(jié)果。
介紹
要評(píng)估一個(gè)高速模數(shù)轉(zhuǎn)換器(ADC)的性能,就需要捕獲其數(shù)字輸出碼,然后進(jìn)行分析。邏輯分析儀的存儲(chǔ)深度常常成為一個(gè)重要局限,妨礙系統(tǒng)捕獲足夠的數(shù)據(jù)點(diǎn),以生成高分辨率FFT,或者精確的INL/DNL圖。解決該問題的一個(gè)簡(jiǎn)單辦法是使用某種數(shù)學(xué)工具,例如MATLAB ( 圖1 ),將多組數(shù)據(jù)連接起來。連接數(shù)據(jù)的一個(gè)缺點(diǎn)是,通常會(huì)在兩組數(shù)據(jù)之間的連接點(diǎn)出現(xiàn)很大的不連續(xù)性。盡管不連續(xù)性對(duì)INL/DNL圖的影響極小,但對(duì)高分辨率FFT而言,幾乎是毀滅性的( 圖2 )。
圖1. 連接后的數(shù)據(jù)在兩組數(shù)據(jù)之間出現(xiàn)不連續(xù)。
![圖2. a) 捕獲單組16384點(diǎn)數(shù)據(jù)并分析;b) 捕獲兩組8192點(diǎn)數(shù)據(jù),連接,然后分析“拼接”技術(shù)。]
圖2. a) 捕獲單組16384點(diǎn)數(shù)據(jù)并分析;b) 捕獲兩組8192點(diǎn)數(shù)據(jù),連接,然后分析“拼接”技術(shù)。
有一種辦法可以消除不連續(xù)性,就是在各組數(shù)據(jù)中尋找相同的點(diǎn)簇(一般為3到4個(gè)點(diǎn)),然后在這些點(diǎn)將兩組數(shù)據(jù)“拼接”在一起( 圖3 )。最簡(jiǎn)單的“拼接”方法是,記錄下第一組數(shù)據(jù)中的最后四個(gè)點(diǎn),然后在第二組數(shù)據(jù)里尋找相同的點(diǎn)簇。相同點(diǎn)簇出現(xiàn)在第二組數(shù)據(jù)中的位置稱為“拼接點(diǎn)”。第二組數(shù)據(jù)中在拼接點(diǎn)之前的所有數(shù)據(jù)均被舍棄;第二組數(shù)據(jù)中的剩余部分與第一組數(shù)據(jù)合并。這種技術(shù)即所謂的基本數(shù)碼拼接,實(shí)現(xiàn)起來非常簡(jiǎn)單,可以在MATLAB中非常快地運(yùn)行。
圖3. 基本數(shù)碼拼接后得到的最終“拼接”數(shù)組。
采用基本拼接方法拼接數(shù)據(jù)時(shí),有時(shí)必須丟掉第二組數(shù)據(jù)中的近一半,才能找到與第一組數(shù)據(jù)最后四個(gè)點(diǎn)相匹配的一簇點(diǎn)。作為另一種選擇,丟掉第一組數(shù)據(jù)尾部的幾個(gè)點(diǎn),常常有助于找到更靠近第二組數(shù)據(jù)起點(diǎn)的拼接點(diǎn)( 圖4 )。然而,通過丟掉第一組數(shù)據(jù)尾部、第二組數(shù)據(jù)頭部的部分采樣點(diǎn)來尋找匹配點(diǎn)的方法實(shí)現(xiàn)起來比較困難。這種處理被稱為超前數(shù)碼拼接。理想拼接點(diǎn)應(yīng)該能夠保留盡可能多的數(shù)據(jù)點(diǎn),尋找這樣的拼接點(diǎn)需要認(rèn)真的考慮和一定的編程技巧。正確地實(shí)現(xiàn)之后,超前拼接技術(shù)通常能夠得到兩組小數(shù)組所含數(shù)據(jù)點(diǎn)總數(shù)的至少90%。
圖4. 采用超前拼接技術(shù)尋找理想拼接點(diǎn),最終得到“拼接”后的數(shù)組。
將第二組數(shù)據(jù)(數(shù)組B)拼接到第一組數(shù)據(jù)(數(shù)組A)之前被稱為反轉(zhuǎn)拼接,這種方式有可能得到更大的拼接數(shù)組( 圖5 )。但是,這種技術(shù)會(huì)使處理時(shí)間翻倍,因?yàn)楸仨氃贏領(lǐng)先于B和B領(lǐng)先于A兩種情況下尋找拼接點(diǎn)。此外,當(dāng)與其他拼接技術(shù)一起使用時(shí),反轉(zhuǎn)拼接方式所帶來的好處通常很少。因此,對(duì)于較慢的PC,反轉(zhuǎn)拼接技術(shù)大幅度增加的處理時(shí)間開銷較之它所帶來的好處而言并不太值。表1詳細(xì)比較了這三種代碼拼接方法。
圖5. 反轉(zhuǎn)拼接的處理時(shí)間加倍,但常常收效甚微。
表1. 三種拼接技術(shù)對(duì)比 *
Stitch Technique | Size of Final Data Set | Description |
---|---|---|
Data Set Numbers | # of codes(averaged) | % of two data sets(averaged) |
1 + 2 | 3 + 4 | 1 + 4 |
Concatenate? | N/A | 16384 |
Basic | 11060 | 8192? |
Reverse | 11060 | 8192? |
Advanced | 13790 | 16046 |
Advanced+Reverse | 15427 | 16176 |
*采用上述拼接技術(shù)對(duì)兩組8K (8192個(gè))數(shù)據(jù)進(jìn)行拼接。為確保準(zhǔn)確性,采用四組8192點(diǎn)數(shù)據(jù)(分別編號(hào)為1至4)重復(fù)本測(cè)試。每組測(cè)試所合成的數(shù)據(jù)取平均后列于測(cè)試數(shù)據(jù)的右側(cè)。
? 直接連接總能得到100%的數(shù)據(jù)。
? 無法拼接數(shù)據(jù)。### MATLAB函數(shù)說明
本文后附的MATLAB代碼(附錄A和B中的StitchMatrices和FindStitchPoint)將上述論點(diǎn)結(jié)合到一個(gè)易于使用的函數(shù)中。這些函數(shù)可接受兩組數(shù)據(jù)(MATLAB中的單列矩陣)和幾個(gè)輸入變量(用來選擇超前/反轉(zhuǎn)拼接功能)。FindStitchPoint例程用來確定拼接點(diǎn)在數(shù)組A和B中的偏移量。StitchMatrices例程則根據(jù)FindStitchPoint例程給出的偏移量對(duì)兩組數(shù)據(jù)A和B進(jìn)行舍棄和組合。同時(shí),最終數(shù)據(jù)的拼接點(diǎn)被記錄在PrevStitchBins數(shù)組中,以便于后續(xù)處理。當(dāng)拼接多組數(shù)據(jù)時(shí),PrevStitchBins可保存老的拼接點(diǎn)。
結(jié)論
拼接兩組數(shù)據(jù)可以得到一組理想的結(jié)果。圖6給出了三組8192點(diǎn)數(shù)據(jù)使用上述拼接技術(shù)拼接起來(使用5個(gè)拼接點(diǎn))后的FFT圖。所得的FFT幾乎與前面圖2a所示,基于16384個(gè)連續(xù)點(diǎn)所得結(jié)果相同。
圖6. 數(shù)碼拼接后得到精確的FFT圖。
審核編輯:郭婷
-
matlab
+關(guān)注
關(guān)注
187文章
2990瀏覽量
232755 -
adc
+關(guān)注
關(guān)注
99文章
6609瀏覽量
547681
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
邏輯分析儀是什么
RAM內(nèi)存不足錯(cuò)誤
邏輯分析儀的應(yīng)用分析
邏輯分析儀的使用
邏輯分析儀內(nèi)存不足?“拼”出解決之道

評(píng)論