samcoach
@samcoach
Học viên
5,324
Đánh giá khóa học
515
Đánh giá khóa học
5.0
이력 사항
現) 반도체 대기업 (CHIP 회로설계 4년차)
아날로그 IP / 디지털 시나리오 설계
A급 특허 출원
글로벌 외국 기업 엔지니어 기술 대응
前) 스타트업 인큐베이팅 업체 (MCU Firm-ware 설계)
前) 대기업 가전제품 업체 (All-in-one 정수기 생산 기술)
前) 중견기업 의료기기 업체 (CIS, DDI ASIC 설계)
CHIP 설계 취업/이직 충분히 도전할 수 있습니다.
저와 함께 CHIP 설계 취업/이직에 가까워지세요!
"반도체 아날로그/디지털 회로설계를 꿈꾸시나요?
대기업 S전자 현직자의 눈으로 기초부터 도와드립니다!"
반갑습니다! S전자에서 시스템반도체를 설계하고 있는 삼코치 입니다 :)
저는 스타트업에서부터 회로설계 직무에 도전하면서 많은 시행착오를 겪어왔습니다.
PCB 설계, F/W 설계, FPGA 설계, CHIP 설계를 구먹구구 식으로 경험했죠.
그런데 한 가지 아쉬움이 있었습니다.
'왜 회로설계 분야는 체계화된 실습 기회와 취업에 대한 정보가 적을까?'
반도체 공정, 프로그래밍 등의 분야는 콘텐츠가 많았지만, 회로설계는 정보가 적다보니 그저 '숨겨진 세상'이었습니다.
이 글을 읽는 회로설계 취준생분들 또한 저와 같은 답답한 심정을 느껴보셨을 겁니다.
그래서 현직자와 면담도 해보고, 교수님께 물어보고, IDEC 강의를 수강해보기도 하죠.
하지만 알들말듯 여전히 잘 모르는 경우가 대부분 입니다.
그.래.서! 제가 직접 취업까지 연결되는 체계화된 강의를 제작해 버렸습니다!
저는 [아날로그 회로-> 디지털 시스템 -> MCU 펌웨어 -> 드라이버 설계 -> 소프트웨어]를 모두 경험하면서,
'Top-down / Bottom-up'스킬을 통해 제품과 회로를 완벽히 설명해낼 수 있게 되었습니다.
그리고 인프런에서 실무적인 회로를 다루면서 '아날로그/디지털 회로'에 대해 저만의 직관적 해석 방법부터 Trade-off를 따지는 방법까지 모두 풀어드리려 합니다.
저와 함께 기초를 닦고, 실무 역량을 쌓아 자신만의 Chip 설계 Story를 만들어 가봅시다!
Khóa học
Đánh giá khóa học
- Câu chuyện thiết kế mạch CHIP bán dẫn của Inwoo, bắt đầu từ sản phẩm.
cmh2136791
·
Thực hành thiết kế phần cứng PCB: Dự án thiết kế bo mạch tín hiệu hỗn hợp (Mixed-signal) sử dụng STM32Thực hành thiết kế phần cứng PCB: Dự án thiết kế bo mạch tín hiệu hỗn hợp (Mixed-signal) sử dụng STM321987
·
Dự án thiết kế Board nhúng tốc độ cao (High-Speed Embedded Board) (feat. Điện thoại thông minh)Dự án thiết kế Board nhúng tốc độ cao (High-Speed Embedded Board) (feat. Điện thoại thông minh)- Thực hành thiết kế mạch số : Thiết kế Computer Architecture và SoC protocol Digital IP
- Câu chuyện thiết kế mạch CHIP bán dẫn của Inwoo, bắt đầu từ sản phẩm.
Bài viết
Hỏi & Đáp
MOSFET pull down 저항의 필요성
안녕하세요, 답변 남겨드립니다.질문하신 판단이 거의 맞습니다. DRV8701 안에는 외부 MOSFET gate가 무방비로 떠 있지 않도록 gate hold-off 경로가 들어 있습니다. 데이터시트 기준으로 high-side는 GHx와 SHx 사이에 ROFF가 있고, low-side는 GLx와 GND 사이에 ROFF가 있으며, 값은 각각 typ 200 kOhm, typ 150 kOhm 수준입니다. 즉 high-side MOSFET은 gate-to-source 방향으로 꺼지고, low-side MOSFET은 gate-to-ground 방향으로 꺼지는 구조입니다.그래서 일반적인 DRV8701 H-bridge 회로에서 “동작을 위해 반드시 외부 gate pull-down 저항을 추가해야 하느냐”라고 물으면, 제 판단은 “필수는 아닙니다” 쪽입니다. DRV8701이 MOSFET gate driver 역할을 하고, sleep이나 power-on 구간에서도 gate를 꺼두기 위한 내부 경로를 제공하기 때문입니다. 데이터시트에서도 nSLEEP이 low일 때 외부 H-bridge FET이 disable되고, GHx는 SHx 쪽으로, GLx는 GND 쪽으로 pull된다고 설명합니다. VM이 인가되지 않았거나 power-on time 동안에도 GHx-SHx, GLx-GND 사이 weak pulldown으로 output이 disable된다고 되어 있습니다.다만 실무에서는 “동작상 필수냐”와 “양산 리스크를 줄이기 위해 footprint라도 둘 것이냐”를 분리해서 봅니다. 내부 ROFF가 typ 150~200 kOhm이면 gate를 완전히 붙잡아주는 강한 저항은 아닙니다. 예를 들어 MOSFET의 Ciss가 2 nF라고 하면 단순 RC로 tau=RC를 잡았을 때 200 kOhm2 nF=400 us 정도가 나옵니다. 정상 switching 중 turn-off는 이 저항이 아니라 DRV8701의 active sink current가 담당하므로 큰 문제는 아니지만, 전원 인가 전후, MCU reset, DRV8701 sleep, VM과 H-bridge 전원이 서로 다른 타이밍으로 들어오는 순간에는 150~200 kOhm이 “약한 안전벨트”처럼 동작한다고 보시면 됩니다.외부 pull-down을 넣는다면 목적은 정상 PWM 속도 개선이 아니라 비정상 상태에서 gate를 더 확실히 off로 잡는 것입니다. 모터 라인이 길고 노이즈가 큰 보드, MOSFET gate trace가 길게 빠지는 배치, 전원 커넥터 삽입 순간에 VM이 먼저 살아나는 구조, 모터 역기전력이나 inductive kick이 강한 환경, 또는 FET 보드와 MCU/driver 보드가 분리되는 구조라면 100 kOhm~1 Mohm 정도의 외부 gate-source 저항 footprint를 남겨두는 판단이 좋습니다. 실제 양산 보드에서는 0원 BOM을 목표로 DNP 처리해두고, bring-up 때 gate ringing이나 이상 turn-on이 보이면 100 kOhm 또는 220 kOhm을 실장하는 식으로 많이 갑니다.여기서 가장 중요한 포인트는 high-side MOSFET에는 gate-to-GND pull-down을 함부로 넣으면 안 된다는 점입니다. high-side NMOS의 source는 SHx 노드이고, 이 노드는 switching 중 0 V 근처에서 VM 근처까지 움직입니다. 따라서 high-side를 안전하게 끄려면 GHx-SHx 사이, 즉 gate-to-source로 저항이 들어가야 합니다. GHx-GND로 저항을 넣으면 SHx가 올라갈 때 VGS 조건을 이상하게 만들 수 있고, charge pump가 만든 high-side gate drive를 불필요하게 잡아당기며, 경우에 따라 switching loss나 gate driver stress를 키울 수 있습니다. low-side는 source가 GND 또는 sense resistor 근처에 있으므로 GLx-GND, 더 정확히는 gate-to-source 방향으로 보면 됩니다.저항값도 너무 낮게 잡으면 오히려 손해가 생깁니다. DRV8701은 IDRIVE 설정으로 gate source current를 6 mA~150 mA, sink current를 source의 약 2배 수준으로 조절하는 구조이고, 이 gate drive strength로 slew rate와 switching loss, 노이즈를 맞춥니다. 여기에 10 kOhm 같은 강한 gate-source 저항을 달면 VGS=10 V에서 I=V/R=1 mA가 계속 빠집니다. 1 mA가 gate driver 전류 25 mA나 100 mA에 비하면 작아 보일 수 있지만, sleep/저전력 조건이나 charge pump 여유, EMI 튜닝 관점에서는 불필요한 부하가 됩니다. 100 kOhm이면 10 V/100 kOhm=100 uA 수준이라 부담이 훨씬 작고, 내부 150~200 kOhm과 병렬이 되어 유효 hold-off 저항도 대략 60~67 kOhm 수준으로 낮아져 gate를 더 안정적으로 잡아줍니다.외부 pull-down이 series gate resistor 역할을 대신한다고 보면 안 됩니다. DRV8701 데이터시트는 IDRIVE로 gate drive strength를 조절해 FET gate를 최적화하고, 빠른 switching은 VM/GND noise를 키우며 느린 switching은 FET 손실을 키운다고 설명합니다. 즉 EMI와 발열을 조절하는 주된 손잡이는 IDRIVE 설정, MOSFET Qg, layout loop area, gate trace 길이, 필요시 gate series resistor입니다. Gate-source pull-down은 “꺼져 있어야 할 때 정말 꺼져 있게 하는 보험” 쪽에 가깝습니다.제가 회로도 리뷰를 한다면 DRV8701 바로 옆 또는 각 MOSFET gate-source 근처에 high-side는 GHx-SHx, low-side는 GLx-GND 방향으로 0402 footprint를 하나씩 두고 기본 BOM은 DNP로 두겠습니다. 제품이 교육용 보드나 실습용 보드라면 내부 ROFF만으로도 충분히 정상 동작을 확인할 수 있습니다. 반대로 모터 전류가 2~5 A 이상이고, 케이블이 20~30 cm 이상 나가거나, 보드가 실제 제품처럼 ESD/전원 hot-plug/모터 stall 조건을 맞아야 한다면 100 kOhm~220 kOhm을 실장 후보로 잡는 쪽이 안전합니다. 이 질문은 강의 흐름상 Motor Driver schematic과 MOSFET 선정, 이후 layout까지 이어지는 지점이라 회로도 단계에서 footprint를 남겨두는 습관이 꽤 중요합니다.정리해서 가져가시면, DRV8701의 내부 ROFF 때문에 외부 MOSFET gate pull-down은 기본 동작을 위한 필수 부품은 아닙니다. 다만 노이즈가 큰 모터 보드에서는 “안 붙여도 되는 부품”과 “붙일 수 없게 만들어두면 나중에 아쉬운 부품”이 다릅니다. 회로도에는 gate-source pull-down footprint를 남기고, 초기 bring-up에서 gate 파형을 보면서 DNP, 220 kOhm, 100 kOhm 중 하나로 결정하는 방식이 가장 실무적인 접근입니다.
- Lượt thích
- 0
- Số bình luận
- 2
- Lượt xem
- 26
Hỏi & Đáp
LDO - Buffer의 역할
안녕하세요, 답변 남겨드립니다.먼저 이해하신 방향은 맞습니다. Source follower를 넣는 핵심 목적은 pass transistor의 큰 gate capacitance를 error amplifier의 높은 출력저항으로 직접 구동하지 않도록 분리하고, pass gate를 낮은 출력저항으로 구동해 해당 노드의 pole을 높은 주파수로 보내는 것입니다. 강의에서 Buffer stage를 이용해 dominant pole과 second pole을 부하 조건으로부터 분리한다고 설명한 내용도 바로 이 관점입니다. 다만 “source follower의 저항을 낮췄으니 Bode plot의 두 번째 pole이 바로 이동해야 한다”라고 생각하면 실제 회로에서는 잘 맞지 않을 때가 많습니다. 전체 loop에서 보이는 두 번째 pole이 pass gate pole이 아닐 수도 있고, 저항을 변경하는 과정에서 capacitance까지 함께 변했을 수도 있기 때문입니다.Pass gate pole은 우선 다음과 같이 생각하면 됩니다.fpgate ≈ 1 / (2piRdrive*Cgate_eff)여기서 Rdrive는 source follower 출력에서 pass transistor gate를 바라본 소신호 구동저항이고, Cgate_eff는 pass transistor의 Cgs, Cgd, 배선 기생성분, buffer의 junction capacitance를 합친 유효 capacitance입니다. Cgd는 단순히 데이터시트나 operating point에 표시되는 값만 넣으면 안 되고, pass transistor의 gate-to-output gain에 의해 Miller 효과를 받습니다. 대략적으로는 Cgate_eff ≈ Cgs_pass + Cgd_pass*(1-Av_gate_to_out) + Cpar 형태로 볼 수 있습니다. PMOS pass transistor가 common-source 형태로 동작하면 Av_gate_to_out의 크기가 커지는 조건에서 Cgd가 상당히 크게 보일 수 있으며, 특히 light-load에서는 출력저항이 커지기 때문에 유효 gate capacitance가 예상보다 커질 수 있습니다.Source follower의 출력저항도 단순히 “load transistor의 ro와 입력 transistor의 1/gm의 병렬값”으로만 보면 약간 부족합니다. 대략적인 1차 근사는 다음과 같습니다.Rout_sf ≈ 1/(gm_sf + gmb_sf) || ro_sf || ro_bias || Rexternal여기에서 보통 gm_sf가 충분히 크다면 1/(gm_sf+gmb_sf)가 가장 작은 값이 되어 Rout을 지배합니다. 예를 들어 1/gm이 1 kohm이고 bias transistor의 ro가 100 kohm이라고 하면 Rout은 약 990 ohm입니다. ro를 20 kohm까지 다섯 배 낮춰도 Rout은 약 952 ohm이므로 변화량은 4% 정도밖에 되지 않습니다. Cgate_eff가 50 pF라면 pole은 약 3.2 MHz에서 3.34 MHz 정도로만 이동하므로 Bode plot에서 거의 차이가 없어 보이는 것이 정상입니다. 질문에서 load transistor의 ro를 크게 바꿨는데 pole이 움직이지 않았다면 이 경우일 가능성이 높습니다.1/gm을 바꿨는데도 pole이 그대로였다면 transistor size를 변경하면서 capacitance까지 함께 바뀌었는지 확인해야 합니다. MOSFET을 단순화하면 고정된 drain current에서 gm은 대략 sqrt(W/L)에 비례하고 Cgs는 W에 비례합니다. W를 네 배 키우면 1/gm은 대략 절반이 되지만, 해당 transistor가 gate 노드에 추가하는 capacitance는 최대 네 배 가까이 커질 수 있습니다. 저항은 절반이 됐는데 capacitance가 두 배 이상 증가하면 RC time constant가 줄지 않거나 오히려 커질 수도 있겠지요. 이 부분에서 transistor width를 이용해 저항을 조절하는 방법은 R과 C가 동시에 움직이기 때문에 원인 확인용 실험으로는 적합하지 않습니다.가장 확실한 확인 방법은 실제 transistor sizing을 건드리기 전에 source follower와 pass gate 사이에 이상적인 series resistance와 명시적인 capacitor를 놓고 저항만 10배씩 바꿔보는 것입니다. 예를 들어 Ctest=50 pF로 고정하고 Rtest를 100 kohm, 10 kohm, 1 kohm으로 바꾸면 pole은 약 31.8 kHz, 318 kHz, 3.18 MHz로 정확히 10배씩 움직여야 합니다. 이 실험에서 local pole은 움직이는데 전체 loop Bode plot이 그대로라면, 지금 관찰하고 있는 second pole은 pass gate pole이 아니라는 뜻입니다. 이 실험에서도 local pole이 움직이지 않는다면 측정한 노드, AC source 설정, loop break 위치 또는 실제 capacitance 경로를 다시 확인해야 합니다.전체 LDO에는 error amplifier의 dominant pole, error amplifier 출력 또는 source follower 입력 pole, source follower 출력과 pass gate가 만드는 pole, LDO 출력의 load pole, 보상 capacitor에서 생기는 zero와 pole이 동시에 존재할 수 있습니다. 특히 출력 pole은 대략 fPout ≈ 1/(2piRout*Cout)으로 결정되며, 일반적으로 Rout에는 load resistance, feedback resistance, pass transistor 출력저항이 병렬로 포함됩니다. 부하저항이 다른 저항보다 훨씬 작으면 Rout ≈ Rload로 근사할 수 있으므로 load current에 따라 출력 pole이 크게 이동합니다. TI의 LDO 안정도 자료에서도 PMOS pass element를 사용한 LDO를 여러 개의 pole과 zero로 모델링하며, 출력 pole이 load와 output capacitor에 강하게 좌우된다고 설명합니다.따라서 전체 loop Bode plot 하나만 보지 말고 local transfer function을 나눠서 확인하는 편이 좋습니다. V(pass_gate)/V(buffer_input)를 보면 source follower 출력 pole을 비교적 직접적으로 볼 수 있고, Vout/V(pass_gate)를 보면 pass transistor와 output node가 만드는 pole을 확인할 수 있습니다. pass gate에 AC 1 A의 test current를 주입하고 Zgate=Vgate/Itest를 그리면 저주파 영역에서 실제 구동저항을 읽을 수 있습니다. 이때 DC operating point는 그대로 유지되어야 하므로 loop를 단순히 선로 삭제로 끊기보다는 DC feedback을 보존하는 loop injection 방법이나 simulator의 STB 분석을 사용하는 것이 안전합니다. PZ analysis 기능이 있다면 buffer 적용 전후의 pole 목록을 직접 비교하는 것이 가장 빠릅니다.설계 목표를 잡을 때는 단순히 pass gate pole을 조금 올리는 것이 아니라 unity-gain frequency와 충분히 분리해야 합니다. 두 개의 pole만 있다고 가정하면 PM ≈ 90 degree - atan(fu/fp2)이므로 PM=60 degree를 얻기 위한 이론적인 최소 조건은 fp2 ≈ 1.73*fu입니다. 실제 LDO에는 세 번째 pole, ESR zero, Cgd에 의한 변화, PVT variation이 있으므로 fp2를 fu의 3배 정도에 두는 것은 다소 불안하고, 일반적으로 5배 이상, 여유가 된다면 10배 정도를 목표로 잡는 편이 안전합니다. 예를 들어 fu=200 kHz이고 Cgate_eff=50 pF라면 fp2를 1 MHz 이상으로 만들기 위해 Rdrive는 다음 조건을 만족해야 합니다.Rdrive pi1 MHz*50 pF) ≈ 3.18 kohm따라서 gm+gmb는 최소 약 0.31 mS보다 커야 합니다. gm/Id=15 V^-1 부근에서 동작시킨다고 가정하면 필요한 bias current는 대략 Id ≈ 0.31 mS/15 V^-1 ≈ 21 uA입니다. 이것은 TT 조건의 출발값일 뿐이며, SS corner와 저온 또는 고온에서 gm이 감소하는 조건까지 보면 30~50 uA 정도가 필요할 수도 있습니다. 반대로 저전력 LDO에서 전체 Iq 목표가 10 uA라면 source follower에 30 uA를 쓰는 구조는 애초에 제품 목표와 맞지 않을 수 있습니다.Source follower가 saturation 영역을 유지하는지도 꼭 확인해야 합니다. TT, 27 degree C에서 Rout이 낮더라도 VIN minimum, maximum load, dropout 근처에서 source follower의 Vds가 부족해 linear 영역으로 들어가면 출력저항이 크게 증가하고 pass gate pole이 다시 낮아질 수 있습니다. 반대쪽 light-load 조건에서는 pass transistor gate가 turn-off 방향으로 충분히 움직이지 못해 출력이 상승하거나 quiescent current가 증가할 수도 있습니다. 각 소자의 VGS, VDS, VDSAT, gm, gmb, ro를 VIN minimum/maximum, load minimum/maximum, SS/FF, 온도 범위에서 확인해야 합니다. 180 nm 공정에서 Vov를 약 150~250 mV로 잡았다면 최소한 그 정도의 headroom이 buffer 양단에 남는지 살펴보는 식으로 접근하면 됩니다.Feed-forward capacitor로 PM 60 degree를 확보한 접근도 틀린 방법은 아닙니다. Feedback divider의 위쪽 저항을 R1, 아래쪽 저항을 R2라고 하고 CFF를 R1과 병렬로 연결했다면 대략 다음과 같은 zero와 pole이 생깁니다.fz_ff ≈ 1/(2piR1*CFF)fp_ff ≈ 1/(2pi(R1||R2)*CFF)CFF zero를 unity-gain frequency 근처나 문제가 되는 non-dominant pole보다 조금 낮은 위치에 두면 phase boost를 얻을 수 있습니다. TI 자료에서도 CFF가 feedback loop에 zero와 pole을 추가해 안정도와 bandwidth를 개선하고, load transient, noise, PSRR까지 개선할 수 있다고 설명합니다. 다만 큰 CFF는 startup을 느리게 만들거나 load transient 중 power-good 오동작을 만들고, shutdown 시 FB node에 예상하지 못한 전압을 발생시킬 수 있습니다.Buffer와 CFF의 차이는 CFF가 loop의 전달함수 모양을 보정하는 방법이라면, buffer는 pass gate를 구동하는 회로 자체의 물리적인 impedance와 전류 구동능력을 바꾸는 방법이라는 점입니다. CFF로 nominal PM이 60 degree가 나와도 pass gate의 높은 impedance는 그대로 남아 있습니다. Pass transistor 크기나 bias current가 달라져 gate capacitance가 증가하거나, PVT에 의해 error amplifier 출력저항이 커지면 gate pole이 내려올 수 있습니다. CFF zero가 정확히 맞아 있던 조건에서는 안정하더라도 load current, Cout, ESR, 공정 corner가 변하면 pole과 zero의 정렬이 깨질 수 있겠지요. Buffer는 큰 pass gate capacitance를 error amplifier의 고저항 노드에서 분리하므로 compensation이 pass transistor size와 부하 변화에 덜 민감해지는 장점이 있습니다.Transient 관점에서도 buffer의 의미가 큽니다. Pass gate의 large-signal 이동속도는 대략 SRgate ≈ Idrive/Cgate로 결정됩니다. Cgate=50 pF이고 error amplifier가 gate에 5 uA만 공급할 수 있다면 SRgate는 0.1 V/us이므로 gate 전압을 1 V 움직이는 데 약 10 us가 필요합니다. Buffer가 순간적으로 100 uA를 공급하면 SRgate는 2 V/us가 되어 같은 이동을 약 0.5 us에 수행할 수 있습니다. PM이 동일하게 60 degree인 두 회로라도 load step에서 undershoot와 recovery time이 크게 달라질 수 있는 이유입니다. 다만 단일 source follower는 한 방향은 transistor가 강하게 구동하지만 반대 방향은 bias current source만으로 충전 또는 방전하는 경우가 많아 rising transient와 falling transient가 비대칭일 수 있습니다. 양쪽 transient가 모두 중요하면 push-pull buffer나 class-AB 형태가 더 적합할 수 있습니다.Source follower가 항상 더 좋은 선택은 아닙니다. Bias current 증가, 추가 noise, PSRR 경로, headroom 감소, 새로운 내부 pole, startup sequence 문제가 함께 들어옵니다. Pass transistor가 작고 loop bandwidth가 수십 kHz 수준이며 Iq가 가장 중요한 LDO라면 Miller compensation과 CFF만으로 구성하는 편이 더 합리적일 수 있습니다. 반대로 출력전류가 수백 mA이고 pass transistor gate capacitance가 수십 pF 이상이며, 1 us 이하의 빠른 load transient나 넓은 load range가 요구된다면 buffer를 넣어 gate drive를 확보하는 쪽이 양산 margin을 만들기 쉽습니다. 실무에서는 nominal PM 60 degree 한 점보다 VIN, load, Cout, ESR, PVT를 모두 바꿨을 때 worst-case PM이 45 degree 이상 유지되는지, gain peaking이 2~3 dB 이내인지, load transient 후 ringing이 2~3 cycle 안에 감쇠하는지를 더 중요하게 봅니다.현재 결과에서 가능성이 높은 순서는 source follower의 1/gm이 이미 Rout을 지배해 load transistor의 ro 변화가 의미 없었던 경우, gm을 키우면서 parasitic capacitance도 같이 증가해 RC 변화가 상쇄된 경우, Bode plot에서 보고 있는 pole이 pass gate pole이 아닌 경우, 그리고 dropout이나 특정 bias 조건에서 source follower가 saturation을 벗어난 경우입니다. 회로 이미지가 다시 올라갈 때는 전체 schematic, 각 transistor의 DC operating point, loop를 끊은 위치, buffer 적용 전후 Bode plot, PZ analysis 결과를 함께 보면 어느 pole이 움직이지 않는지 훨씬 명확하게 구분할 수 있습니다.
- Lượt thích
- 0
- Số bình luận
- 2
- Lượt xem
- 29
Hỏi & Đáp
cache관련 질문 드립니다
안녕하세요, 답변 남겨드립니다.처음 cache 코드를 보실 때 막막한 게 아주 자연스럽습니다. cache는 Verilog 문법만 안다고 바로 읽히는 코드가 아니라, 컴퓨터 구조에서 배운 개념이 RTL 회로로 어떻게 바뀌는지를 같이 봐야 하는 부분입니다. 그래서 “block으로 그려보라”는 조언은 꽤 좋은 방향입니다. 다만 여기서 말하는 block 그림은 코드에 있는 input, output 이름을 전부 네모 박스 주변에 적어놓는 그림이 아니라, 신호가 왜 그 방향으로 흐르는지, 어떤 판단을 만들기 위해 필요한지, 어느 clock에서 의미가 생기는지를 이해하기 위한 그림에 가깝습니다.처음에는 회로도를 멋지게 그리려고 하지 않으셔도 됩니다. cache 전체를 큰 박스 하나로 그리고, 왼쪽에는 CPU나 processor 쪽 신호를 둡니다. 예를 들면 addr, read, write, wdata 같은 요청 신호가 들어오고, rdata, ready 같은 응답 신호가 나간다고 생각하면 됩니다. 오른쪽에는 memory나 AMBA bus 쪽 신호를 둡니다. cache miss가 났을 때 외부 memory에 read 요청을 보내고, data를 받아오는 방향이라고 생각하시면 됩니다. 이렇게만 그려도 “cache는 CPU와 memory 사이에서 중간 판단을 해주는 회로구나”라는 큰 구조가 잡힙니다.그다음에는 cache 안쪽을 조금씩 나누면 됩니다. 가장 먼저 봐야 할 부분은 address입니다. cache는 address를 그대로 쓰지 않고 보통 tag, index, offset으로 나눕니다. 예를 들어 32-bit address를 쓰고, cache line size가 32Byte라면 offset은 5bit가 됩니다. 32Byte = 2^5이기 때문에 addr[4:0]이 line 안에서 몇 번째 byte인지를 나타냅니다. cache line이 128개라면 index는 7bit가 됩니다. 그러면 addr[11:5]가 index가 되고, 나머지 addr[31:12]가 tag가 됩니다. 이걸 그림으로 한 번 나눠놓으면, 코드에서 왜 addr_index, addr_tag, addr_offset 같은 신호를 assign하는지 훨씬 잘 보입니다.assign을 보고 헷갈릴 때는 “이 값이 저장되어야 하는 값인가, 아니면 지금 입력으로 바로 계산되는 값인가”를 기준으로 보시면 좋습니다. 예를 들어 addr에서 tag만 잘라내는 신호는 저장할 필요가 없습니다. addr_tag = addr[31:12]처럼 현재 address만 보면 바로 알 수 있으니 assign으로 만드는 게 자연스럽습니다. hit도 비슷합니다. valid bit가 1이고, 저장된 tag와 현재 address의 tag가 같으면 hit입니다. 그래서 hit = valid & (stored_tag == addr_tag) 같은 조합 논리로 만들 수 있습니다. 반대로 valid bit, dirty bit, state 같은 값은 시간이 지나도 기억하고 있어야 하므로 clock에 맞춰 저장되는 register가 필요합니다.cache 그림을 그릴 때 처음부터 모든 신호를 다 넣으면 오히려 더 어려워집니다. 코드에 신호가 50개, 100개 있으면 그걸 전부 선으로 연결하는 순간 그림이 복잡한 거미줄처럼 됩니다. 처음에는 중요한 신호만 잡으시면 됩니다. CPU에서 들어오는 addr, read, write, wdata를 그리고, 내부에는 tag array, data array, valid bit, comparator, mux, control FSM 정도만 놓습니다. comparator는 현재 addr_tag와 tag array에서 읽은 stored_tag를 비교하는 블록입니다. mux는 hit일 때 어떤 data를 CPU로 돌려줄지 선택하는 블록입니다. control FSM은 hit인지 miss인지에 따라 다음 동작을 정하는 블록이라고 보면 됩니다.여기서 회로 공부가 되는 지점은 “신호 이름을 외우는 것”이 아니라 “왜 그 신호가 필요한지 이해하는 것”입니다. 예를 들어 hit 신호는 CPU에게 바로 data를 줄 수 있는지를 판단하기 위해 필요합니다. miss 신호는 외부 memory에 요청을 보내야 하는지를 판단하기 위해 필요합니다. dirty bit는 기존 cache line을 그냥 버려도 되는지, 아니면 memory에 먼저 써야 하는지를 판단하기 위해 필요합니다. valid bit는 cache 안에 들어 있는 값이 진짜 유효한 데이터인지 확인하기 위해 필요합니다. 이렇게 하나씩 역할을 붙이면 코드가 훨씬 덜 낯설어집니다.timing 그림도 꼭 같이 그려보셨으면 합니다. block 그림은 “무엇과 무엇이 연결되어 있는지”를 보여주지만, timing 그림은 “언제 값이 들어오고 언제 결과가 나가는지”를 보여줍니다. cache는 이 부분이 중요합니다. 예를 들어 CPU가 cycle N에 address를 넣었을 때, hit 결과가 같은 cycle에 바로 나오는 구조도 있고, FPGA BRAM을 쓰면 data가 cycle N+1에 나오는 구조도 많습니다. FPGA에서는 block RAM이 보통 synchronous read라서 address를 넣고 다음 clock에 data가 나옵니다. 그래서 코드에서 ready나 rdata가 한 박자 늦게 나오는 것처럼 보일 수 있습니다. 이걸 timing 그림 없이 보면 “왜 굳이 register를 한 번 더 거치지?”라고 느끼기 쉽습니다.AMBA나 AXI 쪽이 붙어 있으면 valid와 ready를 특히 조심해서 보셔야 합니다. valid가 1이라고 해서 전송이 끝난 게 아닙니다. valid=1이고 ready=1인 clock에서만 실제 전송이 일어납니다. 예를 들어 arvalid=1인데 arready=0이면 cache가 read address를 내보내고는 있지만, bus 쪽에서 아직 받아준 것이 아닙니다. 이때 state를 다음 단계로 넘겨버리면 simulation에서는 운 좋게 지나가도 실제 연결에서는 멈추거나 data가 꼬일 수 있습니다. 실무에서도 이런 handshake 실수는 자주 나옵니다. 그래서 bus 쪽 신호는 block 그림보다 timing 그림으로 보는 편이 더 잘 이해됩니다.공부 순서는 너무 어렵게 잡지 않으셔도 됩니다. 먼저 read hit만 보시면 됩니다. CPU가 address를 줍니다. cache는 address에서 index를 뽑습니다. 그 index로 tag array와 data array를 읽습니다. 읽어온 tag와 현재 address의 tag를 비교합니다. valid가 1이고 tag가 같으면 hit입니다. hit이면 data array에서 읽은 data 중 offset에 맞는 부분을 골라 CPU에 돌려줍니다. 이 흐름 하나만 그림으로 그려도 cache 코드의 핵심 절반은 보이기 시작합니다.read hit이 조금 익숙해지면 write hit을 보시면 됩니다. CPU가 address와 wdata를 줍니다. cache는 같은 방식으로 index를 찾고 tag를 비교합니다. hit이면 data array의 해당 위치를 새 data로 바꿉니다. byte enable이 있으면 전체 word를 다 쓰는 게 아니라 특정 byte만 바꿀 수도 있습니다. write-back cache라면 이때 dirty bit를 1로 세웁니다. dirty bit가 1이라는 말은 “cache 안의 데이터는 바뀌었는데, 아직 memory에는 반영되지 않았다”는 뜻입니다. 이 의미를 알고 보면 dirty bit 관련 코드가 훨씬 자연스럽게 읽힙니다.그다음에 miss를 보시면 됩니다. miss는 cache 코드에서 가장 복잡해지는 부분입니다. read miss가 나면 외부 memory에서 cache line 하나를 가져와야 합니다. line size가 32Byte라면 한 번에 32Byte를 채워야 하므로, bus width가 32bit인 경우 4Byte씩 8번 받아야 할 수 있습니다. 이때 refill counter 같은 신호가 생길 수 있습니다. write-back cache라면 기존 line이 dirty일 때 바로 refill하면 안 되고, 먼저 기존 데이터를 memory에 써야 합니다. 그래서 state가 IDLE, COMPARE, WRITEBACK, REFILL 같은 식으로 나뉘는 경우가 많습니다. state 그림을 옆에 같이 그리면 코드 흐름이 훨씬 편해집니다.처음 배우는 입장에서는 “회로도를 어떻게 그리는 게 맞는지”보다 “내가 이 코드를 설명할 수 있는 그림인지”가 더 중요합니다. 멋진 툴로 그릴 필요도 없습니다. 종이에 네모 몇 개 그리고 화살표를 긋는 정도면 충분합니다. tag array 옆에는 index로 읽는다고 적고, comparator 옆에는 stored_tag == addr_tag라고 적고, data mux 옆에는 offset으로 선택한다고 적으면 됩니다. 수식도 복잡하게 쓰지 말고 hit = valid & tag_match 정도로만 적어도 좋습니다.코드를 한 줄씩 해석하는 공부도 의미는 있습니다. 다만 cache처럼 구조가 있는 RTL은 한 줄 해석만으로는 전체 그림이 잘 안 잡힙니다. 예를 들어 assign miss = req_valid & ~hit 같은 한 줄은 문법적으로는 쉽지만, 이 miss가 control FSM으로 들어가고, memory request를 만들고, CPU ready를 낮추는 흐름까지 봐야 진짜 이해가 됩니다. 그래서 한 줄 해석을 하시되, 해석한 신호를 block 그림에 하나씩 붙여보는 방식이 좋습니다. 그러면 “이 신호는 comparator의 출력이구나”, “이 신호는 FSM으로 들어가는 조건이구나”, “이 신호는 CPU를 stall시키는 데 쓰이는구나”처럼 위치가 잡힙니다.실무에서 RTL을 읽을 때도 비슷하게 봅니다. 처음 보는 cache 코드를 받으면 바로 모든 always문을 세세하게 읽기보다, CPU interface가 어떤 protocol인지, memory interface가 어떤 protocol인지, hit latency가 몇 cycle인지, miss penalty가 어느 정도인지, dirty 처리 방식이 있는지부터 봅니다. 예를 들어 hit latency가 1 cycle인지 2 cycle인지에 따라 CPU stall 설계가 달라지고, miss refill이 8 beat인지 16 beat인지에 따라 성능이 달라집니다. 100MHz에서 돌아가는 과제용 cache와 300MHz 이상을 목표로 하는 제품용 cache는 register를 넣는 위치도 달라질 수 있습니다. 같은 기능이라도 timing margin을 10~20% 확보하려면 조합 경로를 짧게 자르는 설계가 필요합니다.질문하신 상황에서는 block으로 그리는 공부를 해보시는 게 맞습니다. 단, 처음부터 완벽한 회로도를 그리려고 하면 부담이 너무 큽니다. 오늘은 read hit 경로만 그린다, 다음에는 write hit 경로만 그린다, 그다음에는 read miss refill 경로만 그린다처럼 나눠서 접근하시면 됩니다. 각 그림에는 신호를 너무 많이 넣지 말고, 처음에는 10개 정도만 넣어도 충분합니다. addr, tag, index, offset, valid, stored_tag, tag_match, hit, data_out, ready 정도만 제대로 이해해도 cache 코드가 갑자기 훨씬 읽히기 시작할 겁니다.이 공부를 하다 보면 어느 순간 Verilog 코드가 그냥 문장이 아니라 회로처럼 보이기 시작합니다. assign은 조합 논리로 보이고, always_ff는 register 묶음으로 보이고, case문은 FSM 상태 전이로 보이게 됩니다. 그때부터는 코드 한 줄을 읽어도 “아, 이건 mux select를 만드는 거구나”, “이건 miss 동안 CPU 요청을 잡아두는 register구나”, “이건 AXI ready가 안 왔을 때 state를 유지하려는 거구나” 하고 감이 옵니다. cache는 처음 진입 장벽이 높은 주제지만, block diagram과 timing diagram을 같이 그리면서 보면 분명히 따라갈 수 있는 구조입니다.
- Lượt thích
- 0
- Số bình luận
- 1
- Lượt xem
- 31
Hỏi & Đáp
21번 INT pin 풀업 저항
안녕하세요, 답변 남겨드립니다.질문 주신 내용은 PHY칩 schematic 설계에서 정말 좋은 포인트입니다. 이 부분은 단순히 “데이터시트에 내부 풀업이 있으니 외부 풀업은 필요 없다”로 끝내기보다, 실제 보드에서 그 신호가 얼마나 안정적으로 High를 유지하고, Low로 떨어질 때 디바이스가 무리 없이 전류를 sink할 수 있는지를 같이 봐야 합니다. 지금 질문하신 INT 핀은 강의 커리큘럼상 STM32 Mixed-signal 보드의 PHY칩 schematic 설계 파트와 정확히 연결되는 내용입니다.INT 핀이 open-drain output이고 내부에 9.5kohm 풀업이 있다고 되어 있으면, 동작 자체만 놓고 보면 외부 풀업 없이도 High 레벨은 만들어질 수 있습니다. 그런데 제가 외부 풀업을 추가한 이유는 “기능 동작”보다 “보드 레벨 안정성”을 더 넓게 봤기 때문입니다. 내부 풀업 9.5kohm은 대체로 약한 풀업에 가깝고, 데이터시트에 min/max tolerance가 명확히 보장되지 않으면 양산 조건에서 9.5kohm 그대로라고 보기 어렵습니다. 예를 들어 3.3V 기준으로 내부 9.5kohm만 쓰면 Low일 때 흐르는 전류는 대략 I = 3.3V / 9.5kohm = 0.35mA 정도입니다. 이 정도면 소비전류 관점에서는 부담이 작지만, 라인에 기생 커패시턴스가 30pF만 붙어도 상승 시간은 t_r ~= 2.2RC = 2.2 x 9.5kohm x 30pF = 약 0.63us 정도가 됩니다. 인터럽트 신호라서 수십 MHz처럼 빠를 필요는 없지만, 주변에 Ethernet PHY 클럭, RMII/MII 신호, Magnetics 주변 노이즈가 같이 있는 보드에서는 약한 High 레벨이 노이즈에 더 취약해질 수 있습니다.외부에 예를 들어 10kohm을 추가하면 내부 9.5kohm과 병렬이 되어서 유효 풀업은 R_eff = 9.5kohm || 10kohm = 약 4.87kohm이 됩니다. 이때 Low일 때 PHY가 sink해야 하는 전류는 I = 3.3V / 4.87kohm = 약 0.68mA 수준입니다. 일반적인 open-drain INT 핀에서 1mA 이하 sink 전류는 크게 부담되지 않는 경우가 많고, 대신 상승 시간은 절반 가까이 줄어듭니다. 30pF 기준이면 t_r ~= 2.2 x 4.87kohm x 30pF = 약 0.32us 정도가 되죠. 제가 외부 풀업을 넣은 판단은 “내부 풀업이 있으니 없어도 된다”가 아니라, “외부 보드 배선, MCU 입력 누설, EMI 환경, 양산 편차까지 고려하면 4.7kohm~10kohm 정도의 외부 풀업으로 신호 마진을 확보하는 편이 더 안전하다”에 가깝습니다.풀업 저항 값은 데이터시트에 권장값이 없으면 실제로 계산을 합니다. 다만 실무에서 매번 아주 정밀하게 계산한다기보다는, 먼저 상한과 하한을 잡고 그 안에서 표준값을 고릅니다. 하한은 open-drain 출력이 Low를 만들 때 감당해야 하는 sink current로 정합니다. 식으로 쓰면 R_pullup >= (VDD - VOL_max) / I_sink_allow 정도입니다. 예를 들어 VDD = 3.3V, VOL_max를 0.4V 이하로 보고, 핀에 1mA 이상은 부담시키고 싶지 않다면 R >= (3.3V - 0.4V) / 1mA = 2.9kohm이 됩니다. 그래서 2.2kohm은 조금 공격적일 수 있고, 4.7kohm이나 10kohm은 안전한 쪽에 들어옵니다.상한은 상승 시간과 누설 전류로 봅니다. 상승 시간 기준은 R_pullup 디커플링 커패시터도 데이터시트 권장값을 그대로 쓰는 것에서 끝내지 말고, 왜 그 값이 들어갔는지 아는 게 좋습니다. 특히 PHY, MCU, ADC처럼 mixed-signal 보드에서는 0.1uF 하나를 붙였는지, 1uF와 0.1uF를 병렬로 붙였는지, PLL 전원이나 AVDD에 ferrite bead 뒤로 별도 decap을 붙였는지가 실제 노이즈 성능과 bring-up 안정성에 영향을 줍니다. 데이터시트의 0.1uF 권장은 “고주파 순간 전류를 핀 바로 옆에서 공급하라”는 의미가 강하고, 1uF~4.7uF는 조금 더 낮은 주파수의 rail droop를 잡는 역할이 큽니다. 중요한 건 이상적인 C 값이 아니라 실제 부품의 ESL, ESR, DC bias, 배치 거리까지 포함한 임피던스입니다. 0.1uF라고 해도 0402와 0603의 ESL이 다르고, 1uF X5R 커패시터는 3.3V DC bias에서 실효 용량이 50~80% 수준으로 떨어질 수 있습니다.데이터시트에 디커플링 값이 없으면 실무에서는 전원 핀의 성격과 전류 변화량을 보고 정합니다. 가장 기본적인 식은 C >= I_step x dt / dV 입니다. 예를 들어 어떤 IC가 순간적으로 50mA 전류를 100ns 동안 더 요구하고, 전원 droop를 50mV 이내로 묶고 싶다면 C >= 50mA x 100ns / 50mV = 0.1uF가 됩니다. 그래서 디지털 IC 전원 핀 근처에 0.1uF가 자주 나오는 겁니다. 그런데 이 계산은 이상적인 커패시터 기준이라 실제 보드에서는 0.1uF 하나만 믿지 않고, IC 전원 핀마다 0.1uF를 가깝게 두고, rail 단위로 1uF~10uF bulk를 추가하는 식으로 갑니다. PHY처럼 25MHz/50MHz clock과 고속 edge가 있는 부품은 VDDIO, VDD core, AVDD가 나뉘어 있으면 각 rail마다 0.1uF를 핀 근처에 놓고, analog/PLL 쪽은 ferrite bead 이후에 0.1uF + 1uF 조합을 두는 경우가 많습니다.여기서 수강생분이 가져가시면 좋은 감각은 “데이터시트 권장은 최소한의 안전한 출발점이고, 보드 설계자는 그 권장값이 내 PCB 환경에서도 성립하는지 확인하는 사람”이라는 점입니다. 외부 풀업도 마찬가지로, 내부 9.5kohm이 있으니 부품 하나 줄여서 BOM cost를 낮출 수는 있습니다. 저항 하나가 1원~몇 원 단위라 양산 수량이 10만 대면 의미가 생기죠. 반대로 개발 초기 보드나 포트폴리오용 보드에서는 저항 하나를 줄이는 것보다 bring-up 때 INT 신호가 안정적으로 보이고, 오실로스코프로 High/Low 전압과 edge를 확인하기 쉬운 쪽이 더 중요합니다. 그래서 저는 이런 신호에는 보통 4.7kohm~10kohm 외부 풀업을 우선 검토하고, 양산 최적화 단계에서 내부 풀업만으로도 온도, 전압, 노이즈, EMI 조건을 통과하는지 확인한 뒤 DNI 처리나 삭제를 판단하는 흐름으로 가져갑니다.
- Lượt thích
- 0
- Số bình luận
- 2
- Lượt xem
- 56
Hỏi & Đáp
수업자료내 출처 문의 드립니다.
안녕하세요, 답변 남겨드립니다.https://www.ti.com/solution/smartphone?variantid=23043이 링크 참고해보시면 되겠습니다!
- Lượt thích
- 0
- Số bình luận
- 2
- Lượt xem
- 28
Hỏi & Đáp
Target Specification
안녕하세요, 답변 남겨드립니다.네, 맞습니다. BGR과 Opamp처럼 일부 과제는 교안 안에 비교적 명확한 Target Specification을 제시해두었고, Comparator, Ring-Oscillator, Charge-Pump 같은 블록은 강의에서 기본 회로 구조와 성능 개선 방향을 먼저 익힌 뒤, 수강생이 스스로 목표 스펙을 정의하고 설계 결과를 개선해보는 방식으로 구성되어 있습니다. 커리큘럼상 Comparator는 기본 설계 이후 High-speed 개선을 다루고 과제에서는 Low-Offset Comparator 설계로 이어지며, Oscillator는 Noise와 Jitter 개선을 다룬 뒤 Area와 Power 최적화 과제로 연결됩니다. 그래서 모든 블록에 대해 “반드시 이 숫자를 만족해야 한다”는 단일 정답형 스펙을 주기보다는, 회로별 핵심 성능 지표를 잡고 trade-off를 경험하도록 설계한 과제라고 보시면 됩니다.제가 이 과정을 그렇게 구성한 이유는 현업 아날로그 IP 설계가 보통 정답 스펙을 받아서 그대로 맞추는 일만으로 끝나지 않기 때문입니다. 실제 프로젝트에서는 시스템 요구사항, 공정 노드, 전원 전압, 부하 조건, 면적 budget, 소비전류 budget이 먼저 주어지고, 그 안에서 블록 단위 스펙을 설계자가 역으로 분해해야 하는 경우가 많습니다. 예를 들어 Comparator라면 “Low-offset으로 설계하세요”에서 끝나는 게 아니라 VDD = 1.8 V, input common-mode range = 0.3 V to 1.5 V, offset Ring-Oscillator도 같은 의도로 보시면 됩니다. 과제에서 중요한 건 “몇 MHz가 나왔는가” 하나가 아니라, f ~= 1 / (2Ntd) 관계를 기준으로 stage 수 N, inverter sizing, load capacitance, supply current가 어떤 trade-off를 만드는지 보는 것입니다. 예를 들어 target을 frequency = 100 MHz to 500 MHz, current 과제를 수행하실 때 권장하는 방식은 먼저 강의에서 따라 만든 기본 회로의 TT corner 결과를 baseline으로 잡는 것입니다. 예를 들어 Comparator 기본 회로에서 offset = 18 mV, delay = 8 ns, current = 30 uA가 나왔다면, 수강생이 target을 offset 제가 기대하는 산출물은 논문급 최고 성능이 아니라, 스펙 정의, 측정 환경, 개선 전후 비교, 실패한 조건까지 포함한 설계 판단입니다. TT에서만 잘 나온 결과보다 SS/FF corner, VDD +/-10%, 온도 -40 C to 125 C에서 어느 조건이 가장 위험했는지 적어주는 결과가 훨씬 좋습니다. 실제 양산 검토에서는 nominal 성능이 20% 좋아진 회로보다 worst corner에서 fail이 덜 나는 회로가 더 가치 있습니다.
- Lượt thích
- 0
- Số bình luận
- 1
- Lượt xem
- 39
Hỏi & Đáp
전력 산출하는데 이해가 안가요?
안녕하세요, 답변 남겨드립니다.질문하신 부분은 데이터시트 표의 목적이 서로 달라서 생기는 혼동입니다. 배터리 용량을 산정할 때 “Digital inputs/outputs”를 보는 이유는 MCU 핀이 외부 회로를 실제로 구동하면서 전류를 source 또는 sink하기 때문입니다. GPIO에 LED, pull-up 저항, enable 핀, reset 라인, chip select 같은 신호가 연결되면 단순한 논리 신호처럼 보여도 배터리 입장에서는 전류 소모로 잡힙니다. 예를 들어 GPIO 4개가 LED를 각각 5 mA로 켠다면 그 순간 20 mA가 추가되고, I2C pull-up 4.7 kohm 두 개가 low 상태로 당겨지면 대략 3.3 V / 4.7 kohm x 2 = 1.4 mA가 흐릅니다. 이런 전류는 MCU 내부 core current 표만 보면 빠지기 쉽습니다.“Analog supply current, additional analog supply currents per function, AVDD=3.3V”는 의미가 조금 다릅니다. 이 항목은 ADC 같은 MCU 내부 아날로그 peripheral을 켰을 때 AVDD 전원에서 추가로 소비되는 내부 전류입니다. 즉 ADC 핀에 연결된 외부 센서나 외부 ADC/DAC IC가 먹는 전류가 아니라, MCU 내부의 아날로그 블록 자체가 동작하면서 더 쓰는 전류입니다. 그래서 ADC를 계속 켜고 샘플링하는 제품이라면 Power Budget에 넣는 것이 맞고, ADC를 거의 쓰지 않거나 duty가 낮다면 평균전류로 환산해서 작게 반영합니다.실무에서는 보통 전류 항목을 중요도와 크기 순서로 나눠 봅니다. 배터리 시간에 크게 영향을 주는 것은 10 mA 이상급 부하들입니다. Ethernet PHY가 50~100 mA, 모터 드라이버나 외부 부하가 수십 mA 이상, LED 여러 개가 10~30 mA 수준이면 이쪽이 먼저 배터리 용량을 결정합니다. 반면 MCU 내부 ADC 추가전류가 0.5 mA이고 ADC가 10% duty로만 동작한다면 평균은 Iavg = 0.5 mA x 0.1 = 0.05 mA입니다. 전체 평균전류가 50 mA인 보드에서는 배터리 시간 차이가 0.1% 수준에 가깝지만, 평균전류 100 uA를 목표로 하는 저전력 센서 노드에서는 이 50 uA가 치명적일 수 있습니다.그래서 “analog supply current 표를 안 봐도 된다”가 아니라, 지금 계산하려는 목적에 따라 반영 우선순위가 달라진다고 이해하시면 됩니다. 초기 배터리 산정에서는 Iavg_total = IMCU_run + IGPIO_load + Iexternal_IC + Iregulator_loss 형태로 큰 전류를 먼저 잡습니다. 이후 상세 산정에서는 Ianalog_additional = IADC + IDAC + Icomparator 같은 내부 peripheral 전류를 더하고, 실제 사용률을 곱해 평균값으로 바꿉니다. ADC를 100% 켜두면 데이터시트 값을 거의 그대로 넣고, 1초에 10 ms만 켠다면 duty = 10 ms / 1000 ms = 1%로 보고 평균전류를 계산하면 됩니다.Mixed-signal 보드에서는 AVDD 전류보다 AVDD 품질도 같이 봐야 합니다. 12-bit ADC에서 3.3 V full-scale이면 1 LSB = 3.3 V / 4096 = 약 0.806 mV입니다. AVDD에 5 mV ripple이 얹히면 단순 환산으로 6 LSB 이상 흔들릴 수 있습니다. 배터리 용량 계산에서는 0.5 mA 추가 여부가 작게 보일 수 있지만, ADC 정확도 관점에서는 AVDD decoupling, ferrite bead, AGND return path, 모터 드라이버 스위칭 전류의 귀환 경로가 더 큰 리스크가 됩니다.Power Budget 표를 작성할 때는 MCU 항목을 하나로 뭉치지 말고 “MCU run current”, “GPIO load current”, “analog peripheral additional current”, “external IC current”, “regulator loss” 정도로 분리해 두는 게 좋습니다. 이렇게 나누면 어떤 전류가 데이터시트 내부 소비전류이고, 어떤 전류가 외부 부하 전류인지 바로 보입니다. 배터리 용량은 Capacity_required = Iavg_total x Target_runtime / usable_ratio로 잡으면 되고, Li-ion 배터리라면 온도, 방전율, 노화까지 고려해서 usable_ratio를 0.7~0.85 정도로 두는 경우가 많습니다. 예를 들어 목표 10시간, 평균 50 mA, usable_ratio 0.8이면 필요한 정격 용량은 50 mA x 10 h / 0.8 = 625 mAh 정도로 잡는 식입니다.
- Lượt thích
- 0
- Số bình luận
- 2
- Lượt xem
- 52
Hỏi & Đáp
LDO설계 버퍼
안녕하세요, 답변 남겨드립니다.지금 겪고 계신 상황은 LDO 안정도 설계에서 꽤 전형적으로 나오는 지점입니다. Load cap = 100 nF, load current = 0~50 mA 조건이면 출력 pole이 load current에 따라 크게 움직입니다. 대략 Pout = 1 / (2piRout_load*Cout)로 보면, 50 mA에서 Vout이 1.2 V라고 가정할 때 등가 load resistance는 약 24 ohm이고, Cout = 100 nF이면 출력 pole은 약 66 kHz 근처에 생깁니다. 그런데 1 mA에서는 load resistance가 1.2 kohm 수준으로 올라가면서 출력 pole이 약 1.3 kHz까지 내려옵니다. 0~20 mA 구간에서 PM이 30도 이하로 떨어지는 이유가 바로 이쪽일 가능성이 큽니다. 부하가 가벼워질수록 출력 pole이 저주파로 내려오고, pass FET gate pole이나 error amp 출력 pole, feed-forward capacitor가 만든 zero/pole과 겹치면서 위상 여유를 잡아먹게 됩니다.Buffer를 넣는 핵심 목적은 pass FET의 큰 gate capacitance를 error amplifier 출력에서 떼어내는 것입니다. 버퍼가 없으면 error amp 출력 노드는 pass FET gate capacitance를 직접 봅니다. PMOS pass device를 50 mA 이상 흘릴 수 있게 잡으면 공정과 headroom에 따라 gate capacitance가 수 pF에서 수십 pF, 큰 경우 100 pF 근처까지도 갈 수 있습니다. Error amp 출력 저항이 100 kohm만 되어도 20 pF와 만나면 pole이 약 80 kHz에 생기고, 이게 unity-gain frequency 근처에 걸리면 phase margin이 바로 나빠집니다. Buffer를 넣으면 error amp는 buffer 입력의 작은 capacitance만 보게 되고, pass FET gate는 buffer의 낮은 출력 저항으로 구동됩니다. 이때 pass gate pole은 Pgate = 1 / (2piRbuf_out*Cgate_pass)로 올라가게 됩니다. 예를 들어 Cgate_pass = 30 pF이고 buffer output resistance가 2 kohm이면 gate pole은 약 2.65 MHz입니다. 반대로 buffer가 없어서 error amp 출력 저항 100 kohm이 직접 물리면 약 53 kHz가 됩니다. 이 차이가 안정도에서 굉장히 큽니다.Source follower를 따로 떼어 시뮬레이션했을 때 입력과 출력이 잘 안 따라가는 것은 이상한 현상이 아닙니다. Source follower의 gain은 1이 아니라 Av = gm*(ro||Rload) / (1 + gm*(ro||Rload))에 가깝습니다. gm*(ro||Rload)가 충분히 커야 1에 가까워집니다. 예를 들어 gm = 1 mS이고 출력 쪽 등가 저항이 10 kohm이면 gmR = 10이라서 gain은 약 0.91 정도입니다. gm = 100 uS이고 등가 저항이 10 kohm이면 gmR = 1이라 gain은 약 0.5까지 떨어집니다. LDO 안에 들어간 source follower는 단독 회로처럼 아무 부하도 없이 떠 있는 회로가 아니라, pass FET gate capacitance, bias current source, 동작 DC점, 다음 단의 gate 전압 범위까지 같이 물린 상태에서 의미가 있습니다. 그래서 source follower만 떼어서 입력에 사인파나 스텝을 넣으면 원래 샘플 회로에서 보던 동작과 다르게 보일 수 있습니다.Load cap을 안 달아서 입력과 출력이 달라졌냐는 질문에는, 절반은 맞고 절반은 아닙니다. Source follower 출력에 capacitance가 전혀 없으면 AC 소신호 gain 자체가 크게 틀어지는 주된 원인은 아닐 수 있습니다. DC 동작점, bias current, body effect, 출력에 물린 등가 저항, 입력 common-mode 범위가 더 중요합니다. 다만 실제 LDO에서 source follower의 부하는 pass FET gate capacitance입니다. 즉 저항성 부하라기보다는 capacitive load에 가깝습니다. 이 capacitance를 빼고 보면 buffer의 고주파 pole, slew rate, pass gate 충방전 능력을 확인할 수 없습니다. 예를 들어 pass FET gate capacitance가 50 pF이고 buffer bias current가 5 uA라면 이상적인 최대 slew rate는 SR = I/C = 5 uA / 50 pF = 0.1 V/us입니다. load transient 때 pass gate를 0.5 V 움직여야 한다면 gate만 움직이는 데 5 us가 걸립니다. 50 mA LDO에서 이 정도면 출력 undershoot가 꽤 크게 보일 수 있습니다.Source follower를 따로 설계할 때는 먼저 그 버퍼가 어떤 전압 범위에서 동작해야 하는지 잡아야 합니다. PMOS pass FET을 쓰는 일반적인 LDO라면 error amp 또는 buffer 출력이 pass PMOS gate를 구동합니다. 부하가 커질수록 PMOS gate는 더 낮아져야 하고, 부하가 작아질수록 gate는 source 쪽, 즉 Vin 쪽으로 올라가야 합니다. 이때 source follower가 NMOS인지 PMOS인지, 위쪽으로 잘 밀어주는지 아래쪽으로 잘 당겨주는지에 따라 dropout 근처 동작이 완전히 달라집니다. 예를 들어 Vin = 1.8 V, Vout = 1.2 V, Iload = 50 mA 조건에서 PMOS pass gate가 0.8 V까지 내려가야 regulation이 유지되는데 buffer 출력 swing이 1.0 V 아래로 못 내려가면, AC 안정도 이전에 DC load regulation부터 깨집니다. 그래서 buffer는 gain이 1에 가까운지보다 pass gate의 필요한 DC range를 끝까지 커버하는지가 먼저입니다.그 다음은 buffer의 output resistance와 bias current를 정합니다. 목표는 pass gate pole을 loop unity-gain frequency보다 충분히 높이는 것입니다. 보통 실무에서는 비주도 pole을 unity-gain frequency의 3배 이상, 가능하면 5~10배 위로 밀어두려고 합니다. PM을 60도 이상으로 잡고 PVT와 load 변동까지 보려면 3배는 빠듯하고 5배 이상이 마음이 편합니다. 예를 들어 loop UGF를 100 kHz로 잡고 pass gate capacitance가 40 pF라면 gate pole을 최소 500 kHz 이상으로 보내고 싶습니다. 그러면 Rbuf_out은 1 / (2pi500 kHz*40 pF) = 약 8 kohm 이하가 되어야 합니다. source follower의 출력 저항은 대략 1/gm 수준이므로 gm은 최소 125 uS 이상 필요합니다. MOSFET이 moderate inversion에서 gm/Id = 10~15 V^-1 정도라면 bias current는 대략 8~13 uA 이상이 필요합니다. 여기에 corner와 온도, body effect를 고려하면 20 uA 전후로 시작해 보는 설계가 실무적으로 무난합니다. 초저전력 LDO라면 1~3 uA로도 설계해야 하지만, 그 경우 transient와 안정도 마진을 동시에 만족시키기가 훨씬 어려워집니다.Source follower gain이 입력을 그대로 못 따라가는 또 다른 이유는 Vgs shift 때문입니다. NMOS source follower라면 Vout_buf는 Vin_buf - Vgs 근처에서 형성됩니다. 입력이 1.0 V일 때 출력이 0.3~0.5 V 낮게 나오는 것은 정상입니다. “AC gain이 1에 가깝다”는 말과 “DC 전압이 입력과 같다”는 말은 다릅니다. Source follower는 DC level shift를 가진 buffer입니다. 소신호 변화분만 보면 어느 정도 따라가지만, 절대 전압은 Vgs 또는 Vsg만큼 이동합니다. 여기에 body effect가 있으면 Vgs가 더 커지고, 출력 전압이 움직일 때 Vsb가 같이 변하면서 gain도 더 떨어집니다. IC 내부에서 source follower를 쓸 때 body를 source에 묶을 수 없는 벌크 CMOS 구조라면 이 효과가 꽤 큽니다.샘플의 source follower가 입력을 안 따라간 것처럼 보인다면 먼저 DC operating point를 확인하셔야 합니다. MOS가 saturation에 있는지, bias current가 원하는 값으로 흐르는지, source follower 출력이 다음 단 gate의 정상 범위 안에 있는지 보는 게 먼저입니다. 단독 시뮬레이션에서 drain 전압이나 current source compliance가 원래 회로와 다르면 follower가 saturation을 벗어나 triode에 들어가거나 아예 current가 제대로 안 흐를 수 있습니다. 그 상태에서는 gain이 1 근처로 나올 수 없습니다. LDO 회로 안에서는 다른 bias 회로가 전류를 만들어주고 pass FET gate가 DC operating point를 잡아주는데, 따로 떼어내면서 그 조건이 사라지면 결과가 달라지는 게 자연스럽습니다.따로 검증할 때는 source follower 출력에 실제 pass FET gate capacitance와 비슷한 capacitor를 달아 보는 게 좋습니다. pass FET을 실제로 붙이지 않고 단독으로 본다면 Cload를 10 pF, 30 pF, 100 pF 정도로 sweep하면서 AC gain과 phase, step response를 보면 감이 잡힙니다. 50 mA급 LDO에서는 pass FET 크기에 따라 gate capacitance가 넓게 변하므로 하나의 값만 보면 위험합니다. 공정상 Cgg가 typical에서 30 pF로 보였는데 slow corner와 큰 W/L에서 60 pF 이상으로 늘어나는 경우도 있습니다. 이때 buffer bias가 너무 작으면 gate pole이 내려오고, load transient에서 recovery가 느려집니다.전체 LDO에 붙일 때는 dominant pole을 어디에 둘지 먼저 정해야 합니다. Buffer를 넣는 구조에서는 보통 error amp 출력 쪽을 dominant pole로 만들거나, Miller compensation을 써서 내부 노드에 dominant pole을 만듭니다. 출력 pole은 load에 따라 크게 움직이므로 dominant pole로 믿고 가기 어렵습니다. 지금처럼 Iload = 0~50 mA, Cout = 100 nF 조건에서는 경부하에서 출력 pole이 너무 낮아지고 중부하 이상에서 다시 올라가기 때문에, 출력 pole 하나에 기대는 compensation은 PM이 load current에 따라 크게 흔들립니다. Buffer를 넣으면 pass gate pole을 load와 분리하고, error amp 출력 노드도 pass gate capacitance로부터 분리되므로 loop compensation을 훨씬 예측 가능하게 만들 수 있습니다.ESR zero도 너무 믿으면 안 됩니다. 100 nF MLCC의 ESR은 실제 보드에서 5 mohm~50 mohm 수준일 수 있고, 그러면 ESR zero는 Fz_esr = 1 / (2piESR*Cout)라서 ESR = 20 mohm, Cout = 100 nF일 때 약 79.6 MHz입니다. 안정도 보상에 거의 도움이 안 됩니다. 강제로 ESR 저항을 1 ohm 넣으면 zero가 약 1.6 MHz로 내려오지만, 50 mA에서 DC drop은 50 mV이고 load transient 때도 출력 오차를 키웁니다. 양산 제품이라면 ESR로 PM을 맞추는 방식은 capacitor vendor, 온도, aging, 부품 수급 변경에 취약합니다. 과제에서는 의도적으로 해볼 수 있지만, 실무 LDO라면 내부 compensation으로 PM 45~60도 이상을 확보하고 ESR은 보너스로 보는 쪽이 안전합니다.피드백 저항과 출력단 사이에 넣은 capacitor는 feed-forward path를 만들어 zero를 하나 추가하는 역할을 합니다. 대략 Rtop과 Cff 조합으로 생기는 zero가 loop crossover 근처에 오면 phase boost를 줄 수 있습니다. 다만 이 방식도 load current가 바뀌면서 출력 pole이 이동하면 특정 load에서는 잘 맞고 다른 load에서는 어긋납니다. 0~20 mA에서 PM이 특히 나쁘다는 것은 Cff zero 위치가 저부하 출력 pole이나 내부 pole 이동을 충분히 커버하지 못하고 있다는 신호입니다. Cff를 키우면 zero가 낮아져 PM이 개선될 수 있지만, 너무 키우면 고주파 noise가 출력으로 더 잘 넘어가고, startup이나 load transient에서 overshoot가 생길 수 있습니다.실무적으로는 먼저 loop UGF를 욕심내지 않고 잡는 편이 좋습니다. 50 mA LDO에 Cout = 100 nF면 UGF를 수백 kHz 이상으로 끌어올리는 설계도 가능하지만, PVT와 경부하 안정도까지 고려하면 처음에는 50 kHz~200 kHz 범위에서 맞추는 게 다루기 쉽습니다. PM 목표는 typical에서 60도 이상, worst PVT와 load sweep에서 최소 45도 이상을 보는 게 현실적입니다. 과제 단계에서는 PM 50도 이상이면 안정적으로 보이겠지만, 실제 칩에서는 capacitor DC bias로 100 nF가 60 nF까지 줄고, pass FET corner로 gm이 30~50% 흔들리고, temperature에서 bias current가 변하기 때문에 typical 45도는 양산 마진으로 부족합니다.Source follower를 설계한 뒤 붙이는 순서는 DC, AC, transient 순서로 보는 게 좋습니다. 먼저 LDO 전체에서 Iload = 0, 1 mA, 10 mA, 50 mA일 때 pass gate voltage가 정상적으로 움직이는지 확인합니다. 그 다음 buffer 입력과 출력의 DC 차이가 pass FET 구동에 문제를 만들지 않는지 봅니다. 그 후 loop gain을 끊어서 PM을 봅니다. 마지막으로 load step, 예를 들어 0 mA to 50 mA, rise/fall time 100 ns~1 us 조건을 넣고 undershoot, overshoot, recovery time을 봅니다. 안정도만 맞추고 transient를 안 보면 buffer bias current가 부족한 설계가 통과된 것처럼 보일 수 있습니다. 반대로 transient만 보고 AC loop를 안 보면 특정 부하에서 링잉이 숨어 있다가 보드 capacitor가 바뀔 때 발진으로 나옵니다.질문하신 샘플 회로의 source follower가 왜 입력을 그대로 안 따라가는지에 대한 가장 가능성 높은 답은 “그 회로는 unity DC buffer가 아니라 level-shift를 포함한 gate driver이고, 단독으로 떼어냈을 때 원래의 bias와 부하 조건이 사라졌기 때문”입니다. Source follower는 입력 변화분을 낮은 출력 저항으로 전달하는 용도이지, op amp voltage follower처럼 Vout = Vin을 강제로 만드는 회로가 아닙니다. Vgs만큼의 DC offset, body effect, bias current 부족, 출력 compliance 부족, pass gate capacitance 미포함이 겹치면 입력과 출력 차이는 꽤 크게 보입니다. 그래서 단독 검증에서는 “입력과 출력 DC가 같냐”보다 “원하는 동작점에서 소신호 gain이 0.8~0.98 범위인지, Rout이 목표보다 낮은지, Cgate를 원하는 속도로 충방전하는지”를 보는 쪽이 맞습니다.지금 회로에서는 buffer를 넣고 pass gate pole을 최소 UGF의 5배 이상으로 올리는 방향으로 먼저 잡아보시면 좋겠습니다. 예를 들어 목표 UGF가 100 kHz이고 pass gate capacitance가 50 pF라면 Rbuf_out은 6.4 kohm 이하, gm은 156 uS 이상이 필요합니다. gm/Id를 12 V^-1로 보면 bias current는 약 13 uA이고, corner 마진까지 보면 20~30 uA 정도가 출발점으로 괜찮습니다. 이 전류가 LDO quiescent current 예산에 부담된다면 UGF를 낮추거나 pass FET 크기를 줄이거나, 단순 source follower 대신 push-pull class-AB buffer 구조를 고려해야 합니다. 0~50 mA LDO에서 Iq를 10 uA 이하로 제한하면서 100 nF 출력 capacitor와 빠른 transient, 전 load 안정도를 동시에 만족시키는 건 생각보다 빡빡한 트레이드오프입니다.한 가지 더 조심할 부분은 0 mA 조건입니다. 무부하에서 pass FET gate가 거의 꺼지는 방향으로 가고, 출력 pole은 사실상 load resistance가 매우 커져서 극저주파로 내려갑니다. 이때 feedback divider 전류가 사실상의 minimum load 역할을 합니다. 예를 들어 feedback 저항 합이 1 Mohm이고 Vout = 1.2 V면 divider current는 1.2 uA이고 등가 부하는 1 Mohm입니다. Cout = 100 nF와 만나면 출력 pole은 약 1.6 Hz 수준까지 내려갑니다. 그래서 무부하 안정도는 일반적인 load pole 직관과 다르게 내부 pole/zero 배치가 더 중요해집니다. 실무 LDO에서는 minimum load를 명시하거나, 내부 bleed current를 1~10 uA 정도 넣거나, compensation을 무부하까지 버티게 설계합니다. 과제 조건이 Iload = 0 mA를 포함한다면 이 지점을 반드시 따로 봐야 합니다.정리하면 source follower는 “입력을 그대로 복사하는 블록”이라기보다 “pass FET gate의 큰 capacitance를 error amp로부터 분리하고, 낮은 출력 저항으로 gate pole을 고주파로 밀어 올리는 블록”으로 보셔야 합니다. 단독 설계에서는 원래 회로와 같은 bias, 같은 DC 출력 범위, 같은 pass gate capacitance를 걸어놓고 Rout, AC gain, slew rate를 확인해야 합니다. 전체 LDO에서는 load current sweep, Cout sweep, Cff sweep, PVT sweep을 같이 걸고 PM의 최저점을 찾아야 합니다. 지금처럼 0~20 mA에서 PM이 30도 이하라면 buffer 삽입 방향은 맞고, 관건은 buffer gain 1을 만드는 것이 아니라 pass gate pole을 충분히 올리면서 무부하와 경부하에서 내부 compensation이 무너지지 않게 만드는 쪽입니다.
- Lượt thích
- 0
- Số bình luận
- 2
- Lượt xem
- 50
Hỏi & Đáp
독학용 PDF 관련 질문
안녕하세요, 답변 남겨드립니다.네 맞습니다.PPT 교안이 아닌, 길게 줄글로 작성된 PDF 파일들이 독학용 교안입니다.충분히 풀어서 설명을 다뤄두어서 강의에서 다룬 내용만 가지고는 이해하지 못하신 부분도 충분히 이해가 되실거에요. 추가적으로 궁금한 부분이 있다면 또 문의주시기 바랍니다!
- Lượt thích
- 0
- Số bình luận
- 2
- Lượt xem
- 54
Hỏi & Đáp
BGR TEMP Sweep
안녕하세요, 답변 남겨드립니다.지금 그래프는 회로가 완전히 잘못 동작한다기보다, BGR의 1차 온도 보상이 아직 덜 맞아서 Vbe의 CTAT 성분이 남아 있는 상태로 보는 게 맞습니다. 화면상으로 Vref가 약 -4도에서 1.340V, 126도 근처에서 1.293V 정도라서 기울기는 대략 (1.293 - 1.340) / 130 = -0.36mV/C 정도입니다. 이 정도면 발산이나 바이어스 붕괴가 아니라, PTAT 가중치가 약간 부족해서 전체가 음의 직선처럼 보이는 상황입니다. BGR에서 우리가 기대하는 2차 곡선 형태는 CTAT와 PTAT의 1차 기울기가 거의 상쇄된 뒤에야 눈에 보입니다. 1차 기울기가 -0.3mV/C 이상 남아 있으면 Vbe의 거의 직선적인 온도 변화가 지배적이라서, 잔류 curvature는 그래프에서 묻혀버립니다.이 회로를 이상적인 bandgap 식으로 보면 Vref = Vbe + (R3/R2)DeltaVbe 형태입니다. 여기서 DeltaVbe = VTln(N)이고, N = 8이면 d(DeltaVbe)/dT = 86uV/C*ln(8) = 약 179uV/C입니다. 현재 R3/R2 = 72k/7.2k = 10이므로 PTAT 쪽 기울기는 이상적으로 약 +1.79mV/C입니다. 그런데 실제 BJT의 Vbe 기울기는 바이어스 전류, 모델, 전류밀도에 따라 보통 -1.7~-2.3mV/C 정도로 움직입니다. 지금 결과가 -0.36mV/C로 나온다는 건, 현재 PTAT 가중치가 Vbe의 음의 기울기를 다 못 이기고 있다는 뜻입니다. 그래서 “CTAT 영향이 PTAT보다 강하다”는 판단은 방향이 맞습니다.R3를 바꿨는데 개형이 크게 안 바뀐 것처럼 느껴진 이유는, 2차 곡선 모양 자체가 먼저 나오는 게 아니라 평균 기울기가 먼저 이동하기 때문입니다. 예를 들어 R3를 72k에서 75k 정도로 조금만 올리면 R3/R2가 10에서 10.4로 바뀌는데, N = 8 기준 추가되는 PTAT 기울기는 0.4*179uV/C = 0.072mV/C 정도밖에 안 됩니다. 지금 필요한 보정량이 약 0.36mV/C이므로, R3를 몇 k 정도 바꾸는 수준으로는 그래프가 여전히 음의 직선처럼 보입니다. 실무적으로는 R3/R2를 10에서 바로 11.5~12 정도까지 올려서 확인하는 게 빠릅니다. R2를 7.2k로 유지한다면 R3는 82k~86k 근처가 1차 확인 범위입니다. 현재 그래프 기울기만 놓고 보면 82k 부근부터 확인하고, 이상적인 N = 8 식 기준으로는 86k 부근까지 보는 게 자연스럽습니다.다만 R3를 올리면 Vref DC 값도 같이 올라갑니다. 지금 Vref가 1.33V인데 R3/R2를 10에서 12로 올리면 PTAT 항이 대략 10~15% 이상 커져서 Vref가 1.42V 근처까지 올라갈 수 있습니다. 그래서 BGR 튜닝은 R3 하나만 만져서 끝나는 문제가 아니라, 온도 기울기는 R3/R2로 맞추고, Vref 절대값과 전류는 R2의 절대값, BJT 면적비, 바이어스 전류밀도로 다시 맞추는 식으로 접근해야 합니다. R2를 건드리면 I_R2 = 10uA가 깨질까 봐 멈추신 판단은 이해되지만, 실제 설계에서는 R2도 조정 대상입니다. R2는 “무조건 10uA를 유지하는 부품”이라기보다 DeltaVbe/R2로 PTAT 전류를 정하는 부품이고, R3/R2 비율이 온도 기울기를 정합니다.현재 operating point에서 더 눈여겨볼 부분은 I(R2) = 10.394uA, I(R3) = 10.886uA로 약 4.7% 차이가 난다는 점입니다. 10uA 근처라서 비슷해 보이지만, R3가 72k라서 0.5uA 차이만 나도 Vref에서는 72k*0.5uA = 36mV 정도의 오차가 됩니다. 이 정도면 온도 sweep에서 보이는 전체 변화량 47mV와 같은 급입니다. 즉, 전류가 “대략 10uA”인 것과 “bandgap 식이 성립할 만큼 전류 미러가 온도 전 범위에서 잘 맞는 것”은 다른 이야기입니다. 양산 IP에서는 이런 전류 미러 오차가 온도, 공정, VDD에 따라 같이 움직이기 때문에 Vref TC와 line regulation을 동시에 흔듭니다.MOS를 전부 W/L = 1u/1u로 둔 것도 현재 결과에 영향을 줄 가능성이 큽니다. 10uA에서 W = 1u는 모델에 따라 Vov가 200~400mV까지 올라갈 수 있고, L = 1u는 학습용 회로에서는 동작하지만 정밀 전류 미러 관점에서는 ro가 충분하지 않을 수 있습니다. 특히 M5와 M6의 VDS가 서로 다르면 channel length modulation 때문에 복사 전류가 몇 %씩 달라집니다. 지금처럼 R3 전류가 R2 전류보다 4~5% 큰 상황은 그런 비이상성이 이미 보인다고 봐도 됩니다. 전류 미러 쪽은 L을 2u~5u 정도로 늘리고, W는 목표 Vov가 150~250mV 정도가 되도록 다시 잡는 편이 좋습니다. 4V supply라면 headroom이 넉넉하니 속도보다 정확도와 ro를 우선하는 쪽이 맞습니다.BJT 쪽 base current도 무시하기 어렵습니다. 캡처에서 Q2의 Ib가 약 0.9uA이고, Q3의 base current 합이 대략 1.26uA 수준으로 보입니다. Branch current가 10uA라면 base current가 9~12%나 되는 셈입니다. 교과서식 계산은 보통 IC가 branch current와 거의 같고 beta가 충분히 크다는 전제에서 출발하는데, 지금 모델에서는 그 전제가 꽤 깨져 있습니다. beta가 온도에 따라 변하면 DeltaVbe와 R2 전류의 온도 의존성도 같이 변해서, R3/R2만 바꿨을 때 예상과 다르게 움직일 수 있습니다. 실제 BGR에서도 parasitic BJT beta가 낮은 공정에서는 base current 보상이나 구조 선택이 꽤 중요한 항목입니다.디버깅은 Vref만 보지 말고 Vbe_out, I(R3)*R3, I(R2), DeltaVbe를 따로 나눠서 보셔야 합니다. Vref = Vbe_out + I(R3)*R3로 분해해서 plot하면, Vbe_out은 온도에 따라 내려가고 I(R3)*R3는 올라가야 정상입니다. 이때 I(R3)*R3의 증가 기울기가 Vbe_out의 감소 기울기보다 작으면 지금처럼 음의 직선이 나옵니다. 반대로 너무 크면 양의 기울기가 나옵니다. 두 기울기가 25도 기준으로 거의 같아질 때, 그때부터 익숙한 2차 곡선 또는 완만한 bow 형태가 보입니다.현 상태에서 가장 현실적인 수정 순서는 R3를 72k에서 바로 82k, 86k, 90k 정도로 sweep해서 평균 기울기가 어떻게 움직이는지 확인하는 것입니다. 그다음 Vref 절대값이 너무 높아지면 R2와 R3를 같은 비율로 키우거나 줄이는 방식으로 전류를 다시 잡고, 필요하면 BJT 면적비 N을 8에서 16 정도로 바꿔서 설계 자유도를 확보합니다. 예를 들어 N을 16으로 올리면 d(DeltaVbe)/dT = 86uV/C*ln(16) = 약 239uV/C가 되어 같은 R3/R2에서도 PTAT 기울기가 더 커집니다. 다만 DeltaVbe 절대값도 같이 커지기 때문에 Vref DC와 headroom도 같이 확인해야 합니다.실무 기준으로는 먼저 TT, 27도에서 예쁜 1.3V가 나오는 것보다 -40도~125도에서 평균 TC가 몇 ppm/C인지 보는 게 우선입니다. 지금은 1.33V 기준으로 -0.36mV/C이므로 TC로 환산하면 약 -270ppm/C입니다. BGR 과제 수준에서는 ±50ppm/C 안쪽이면 꽤 잘 맞춘 편이고, 양산 IP에서는 trim 없이 ±30~100ppm/C, trim 후 ±10~30ppm/C 정도를 목표로 잡는 경우가 많습니다. 지금 회로는 출발점으로는 괜찮지만, R3/R2 튜닝, 전류 미러 ro 개선, base current 영향 확인까지 해야 “왜 2차 곡선이 안 보이는지”가 정리됩니다.
- Lượt thích
- 0
- Số bình luận
- 2
- Lượt xem
- 62






