전자회로 입문 — 센서 입력 검증 · ADC 획득 시간과 채널의 기억 · 이론
ADC 획득 시간과 채널의 기억
한 줄 요약
센서가 올바른 전압을 내더라도 ADC의 샘플 커패시터가 그 전압까지 이동할 시간이 부족하면, 새 채널에 지난 채널의 흔적이 남습니다.
왜 이게 필요했나
우주 온실의 센서 두 개를 번갈아 읽습니다. 첫 센서는 1.8V, 두 번째 센서는 0.3V입니다. 프로그램은 분명 두 번째 채널을 골랐는데 숫자는 약 0.764V에 해당합니다. 센서 주소를 잘못 썼을까요, 캐시가 남았을까요? 모두 가능한 가설이지만 이번 모델에서는 아날로그 입력의 획득 시간이 원인입니다. 코드를 고치기 전에 어떤 상태가 어디에 남아 있는지 분리해야 합니다.
앞 모듈의 RC 회로는 입력에 계속 연결돼 있었습니다. 여기서는 스위치가 닫혀 있을 때만 샘플 커패시터가 입력 쪽과 연결됩니다. 스위치가 열린 시간까지 충전 시간에 더하면, 실제로 얻지 못한 시간을 계산에 넣게 됩니다. 주기가 1µs라고 해서 커패시터가 1µs 동안 입력을 따라가는 것은 아닙니다.
어떻게 동작하나
이번 교육용 회로는 이상 전압원, 소스 저항 Rs, 온 저항 100Ω인 스위치, 접지로 연결된 20pF 샘플 커패시터로 구성합니다. 커패시터 초기 전압은 0V입니다. 첫 채널 1.8V를 두 번 획득한 뒤 입력을 0.3V로 바꾸고 두 번 더 획득합니다. 실제 센서, 다중화 IC, 변환기의 제조사 모델을 연결한 것이 아니라 입력 기억 현상 하나를 떼어 낸 회로입니다.
닫힌 구간의 시간상수는 τ=(Rs+Ron)C입니다. Rs=10kΩ, Ron=100Ω, C=20pF이면 τ=202ns입니다. 이전 전압이 Vold, 현재 입력이 Vtarget, 닫힌 시간이 T라면 다음 전압은 Vtarget+(Vold−Vtarget)exp(−T/τ)입니다. 처음에는 Vold=0이지만 다음 획득에서는 바로 전 결과를 써야 합니다. 매번 0으로 초기화하는 계산은 채널의 기억을 지워 버립니다.
스위치가 꺼져 있을 때도 모델의 저항은 무한대가 아니라 10¹²Ω입니다. 따라서 미세한 누설이 있습니다. 해석식에서는 꺼진 구간의 누설을 무시하고, 시뮬레이션과 비교할 때 작은 차이를 허용합니다. 두 계산이 수학적으로 완전히 같다고 주장하지 않는 이유입니다. hold 구간에서 전압이 크게 움직이면 스위치가 실제로 꺼졌는지, 관측 시간을 잘못 골랐는지부터 확인합니다.
200ns라는 숫자에도 경계가 있다
제어 전압은 100ns 뒤 상승을 시작하고 상승·하강에 각각 1ns가 걸립니다. 고레벨 폭은 200ns, 반복 주기는 1µs이며 스위치 임계값은 0.5V입니다. 스위치는 상승 중간에 켜지고 하강 중간에 꺼집니다. 따라서 실제 연결 시간은 201ns입니다. 고레벨 폭과 실제 연결 시간을 같은 변수로 쓰면 작은 오차의 원인을 프로그램 밖에서 찾게 됩니다.
관측은 제어 전압이 완전히 내려간 뒤 25ns 시점에 합니다. k번째 획득의 관측 시각은 100ns+k×1µs+고레벨 폭+27ns입니다. 여기서 27ns에는 상승 1ns, 하강 1ns, 기다림 25ns가 들어갑니다. 반면 해석식의 연결 시간에는 임계값 기준으로 폭+1ns를 씁니다. 같은 시간 숫자가 아니라는 점이 이번 실습의 핵심입니다.
| 획득 순서 | 현재 입력 | 명목 모델의 획득 후 전압 | 해석 |
| --- | --- | --- | --- |
| 첫 번째 | 1.8V | 약 1.135V | 0V에서 출발해 아직 덜 충전됨 |
| 두 번째 | 1.8V | 약 1.554V | 이전 전압에서 이어서 충전됨 |
| 세 번째 | 0.3V | 약 0.764V | 지난 채널의 높은 전압이 남음 |
| 네 번째 | 0.3V | 약 0.471V | 새 입력에 가까워지지만 아직 차이 남음 |
이 숫자는 뒤의 과제를 대신하는 정답 파일이 아닙니다. 입력·저항·용량·획득 폭을 바꾸면 다시 계산하고 실제 파형을 읽어야 합니다. 특히 high_v와 low_v라는 필드명은 첫째·둘째 채널을 뜻할 뿐 항상 앞 값이 더 높다는 제약은 없습니다. 반대 방향으로 전환되는 입력도 다뤄야 원인을 값의 크기에 하드코딩하지 않을 수 있습니다.
파형 파일이 만들어졌다는 것만으로는 부족하다
ngspice는 이 회로의 시간에 따른 전압을 계산합니다. 출력에는 time, v(vin), v(gate), v(hold) 네 열이 있습니다. 첫 열은 초, 나머지는 볼트입니다. 원 입력과 저장 전압은 서로 다른 노드입니다. 분석기가 두 열을 바꿔 읽으면 모든 오차가 0에 가까워지는 아주 그럴듯한 거짓 성공을 만들 수 있습니다.
읽을 때는 헤더, 네 열, 유한 수치, 엄격하게 증가하는 시간, 처음과 마지막 시각을 검사합니다. 종료 코드 0이나 파일 존재만으로 분석을 시작하지 않습니다. 이 수업을 준비할 때 실제로 수치 설정을 지나치게 조인 실행은 파형이 끝까지 도달하지 못했는데도 프로세스가 0으로 종료됐습니다. 자료가 없다는 것과 요구 조건이 실패했다는 것은 다른 결과여야 합니다.
원하는 시각이 두 행 사이에 있으면 선형 보간합니다. 다음 행을 그대로 가져오면 전압이 빠르게 변하는 구간에서 시간 편향이 생깁니다. 반대로 파형이 2µs에서 끝났는데 3.327µs 값을 요청했다면 마지막 전압을 붙여 채우지 않습니다. 이것은 보간이 아니라 근거 없는 외삽입니다. 중간에 중복 시간이 있으면 분모가 0이 될 수 있으므로 파서를 통과시키지 않습니다.
이번 구현은 전체 파형을 한 번 읽고, 관측 시각을 찾을 때 이진 탐색을 사용할 수 있습니다. 표본마다 처음부터 전체를 훑는 방식보다 반복 분석 비용을 줄일 수 있습니다. 제공 도우미는 시뮬레이터 로그와 회로·설정·파형을 새 폴더에 함께 남깁니다. 다음 실행으로 이전 증거를 덮지 않도록 이미 있는 출력 폴더는 거절합니다.
오차, 모델, 수렴은 세 개의 질문이다
첫 질문은 샘플 전압이 목표 입력과 얼마나 다른가입니다. 교육용 코드 폭은 Vref/2ⁿ입니다. 3.3V·12비트이면 한 LSB는 약 805.664µV이고 절반은 약 402.832µV입니다. 여기서는 실제 변환 코드를 생성하지 않고 전압 오차를 이 폭으로 나눕니다. 4095는 최댓값의 번호이지 이 규약의 상태 개수가 아닙니다.
둘째 질문은 관측이 우리가 계산한 회로 모델과 맞는가입니다. 실제 파형과 이전 전압을 이어받는 해석식의 최대 차이를 구하고 100µV 이내인지 확인합니다. 맞지 않으면 회로·초기 조건·노드 선택·시간축부터 확인합니다. 입력 전압을 그대로 결과로 복사해 목표 오차만 0으로 만들더라도 모델 일치 검사는 통과할 수 없어야 합니다.
셋째 질문은 수치 해석의 간격을 바꿔도 결론이 유지되는가입니다. 같은 조건을 5ps와 2.5ps 최대 시간 간격으로 실행하고 네 표본의 최대 차이가 10µV 이내인지 비교합니다. 수렴 비교는 해석식 대조와 역할이 다릅니다. 두 실행이 똑같이 잘못된 회로를 사용해도 서로는 일치할 수 있기 때문입니다. 반대로 회로는 맞지만 수치 간격이 거칠어서 보고할 자릿수가 안정되지 않을 수도 있습니다.
최종 판정에는 10µV의 판단 여유 구간을 둡니다. 절대 오차에 10µV를 더해도 절반 LSB 이하이면 pass, 오차에서 10µV를 빼도 절반 LSB보다 크면 fail, 사이에 걸리면 borderline입니다. 모델 불일치는 네 표본 모두 invalid_model로 표시합니다. borderline을 pass로 반올림하지 않습니다. 이 여유값은 이번 실험의 운영 규약이며 모든 수치 오차의 엄밀한 상계나 실제 계측 불확도 인증값은 아닙니다.
현장에서 만나는 모습
조건 비교에서는 다른 변수를 고정한 이유를 설명해야 합니다. 같은 입력과 용량에서 소스 저항을 100Ω으로 낮춘 이상 모델은 이번 절반 LSB 기준을 통과했습니다. 획득 폭을 350ns로 늘린 10kΩ 모델은 오차가 줄었지만 기준에는 못 들어왔습니다. ‘개선됐다’와 ‘충분하다’를 구분하는 간단한 사례입니다. 여러 조건에서 통과 후보가 나와도 실제 제품에 쓸 부품을 골랐다는 의미는 아닙니다.
실제 버퍼를 설계한다면 출력 구동 능력, 잡음, 안정도, 입력 범위와 전원 조건을 추가로 검증해야 합니다. 이번 모델에는 그 버퍼 자체도, ADC의 전하 주입·보호 다이오드·비선형성·온도 편차도 없습니다. 따라서 ‘샘플 회로에서 통과한 조건’이라고 보고하고 실물 정확도나 안전성을 보장하지 않습니다. 실제 장비에 전압을 인가하거나 레이저·전력 회로를 연결하는 과제가 아닙니다.
NXP의 아날로그 검증 직무 공고는 정착 시간과 ADC 이해, Python 자동화, 데이터시트에 근거한 검증 계획과 결과 분석을 요구합니다. 이 수업은 그 중 작은 검증 주기를 연습하도록 설계한 것이며 실제 실리콘 검증 경력이나 해당 직무의 전체 요구를 대체하지 않습니다.
다음 실습에서 할 것
설정 검증, 파형 읽기, 보간, 관측, 재귀 예측, 오차 판정, 단일 보고, 조건 비교와 CLI를 차례로 구현합니다. 최종 보고에는 원 설정과 관측값, 모델 차이, 수렴 여부, 조건부 후보를 함께 남깁니다. 후보 번호만 남기면 왜 골랐는지를 다시 설명할 수 없습니다. 최소 두 조건을 실제로 실행한 뒤, 입력 방향이 다른 경우에도 결과를 검산해 보세요.
공식 자료와 확인 범위
- [Analog Devices의 SAR 입력 설계 설명](https://www.analog.com/en/resources/analog-dialogue/articles/front-end-amp-and-rc-filter-design.html): 획득 시간·스위치드 커패시터 입력·다중화 신호의 정착을 더 읽습니다. 본문의 특정 ADC 예제값과 이번 교육용 모델을 섞지 않습니다.
- [ngspice 공식 기초 실습](https://ngspice.sourceforge.io/ngspice-tutorial.html): 전압원과 시간 해석의 실행 방법을 확인합니다. 이 실습에서 실행 검증한 버전은 42입니다.
- [NXP 아날로그 검증 공고 R-10062167](https://nxp.wd3.myworkdayjobs.com/en-US/careers/job/Senior-Lead-analog-post-silicon-validation-engineer_R-10062167): 2026-09-13 공식 페이지 검색 색인에서 요구 역량을 확인했습니다. 공고 내용으로부터 교육 목표를 구성한 것이며 채용을 보장하지 않습니다.