개요: 이 애플리케이션 노트에서는 MATLAB의 일부 강력한 명령을 사용하여 메모리가 제한된 고속 데이터 캡처 시스템의 코드 밀도를 증가시킴으로써 모든 고속 아날로그-디지털 컨버터(ADC)의 INL 및 DNL 테스팅에 필요한 높은 횟수의 코드 반복을 얻을 수 있는 방법을 설명한다.
간략한 이 애플리케이션 노트에서는 로직 분석기(logic-analyzer) 메모리 깊이가 제한된 상황에서 MATLAB™1과 같은 데이터 프로세싱 소프트웨어를 사용하여 코드의 수를 증가시키는 방법을 설명한다. 아마도 HP16517A 고속 상태 카드(135MHz 이상의 데이터 레이트 제공)가 탑재된 로직 분석기(LA) 메인프레임 HP16500C를 사용하여 초고속 데이터를 캡처해 본 엔지니어들은 이미 이러한 메모리 제한을 경험해 보았을 것이다.
이러한 HP 시스템의 표준 버전에는 일반적으로 64k의 최대 메모리 깊이가 탑재된다. 이 경우 단일 테스트 실행에서 불과 65536 데이터 포인트만 캡처할 수 있다. 64k 메모리가 캡처하는 데이터 포인트는 INL/DNL 그래프에 대한 정밀한 표현을 생성하기에는 전혀 적절한 수준이 아니다. 실제로 INL 및 DNL 그래프의 경우, 전형적으로 로직 분석기는 MATLAB 또는 다른 신호 프로세싱 소프트웨어를 통해 처리되는 256k에서 4M 사이의 데이터 포인트를 캡처해야 한다.
위에서 언급한 데이터 캡처 시스템의 64k 표준 메모리 깊이를 사용하면서 정밀한 INL/DNL 특성화를 달성하기 위해서는 다중 데이터 레코드를 캡처하고 이를 한 파일에 결합해야 한다. 예를 들어, 256k 데이터 포인트가 필요한 경우, 애플리케이션 노트 Histogram Testing Determines DNL and INL Errors에서 제공된 MATLAB 프로그램(또는 유사한 소스 코드)에서 프로세싱하기 전에 64k 데이터 포인트 4 세트를 캡처하여 결합해야 한다. .
INL/DNL 프로세싱을 위해 충분히 큰 용량의 단일 파일에 다중 데이터 레코드를 결합하려면 다음과 같은 단계를 수행한다.
- 고속 상태 카드(HP16517A)를 사용하여 64k 데이터 포인트를 캡처한다.
- 코드 파일 내에서 코드의 부분이 아닌 LA에 해당되는 모든 라인을 제거하고, 파일을 저장한다.
- 파일의 컨텐츠에 새로운 변수를 지정한다.
MATLAB command: a=load('inltest1');
- 고속 상태 카드를 사용하여 다른 64k 데이터 레코드를 캡처한다.
- 다시 코드 파일 내에서 코드의 부분이 아닌 LA에 해당되는 모든 라인을 제거하고, 파일을 저장한다.
- 새로운 데이터 파일의 컨텐츠에 다른 새로운 변수를 지정한다.
MATLAB command: b=load('inltest2');
- 두 데이터 레코드(A와 B)를 결합하고, 이 레코드를 새로운 변수로 지정한다.
MATLAB command: c=vertcat(a,b);
- 결합된 데이터 레코드의 크기를 테스트하려면, MATLAB에서size(c)를 입력한다. 132k 데이터 레코드가 나타날 것이다.
- 이 새로운 레코드를 .TXT 또는 .DAT 파일로 저장하여, MATLAB에서 INL/DNL 계산을 위해 데이터를 프로세싱할 수 있도록 한다.
MATLAB command: save inldata.txt c -ascii;
- 위 명령은 사전 정의된 디렉토리에 ASCII 파일로 파일을 저장하고, 이 파일을 INL/DNL 테스트 루틴에서 이용할 수 있도록 한다.
- 모든 단계가 한 번의 MATLAB 세션에서 완료되었다면, 위 프로세스가 정확히 실행될 것이다. 이전에 결합된 파일에 대해서도 이 프로세스를 반복할 수 있다. 이와 같은 경우, 간단히 데이터가 저장된 파일을 로드하고, 이 파일에 새로운 변수를 지정하면 된다.
MATLAB command: d=load('inldata.txt');
- 이 작업이 완료되면, 새로운 데이터 세트를 가져와 기존의 데이터에 추가할 수 있다. 다른 64k 데이터 레코드를 캡처하고, 그 컨텐츠를 또 다른 새로운 매트릭스 변수에 지정하면 된다.
MATLAB command: e=load('inltest3');
- 기존 텍스트 파일(이제 변수 d로 지정)을 변수 e의 새로운 데이터와 결합한다.
MATLAB command: 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 파일로 저장한 경우, 매트릭스 파일의 데이터 경로를 기록해 두는 것을 잊지 않도록 주의한다. 프로그램에서 경로를 요청하면, 로드할 파일 이름과 정확한 경로를 테스트 루틴에 제공해야 한다. 이 밖에도 프로그램은 데이터 포인트의 수(결합된 매트릭스 크기), 컨버터 분해능 및 해당 미드 코드(mid-code) 정보를 요청한다. INL/DNL 테스트 프로그램을 실행하기 전에 이러한 정보를 미리 알아 두도록 한다.
참고 문헌:
- 애플리케이션 노트 283: INL/DNL Measurements for High-Speed Analog-to-Digital Converters (ADCs)
- 애플리케이션 노트 2085: Histogram Testing Determines DNL and INL Errors
의견을 보내주세요! 위 내용이 도움이 되셨나요? 여러분의 의견을 기다립니다 — Maxim은 보내주신 정정이나 제안사항을 반영하고 있습니다.
이 페이지를 평가하고 의견을 보내주십시오.
자동 업데이트
관심있는 분야의 애플리케이션 노트가 나올 때 자동으로 업데이트 받고 싶으세요? 그렇다면 EE-Mail™을 신청하십시오.
| 추가 정보 | |
APP 3495: Oct 26, 2005
|
| MAX1121 |
광대역 애플리케이션을 위한 LVDS 출력을 갖춘 1.8V, 8비트, 250Msps ADC |
전체 데이터 시트 (PDF, 440kB)
|
|
| MAX1122 |
1.8V, 10비트, 광대역 애플리케이션을 위한 LVDS 출력을 갖춘 170Msps ADC |
전체 데이터 시트 (PDF, 448kB)
|
|
| MAX1123 |
1.8V, 10비트, 광대역 애플리케이션을 위한 LVDS 출력을 갖춘 210Msps ADC |
전체 데이터 시트 (PDF, 448kB)
|
|
| MAX1124 |
1.8V, 10비트, 광대역 애플리케이션을 위한 LVDS 출력을 갖춘 250Msps ADC |
전체 데이터 시트 (PDF, 448kB)
|
|
| MAX1213 |
광대역 애플리케이션용 1.8V, 12비트, 170Msps ADC |
전체 데이터 시트 (PDF, 324kB)
|
|
| MAX19541 |
CMOS 출력을 갖는 광대역 애플리케이션용 12비트, 125Msps ADC |
전체 데이터 시트 (PDF, 296kB)
|
|
| MAX19542 |
CMOS 출력을 갖는 광대역 애플리케이션용 12비트, 170Msps ADC |
전체 데이터 시트 (PDF, 520kB)
|
|
|
|
다운로드, PDF 형식 (24kB)
AN3495,
AN 3495,
APP3495,
Appnote3495,
Appnote 3495
|
|