9장. 디지털 회로
왼쪽 절반에만 찍고 오른쪽은 백지로 비웁니다 — 읽으면서 옆에 적어 보세요. 내용은 하나도 안 자릅니다.
2단으로 빽빽하게, 표시된 것만 — 시험 직전에 훑는 배치입니다.
논리 레벨과 노이즈 마진
디지털은 "0과 1"이 아니라 전압 범위입니다. 그 범위의 여유가 노이즈 마진(noise margin)입니다.
상호 인덕턴스 (H)H부하 상호 인덕턴스H개수입력 High 문턱V입력 Low 문턱V출력 High 전압V출력 Low 전압V
주파수 (noise)Hz상승 시간s
상호 인덕턴스 (H)H개수
부하 상호 인덕턴스H개수
부하 상호 인덕턴스H개수
⚠️ 이상과 실제
| 이상 | 실제 |
|---|---|
| 0 또는 1 | 전이 구간이 존재하고, 그동안 관통 전류가 흐름 |
| 즉시 전환 | 유한한 상승·하강 시간 |
| 입력 전류 0 | 누설 + 입력 용량 충전 전류 |
| 노이즈 없음 | 에지가 광대역 노이즈원 |
| 문턱이 고정 | 온도·전원 전압에 따라 이동 |
⚖️ 고르는 기준
| 선택 | ✅ 좋아지는 것 | ⚠️ 나빠지는 것 |
|---|---|---|
| 높은 전원 전압 (5 V) | 노이즈 마진 큼, 견고 | 소비 전력↑ (), 속도 느림, 아날로그 헤드룸은 유리 |
| 낮은 전원 전압 (1.8 V) | 저전력, 고속 | 노이즈 마진 작음, 레벨 변환 필요 |
| 고속 로직 | 빠른 처리 | EMI↑, 소비 전력↑, 신호 무결성(signal integrity) 관리 필요 |
| 저속 로직 / 슬루 제한 | EMI↓, 반사(reflection)↓ | 타이밍 여유 감소 |
| 직렬 종단(termination) 저항 | 반사·EMI↓ | 신호 지연, 부품 수↑ |
| 슈미트 트리거(Schmitt trigger) 입력 | 노이즈 내성↑, 느린 에지 허용 | 지연↑, 문턱 정확도↓ |
논리 게이트와 부울대수
논리 연산의 기본. 측정 시스템에서는 주로 타이밍 제어와 신호 게이팅에 씁니다.
이득대역폭 또는 자속밀도잡음 지수
이득대역폭 또는 자속밀도
이득대역폭 또는 자속밀도잡음 지수
이득대역폭 또는 자속밀도정전용량F
이득대역폭 또는 자속밀도잡음 지수
⚠️ 이상과 실제
| 이상 | 실제 |
|---|---|
| 즉시 응답 | 전파 지연 (1~20 ns) |
| 글리치 없음 | 입력이 동시에 바뀌지 않으면 글리치 발생 |
| 전력 소비 없음 | 전환 시 동적 전력 + 관통 전류 |
| 출력이 깨끗 | 링잉(ringing), 오버슈트(overshoot) |
| 미사용 입력은 무관 | CMOS의 미사용 입력을 띄우면 안 됨 — 반드시 나 GND에 고정 |
⚖️ 고르는 기준
| 선택 | ✅ 좋아지는 것 | ⚠️ 나빠지는 것 |
|---|---|---|
| 개별 게이트 IC (74LVC1G 등) | 작고 저렴, 지연 최소 | 기능 고정, 부품 수 |
| MCU 소프트웨어로 처리 | 유연, 부품 없음 | 지연·지터(jitter), 실시간성 부족 |
| CPLD/FPGA | 유연 + 빠름 | 비쌈, 전력, 복잡 |
| 고속 로직 | 짧은 지연 | EMI, 전력 |
| 저속 로직 (74HC) | EMI 적음, 저렴 | 지연 큼 |
순차 논리와 플립플롭
상태를 기억하는 소자. 어레이 스캔, 카운터, 동기화의 기본 블록입니다.
온도 또는 주기 (clk)시간 (co)s시간 (logic)s시간 (su)s
시간 (co, 최소)s시간 (logic, 최소)s시간 (h)s
시정수s잡음 전압 밀도V/√Hz주파수 (clk)Hz주파수 (data)Hz시간 (res)s0번 온도 또는 주기
정전용량F주파수 (ring)Hz인덕턴스H
최소 온도 또는 주기
최대 주파수Hz
⚠️ 이상과 실제
| 이상 | 실제 |
|---|---|
| 즉시 상태 전환 | 지연 |
| 셋업/홀드만 지키면 안전 | 클럭 스큐(skew)로 실제 여유가 다름 |
| 메타스테이블 없음 | 비동기 입력에서 반드시 발생 가능 |
| 클럭이 동시에 도달 | 배선 지연으로 스큐 발생 |
| 출력이 깨끗 | 링잉, 크로스토크(crosstalk) |
⚖️ 고르는 기준
| 선택 | ✅ 좋아지는 것 | ⚠️ 나빠지는 것 |
|---|---|---|
| 동기 설계 | 타이밍 해석 가능, 안정 | 클럭 배선 필요, 전력 |
| 비동기 설계 | 저전력, 클럭 없음 | 타이밍 위험, 글리치 |
| 동기화기 2단 | 메타스테이빌리티 방지 | 2클럭 지연 |
| 동기화기 3단 | MTBF 크게 개선 | 3클럭 지연 |
| 낮은 클럭 주파수 | EMI↓, 전력↓, 타이밍 여유↑ | 처리량↓ |
| 직렬 종단(termination) 저항 | 링잉·EMI↓ | 지연↑ |
클럭과 타이밍
클럭은 시스템의 심장이자 가장 큰 노이즈원입니다. 측정 시스템에서는 클럭의 지터가 곧 측정 오차입니다.
정전용량 (stray)F1번 정전용량F2번 정전용량F부하 정전용량F
정전용량 (stray)F1번 정전용량F2번 정전용량F부하 정전용량F
시간 간격s전압 변화량V거리 또는 두께m시간s전압V
신호 주파수Hz신호 대 잡음비dB시간 (jitter)s
1번 정전용량F2번 정전용량F
주파수Hz신호 대 잡음비dB시간 (jitter)s
⚠️ 이상과 실제
| 이상 | 실제 |
|---|---|
| 클럭이 정확한 주파수 | ppm 단위 오차, 온도·에이징 드리프트 |
| 에지가 완벽 | 지터, 상승시간, 링잉(ringing) |
| 클럭이 동시에 도달 | 스큐 |
| 클럭이 노이즈 안 만듦 | 가장 강한 주기적 노이즈원 |
| 크리스털이 항상 발진 | 부하 커패시터·구동 레벨이 맞아야 함. 기동 실패 흔함 |
⚖️ 고르는 기준
| 선택 | ✅ 좋아지는 것 | ⚠️ 나빠지는 것 |
|---|---|---|
| 크리스털 | 정확·저지터·저렴 | 부하 커패시터 필요, 기동 시간, 진동에 민감 |
| 내장 RC 발진기 | 부품 0개 | 부정확(±5%), 지터 큼, 온도 드리프트 |
| TCXO/OCXO | 최고 정확도 | 비쌈, 전력(OCXO는 발열까지) |
| 높은 클럭 주파수 | 처리량↑ | EMI↑, 전력↑, 지터 관리 어려움 |
| 낮은 클럭 주파수 | EMI↓, 전력↓ | 처리량↓ |
| PLL 체배 | 주파수 유연 | 지터 증가, 잡음 |
| 차동 클럭 (LVDS) | 노이즈 면역, 낮은 EMI | 부품·전력, 배선 2배 |
풀업·오픈드레인·레벨 시프터
풀업(pull-up) 저항 값 하나가 I2C 통신 속도와 소비 전력을 정합니다.
전류 (OL)A최소 저항Ω전압 (DD)V출력 Low 전압V
정전용량 (b)F피크 저항Ω상승 시간s
정전용량 (b)F최대 저항Ω상승 시간s
최대 저항Ω
최대 저항Ω
⚠️ 이상과 실제
| 이상 | 실제 |
|---|---|
| 상승이 즉시 | 로 느림 |
| 버스 용량이 작음 | 커넥터·케이블로 크게 증가 |
| 풀업 값이 자유 | 최소·최대 제약이 동시에 존재 |
| 레벨 시프트가 투명 | 지연·왜곡 추가 |
| 5 V 내성이면 안전 | 전원이 꺼진 상태에서 5 V가 들어오면 기생 급전(back-powering) 위험 |
⚖️ 고르는 기준
| 선택 | ✅ 좋아지는 것 | ⚠️ 나빠지는 것 |
|---|---|---|
| 작은 풀업 (1 kΩ) | 빠른 상승, 노이즈 면역↑ | 소비 전류↑ (3.3 mA), 드라이버 부담 |
| 큰 풀업 (10 kΩ) | 저전력 | 느린 상승 → 속도 제한, 노이즈에 취약 |
| 내부 풀업 | 부품 0개 | 값 부정확, 부팅 전 무효, I2C에 부족 |
| 저항 분압 레벨 시프트 | 부품 2개, 저렴 | 느림, 단방향, 상시 전류 |
| MOSFET 레벨 시프트 | 양방향, 빠름, 저렴 | 부품 3개(MOSFET + 풀업 2개) |
| 전용 IC | 빠르고 확실 | 비쌈, 전원 필요 |
아날로그 스위치와 멀티플렉서
신호 경로를 전자적으로 전환합니다. 채널 스위칭이 곧 멀티플렉싱이고, 여기서 발생하는 오차가 다채널 측정의 근본 한계입니다.
전압 변화량V정전용량 (hold)F전하 / 품질 계수 (inj)전압V
전압 변화량V전압V
시정수s부하 정전용량F도통 저항Ω신호원 저항Ω
시정수s
도통 저항Ω부하 저항Ω입력 전압V출력 전압V
정전용량 (OFF)F주파수Hz부하 저항Ω
시정수s
시정수s정착 시간s
전압 변화량V전압V
⚠️ 이상과 실제
| 이상 | 실제 |
|---|---|
| = 0 | 수 Ω~수백 Ω, 신호 전압에 따라 변동 |
| OFF = 완전 차단(cutoff) | 누설 전류 + 를 통한 결합 |
| 스위칭에 부작용 없음 | charge injection, 클럭 피드스루 |
| 즉시 전환 | / 존재, 세틀링 필요 |
| 채널 독립 | 크로스토크, 메모리 효과 |
| 전원 무관 | 이 전원 전압에 크게 의존 |
⚖️ 고르는 기준
| 선택 | ✅ 좋아지는 것 | ⚠️ 나빠지는 것 |
|---|---|---|
| 낮은 | 세틀링 빠름, 감쇠 적음 | 큰 게이트 → ↑, ↑ (크로스토크↑) |
| 높은 (작은 스위치) | ↓, 용량↓ | 세틀링 느림 |
| 큰 홀드 커패시터 | charge injection 영향↓, kT/C 잡음↓ | 세틀링 느림 |
| 작은 홀드 커패시터 | 빠름 | 커짐, kT/C 잡음↑ (3-02) |
| 더미 스위치 | 상쇄 | 면적, 완전 상쇄 불가 |
| 차동 구조 | 옵셋·잡음 상쇄, CMRR | 회로 2배, 배선 2배 |
| CDS | 옵셋·1/f 제거 | 샘플 2회 → 대역폭 절반, 잡음 배 |
카르노맵과 해저드
논리식을 줄이면 게이트가 줄지만, 줄이다가 없앤 항이 글리치를 만듭니다. 측정 회로에서는 그 글리치가 아날로그로 결합합니다.
이득대역폭 또는 자속밀도정전용량F
이득정전용량F듀티비잡음 지수
이득대역폭 또는 자속밀도정전용량F잡음 지수
이득대역폭 또는 자속밀도정전용량F잡음 지수
정전용량F에너지J개수0번 슬루레이트 또는 감도1번 슬루레이트 또는 감도
이득대역폭 또는 자속밀도정전용량F잡음 지수
최소화와 글리치 없음은 서로 반대 방향입니다.
⚠️ 이상과 실제
| 이상 | 실제 |
|---|---|
| 게이트 지연이 같음 | 경로마다 다르고, 온도·전압으로 변합니다 |
| 글리치는 짧아서 무해 | 아날로그 스위치는 ns 글리치도 전하를 주입합니다 |
| 최소화가 항상 좋음 | 클럭·인에이블에는 중복항이 낫습니다 |
| 합성기가 알아서 함 | 합성기는 면적을 줄입니다. 글리치는 안 봅니다 |
⚖️ 고르는 기준
| 선택 | ✅ | ⚠️ |
|---|---|---|
| 최소 게이트 | 면적·전력·지연↓ | 정적 해저드 |
| 중복항 추가 | 글리치 없음 | 게이트 1~2개 더 |
| 전부 동기화 | 글리치가 아예 무의미 | 플립플롭, 클럭 1주기 지연 |
| 그레이 코드 | 한 번에 한 비트만 바뀜 | 순서가 자연스럽지 않음 |
| 그냥 MCU 로 | 유연 | 타이밍 보장 어려움, 소프트 지연 |
상태기계와 메타스테이빌리티
측정 시퀀스(채널 선택 → 세틀링 → 변환 → 저장)는 상태기계입니다. 그리고 바깥에서 들어오는 신호는 반드시 두 번 걸러야 합니다 — 안 그러면 아주 가끔 회로가 미쳐 버립니다.
시정수s잡음 전압 밀도V/√Hz주파수 (clk)Hz주파수 (data)Hz시간 (r)s0번 온도 또는 주기
시정수s비트 수 또는 개수정착 시간s
이동도m²/V·s시정수s정착 시간s
두 단이면 충분하고, 두 단은 반드시 있어야 합니다.
⚠️ 이상과 실제
| 이상 | 실제 |
|---|---|
| 상태가 정의된 것만 | 전원 기동·글리치로 불법 상태에 빠질 수 있습니다 — default 필수 |
| 비동기 입력을 그냥 읽어도 됨 | 메타스테이빌리티 — 두 단 동기화기 필수 |
| 2단이면 다중 비트도 안전 | 아닙니다. 비트마다 다른 클럭에 넘어갑니다 |
| 시뮬에서 동작하면 됨 | 시뮬은 셋업/홀드 위반을 보통 무시합니다 |
| FSM 은 디지털 문제 | 출력이 아날로그 스위치로 가면 아날로그 문제입니다 |
⚖️ 고르는 기준
| 선택 | ✅ | ⚠️ |
|---|---|---|
| 무어 + 등록 출력 | 글리치 원천 차단 | 한 클럭 지연 |
| 밀리 | 상태·지연↓ | 출력 글리치 |
| 원핫 | 논리 단순, 빠름 | 플립플롭 개, 불법 상태 |
| 이진 | 플립플롭 최소 | 디코딩 논리 |
| 2단 동기화기 | 안전 | 2클럭 지연 |
| 동기화 생략 | 지연 0 | 아주 가끔 미침 — 최악의 버그 |
| FSM 을 MCU 소프트웨어로 | 유연, 디버깅 쉬움 | 타이밍 지터, 인터럽트 방해 |
연습문제
인쇄하면 답이 접힌 채로 나옵니다 — 그대로 문제지가 됩니다. 위의 “답도 함께 인쇄” 를 켜면 풀이까지 펴서 나옵니다.
- 논리 레벨과 노이즈 마진3.3 V CMOS 출력을 5 V CMOS 입력에 직접 연결하면?
연습 9-01-1 — 3.3 V 출력을 5 V 입력에 물리면 풀이
5 V CMOS의 는 3.5 V인데 3.3 V 출력의 는 최대 3.3 V입니다.
High를 인식하지 못하거나 불안정합니다. 게다가 문턱 근처에 머물면 입력단의 P/N 트랜지스터(transistor)가 동시에 켜져 관통 전류가 흘러 발열합니다.
해결: 레벨 시프터(74LVC1T45 등), 또는 5 V 쪽을 TTL 입력(74HCT 시리즈)으로 교체 ( = 2.0 V) → 05
- 논리 레벨과 노이즈 마진접지 바운스가 0.5 V 발생합니다. 3.3 V LVCMOS 시스템에서 문제가 됩니까?
풀이
V이므로 0.5 V는 아슬아슬하게 견딥니다. 하지만 여유가 0.2 V뿐이라 온도·전압 변동에서 오동작할 수 있습니다.
그리고 더 중요한 것: 같은 보드에 아날로그 회로가 있다면 0.5 V의 접지 바운스는 아날로그에 재앙입니다. 50 µV 신호의 10,000배입니다.
디지털은 견뎌도 아날로그는 못 견딥니다. 이것이 접지 설계가 중요한 이유입니다.
- 논리 게이트와 부울대수드모르간으로 를 AND 형태로 바꾸세요.
풀이
"세 입력 NOR = 반전된 입력의 AND"
- 논리 게이트와 부울대수를 간소화하세요.
연습 9-02 — 다이오드로 만든 AND 게이트 풀이
- 논리 게이트와 부울대수액티브 어레이의 50개 행 중 하나를 선택하려면 몇 개의 제어선이 필요하고, 어떤 회로를 씁니까?
풀이
직접 구동: 50개 제어선 — 배선(trace)이 너무 많습니다.
디코더 사용: →
6개 제어선으로 64행까지 선택 가능합니다.회로: 6-to-64 디코더 (또는 6비트 카운터 + 디코더)
트레이드오프:
방식 제어선 장점 단점 직접 (50선) 50 임의 순서 접근, 여러 행 동시 선택 배선·패드(pad) 폭증 디코더 (6선) 6 배선 최소 한 번에 한 행만, 디코더 지연 시프트 레지스터 (2선) 2 (클럭+데이터) 배선 최소, 칩 안에 집적 쉬움 순차 접근만, 스캔 시간 실제 어레이에서는 시프트 레지스터(shift register)를 많이 씁니다. 클럭과 데이터 2선만으로 순차 스캔이 가능하고, 어레이 가장자리에 집적하기 쉽기 때문입니다. 순차 스캔은 어차피 프레임 단위로 전체를 읽으므로 제약이 되지 않습니다.
이것이 16-01에서 다루는 "배선 수를 줄이는 것이 왜 설계의 핵심인가" 의 구체적 사례입니다.
- 순차 논리와 플립플롭 = 5 ns, 조합 논리 지연 10 ns, = 3 ns. 최대 클럭 주파수는?
연습 9-03-1 — 타이밍 예산이 최대 클럭을 정한다 풀이
실무에서는 여유를 20~30% 두어 40 MHz 정도로 운용합니다.
- 순차 논리와 플립플롭외부 장비의 트리거 신호를 MCU 클럭에 동기화해야 합니다. 왜 필요하고 어떻게 합니까?
풀이
왜: 외부 트리거는 MCU 클럭과 무관한 타이밍에 도착하므로, 하필 셋업/홀드 구간에 에지가 오면 메타스테이블 상태가 됩니다. 그러면 그 값을 읽는 로직마다 다른 값을 볼 수 있어(fan-out에 따라) 시스템이 불일치 상태에 빠집니다.
어떻게:
외부 트리거 | 비동기 > FF1 (clk) > FF2 (clk) > FF3 (clk) | 신뢰성이 중요하면 한 단 더 = 내부 로직2단이 표준이고, 클럭이 매우 빠르거나 신뢰성이 중요하면 3단을 씁니다.
추가 고려:
- 입력에 슈미트 트리거(Schmitt trigger) — 느린 에지로 인한 발진 방지
- RC 필터 — 노이즈로 인한 가짜 트리거 방지
- 트리거 정확도가 중요하면 타임스탬프 카운터로 도착 시각을 기록 (동기화 지연을 보정)
⚠️ 동기화기는 2~3 클럭의 지연을 추가합니다. 트리거 타이밍 정밀도가 중요한 측정에서는 이 지연을 보정하거나, 별도의 고속 타임스탬프 회로를 써야 합니다.
- 클럭과 타이밍크리스털 = 18 pF, 기판 기생 5 pF. 부하 커패시터 값은?
연습 9-04-1 — 크리스털 부하 커패시터 26 pF 이 어디서 나오나 풀이
E12에서 22 pF 또는 27 pF. 27 pF이 더 가깝습니다.
- 클럭과 타이밍10 kHz 신호를 16비트 정확도로 샘플링하려면 허용 지터는?
풀이
16비트 SNR ≈ 98 dB
200 ps 이하. 일반 크리스털 발진기(수 ps~수십 ps 지터)로 충분히 달성 가능합니다.
만약 1 MHz 신호라면: 2 ps — 훨씬 어렵습니다. 저지터 발진기가 필요합니다.
- 클럭과 타이밍2500채널 어레이를 순차 스캔합니다. 첫 채널과 마지막 채널의 샘플링 시각이 172 µs 차이납니다. 이것이 문제가 됩니까?
풀이
용도에 따라 다릅니다.
문제가 되는 경우:
- 공간적 전파 현상 관찰 — 신경 활동의 전파 속도를 측정한다면, 172 µs는 실제 전파 지연(수 ms)의 상당 부분입니다. 채널 간 시간차가 공간 정보를 왜곡합니다
- 동기 이벤트 검출 — 여러 채널의 동시 발화를 판정할 때 시간차가 오판을 만듦
- 위상(phase) 관계 분석 — 주파수 대역 간 위상 결합(phase-amplitude coupling) 분석
문제가 안 되는 경우:
- 각 채널의 파형 자체만 볼 때
- 신호 대역이 172 µs보다 훨씬 느릴 때 (< 1 kHz)
대책:
- 타임스탬프 보정 — 각 채널의 샘플링 시각을 알고 있으므로 후처리로 보정(리샘플링). 가장 실용적
- 동시 샘플-홀드 — 모든 채널을 동시에 샘플링한 뒤 순차적으로 읽음. 픽셀마다 샘플-홀드 커패시터가 필요해 면적·복잡도 증가. 이미지 센서의 "글로벌 셔터"와 같은 개념
- 병렬 리드아웃 — 열마다 ADC를 두면 행 단위로만 시간차 발생 (50배 개선)
- 스캔 순서 최적화 — 관심 영역을 먼저 읽거나, 인터리브
이것이 롤링 셔터(rolling shutter) 문제와 정확히 같습니다. 카메라에서 빠르게 움직이는 물체가 기울어져 보이는 현상과 같은 원리입니다.
자세한 논의 → 16-01
- 풀업·오픈드레인·레벨 시프터I2C 400 kHz, 버스 용량 150 pF, 3.3 V. 풀업 저항 범위는?
연습 9-05-1 — I2C 풀업 저항의 위아래 한계 풀이
최소:
최대:
범위: 1 kΩ ~ 2.36 kΩ → 1.8 kΩ 또는 2.2 kΩ
- 풀업·오픈드레인·레벨 시프터3.3 V MCU와 5 V 센서를 I2C로 연결합니다. 어떻게 하겠습니까?
BSS138 양방향 레벨 시프터 (I2C) 풀이
BSS138 MOSFET 레벨 시프터 (SDA, SCL 각각):
09-digital/bss138-levelshiftSDA·SCL 두 신호에 각각 하나씩, 총 BSS138 2개 + 풀업 4개가 필요합니다.
왜 이 방법인가:
- I2C는 양방향이므로 방향 제어가 필요 없는 방식이어야 함
- 오픈드레인 특성을 유지해야 함
- 저렴하고 검증됨
대안: PCA9306, TXS0102 같은 전용 IC (더 빠르고 확실하지만 비쌈)
⚠️ 주의: 양쪽에 각각 풀업이 필요하고, 버스 용량이 두 배가 되므로 풀업 값을 다시 계산해야 합니다.
더 간단한 대안: 센서가 3.3 V로도 동작한다면(많은 5 V 센서가 3.0~5.5 V 범위) 그냥 3.3 V로 구동하세요. 레벨 시프터가 아예 필요 없습니다.
- 아날로그 스위치와 멀티플렉서 = 50 Ω, 부하 용량 50 pF. 10비트 세틀링 시간은?
연습 9-06-1 — 아날로그 스위치의 10비트 세틀링 풀이
- 아날로그 스위치와 멀티플렉서 = 2 pC인 스위치를 홀드 커패시터 10 pF과 씁니다. 옵셋 오차는? 16비트 ADC(±1 V)에서 몇 LSB입니까?
풀이
200 mV!
LSB = V이므로:
완전히 사용 불가능합니다.
개선:
- 홀드 커패시터를 1 nF으로 → mV (65 LSB) — 여전히 큼
- CDS 적용 → 대부분 제거 ✅
- 차동 구조 → 상쇄
- 가 작은 소자 (0.1 pC급)
charge injection은 단순히 커패시터를 키워서 해결할 수 있는 수준이 아닙니다. CDS나 차동 구조 같은 회로 기법이 필요합니다.
- 아날로그 스위치와 멀티플렉서2500채널 어레이에서 채널당 세틀링 100 ns가 필요합니다. 프레임 레이트와 채널당 유효 대역폭은? 대역폭을 2배로 하려면 무엇을 바꿔야 합니까?
풀이
프레임 시간:
프레임 레이트:
채널당 유효 대역폭: 나이퀴스트로 2 kHz (실용적으로는 프레임 레이트의 1/4~1/5인 800 Hz~1 kHz)대역폭 2배로 만들려면 (프레임 레이트 8 kHz):
방법 어떻게 대가 세틀링 시간 절반 (50 ns) 를 절반으로 → 또는 를 절반으로 ↓ = 큰 스위치 = ↑; ↓ = 배선 짧게(레이아웃 제약) 정확도 낮춤 (12비트→10비트) 17% 개선뿐 — 부족 병렬 리드아웃 열마다 ADC를 두어 50열 동시 면적·전력 50배, 채널 간 정합 문제 채널 수 절반 1250채널만 읽기 공간 해상도 손실 관심 영역(ROI)만 스캔 필요한 영역만 유연성 있음, 실용적 ✅ 실무적 답: 병렬 리드아웃(열 병렬 ADC) 이 표준 해법입니다. CMOS 이미지 센서가 고속·고해상도를 달성한 방법과 같습니다. 열마다 간단한 ADC를 두면 행 단위로만 순차 처리하면 되므로 속도가 열 수만큼 빨라집니다.
이 설계 판단의 전개가 16-01의 핵심입니다.
- 카르노맵과 해저드 를 간소화할 수 있습니까?
풀이
없습니다. 이것은 XOR 이고, 카르노맵에서 1 들이 대각선으로 놓여
인접하지 않습니다.B 0 1 A ┌───┬───┐ 0 │ 0 │ 1 │ 1 │ 1 │ 0 │ └───┴───┘묶을 수 있는 인접 쌍이 없으므로 두 항 그대로입니다.
XOR 이 게이트로 비싼 이유가 이것입니다 — AND/OR 로는 못 줄이고,
CMOS 로 만들면 트랜지스터가 12개(NAND 는 4개)입니다. 패리티나 비교기에
XOR 이 많이 들어가면 면적이 금방 커집니다. - 카르노맵과 해저드 에 해저드가 있습니까? 있으면 어디입니까?
연습 9-07-2 — 해저드는 두 길의 지연 차이가 만든다 풀이
있습니다. 일 때 가 바뀌는 순간입니다.
1 1 0 1 전환 중 0 0 0 ✗ 0 0 1 1 가 1→0 으로 갈 때 는 바로 0 이 되는데 는 인버터를
거치느라 늦게 1 이 되므로, 그 사이에 둘 다 0 인 순간이 생깁니다.해결: 중복항 를 추가합니다.
인 동안 가 계속 1 을 붙잡아 줍니다. 논리적으로는 없어도
되는 항이지만 시간적으로는 필요합니다. - 카르노맵과 해저드8채널 MUX 의 주소를 MCU GPIO 로 직접 만듭니다. 무엇을 조심해야 합니까?
풀이
GPIO 는 비트마다 따로 바뀝니다.
GPIOA->ODR = 0b011처럼 한 번에
써도 실제 핀은 몇 ns 어긋나 바뀌고, 배선 길이까지 다르면 더 벌어집니다.주소를 011 → 100 으로 바꾸면 세 비트가 다 바뀌므로 중간에
001·010·101·110·111 중 무엇이든 지날 수 있습니다 — 아무 채널이나
잠깐 켜집니다.대책 (순서대로 권장):
- EN 을 먼저 끄고 주소를 바꾸고 다시 켠다 — 가장 확실, 소프트웨어만
- 주소 순서를 그레이 코드로 (000→001→011→010→110→111→101→100)
- 외부 레지스터(74HC574)로 받아 하나의 클럭으로 동시에 바꿈
1번이 표준입니다. 어차피 채널을 바꾼 뒤 세틀링
을 기다려야 하므로, 그 앞에 EN 오프 구간을 두는 것이 비용이 거의 0 입니다. - 상태기계와 메타스테이빌리티외부 장비의 트리거 신호를 FSM 의
start로 직접 연결했습니다. 평소엔 잘 되는데 하루에 한두 번 스캔이 엉킵니다. 왜입니까?연습 9-08-1 — 외부 트리거가 금지 구간에 머무는 시간 풀이
메타스테이빌리티입니다.
외부 트리거는 우리 클럭과 아무 관계가 없으므로, 언젠가는 반드시
셋업/홀드 창 안에서 바뀝니다. 그때 첫 플립플롭이 중간 전압에 머물고,
그 값을 읽는 논리들이 서로 다르게 판단해 정의되지 않은 상태로
갑니다."하루에 한두 번"이 딱 동기화기 없는 MTBF 입니다.
해결: 두 단 동기화기를 넣습니다. 지연 2클럭(10 MHz 면 200 ns)이
늘지만 MTBF 가 수백만 년이 됩니다.trigger → [FF] → [FF] → start (FSM 으로)⚠️ 그리고 트리거가 클럭보다 짧을 수 있으면 에지 검출기도 같이
넣습니다 — 짧은 펄스는 동기화기가 통째로 놓칠 수 있습니다. - 상태기계와 메타스테이빌리티원핫으로 만든 5상태 FSM 이 가끔 멈춥니다. 무엇을 확인합니까?
풀이
불법 상태에 빠졌는지 봅니다.
원핫 5상태는 플립플롭 5개 = 32가지 조합인데, 합법은 5가지뿐입니다.
나머지 27가지 중 하나에 빠지면 어느 전이 조건도 안 맞아 영원히
멈춥니다.어떻게 빠지는가:
- 전원 기동 시 초기값이 안 정해짐
- 노이즈로 비트 하나가 뒤집힘
- 메타스테이빌리티
해결:
default를 IDLE 로 — 합법이 아닌 모든 조합에서 IDLE 로 가게- 비동기 리셋을 확실히 걸어 IDLE 로 시작
- 워치독 — 일정 시간 이상 같은 상태면 리셋
1번이 핵심입니다. HDL 로 쓸 때
case의default를 빠뜨리면
합성기가 "그 경우는 안 온다"고 보고 아무것도 안 만듭니다. - 상태기계와 메타스테이빌리티스캔 속도를 2배로 올리라는 요구를 받았습니다. 위 계산 (SETTLE 8 µs, CONVERT 4 µs)에서 무엇부터 봅니까?
풀이
SETTLE 부터입니다. 전체 12.3 µs 중 8 µs(65%)를 차지합니다.
목표는 채널당 6.15 µs. CONVERT 4 µs 를 그대로 두면 SETTLE 에 쓸 수
있는 것은 2 µs 뿐입니다.지금 = 0.89 µs 이므로 4배 빠르게 해야 합니다.
방법 어떻게 대가 MUX 도통 저항↓ 더 좋은 MUX 값, 전하 주입↑ 뒤쪽 용량↓ 배선 짧게, 앰프 입력 작게 레이아웃 분해능↓ 12비트 → 10비트 , 15% 만 이득 구조 변경 채널마다 앰프 부품 8배 ⚠️ 분해능을 낮추는 것은 거의 도움이 안 됩니다 — 세틀링이 비트 수에
로그로 붙기 때문입니다 (18-00의
연습문제 3 과 같은 계산).현실적인 답: CONVERT 를 더 빠른 ADC 로 줄이고(4 → 2 µs), SETTLE 을
4 µs 로 (τ 를 반으로 = MUX 와 배선 개선). 그래도 안 되면 채널마다
ADC 를 두는 구조로 갑니다.