以下應用筆記展示了如何利用 MATLAB 的一些強大命令來提高存儲器受限高速數據采集系統的碼密度,以實現任何高速模數轉換器 (ADC) 的 INL 和 DNL 測試所需的大量代碼重復。
本簡短的應用筆記演示了在邏輯分析儀存儲器深度有限的情況下,如何使用 MATLAB?1 等數據處理軟件來增加代碼數量。任何使用配備 HP16517A 高速狀態卡(數據速率超過 135MHz)的邏輯分析儀 (LA) 主機 HP16500C 捕獲超高速數據的工程師可能已經遇到過這些內存限制。
此HP系統的標準版本通常配備64k的最大內存深度,單次測試運行僅允許捕獲65536個數據點。64k 內存捕獲的數據點根本不足以生成 INL/DNL 圖形的準確表示。事實上,對于 INL 和 DNL 圖,邏輯分析儀通常應捕獲 256k 到 4M 個數據點,這些數據點通過 MATLAB 或其他信號處理軟件進行處理。
要使用上述數據采集系統的64k標準存儲深度并實現精確的INL/DNL表征,必須捕獲多個數據記錄并將其合并到一個文件中。例如,如果需要 256k 個數據點,則必須捕獲四組 64k 數據點并將其組合在一起,然后才能使用應用筆記 2085“直方圖測試確定 DNL 和 INL 誤差”中提供的 MATLAB 程序(或類似源代碼)進行處理。
要將多個數據記錄合并到一個足夠大的文件中以進行 INL/DNL 處理,請執行以下步驟。
使用高速狀態卡 (HP16517A) 捕獲 64k 數據點。
刪除代碼文件中所有不屬于代碼的特定于 LA 的行,然后保存該文件。
為文件的內容分配一個新變量。
MATLAB 命令: a=load('inltest1');
使用高速狀態卡捕獲另一個 64k 數據記錄。
同樣,刪除代碼文件中不屬于代碼一部分的特定于 LA 的行,然后保存該文件。
為新數據文件的內容分配另一個新變量。
MATLAB 命令: b=load('inltest2');
合并兩個數據記錄(A 和 B)并將它們分配給新變量。
MATLAB 命令: c=vertcat(a,b);
如果要測試組合數據記錄的大小,只需在 MATLAB 中鍵入 size(c),您應該會收到 132k 的數據記錄。
將此新記錄另存為.TXT或 。DAT 文件,以便 MATLAB 可以處理數據以進行 INL/DNL 計算。
MATLAB 命令: save inldata.txt c -ascii;
上述命令將文件另存為預定義目錄中的 ASCII 文件,并使其可用于 INL/DNL 測試例程。
如果所有步驟都在一個 MATLAB 會話中完成,則上述過程將起作用。也可以對以前合并的文件重復此操作。為此在這種情況下,只需加載存儲數據的文件,并為其分配一個新變量。
MATLAB 命令: d=load('inldata.txt');
完成此任務后,可以獲取一組新數據并將其添加到現有數據中。只需捕獲另一個 64k 數據記錄并將其內容分配給另一個新的矩陣變量。
MATLAB 命令: e=load('inltest3');
將舊文本文件(現在分配給變量 d)與變量 e 中的新數據合并。
MATLAB 命令: f=vertcat(d,e);
按照步驟 9 將矩陣的新擴展內容保存到 ASCII 文件。
也可以通過在 MATLAB 中鍵入以下命令一次組合多個變量:
y=vertcat(a,b,c,d,e,f,g,h)。
有許多不同的方法、程序和設置配置可以使用現有設備和簡單的軟件命令來完成這些測試。這里描述的過程只是使用 MATLAB 強大功能的一個示例。
要使用 INL/DNL 測試程序實現閉環,只需在 MATLAB 中調用 INL/DNL 測試例程即可。運行它,并在詢問時將連接的數據集加載到程序中。如果將合并數據保存在.TXT或 .DAT文件,不要忘記記錄矩陣文件的數據路徑。當程序提示時,您必須提供要加載到測試例程中的確切路徑和文件名。該程序還會詢問數據點的數量(級聯矩陣的大小)、轉換器分辨率及其中間代碼。在運行 INL/DNL 測試程序之前,請確保您有此信息可用。
審核編輯:郭婷
-
matlab
+關注
關注
182文章
2963瀏覽量
230160 -
存儲器
+關注
關注
38文章
7452瀏覽量
163606 -
adc
+關注
關注
98文章
6438瀏覽量
544097
發布評論請先 登錄
相關推薦
評論