728x90

M1-M2-M3 Bias Network의 동작 원리, OP 검증, 전압이득 및 Bode 해석

Figure 1. Self-Biased CS Amplifier 전체 회로

Portfolio Highlight
현재 OP에서 V1 = VX = 0.821481 V, V2 = 1.64296 V, ID4 = 15.2439 µA이며, 손계산 전압이득 7.9659 dB와 Bode plot의 7.9666 dB가 거의 정확히 일치한다. 이 회로의 핵심은 “M1이 VGS 기준을 생성하고, M2가 M3 gate를 boost하며, M3가 그 DC bias를 AC 입력 노드 VX에 전달한다”는 점이다.

이 회로는 M1-M2-M3가 M4의 gate DC bias를 생성/전달하고, C1이 AC 신호만 VX에 결합하며, M4+R1이 실제 Common-Source 증폭을 수행하는 구조이다.

가장 중요한 구분
M1/M2/M3는 “증폭기”가 아니라 bias network이고, M4+R1이 실제 CS 증폭단이다. 특히 M3의 gate가 high-Z라는 사실과 VX에서 M3를 바라본 impedance가 높다는 것은 같은 말이 아니다. VX는 M3의 source/drain channel에 연결되므로 AC에서 유한한 loading을 받는다.

 2. 현재 테스트 조건과 핵심 결과

항목 설정/결과 설계 의미
VDD 1.8 V 공급전압
I1 15 µA M1/M2 bias branch 기준전류
R1 10 kΩ M4 drain resistive load
C1 1 µF AC coupling capacitor (학습용 testbench 값)
V1 0.821481 V M1이 생성한 1×VGS 기준
V2 1.64296 V M1+M2가 생성한 약 2×VGS gate-boost node
VX 0.821481 V M4 gate의 DC bias node
VOUT 1.64756 V M4 drain DC operating point
ID4 15.2439 µA 실제 CS bias current
Midband gain 7.9666 dB ≈ 2.502 V/V Bode plot plateau
하한 -3 dB 주파수 약 19.8 Hz C1 + bias network가 만드는 high-pass cutoff

 

3. 회로를 3개의 블록으로 분해해서 보기

블록 소자 역할
Bias generation I1, M1, M2 15 µA를 VGS 기반 DC reference로 변환하고 M3 구동용 V2 생성
Bias transfer / AC return M3 V1의 DC bias를 VX에 전달. AC에서는 finite channel impedance로 동작
CS amplifier C1, M4, R1 C1이 AC를 전달하고 M4가 gm으로 전류 변환, R1이 전류를 VOUT으로 변환

 

DC bias flow : I1 → M2 → M1 → GND   /   V1,V2 생성 → M3 → VX → M4
AC signal flow: VIN → C1 → VX → M4(gm) → ID4 변화 → R1 → VOUT

 

 

4. Bias Network 상세: M1 → M2 → M3

Figure 2. M1-M2-M3 bias network 확대

4.1 M1 — 기준전류를 기준전압 V1으로 바꾸는 소자

M1은 gate와 drain이 V1에 묶인 diode-connected NMOS이다. Source가 GND이므로 VGS1 = V1이다. I1이 15 µA를 강제로 흘리면 M1은 그 전류를 흘리는 데 필요한 VGS를 스스로 형성한다.

VGS1 = V1 = 0.821481 V

VOV1 = VGS1 - VTH = 0.821481 - 0.700 = 0.121481 V

M1이 없으면?
M4에 재사용할 “MOS 기준 VGS”가 사라진다. VX의 DC 기준을 어디에서 만들지 정의되지 않으므로 현재 self-bias 구조 자체가 성립하지 않는다. 단순한 고정 전압원으로 대체할 수는 있지만 PVT tracking이라는 장점을 잃는다.

 

4.2 M2 — M3를 구동하기 위한 두 번째 VGS를 쌓는 소자

M2 역시 diode-connected이며 M1과 같은 branch에 직렬로 존재한다. 따라서 I1 = ID1 = ID2 = 15 µA이다. M1과 M2가 동일한 device/model/size라면 같은 전류를 흘릴 때 필요한 VGS도 거의 같아진다.

VGS2 = V2 - V1 = 1.64296 - 0.821481 = 0.821479 V ≈ VGS1

V2 = V1 + VGS2 ≈ 2·VGS ≈ 1.643 V

즉 V2는 “증폭용 출력”이 아니라 M3 gate에 제공되는 boosted bias voltage이다. M3가 NMOS pass device로 V1 수준의 전압을 VX에 전달하려면 gate가 VX보다 충분히 높아야 한다.

M2가 없으면?
M3를 그대로 유지하려면 gate boost가 사라진다. M3 gate를 단순히 V1에 묶을 경우 NMOS threshold loss 때문에 VX를 V1까지 올리기 어려워진다. 반대로 M3까지 제거하고 V1을 VX에 직접 wire로 연결한다면 M2와 V2도 필요 없어질 수 있다.

 

4.3 M3 — source follower가 아니라 “biased MOS pass / bias-feed device”

M3는 전형적인 source follower 증폭단으로 보는 것보다 V1과 VX 사이를 연결하는 biased NMOS pass device로 보는 것이 정확하다. Gate는 V2로 구동되고 channel 양단은 V1과 VX에 연결된다.

관점 M3의 모습 핵심 해석
DC / 대신호 ON된 pass transistor VX가 V1보다 낮거나 높으면 channel current가 흐르며 VX를 V1 방향으로 복원
DC steady state V1 ≈ VX, VDS3 ≈ 0 M3가 OFF라서 전류가 0인 것이 아니라 양단 전압차가 0이라 ID3 ≈ 0
소신호 유한한 r_on / incremental resistance VX의 AC 전류 일부가 M3와 bias network로 흐를 수 있음
Gate loading IG3 ≈ 0 V2를 만드는 M1/M2 branch를 gate current가 직접 소모하지 않는다는 의미

 

중요한 오해 정리
IG3 ≈ 0 → “M3 gate가 high impedance”는 맞다. 그러나 VX는 M3 gate가 아니라 source/drain channel에 연결되어 있으므로 “VX에서 M3가 high impedance”라는 결론은 나오지 않는다. VDS3 = 0이라 DC current가 0인 것과 small-signal resistance가 무한대인 것도 서로 다른 개념이다.

 

5. 왜 V_X가 정확히 V_1과 같은가?

현재 OP에서 가장 눈에 띄는 결과는 V1 = VX = 0.821481 V이다. 이것은 우연이 아니라 VX node의 DC KCL과 M3의 ON 상태가 만든 평형점이다.

1.   DC에서 C1은 open이므로 I(C1) ≈ 0 A이다. 실제 OP도 -3.8×10^-19 A로 사실상 0이다.

2.   M4 gate의 DC conduction current 역시 IG4 = 0 A이다.

3.   따라서 VX node가 steady state에서 요구하는 DC current는 거의 0이다.

4.   M3는 VGS3 ≈ V2 - VX = 0.82148 V > VTH = 0.7 V이므로 ON 상태이다.

5.   ON된 M3의 작은 VDS 영역에서 ID3는 대략 VDS3에 비례한다. VX node에서 ID3 ≈ 0이어야 하므로 VDS3 ≈ 0이 된다.

6.   따라서 V1 - VX ≈ 0, 즉 VX ≈ V1이 최종 DC equilibrium이 된다.

I_D3 ≈ β·(VGS3 - VTH)·VDS3  →  I_D3 ≈ 0 & VOV3 > 0  →  VDS3 ≈ 0  →  VX ≈ V1

직관적 비유
M3를 “열려 있는 밸브”라고 생각하면 된다. 밸브는 열려 있지만 양쪽 압력(V1, VX)이 같아지면 물(ID3)은 흐르지 않는다. ID3 = 0이라고 해서 밸브가 닫혀 있거나 저항이 무한대라는 뜻은 아니다.

 

6. M3가 있을 때와 없을 때: 대신호 / 소신호 비교

항목 M3 사용 M3 제거 + V1-VX 직접 연결 M3 제거 + VX floating
DC bias VX ≈ V1 VX = V1 강제 DC path 없음 → 정의 불안정
V1↔VX DC 연결 ON MOS channel 0 Ω wire open
AC V1↔VX impedance 유한한 r_on 0 Ω 매우 큼(단, floating 문제)
Bias network AC loading M3 impedance만큼 완화 가능 VIN AC가 bias network를 직접 흔듦 bias는 사라짐
V2/M2 필요성 필요 불필요 가능 불필요
Headroom V2 필요 → 불리 가장 유리 의미 없음
비선형/PVT M3 영향 존재 M3 영향 없음 정상 bias 불가
적합성 MOS-only bias interface 가장 단순하지만 AC loading 큼 권장하지 않음

 

6.1 M3 대신 큰 저항을 쓰는 대안

V1과 VX 사이에 100 kΩ~1 MΩ 수준의 RBIAS를 두면 DC에서는 M4 gate current가 거의 0이므로 VX ≈ V1을 유지하면서 AC에서는 bias network loading을 크게 줄일 수 있다. 다만 on-chip에서 큰 저항은 면적을 많이 차지하고 PVT/TC가 존재한다.

Case A : V1 — M3 — VX   (현재 구조)
Case B : V1 — wire — VX (직접 연결)
Case C : V1 — RBIAS(100k~1M) — VX (비교용)

 

 

7. M4 + R1: 실제 Common-Source 증폭단

Figure 3. C1-M4-R1 Common-Source 증폭단 확대

M4의 source는 GND, gate는 VX, drain은 VOUT이므로 전형적인 NMOS common-source 구조이다. R1은 drain current 변화를 output voltage로 변환하는 저항성 load이다.

VOUT = VDD - ID4·R1

현재 OP에서는 (1.8 V - 1.64756 V)/10 kΩ = 15.2440 µA로, OP의 ID4 = 15.2439 µA와 일치한다.

7.1 전압이득 손계산

Level-1 MOS의 1차 근사에서 M4의 overdrive와 transconductance를 OP 값으로 계산하면 다음과 같다.

VOV4 = VGS4 - VTH = 0.821481 - 0.700 = 0.121481 V

gm4 ≈ 2·ID4/VOV4 = 0.2510 mS

ro4 ≈ 1/(λ·ID4) = 3.280 MΩ

Av ≈ -gm4·(R1 || ro4) = -2.5020 V/V

|Av|dB = 20·log10(2.5020) = 7.9659 dB

손계산 vs 시뮬레이션
Bode plot의 plateau는 7.9666 dB이고, OP 기반 손계산은 7.9659 dB이다. 두 값의 차이는 약 0.0007 dB로 매우 작다. 이 일치는 M4+R1의 small-signal 모델과 LTspice 결과가 현재 단순 MOS model 조건에서 일관적임을 보여준다.

 

7.2 R1의 역할과 trade-off

R1 변화 Gain VOUT,Q Headroom / Swing
R1 증가 |Av| 증가 감소 M4 VDS 감소 → 너무 크면 saturation margin 감소
R1 감소 |Av| 감소 증가 M4 VDS 여유 증가, 그러나 upper swing은 VDD에 가까워져 제한될 수 있음

 

현재 VOUT,Q = 1.648 V로 VDD까지의 위쪽 여유가 약 152.4 mV뿐이다. 즉 현재 testbench는 gain 검증에는 적합하지만 대칭 출력 swing을 목표로 한다면 R1과 I1을 다시 최적화해야 한다.

8. Operating Point 검증

소자/노드 OP 판정/해석
V1 0.821481 V M1이 생성한 VGS reference
V2 1.64296 V M2가 추가 VGS를 쌓아 M3 gate boost 생성
VX 0.821481 V M3를 통해 V1과 DC 평형
VOUT 1.64756 V R1 drop ≈ 0.15244 V
ID1 15.000 µA I1과 동일
ID2 15.000 µA 직렬 branch이므로 I1과 동일
ID3 ≈ -21 pA M3 ON이지만 VDS≈0인 DC equilibrium
ID4 15.2439 µA M1 reference를 받아 약 15 µA로 bias됨
IC1 ≈ 0 A DC coupling 차단 정상

 

8.1 Headroom 관점에서 V2 확인

현재 V2 = 1.64296 V이므로 VDD = 1.8 V보다 157.0 mV 낮다. ideal current source I1을 사용하는 LTspice에서는 정상 OP가 형성된다.

실제 IC에서는 아직 PASS 판정이 아니다
실제 I1을 PMOS current source/current mirror로 구현하면 해당 소자가 saturation을 유지하기 위한 VSD,sat가 추가로 필요하다. 현재 VDD-V2 = 157.0 mV만으로 충분한지는 PDK의 PMOS VOV/VDSAT를 사용해 다시 확인해야 한다.

 

8.2 M1/M2가 같은 VGS를 만드는 이유

VGS2가 V1과 같아지는 이유는 V1이 M2를 강제로 정하기 때문이 아니다. 인과관계는 “같은 device + 같은 drain current → 같은 VGS”이다. M1의 source가 GND이므로 VGS1 = V1이 되고, 결과적으로 VGS2 ≈ VGS1 = V1처럼 보이는 것이다.

ID1 = ID2,  β1 = β2,  VTH1 = VTH2  →  VGS1 ≈ VGS2

VGS1 = V1  →  VGS2 ≈ V1  →  V2 = V1 + VGS2 ≈ 2V1

 

9. Bode Plot 해석: 7.97 dB gain과 약 20 Hz lower cutoff

Figure 4. 사용자 제공 MATLAB Bode plot. 3.311 kHz에서 7.9666 dB의 flat gain을 확인할 수 있다.

고주파 쪽 flat region의 gain은 약 7.9666 dB이며 이는 전압비 2.502 V/V에 해당한다. 저주파에서는 C1의 impedance가 커져 신호가 VX에 충분히 전달되지 않아 gain이 감소한다.

9.1 -3 dB 주파수의 의미

이 회로의 midband gain이 7.9666 dB이므로 -3 dB 기준은 4.9666 dB이다. 제공된 그래프에서 이 값에 도달하는 lower cutoff는 약 19.8 Hz로 읽힌다.

G(-3dB) = 7.9666 - 3 = 4.9666 dB

-3 dB는 “gain이 -3 dB가 되는 주파수”가 아니라, 정상 midband gain보다 3 dB 감소한 지점이라는 의미이다. 전압비로는 약 0.707배가 된 지점이다.

9.2 C1 + bias network의 등가저항을 역산

1차 high-pass 근사로 lower cutoff를 이용하면 VX에서 bias network를 바라본 effective resistance를 추정할 수 있다.

REQ ≈ 1/(2π·fL·C1) = 1/(2π·19.8·1 µF) ≈ 8.02 kΩ

이 값은 M3 하나의 단순 저항이 아니라 M3와 M1/M2 bias network의 small-signal 경로가 합쳐진 결과로 해석해야 한다. 즉 Bode plot을 통해 M3의 AC loading이 실제로 존재한다는 사실을 수치로 확인할 수 있다.

9.3 왜 100 MHz까지 평평해 보이는가?

현재 모델의 한계
제공된 MY_NMOS는 VTO, KP, lambda 중심의 단순 model이다. 실제 PDK의 Cgs/Cgd/Cdb, overlap/junction capacitance와 배선/부하 parasitic이 충분히 반영되지 않으므로 100 MHz까지 flat하다고 해서 “실제 bandwidth가 100 MHz 이상”이라고 주장하면 안 된다. PDK/PEX 이후 고주파 pole을 다시 측정해야 한다.

 

10. Phase는 무엇을 확인하는가?

Gain이 “얼마나 증폭하는가”를 말한다면 phase는 “입력 sine wave와 출력 sine wave의 시간적 관계가 주파수에 따라 어떻게 변하는가”를 보여준다.

측정 현재 CS 회로에서 의미 Feedback OTA에서 의미
Gain [dB] 증폭량 Open-loop gain
-3 dB frequency 사용 가능한 주파수 범위의 경계 Bandwidth/closed-loop BW
Phase CS의 반전(약 180°)과 pole에 따른 추가 phase shift Loop stability 판단에 필수
Phase Margin 현재 open-loop CS 단독에는 직접 적용하지 않음 Loop gain 0 dB crossing에서 stability margin

 

Phase Margin 주의
현재 회로의 VOUT/VIN phase를 본다고 그것을 phase margin이라고 부르면 안 된다. Phase margin은 feedback loop의 loop gain이 0 dB를 통과할 때의 phase로 정의한다. 현재 단계에서는 “phase response / pole behavior”라고 기록하는 것이 정확하다.

 

10.1 LTspice에서 phase 확인

.ac dec 100 1 100Meg

Gain (전체):  V(v_out)/V(v_in)
Phase만:      ph(V(v_out)/V(v_in))
Bias path:    V(v_x)/V(v_in)
순수 CS:      V(v_out)/V(v_x)

 

Gain과 phase는 pane을 분리해서 보는 것을 권장한다. CS는 반전단이므로 midband phase가 ±180° 근처로 표시될 수 있으며, +180°와 -180° 사이의 phase wrapping은 실제 발진이 아니다.

10.2 제공 MATLAB 코드의 현재 상태

제공된 MATLAB 스크립트는 CSV에서 frequency, dB, phase를 파싱할 수 있도록 작성되어 있지만 phase plot 부분은 현재 주석 처리되어 있다. 따라서 포트폴리오 최종판에서는 phase plot을 활성화하거나 LTspice/Spectre에서 직접 export하는 것이 좋다.

% 제공 코드에서 주석 해제 권장
figure;
semilogx(frequencies, phase_values, 'LineWidth', 2);
grid on;
xlabel('Frequency [Hz]');
ylabel('Phase [deg]');
title('AC Phase Response');

 

 

11. LTspice 검증 플로우

11.1 OP — 먼저 DC operating point를 확정

.op

 

 V1, V2, VX, VOUT를 확인한다.

 ID1, ID2, ID3, ID4와 C1 DC current를 확인한다.

 M4: VDS > VOV인지 확인하여 saturation을 판정한다.

 V2가 VDD에 너무 가까운지 확인하여 I1 current-source headroom을 점검한다.

11.2 DC sweep — I1 변화가 bias network에 미치는 영향

.dc I1 5u 50u 1u

 

Plot 권장: V(v_1), V(v_2), V(v_x), V(v_out), Id(M4). I1 증가 시 VGS/V2가 증가하여 M3 gate-boost headroom은 악화되고, 반대로 gm과 M4 current는 증가한다. 즉 I1은 gain, headroom, output Q-point를 동시에 움직이는 핵심 설계 knob이다.

11.3 AC — 전체 / bias path / CS stage를 분리

.ac dec 100 1 100Meg

V(v_x)/V(v_in)       ; C1 + M3 + bias network
V(v_out)/V(v_x)      ; M4 + R1 순수 CS gain
V(v_out)/V(v_in)     ; 전체 gain

 

11.4 M3의 효과를 직접 증명하는 A/B/C simulation

Case 연결 확인 포인트
A 현재 M3 사용 VX/VIN, lower cutoff, bias loading
B M3 제거 + V1-VX wire DC는 유지되지만 AC bias loading 증가 여부
C M3 제거 + RBIAS 100 kΩ / 1 MΩ 높은 bias impedance가 cutoff와 attenuation에 미치는 영향

 

Portfolio에 좋은 실험
세 회로의 V(X)/V(IN)을 동일한 Bode plot에 겹쳐 놓으면 “M3가 단순히 VX=V1을 만드는 소자가 아니라 AC bias impedance를 결정하는 소자”라는 점을 시각적으로 증명할 수 있다.

 

 

12. M1, M2, M3를 하나씩 없애면 어떻게 되는가?

삭제 소자 즉시 발생하는 변화 결과 대체 방법
M1 15 µA를 VGS reference로 바꾸는 기준이 사라짐 V1/M4 bias 기준 상실 별도 VBIAS, current mirror/reference
M2 (M3 유지) V2 gate boost가 사라짐 M3가 V1을 VX로 full-swing 전달하기 어려움 별도 boosted gate, PMOS pass, resistor
M3 (VX open) C1 때문에 VX DC path 소실 M4 gate floating → OP 불안정 V1-VX direct 또는 RBIAS
M3 (V1-VX direct) DC bias는 정상 AC VIN이 M1/M2 network를 직접 loading 큰 RBIAS 또는 buffer
M2+M3 구조 단순화 headroom 개선 가능, 대신 bias isolation 재설계 필요 RBIAS, source follower/buffer 등

 

13. 왜 저항/다이오드가 아니라 MOS를 사용했는가?

선택 장점 단점
Diode-connected MOS (M1/M2) M4와 동일 MOS 특성을 tracking, VTH/µ 변화에 대한 상관성, current→VGS 변환 자연스러움 Headroom 소모, body effect, mismatch
M3 MOS pass 작은 면적으로 bias-feed 구현 가능, MOS process 내 구현 용이 비선형 r_on, PVT, leakage, AC loading, gate-boost headroom
큰 resistor 매우 직관적, AC isolation 우수 고저항 on-chip 면적, TC/process variation
PN diode 단순한 VF 생성 M4의 VGS/threshold tracking과 물리 메커니즘이 다름

 

따라서 MOS가 “무조건 더 좋다”가 아니라, 이 회로는 MOS-only bias를 통해 transistor tracking을 얻는 대신 headroom과 AC loading을 지불하는 구조이다.

 

14. 설계 Trade-off 요약

설계 knob 좋아지는 것 나빠지는 것 / 주의점
I1 증가 gm↑, CS gain 가능성↑ V1/V2↑ → headroom 악화, VOUT↓
I1 감소 V2 headroom 개선, power 감소 gm↓, gain↓, startup/drive 약화
R1 증가 gain↑ VOUT↓, M4 saturation/swing margin 악화
M3 W/L 증가 DC settling 강해짐, r_on↓ AC loading↑
M3 W/L 감소 AC isolation↑ startup 느림, leakage/PVT 민감
C1 증가 lower cutoff↓ 면적 증가; 1 µF on-chip은 현실적으로 매우 큼

 

15. PDK / Cadence Spectre 이전 시 반드시 바뀌는 점

 현재 ideal I1을 실제 PMOS current source/current mirror로 교체하고 compliance를 검증한다.

 M1/M2/M3의 body effect를 실제 PDK VTH/VSB로 확인한다. 현재 단순 model은 이 영향을 현실적으로 표현하지 못한다.

 C1 = 1 µF는 on-chip 구현이 비현실적이므로 target fL과 허용 면적에 맞춰 재설계하거나 off-chip coupling을 고려한다.

 AC: gain/phase/fL/fH를 PDK parasitic 포함 상태로 다시 측정한다.

 Feedback OTA로 확장될 때는 Spectre stb로 loop gain/UGF/PM을 측정한다. 단순 CS 단계에는 PM을 억지로 부여하지 않는다.

 Corners: TT/FF/SS + VDD + temperature를 조합해 V1/V2/VX/VOUT, gain, fL, current를 확인한다.

 Monte Carlo: M1/M2/M4 matching, R1 variation, VTH mismatch에 따른 bias current/gain 분산을 확인한다.

 Layout 이후 PEX에서 R1 routing, VX high-impedance node parasitic, M4 drain capacitance, substrate coupling을 재검증한다.

16. Tape-out 관점 체크포인트

체크 현재 상태 Tape-out 전 요구
I1 source Ideal current source 실제 PMOS mirror/reference로 구현
V2 headroom 1.643 V @ VDD 1.8 V PMOS current-source VSD,sat 포함 PASS 필요
M1/M2 matching 동일 model 가정 common-centroid/근접 배치 검토
M3 body/leakage 단순 model well/body tie, leakage corner 확인
C1 1 µF testbench on-chip 가능 값으로 재설계
R1 10 kΩ ideal resistor type, TC, mismatch, area 확인
High-frequency BW 현재 model에서 미검증 PDK + PEX + load C 포함 AC
ESD/pad 미포함 RF/analog pad, ESD capacitance 영향 검토

 

 

728x90
반응형
728x90

Design intent — PMOS gate/drain level shift using R1 and I2


핵심 설계 포인트
이 회로의 핵심은 PMOS active-load의 gate node(V_BP)를 drain/reference node(V_X)와 직접 묶지 않고, R1과 I2로 100 mV level shift를 만들어 headroom을 확보하는 것이다. 
실제 OP에서 V_X=0.993 V, V_BP=0.893 V로 정확히 100 mV 차이가 형성된다. 
다만 현재 bias point에서는 M4가 triode 영역이므로, “headroom 개선 의도”는 확인되지만 OTA 전체가 최적 동작점에 들어갔다고 단정해서는 안 된다.

Figure 1. LTspice schematic exported f

Signal flow / power flow

 Signal flow: V_in1/V_in2 → M1/M2 differential pair → drain-current difference → PMOS load M3/M4 → V_out.

 Power flow: VDD(1.8 V) → M3/M4 → M1/M2 및 level-shift branch → I1/I2 → GND.

 Bias path: I1이 differential pair 총 전류를 50 µA로 설정하고, I2가 R1을 통해 10 µA를 끌어 gate level shift를 생성한다.

 M3/M4의 source와 bulk는 VDD에 연결되어 PMOS body effect를 최소화한 이상화 구조다.

 

소자별 역할

소자 역할
M1, M2 NMOS differential input pair. VIN1–VIN2를 drain-current difference로 변환.
M3 PMOS reference/load device. V_X branch에 있으며 R1/I2 level-shift network와 결합.
M4 PMOS output load device. V_OUT에서 M2와 전류 평형을 이루며 single-ended 출력 형성.
R1 V_X와 V_BP를 분리하는 핵심 level-shift element.
I2 R1에 일정 전류를 흘려 ΔV = I2R1을 생성.
I1 Tail current source. 현재 ideal source이며 실제 IC에서는 transistor bias로 대체 필요.

핵심 식


Level-shift equation

V_X - V_BP = I2 × R1 = 10 µA × 10 kΩ = 0.100 V따라서 V_X = V_BP + 0.100 V. 실제 OP에서도 0.993017 − 0.893017 = 0.100000 V로 일치한다.

 

물리적 의미: PMOS gate bias V_BP는 낮게 유지하면서 reference drain V_X를 100 mV 더 높일 수 있다. 이 100 mV는 M1의 VDS에 그대로 추가되어 NMOS saturation margin을 개선한다.

 

 

728x90
반응형
728x90

회로 목적 · 동작 원리 · large-signal transfer curve · 물탱크 비유

 

그림 1. LTspice로 구성한 Five-Transistor OTA 회로도

이 문서의 핵심
이번 문서는 Five-Transistor OTA의 ‘대신호(large-signal) 동작’을 직관적으로 이해하도록 만드는 데 초점을 둔다. 즉, 아주 작은 소신호 이득 공식보다 먼저, 입력 차이 전압 Vid = Vin1 − Vin2가 크게 변할 때 Vout이 왜 S자 형태로 변하는지, 그리고 M1·M2·M3·M4·I1이 각각 어떤 역할을 하는지를 쉽게 설명하는 것이 목적이다.

 1. 회로 한눈에 보기

Five-Transistor OTA는 가장 대표적인 CMOS 아날로그 증폭기 구조 중 하나다. 입력 차동쌍 NMOS 2개와, PMOS 능동부하 2개, 그리고 tail current source 1개로 이루어져 있기 때문에 ‘5-transistor OTA’라고 부른다.

소자 역할 쉽게 말하면
M1 왼쪽 입력 NMOS Vin1이 커질수록 더 많은 tail current를 가져간다.
M2 오른쪽 입력 NMOS Vin2가 상대적으로 크면 더 많은 tail current를 가져간다.
M3 다이오드 연결 PMOS PMOS current mirror의 기준을 만든다.
M4 출력 PMOS 부하 출력 노드 Vout에 위에서 전류를 공급한다.
I1 tail current source M1과 M2가 나눠 쓰는 전체 전류를 정한다.
Vout 단일 출력 노드 M2가 아래로 끌어내리는 힘과 M4가 위에서 밀어주는 힘이 만나 결정된다.

 

2. 이 회로의 목적

• 두 입력 Vin1, Vin2의 차이를 감지한다.

• 차이 전압 Vid = Vin1 − Vin2를 전류 분배(current steering)로 바꾼다.

• 그 전류 변화를 단일 출력 전압 Vout으로 변환한다.

• 입력이 작을 때는 증폭기로, 입력이 매우 클 때는 포화된 비선형 전달 특성을 보인다.

중요 개념
소신호 모델은 ‘입력이 아주 조금 변할 때’의 이득을 다루고, 대신호 모델은 ‘입력이 크게 변할 때 출력이 전체 범위에서 어떻게 움직이는지’를 본다. 이번 문서는 바로 이 대신호 특성을 설명한다.

 

3. 회로도 설명

회로는 아래와 같이 해석하면 가장 이해하기 쉽다. M1과 M2는 차동쌍이며, 두 소자는 tail current I1을 서로 나누어 가진다. M3는 다이오드 연결되어 PMOS current mirror 기준을 만들고, M4는 그 기준을 받아 출력 노드에 전류를 공급하는 능동 부하 역할을 한다. 결국 Vout은 ‘위쪽 M4가 밀어주는 전류’와 ‘아래쪽 M2가 끌어내리는 전류’의 균형으로 결정된다.

 

구성 블록 핵심 의미
NMOS 차동쌍(M1, M2) 입력 차이 전압을 전류 차이로 바꾼다.
PMOS current mirror(M3, M4) 출력 노드에서 높은 출력저항을 제공하여 전압 이득을 만든다.
Tail current(I1) 두 입력 트랜지스터가 나누는 총 전류를 고정한다.
출력 노드(Vout) M4의 공급전류와 M2의 소비전류가 만나 전압으로 바뀌는 지점이다.

 

4. 대신호 모델에서 보는 핵심 변수

대신호 모델에서는 입력 두 개를 각각 따로 보기보다, 두 입력의 차이인 Vid를 본다.

정의
Vid = Vin1 − Vin2

 

Vid가 음수이면 Vin1 < Vin2이고, Vid가 양수이면 Vin1 > Vin2이다. 이때 출력 Vout이 어떻게 변하는지를 그린 것이 large-signal transfer characteristic이다.

 

그림 3. 대신호 전달 특성: Vid에 따른 Vout 변화

5. 그래프 읽는 법

그래프의 x축은 differential input voltage, 즉 Vid = Vin1 − Vin2이고, y축은 출력 전압 Vout이다. 전체 곡선은 완전히 직선이 아니라 S자 형태를 보인다. 이는 OTA가 모든 입력 범위에서 선형 증폭기가 아니기 때문이다.

• 왼쪽 끝: Vid가 매우 음수 → 한쪽 트랜지스터가 거의 모든 전류를 가져가며 출력이 낮은 영역으로 포화

• 가운데 근처: 두 트랜지스터가 전류를 나눠 가지는 전이 영역 → 출력 변화가 가장 민감

• 오른쪽 끝: Vid가 매우 양수 → 반대편 트랜지스터가 거의 모든 전류를 가져가며 출력이 높은 영역으로 포화

 

6. Vid 변화에 따른 동작 단계

상황 전류 흐름 관점 Vout 변화 그래프에서 보이는 모습
Vid ≪ 0 (Vin1이 Vin2보다 매우 작음) M1은 약하고, M2가 강하게 켜져 아래로 전류를 많이 끌어내린다. Vout은 낮은 전압에 머문다. 곡선의 왼쪽 아래, low saturation 영역
Vid < 0 (Vin1이 Vin2보다 작음) 여전히 M2가 우세하지만 M1도 조금씩 전류를 가져가기 시작한다. Vout이 천천히 상승한다. 왼쪽에서 중앙으로 올라오는 구간
Vid = 0 (Vin1 = Vin2) M1과 M2가 tail current를 거의 반반씩 나눠 가진다. Vout은 중간 수준에 위치한다. 그래프의 중앙 부근
Vid > 0 (Vin1이 Vin2보다 큼) M1이 더 많은 전류를 가져가고, M2 전류가 줄어든다. M4가 위에서 공급하는 전류가 상대적으로 더 커져 Vout이 빠르게 상승한다. 가장 가파른 high-gain 전이 구간
Vid ≫ 0 (Vin1이 Vin2보다 매우 큼) M1이 거의 대부분의 tail current를 차지하고 M2는 약해진다. Vout은 높은 전압 근처에서 포화된다. 오른쪽 위, high saturation 영역

 

6.1 Vin1이 Vin2보다 매우 작을 때 (Vid ≪ 0)

이때는 오른쪽 입력 M2가 매우 강하게 켜져 tail current 대부분을 가져간다. 출력 노드에서는 M2가 아래쪽으로 강하게 당기고 있으므로 Vout은 낮게 유지된다. 즉, 물을 빼는 밸브가 크게 열린 것처럼 출력이 낮은 쪽에 포화된다.

6.2 Vin1이 Vin2보다 작을 때 (Vid < 0)

M2가 여전히 우세하지만, Vid가 0에 가까워질수록 M1도 점점 켜지기 시작한다. 그러면 M2가 가져가던 전류가 조금 줄고, Vout은 천천히 상승한다. 그래프에서 왼쪽 아래에서 중앙으로 올라오는 완만한 구간이 바로 이 영역이다.

6.3 Vin1 = Vin2일 때 (Vid = 0)

대칭 구조라면 M1과 M2는 거의 같은 전류를 흘린다. 즉 tail current가 거의 절반씩 나뉜다. 이때 출력은 중간 수준의 바이어스 점에 형성된다. 이 주변이 소신호 해석에서 보통 선형 증폭기로 다루는 중심 동작점이다.

6.4 Vin1이 Vin2보다 클 때 (Vid > 0)

이제 M1이 더 강하게 켜지고, M2 전류는 감소한다. 출력 노드 Vout에서는 아래로 끌어내리는 힘(M2)이 약해지므로, 위에서 공급하는 M4의 전류 효과가 상대적으로 커진다. 그 결과 Vout이 빠르게 상승한다. 그래프에서 가장 기울기가 큰 고이득 구간이 바로 이 부분이다.

6.5 Vin1이 Vin2보다 매우 클 때 (Vid ≫ 0)

M1이 tail current 대부분을 차지하면 M2는 거의 꺼진 상태에 가까워진다. 그러면 출력 노드는 더 이상 크게 변하지 못하고 상단 전압 근처에서 포화된다. 그래프 오른쪽 끝이 점점 완만해지는 이유가 이것이다.

 

7. 왜 S자 모양인가?

대신호 전달 특성이 S자처럼 보이는 이유는 차동쌍의 전류 분배가 완전히 선형이 아니기 때문이다. 입력이 한쪽으로 크게 치우치면 한 트랜지스터가 대부분의 전류를 가져가고, 반대쪽은 거의 꺼진다. 반대로 중앙에서는 두 트랜지스터가 전류를 나눠 가지며 출력이 가장 민감하게 변한다.

• 양끝에서는 포화(saturation)처럼 보이는 완만한 영역

• 중앙에서는 전류 재분배가 활발한 급변 영역

• 그래서 전체적으로 low saturation → transition → high saturation의 형태가 된다.

8. 물탱크 비유로 이해하기

업로드한 이미지는 OTA 출력을 물탱크로 비유해 매우 직관적으로 설명한다. 위쪽 파란 수도꼭지는 M4가 위에서 공급하는 전류를, 아래쪽 빨간 수도꼭지는 M2가 아래로 빼내는 전류를 의미한다. 탱크 안의 물 높이가 바로 출력 전압 Vout에 해당한다.

 

그림 4. 물탱크 비유로 본 차동증폭기의 대신호 동작

비유 요소 실제 회로에서 의미
위쪽 수도꼭지 PMOS M4가 Vout으로 공급하는 전류
아래쪽 수도꼭지 NMOS M2가 Vout에서 GND 쪽으로 끌어가는 전류
물탱크 수위 출력 전압 Vout
수위계/압력계 출력 전압의 크기를 읽는 것
수도 공급관 VDD 전원
배수관 GND 방향 경로

 

8.1 물탱크 단계별 해석

• Vid ≪ 0: 아래쪽 배수 밸브(M2)가 크게 열려 탱크의 물이 많이 빠지므로 수위(Vout)가 낮다.

• Vid < 0: 배수는 여전히 강하지만 조금씩 약해져 수위가 천천히 올라간다.

• Vid = 0: 공급과 배수가 균형을 이뤄 탱크 수위가 중간에 안정된다.

• Vid > 0: 배수는 약해지고 위쪽 공급(M4)의 영향이 커져 수위가 빠르게 상승한다.

• Vid ≫ 0: 탱크가 거의 가득 차서 더 이상 수위가 크게 오르지 못하고 높은 수위에서 포화된다.

물탱크 비유의 핵심 한 문장
출력 노드 Vout은 ‘위에서 채우는 속도(M4 공급전류)’와 ‘아래로 빼는 속도(M2 소비전류)’의 균형으로 정해지는 물탱크 수위와 같다.

부록 A. 참고: 업로드한 LTspice NET

Five_Transistor_OTA.net


* Generated by LTspice 26.0.2 for Windows.
I1 0 0 100µ
V1 N001 0 5v
V2 V_in1 0 3.0
V3 V_in2 0 3.0
M1 N002 V_in1 0 0 MY_NMOS l=1u w=20u ad=100p as=100p pd=30u ps=30u
M2 V_out V_in2 0 NC_01 MY_NMOS l=1u w=20u ad=100p as=100p pd=30u ps=30u
M3 N002 N002 N001 N001 MY_PMOS l=1u w=40u ad=200p as=200p pd=50u ps=50u
M4 V_out N002 N001 N001 MY_PMOS l=1u w=40u ad=200p as=200p pd=50u ps=50u
.model NMOS NMOS
.model PMOS PMOS
.lib C:\Users\ddrs4\AppData\Local\LTspice\lib\cmp\standard.mos
.dc V2 2 4 0.01
.model MY_NMOS nmos(vto=0.7 kp=100u lambda=0.02)
.model MY_PMOS pmos(vto=-0.7 kp=40u lambda=0.02)
* .ac dec 100 1 10g
.backanno
.end

 

부록 B. 그래프를 그린 MATLAB 스크립트

Five_Transistor_OTA_Large_signalmodel.m

% 1. CSV 파일 가져오기 설정 (텍스트 헤더 무시 및 데이터 추출)
opts = detectImportOptions('\Five_Transistor_OTA.csv');
opts.VariableNamingRule = 'preserve';
% 데이터 가공을 위해 테이블 형태로 먼저 안전하게 읽어옵니다.
db_table = readtable('\Five_Transistor_OTA.csv', opts);
% 2. 데이터 추출 및 차동 입력 전압(V_in1 - V_in2) 축 역산 변환
v2_absolute = db_table{:, 1};
voltage_out = db_table{:, 2};
voltage_diff = 2 * (v2_absolute - 3.0);
% 3. 그래프 생성 및 스타일 설정 (다크 모드 테마)
fig = figure('Color', [0.1 0.1 0.1]);
plot(voltage_diff, voltage_out, 'g-', 'LineWidth', 2.5); hold on;
% 4. 축 범위 및 기본 세팅
xlim([min(voltage_diff), max(voltage_diff)]); % 역산된 차동 전압 범위(-2V ~ 2V) 맞춤
ylim([0.0, 4.0]);
grid on;
% 5. 라벨 및 디자인 세팅
xlabel('Differential Input Voltage, V_{in1} - V_{in2} (V)', 'Color', 'w', 'FontSize', 11);
ylabel('Output Voltage, V_{out} (V)', 'Color', 'w', 'FontSize', 11);
title('Large-Signal Transfer Curve: 마우스로 2곳을 클릭하세요', 'Color', 'w', 'FontSize', 13, 'FontWeight', 'bold');
set(gca, 'GridColor', [0.4 0.4 0.4], 'GridAlpha', 0.4);
set(gca, 'Color', [0 0 0], 'XColor', 'w', 'YColor', 'w');
% =========================================================================
% 🔍 [에러 완벽 수정: 순수 인터랙티브 구간 마킹 기능]
% =========================================================================
disp('===========================================================');
disp('💡 사용 방법: 그래프 창이 뜨면 마우스 커서를 그래프 위에 두고');
disp(' 분석하고 싶은 구간의 [시작점]과 [끝점]을 차례대로 클릭하세요.');
disp('===========================================================');
% 사용자의 클릭 이벤트 2개를 받아옵니다 (100% 호환 기본 함수)
[x_clicks, y_clicks] = ginput(2);
% 마우스로 선택한 x좌표 정렬 (왼쪽 클릭, 오른쪽 클릭 순서 보정)
x_start = min(x_clicks);
x_end = max(x_clicks);
% 선택된 구간에 반투명한 사각형 블록(Region)을 씌워 시각화 향상
patch([x_start x_end x_end x_start], [0 0 4 4], [1 0.5 0], ...
'FaceAlpha', 0.15, 'EdgeColor', 'none');
% 경계선 세로 점선 박기
xl1 = xline(x_start, 'r--', 'LineWidth', 1.5, 'Color', [1 0.3 0.3]);
xl2 = xline(x_end, 'r--', 'LineWidth', 1.5, 'Color', [1 0.3 0.3]);
% 선택된 수치 정보를 MATLAB 명령창에 정확하게 출력
fprintf('\n[📌 마우스로 설정된 대신호 분석 구간 결과]\n');
fprintf('- 구간 시작 전압 (V_id Start) : %.3f V\n', x_start);
fprintf('- 구간 종료 전압 (V_id End) : %.3f V\n', x_end);
fprintf('- 설정된 총 전압 폭 (Width) : %.3f V\n', x_end - x_start);
title('Large-Signal Transfer Characteristic (구간 설정 완료)', 'Color', 'w');

 

728x90
반응형
728x90

독립 바이어스 PMOS 전류원 부하 · DC Sweep · AC Gain · MATLAB 후처리

용어에 대한 주의
본 문서에서는 사용자가 정한 ‘수동소자가 있는 차동쌍’이라는 프로젝트 표현을 유지한다. 다만 물리적으로 M3/M4는 PMOS 능동소자다. 또한 이 회로는 M1 전류를 M3/M4가 출력으로 복사하는 전형적인 능동 전류미러 부하가 아니라, I2가 M3에 기준전류를 강제해 M4의 게이트 바이어스를 독립적으로 만드는 current-source load 구조다.

1. NET 설정값부터 이해하기

회로를 설명할 때는 그래프보다 먼저 NET의 각 줄이 어떤 물리적 의미를 갖는지 확인해야 한다. 현재 회로는 VDD=5 V, tail current I1=100 µA, PMOS 기준전류 I2=100 µA, VIN2=2 V를 기준으로 하고 VIN1을 DC sweep 또는 AC 입력으로 사용한다.

 LTspice NET


I1 N003 0 50µ
V1 N001 0 1.8v
V2 V_in1 0 1.2 AC 0.5 0
V3 V_in2 0 1.2 AC 0.5 180
I2 N002 0 10µ
M1 N001 V_in1 N003 0 MY_NMOS l=1u w=20u ad=100p as=100p pd=30u ps=30u
M2 V_out V_in2 N003 0 MY_NMOS l=1u w=20u ad=100p as=100p pd=30u ps=30u
M3 N002 N002 N001 N001 MY_PMOS l=1u w=40u ad=200p as=200p pd=50u ps=50u
M4 V_out N002 N001 N001 MY_PMOS l=1u w=40u ad=200p as=200p pd=50u ps=50u
.model NMOS NMOS
.model PMOS PMOS
.lib C:\Users\ddrs4\AppData\Local\LTspice\lib\cmp\standard.mos
* .ac dec 100 1 100meg
* .dc V2 0 3 0.001
.op
.model MY_NMOS nmos(vto=0.7 kp=100u lambda=0.02)
.model MY_PMOS pmos(vto=-0.7 kp=40u lambda=0.02)
.backanno
.end


항목 설정값 회로에서의 의미
V1 1.8 V 공급전압 VDD
V2 / V_in1 DC 1.2 V, AC 0.5V 0(위상) AC 입력. DC에서는 V2를 0~3 V로 sweep
V3 / V_in2 DC 1.2 V, AC 0.5V 180(위상) AC 입력.
I1 100 µA M1+M2의 전체 tail current
I2 100 µA M3 reference branch 전류
M1/M2 W=20 µm, L=1 µm NMOS source-coupled pair
M3/M4 W=40 µm, L=1 µm PMOS bias/reference와 출력 current-source load
.ac .ac dec 100 1 100meg 1 Hz~100 MHz, decade당 100 point
.dc .dc V2 0 3 0.001 VIN1을 0~3 V, 1 mV step으로 sweep

1.1 사용자 정의 MOS 모델

실제로 M1~M4가 참조하는 모델


.model MY_NMOS nmos(vto=0.7 kp=100u lambda=0.02).model MY_PMOS pmos(vto=-0.7 kp=40u lambda=0.02)

 

파라미터 NMOS PMOS 의미
VTO +0.7 V -0.7 V 문턱전압
KP 100 µA/V² 40 µA/V² Level-1 공정 transconductance parameter
λ 0.02 V⁻¹ 0.02 V⁻¹ 채널 길이 변조 → 유한한 ro
W/L 20 40 β=KP·W/L에 반영
β 2.0 mA/V² 1.6 mA/V² 포화전류와 gm을 정하는 계수

 

모델 선택 확인
NET에는 standard.mos와 '.model NMOS NMOS', '.model PMOS PMOS'도 남아 있지만 M1~M4의 model name은 MY_NMOS/MY_PMOS다. 따라서 핵심 해석에는 사용자 정의 Level-1 모델이 사용된다.

2. 회로의 목적과 각 소자의 역할

목적은 VIN1과 VIN2의 전압 차이를 M1/M2의 전류 분배(current steering)로 바꾸고, M2와 M4가 만나는 V_out에서 그 전류 변화를 전압 변화로 변환하는 것이다. 즉 differential input을 single-ended output으로 바꾸는 학습용 증폭기다.

소자 역할 동작
M1 VIN1 입력 NMOS VIN1↑ → ID1↑
M2 VIN2 입력 NMOS + 출력 branch ID2 변화가 VOUT에 직접 반영
I1 Tail current sink ID1+ID2≈100 µA
M3 Diode-connected PMOS I2가 요구하는 VSG를 생성
I2 PMOS 기준전류 M3에 100 µA를 강제
M4 출력 PMOS current-source load M3와 같은 gate/source bias로 VOUT에 전류 공급

 

전형적인 능동 전류미러 부하와 다름
M3는 M1 drain과 연결되어 있지 않다. 즉 M1의 신호전류가 M3→M4로 복사되는 구조가 아니다. M3/M4는 1:1 mirror 관계지만 reference는 M1이 아니라 독립 current source I2다.

 3. DC 동작 순서와 전류 흐름

3.1 I2 → M3 → N002 → M4 순서

M3는 gate와 drain이 N002에 묶인 diode-connected PMOS다. I2가 100 µA를 아래로 당기므로 M3는 그 전류를 흘릴 수 있을 때까지 N002를 자동으로 조정한다.

 

3.2 I1이 M1/M2의 합전류를 고정

I1=100 µA이므로 두 NMOS가 정상영역에 있을 때 ID1+ID2≈100 µA다. VIN1이 올라가 ID1이 증가하면 같은 만큼 ID2가 감소한다.

직관적으로 외우기
VIN1↑ → M1 전류↑ → M2 전류↓ → M4 공급전류가 상대적으로 더 커짐 → VOUT↑. VIN1이 매우 낮으면 M1≈OFF, M2≈100 µA, VOUT≈3.95 V.

 4. 전압이득을 구하는 세 가지 방법

4.1 DC transfer curve의 접선 기울기

DC local gain
A_v,Q≈dVOUT/dVIN1. Q-point 근처의 아주 작은 구간에서 계산해야 small-signal gain과 대응한다.

 

그래프에 표시된 두 점 (1.694 V, 3.95098 V)와 (1.735 V, 4.66378 V)를 연결한 평균 기울기는 17.385 V/V = 24.80 dB다. 이것은 41 mV 구간의 secant gain이지 특정 Q-point의 AC gain이 아니다.

4.2 AC analysis

V2의 AC amplitude가 1 V이고 V3의 AC=0이라면, 올바르게 VOUT을 export했을 때 |VOUT|=|VOUT/VIN1|이 된다. LTspice에서 가장 안전한 표현은 dB(V(v_out)/V(v_in1))이다.

진짜 차동이득 권장 설정
VIN1에 AC 0.5∠0°, VIN2에 AC 0.5∠180°를 넣고 dB(V(v_out)/V(v_in1,v_in2))를 사용하면 differential input amplitude가 정확히 1 V가 되어 정의가 명확하다.

 

4.3 소신호 근사식

VIN1≈VIN2이고 ID1≈ID2≈I1/2인 균형점 근처에서는 M4가 독립 current-source load로 동작하므로 single-ended differential gain을 대략 A_v,d≈+(gm/2)(ro2∥ro4)로 볼 수 있다. VIN1이 증가하면 VOUT가 증가하므로 VIN1→VOUT 경로의 부호는 +다.

 

5. DC Sweep 그래프: 두 번 꺾이는 이유

그림 2. DC Sweep Analysis: VIN1=0~3 V, VOUT 약 3.95~5 V

영역 VIN1 상태 출력
I 0 ~ 약 1.694 V M1 거의 OFF, M2≈100 µA VOUT≈3.95098 V
II 1.694 ~ 1.735 V M1 turn-on, current steering VOUT 급상승
III 1.735 V 이상 M4 saturation→triode 곡선 완만, VOUT→5 V

5.1 첫 번째 꺾임: VIN1≈1.694 V

M1이 OFF인 동안 M2가 100 µA를 담당한다. VOUT≈3.95098 V에서 NMOS Level-1 식을 풀면 공통 source 전압은 약 0.99273 V다. M1 turn-on 조건 VGS1≈VTH=0.7 V를 적용하면 VIN1≈0.99273+0.7=1.69273 V다.

항목 이론 그래프 차이
첫 knee VIN1 1.69273 V 1.694 V 1.27 mV
하단 VOUT 3.95010 V 3.95098 V 0.88 mV

 

즉 첫 번째 꺾임은 M1이 threshold를 넘으면서 tail current를 처음 가져가기 시작하는 물리적 turn-on 지점이다.

5.2 1.694~1.735 V가 매우 가파른 이유

M1이 µA보다도 작은 전류부터 가져가기 시작하면 M2 전류는 100 µA에서 감소한다. M4는 I2/M3로 정한 bias에 의해 여전히 거의 100 µA를 공급하려고 하므로, VOUT가 크게 변해 M4의 drain current가 M2 전류와 다시 같아지는 지점을 찾아야 한다. λ=0.02 V⁻¹로 출력저항이 크기 때문에 아주 작은 전류 차이가 큰 전압 변화로 바뀐다.

VIN1 계산 VOUT ID1 ID2
1.694 V 3.950985 V 0.00173 µA 99.99827 µA
1.721 V 4.324853 V 0.73409 µA 99.26591 µA
1.735 V 4.663763 V 1.54828 µA 98.45172 µA

 

VIN1이 41 mV 증가하는 동안 M1 전류는 약 1.55 µA만 증가했는데 VOUT는 약 0.713 V 증가한다. 이것이 그래프가 거의 수직처럼 보이는 이유다.

5.3 두 번째 꺾임: VOUT≈4.65 V

M4의 VSG≈1.04990 V이므로 overdrive VOV4≈0.34990 V다. PMOS 포화조건 VSD4≥VOV4에서 경계 출력은 VOUT≈5−0.34990=4.65010 V이다.

항목 이론 경계 그래프 표시 해석
M4 saturation→triode 4.65010 V 4.66378 V 표시점은 이론 경계를 약 13.68 mV 지난 위치
대표 VIN1 - 1.735 V 두 번째 굴곡 구간의 표시값

 

이 지점 이후 M4는 VOUT가 VDD에 가까워질수록 VSD가 작아져 공급전류가 감소한다. 그래서 출력은 더 이상 수직에 가깝게 오르지 않고 완만하게 5 V로 수렴한다.

 

6. AC 그래프 분석

이전에 함께 분석했던 질문자님 회로의 이론적 전압 이득 공식(\(A_v \approx g_{m1,2} \times (r_{o2} \parallel r_{o4})\))을 통해 계산된 실제 배수(V/V) 값이 있을 것입니다.
그 전압 배수 값에 로그를 취해 아래 공식으로 변환했을 때, 방금 구한 27.82 dB와 거의 일치하는지 확인해 보세요!
\(\text{Gain\ (dB)}=20\log _{10}(|{}A_{v}|{})\)
역으로 계산하면, 현재 회로는 입력 신호를 약 24.6배 증폭하고 있는 상태입니다.

 


7. MATLAB DC 코드 분석

업로드된 DC MATLAB 코드

 1. CSV 파일 데이터 불러오기
% 파일명이 data.csv가 아니라면 파일 경로와 이름을 맞게 수정해주세요.
data = readmatrix('\IC_Process_Passive_Current_Source_Load_DiffAmp.csv');
% 2. X축(입력 전압)과 Y축(출력 전압) 데이터 분리
voltage_in = data(:, 1); % 1번째 열: 0.0V ~ 3.0V
voltage_out = data(:, 2); % 2번째 열: 3.9V ~ 5.0V
% 3. 그래프 생성 및 스타일 설정
figure('Color', [0.1 0.1 0.1]); % 이미지와 유사하게 어두운 배경 설정 (선택사항)
plot(voltage_in, voltage_out, 'b-', 'LineWidth', 2); % 파란색 실선 그래프
% 4. 축 범위 및 라벨 설정 (이미지 그래프 기준 반영)
xlim([0.0, 3.0]); % X축: 0.0V ~ 3.0V
ylim([3.9, 5.0]); % Y축: 3.9V ~ 5.0V
set(gca, 'XTick', 0.0:0.3:3.0); % X축 간격 0.3V 설정
set(gca, 'YTick', 3.9:0.1:5.0); % Y축 간격 0.1V 설정
% 5. 그래프 내부 디자인 꾸미기 (이미지 그리드 느낌 재현)
xlabel('Input Voltage (V)', 'Color', 'w');
ylabel('Output Voltage (V)', 'Color', 'w');
title('DC Sweep Analysis: V(v_in, v_out)', 'Color', 'w');
grid on;
set(gca, 'GridColor', [0.3 0.3 0.3], 'GridAlpha', 0.5); % 점선 형태의 그리드
set(gca, 'Color', [0 0 0], 'XColor', 'w', 'YColor', 'w'); % 검은 배경 화면 설정

 

단계 기능 주의점
readmatrix CSV를 숫자 행렬로 읽음 CSV가 숫자 2열이라는 전제
1열 VIN1 X축
2열 VOUT Y축
plot DC transfer curve 작성 선형 축이 적절
xlim/ylim 관심구간 고정 범위 밖 값은 보이지 않음
grid/style 포트폴리오 시각화 회로 계산에는 영향 없음

 

현재 코드는 그래프 재현용이다. local gain과 knee를 자동 계산하지 않으므로 gradient를 추가하면 교육용 분석의 수준을 높일 수 있다.

 

8. MATLAB AC 코드 분석

업로드된 AC MATLAB 코드

% 1. CSV 파일 데이터 불러오기 (텍스트 파싱을 위해 readtable 사용)
opts = detectImportOptions('\IC_Process_Passive_Current_Source_Load_DiffAmp_ac.csv');
opts.VariableNamingRule = 'preserve';
db_table = readtable('\IC_Process_Passive_Current_Source_Load_DiffAmp_ac.csv', opts);
% 2. X축(주파수 Frequency) 추출
frequency = db_table{:, 1};
% 3. Y축 데이터 파싱 (LTspice 특유의 지수 표기법 텍스트 포맷 완벽 분리)
raw_ac_string = db_table{:, 2};
% [수정 포인트] e+01, e-02 같은 과학적 지수 표현식까지 모두 포함하여 매칭하도록 패턴을 확장했습니다.
gain_tokens = regexp(raw_ac_string, '^\((-?[0-9.]+e[+-][0-9]+|[0-9.]+)', 'tokens');
gain_db = zeros(size(frequency));
for i = 1:length(gain_tokens)
if ~isempty(gain_tokens{i})
gain_db(i) = str2double(gain_tokens{i}{1}{1});
end
end
% 4. 그래프 생성 및 스타일 설정 (Bode Plot 이득 특성용 다크 모드)
figure('Color', [0.1 0.1 0.1]);
% AC 주파수 축 로그 스케일 플롯
semilogx(frequency, gain_db, 'b-', 'LineWidth', 2.5);
% 5. 축 범위 및 간격 설정 (데이터 누락이나 잘림 방지를 위해 마진 최적화)
xlim([min(frequency), max(frequency)]);
% 지수 변환이 완료되었으므로 복원된 값의 최솟값/최댓값을 기준으로 Y축 범위를 자동 조정합니다.
ylim([min(gain_db)-3, max(gain_db)+3]);
% 6. 그래프 내부 디자인 꾸미기 (기존 스타일 계승)
xlabel('Frequency (Hz)', 'Color', 'w', 'FontSize', 11);
ylabel('Magnitude (dB)', 'Color', 'w', 'FontSize', 11);
title('AC Analysis: Voltage Gain (dB)', 'Color', 'w', 'FontSize', 13, 'FontWeight', 'bold');
grid on;
set(gca, 'XMinorGrid', 'on', 'YMinorGrid', 'on'); % 주파수 축 조밀한 로그 그리드 추가
set(gca, 'GridColor', [0.4 0.4 0.4], 'GridAlpha', 0.4);
set(gca, 'MinorGridColor', [0.2 0.2 0.2], 'MinorGridAlpha', 0.3);
set(gca, 'Color', [0 0 0], 'XColor', 'w', 'YColor', 'w');

 

단계 기능 핵심
detectImportOptions/readtable AC CSV를 table로 읽음 문자열 열 처리
frequency 1열 주파수 로그 X축
regexp '(XdB, phase)'에서 X만 추출 gain 계산이 아니라 파싱
semilogx Bode 형태의 로그 주파수 축 1~100 MHz 표시
ylim gain 주위 ±5 dB 평탄한 데이터에서도 가독성 확보
MinorGrid decade 내부 눈금 포트폴리오 시각화

 

728x90
반응형
728x90

<<  수의 그래프 상에서 두 점을 연결하는 호의 길이를 계산하는 공식  >>

 

공식

 


1.조건

 1) 함수 가 구간 에서 연속

 2) 도함수 가 구간에서 연속

 

2.예제

예제

 

위 함수의 호 길이를 계산하기 위해 아래의 순서대로 계산합니다.

1) f'(x) = 2x

2) 공식에 대입합니다.

 

3) u = 1 + 4x^2   ,  x = 1 일 때, u = 5   

                              x =  0 일 때, u = 1

 

                              du = 8

 

4) 따라서

 

5) 루트 계산

 

 

6) 적분 계산

 

 

7) 결과는 ' 0.8483616572 ' 가 됩니다. 

728x90
반응형
728x90

1. 정의

 1) Midpoint Rule (중점 규칙):

주어진 구간을 여러 개의 작은 구간으로 나누고,

각 작은 구간의 중점에서 함수 값을 계산하여 이를 이용하여 적분 값을 근사화하는 수치적 적분 방법

 

  공식

Midpoint Rule (중점 규칙): 공식

2) Trapezoidal Rule (사다리꼴 규칙):

구간을 여러 개의 작은 사다리꼴로 나누고,

사다리꼴의 면적을 합하여 적분 값을 근사화하는 수치적 적분 방법

 

 공식

Trapezoidal Rule (사다리꼴 규칙): 공식

3) Simpson's Rule (심슨의 규칙):

주어진 구간을 여러 개의 작은 구간으로 나누고,

각 작은 구간에 대해 2차 다항식을 사용하여 적분 값을 근사화하는 수치적 적분 방법

 

 공식

Simpson's Rule (심슨의 규칙): 공식


2. 차이점

 1) 기본 형태:

  • Midpoint Rule: 각 작은 구간에서 중점의 함수 값으로 근사화.
  • Trapezoidal Rule: 각 작은 구간에서 사다리꼴의 면적으로 근사화.
  • Simpson's Rule: 각 작은 구간에서 2차 다항식으로 근사화.

2) 오차 정확도:

  • Midpoint Rule과 Trapezoidal Rule은 주로 선형 함수에 사용되며 근사치의 정확도가 떨어질 수 있음.
  • Simpson's Rule은 2차 다항식의 근사를 사용하므로 일반적으로 더 높은 정확도를 제공함.

3) 적용 가능성:

  • Midpoint Rule과 Trapezoidal Rule은 일반적인 수치적 적분에 자주 사용.
  • Simpson's Rule은 더 정확한 근사가 필요한 경우에 사용되며, 특히 함수가 2차 다항식에 가까운 경우에 효과적.

 

3. 그래프 

그림을 통해 보다 이해를 쉽게 할 수 있습니다.

 

그래프

 

위의 그래프의 matlab 코드는 아래와 같습니다.

 

clc
close all
clear 
% 함수 정의
fun = @(x) sin(x); % 여기에 적절한 함수를 입력하세요.

% 구간 및 분할 수 정의
a = 0; % 시작점
b = pi; % 끝점
n = 10; % 분할 수

% x 값 및 함수 값 계산
x_values = linspace(a, b, 1000);
y_values = fun(x_values);

% Midpoint Rule 그래프 그리기
figure;
subplot(3, 1, 1);
plot(x_values, y_values, 'k', 'LineWidth', 2);
hold on;

midpoint_x = zeros(1, n);
midpoint_y = zeros(1, n);

for i = 1:n
    x_mid = (a + (i - 0.5) * (b - a) / n);
    y_mid = fun(x_mid);
    
    midpoint_x(i) = x_mid;
    midpoint_y(i) = y_mid;
    
    rectangle('Position', [x_mid - (b - a) / (2 * n), 0, (b - a) / n, y_mid], 'EdgeColor', 'b', 'FaceColor', 'none'); 
	rectangle('Position', [x_mid - (b - a) / (2 * n), 0, (b - a) / n, y_mid], 'EdgeColor', 'b', 'FaceColor', 'none');
end

title('Midpoint Rule');
hold off;

% Trapezoidal Rule 그래프 그리기
subplot(3, 1, 2);
plot(x_values, y_values, 'k', 'LineWidth', 2);
hold on;

trapezoidal_x = zeros(1, n+1);
trapezoidal_y = zeros(1, n+1);

for i = 1:n+1
    x_trap = a + (i - 1) * (b - a) / n;
    y_trap = fun(x_trap);
    
    trapezoidal_x(i) = x_trap;
    trapezoidal_y(i) = y_trap;
    
    if i > 1
        plot([trapezoidal_x(i-1), trapezoidal_x(i)], [trapezoidal_y(i-1), trapezoidal_y(i)], 'b', 'LineWidth', 2);
        plot([x_trap, x_trap], [0, y_trap], 'b', 'LineWidth', 2);
    
    end
end

title('Trapezoidal Rule');
hold off;

% Simpson's Rule 그래프 그리기
subplot(3, 1, 3);
plot(x_values, y_values, 'k', 'LineWidth', 2);
hold on;

simpson_x = zeros(1, 2*n+1);
simpson_y = zeros(1, 2*n+1);

for i = 1:2:2*n+1
    x_simp = a + (i - 1) * (b - a) / (2 * n);
    y_simp = fun(x_simp);
    
    simpson_x(i) = x_simp;
    simpson_y(i) = y_simp;
    
    if i < 2*n+1
        x_simp_mid = a + i * (b - a) / (2 * n);
        y_simp_mid = fun(x_simp_mid);
        
        simpson_x(i+1) = x_simp_mid;
        simpson_y(i+1) = y_simp_mid;
        
        simpson_x(i+2) = x_simp_mid;
        simpson_y(i+2) = 0;
        
        plot([x_simp, x_simp_mid, x_simp_mid], [y_simp, y_simp_mid, 0], 'b', 'LineWidth', 2);
    end
end

title("Simpson's Rule");
hold off;
728x90
반응형
728x90

<<  곱셈 형태의 함수를 적분하는 데 사용되는 기법 중 하나   >>

 

 


공식

 

위 공식에서 아래와 같이 파생할 수 있습니다,

 

1.조건

 

 1) u = f(x)

 2) v = g(x)

 3) du = f'(x)

 4) dv = g'(x)

 

※ 이때, 식의 f(x) 와 g(x) 는 로그함수, 다항함수, 삼각함수, 지수함수 순으로 순서를 정합니다.

함수 순서

 

파생 공식

 

2.예제

예제

 1) 위 '함수 순서' 에 따라 f(x) 와 g'(x)를 선택합니다.

  f(x) = x  ( 다항 함수 ) 

  g'(x) = e^x  ( 지수함수 )

 

 2) 우선 필요한 변수의 값을 차례대로 적습니다.

  •  f(x) = x
  •  f'(x) = 1
  •  g(x) =  e^x
  •  g'(x) = e^x

 

 3)  그 후 파생공식에 변수 값을 넣어 적분을 수행합니다.

 

3번

 

4) 적분을 수행한 결과를 정리합니다.

결과

 

 

위와 같이 부분적분에 로다삼지 순서에 따라 함수의 순설를 정하고, 적분하는 예를 풀어보는 시간이었습니다.

728x90
반응형
728x90

<<  주어진 함수의 근사값을 찾는 수치 해석적인 방법  >>

 

 

공식


1. 조건

1) 은 다음 반복에서의 근사 해

2) x_은 현재 반복에서의 근사 해,

3) 은 함수의 값

4)) 은 함수의 미분 값입니다.

 

 

※ 즉, 위 공식은 f(x) = 0 을 찾는 공식입니다.

 

2. 주의할 점

 

1) 미분 가능성 및 연속성:  함수가 미분 가능하고 연속적이어야 합니다.

                                           또한, 미분이 0이 되는 지점에서는 수렴이 느려지거나 수렴하지 않을 수 있습니다.

 

2) 초기 추정값의 선택: 초기 추정값에 따라 수렴 여부가 달라질 수 있습니다.

                                      부적절한 초기 추정값은 수렴을 방해하거나, 다른 해로 수렴하게 할 수 있습니다.

 

3) 계산 오류와 수렴 문제: 수학적으로 수렴이 보장되지 않는 경우가 있습니다.

                                          특히, 특정 조건에서는 발산할 수 있거나, 수렴이 매우 느릴 수 있습니다.

 

4) 함수의 복잡성: 함수가 복잡하거나 다수의 근을 가지고 있을 경우, 수렴하지 않을 수 있습니다. 

 

5) 수렴 주변의 근방에서만 유효: 초기 추정값 주변에서만 수렴이 보장됩니다.

                                                      멀리 떨어진 해에서는 다른 방법을 사용해야 할 수 있습니다.

 

6) 미분 계산의 안정성: 미분이 0이 되는 지점이나 불연속성이 있는 지점에서 문제가 발생할 수 있습니다.

 

3. 예제

 

예제

 

위 함수 일 때,

미분 공식은 : f'(x) = 2x  입니다.

이때, 초기 추정값을 x_0 = 3  으로 설정합니다.

 

1step

x_1 = 3 - ((3^2-4)) / (2*3) = 2.1667

x_2 = (2.1667 공식에 대입) = 2

x_3 = (2 공식에 대입 ) =2

 

따라서, x_2 , x_3 의 값이 2가 됨에 따라,  f(x) =0 이되는 x의 값이 2가 됨을 알 수 있습니다.

 

4. 그래프

 

그래프

 

다음과 같이 추정 값 '3' 으로 부터 근사값을 계속하여 f(x) = 0 을 알아가는 그래프를  확인 할 수 있습니다.

위 그래프에 대한 matlab 코드는 아래의 글을 통해 확인 가능합니다.

 

clc
close all
clear 
% 주어진 함수 정의
f = @(x) x.^2 - 4;

% 함수의 미분 정의
df = @(x) 2 * x;

% 초기 추정값 설정
x0 = 3;

% 반복 횟수 설정
numIterations = 10;

% x 범위 설정
xRange = linspace(-3, 4, 100);

% 함수 및 뉴턴-랩슨 반복 결과를 그래프로 나타냄
figure;

% 주어진 함수의 그래프
subplot(2, 1, 1);
plot(xRange, f(xRange), 'b-', 'LineWidth', 2);
hold on;
grid on;

% 초기 추정값을 빨간색 원으로 표시
plot(x0, f(x0), 'ro', 'MarkerSize', 10);

% 뉴턴-랩슨 반복 수행
for i = 1:numIterations
    x1 = x0 - f(x0) / df(x0);
    
    % 그래프 상에서 반복된 추정값을 선으로 연결
    plot([x0, x1], [f(x0), 0], 'r--');
    
    % 다음 반복을 위해 추정값 갱신
    x0 = x1;
end

% 최종 결과값을 녹색 별표로 표시
plot(x1, f(x1), 'g*', 'MarkerSize', 10);

% 그래프 스타일 및 레이블 설정
xlabel('x');
ylabel('f(x)');
title('Newton-Raphson Method Example');
% legend('f(x)', 'Initial Guess', 'Iteration Steps', 'Final Result');

% 주어진 함수의 그래프 및 뉴턴-랩슨 결과의 확대된 그래프
subplot(2, 1, 2);
plot(xRange, f(xRange), 'b-', 'LineWidth', 2);
hold on;
grid on;

% 초기 추정값을 빨간색 원으로 표시
plot(x0, f(x0), 'ro', 'MarkerSize', 10);

% 뉴턴-랩슨 반복 수행 (확대된 그래프)
for i = 1:numIterations
    x1 = x0 - f(x0) / df(x0);
    
    % 그래프 상에서 반복된 추정값을 선으로 연결
    plot([x0, x1], [f(x0), 0], 'r--');
    
    % 다음 반복을 위해 추정값 갱신
    x0 = x1;
end

% 최종 결과값을 녹색 별표로 표시 (확대된 그래프)
plot(x1, f(x1), 'g*', 'MarkerSize', 10);

% 그래프 스타일 및 레이블 설정
xlabel('x');
ylabel('f(x)');
title('Newton-Raphson Method Example (Zoomed In)');
% legend('f(x)', 'Initial Guess', 'Iteration Steps', 'Final Result');

% 그래프 보여주기
hold off;
728x90
반응형

+ Recent posts