회로설계 멘토 삼코치
@samcoach
수강생
4,227
수강평
399
강의 평점
5.0
게시글
질문&답변
핀 연결 질문입니다.
안녕하세요, 답변 남겨드립니다.말씀하신 부분은 “핀 이름을 잘못 본 것”이라기보다 “넷(net) 이름을 기능 기준으로 붙인 것”에 가깝습니다. 즉, 심볼의 핀 이름은 CH340C의 RTS#(MODEM 제어 출력)인데, 그 신호를 보드에서 “리셋 용도로 쓰겠다”는 의도를 넷 이름을 CH340_RST처럼 붙여 표현한 케이스로 이해하시면 됩니다. 넷 라벨은 데이터시트의 핀명과 1:1로 동일해야 하는 규칙은 없고, 실무에서는 오히려 최종 기능(Reset, Boot, Enable 등) 기준으로 이름을 붙이는 경우가 많습니다.다만 사용자께서 지적하신 것처럼 CH340C 자체에 “RST#”라는 외부 리셋 핀이 있는 것은 아닙니다. CH340B에만 외부 리셋 입력(RST#)이 있고, CH340C 쪽은 해당 위치가 NC로 취급됩니다. 그래서 회로도에서 “CH340_RST”라는 이름이 “CH340 칩의 RST# 핀을 쓴다”는 뜻으로 읽히면 오해 소지가 있고, 그 점에서 질문하신 방향이 정확합니다.RTS#가 output으로 표기된 것도 맞습니다. CH340 계열에서 RTS#는 MODEM liaison output(Active Low)이고, PC(드라이버/응용프로그램)가 시리얼 포트를 열거나 제어할 때 토글될 수 있는 제어선입니다. 이 RTS#를 MCU의 NRST(리셋)로 연결해두면, “USB-UART 연결만 했는데도 자동 리셋이 걸리는” 동작을 만들 수 있고, 펌웨어 다운로드(부트로더 진입) 자동화에 자주 활용됩니다. 예를 들어 STM32 시리얼 부트로더를 자동 진입시키려면 BOOT0를 1로 만든 뒤 NRST를 Low로 한번 당겼다가 놓는 시퀀스가 필요하고, 이때 RTS#/DTR# 두 개를 트랜지스터 두 개로 써서 BOOT0과 NRST를 각각 제어하는 회로가 현업에서 흔합니다(ESP 계열에서 RTS/DTR로 EN/IO0 제어하는 것과 같은 방식입니다).라벨 “방향”에 대한 부분은 사용하시는 EDA 객체 종류에 따라 의미가 달라집니다. 단순 Net Label/Global Label은 방향이 전기적으로 의미 없고, Hierarchical Port처럼 “입력/출력 타입”을 선언하는 객체는 ERC를 위해 방향을 맞춰주는 편이 좋습니다. 즉 RTS#는 소스가 CH340이므로 “출력 포트”로, MCU NRST 쪽은 “입력(또는 오픈드레인에 의한 풀다운 입력)” 성격으로 두면 ERC 경고를 줄일 수 있습니다. 이름을 RST로 바꿨기 때문에 방향을 바꿨다기보다는, “이 신호가 리셋 역할”이라는 기능 관점 표현을 하고 싶어서 그랬을 가능성이 큽니다.실무적으로 더 안전하고 덜 헷갈리는 방법은 “핀명 보존 + 기능명 병기”입니다. 예를 들어 CH340 핀에서 나가는 넷은 CH340_RTSn(또는 USB_UART_RTSn)로 유지하고, 트랜지스터/RC 네트워크를 거친 뒤 MCU에 들어가는 넷은 TARGET_NRST로 이름을 바꾸는 식입니다. 이렇게 하면 데이터시트를 보면서도 핀 매칭이 즉시 되고, 동시에 시스템 기능도 명확해집니다. 라이브러리 검증 시에는 “핀 번호가 데이터시트와 일치하는지”를 최우선으로 보시면 됩니다.리셋 회로 예시를 하나 정량적으로 들어보겠습니다. RTS#(Active Low)로 NRST를 직접 구동하면, NRST 라인에 달린 풀업(예: 10 kΩ to 3.3 V)과 CH340 출력 드라이브가 정면으로 맞물릴 수 있어서, 보드 전원 시퀀스나 USB만 꽂힌 상태에서 예기치 않은 백파워링/래치업 리스크가 생길 수 있습니다. 그래서 현업에서는 RTS#로 NPN(오픈컬렉터)이나 NMOS를 구동해서 NRST를 “Low로만 당기는” 구조를 많이 씁니다. 예를 들어 NPN을 쓴다면, NRST 풀업 10 kΩ, 베이스 저항 10 kΩ 정도로 시작하면 무난합니다. 베이스 전류를 대략 0.2 mA로 잡으면 Rb는 (3.3 V - 0.7 V) / 0.2 mA = 13 kΩ 수준이라 10 kΩ가 충분히 포화 구동에 가깝게 동작합니다. 이때 NRST에 100 nF를 붙여 전원 노이즈 필터 겸 리셋 펄스 성형을 하고 싶으면 시정수는 tau = R C = 10 kΩ 100 nF = 1 ms 정도라서, 대부분 MCU 리셋 최소 펄스폭 요구(대개 us 단위)를 넉넉히 만족시키는 설계 여유가 생깁니다. 반대로 “포트 열 때마다 자동 리셋되는 현상”이 싫으면 C를 줄이거나, 아예 RTS#/DTR#를 점퍼로 끊어둘 수 있게 하는 편이 디버깅 생산성이 좋아집니다.마지막으로, USB to TTL 컨버터를 정말 “3선(TX/RX/GND)만” 쓰는 용도라면 RTS# 같은 MODEM 라인은 연결하지 않아도 됩니다. 즉 RXD, TXD, GND만 연결하고 나머지 신호는 사용하지 않으면 떠 있게 두는 쪽이 일반적입니다. 그래서 강의 회로가 RTS#를 굳이 어디엔가 연결했다면, 그건 “CH340C 동작 필수”라기보다 “보드의 리셋/부트 자동화나 디버그 편의 기능”을 의도했을 가능성이 큽니다.정리하면 CH340C에는 RST# 핀이 없고 RTS#는 output이 맞으며, CH340_RST라는 넷 이름은 칩의 핀명이 아니라 “그 신호를 리셋 기능으로 재사용한다”는 회로도 작성자 의도로 보시는 게 가장 합리적입니다. 다만 협업/리뷰 관점에서는 CH340_RTSn 같은 원 핀명과 TARGET_NRST 같은 기능명을 분리해서 쓰는 편이 오해 비용을 크게 줄여주니, 가능하면 그렇게 네이밍을 정리하시는 것을 권장드립니다.
- 0
- 2
- 9
질문&답변
수강 연장 문의
안녕하세요, 수강기간 연장해드렸습니다!
- 0
- 2
- 19
질문&답변
수강 연장 문의
안녕하세요, 수강기간 연장해드렸습니다!
- 0
- 2
- 12
질문&답변
핀 데이터 방향 관련 질문입니다.
안녕하세요, 답변 남겨드립니다.질문 주신 내용을 조금 정리하면,PHY 칩의 TX, RX, TX_CLK 같은 핀의 “데이터 방향”이 데이터시트에서 어떻게 정의되는지,특히 TX_CLK 같은 신호에서, 어떤 문구/표기들을 근거로 방향을 판단할 수 있는지,Pin Function이 모드마다 조금씩 다른데 어떤 모드를 기준으로 봐야 하는지이 세 가지가 핵심이라고 이해했습니다. 순서대로 실제 현업에서 보는 관점으로 설명드리겠습니다.먼저 “데이터 방향”의 기준을 정리드리면, 데이터시트에서 말하는 방향은 항상 “해당 칩(디바이스) 기준의 방향”입니다. 그러니까, PHY 칩 데이터시트에서 TXD[3:0] 이 “Input”이라고 되어 있으면, “PHY 입장에서 들어오는 신호”라는 뜻이고, 결국 보드 레벨에서는 “MAC → PHY 방향”입니다. 반대로 TX_CLK가 “Output”이라고 되어 있으면, PHY가 클럭을 만들어서 외부(MAC 등)로 내보낸다는 뜻입니다. 이 기준만 머릿속에 고정해 두시면 훨씬 헷갈림이 줄어듭니다.데이터시트에서 실제로 방향을 확인하는 위치는 보통 세 군데입니다. 첫째, “Pin Description / Pin Configuration” 테이블입니다. 여기에는 일반적으로 Pin Name, Type, Description, I/O, Power Domain 등이 표로 정리되어 있고, Type/I/O 칼럼에 “Input”, “Output”, “Bidirectional”, “Open-drain”, “Strap” 같은 표현이 들어갑니다. 예를 들어 어느 Ethernet PHY 데이터시트에서 TXD0 핀에 대해 “TXD0 – Transmit Data Bit 0 – Input” 이라고 되어 있고, TX_CLK에 대해 “Transmit Clock – Output” 이라고 적혀 있으면, 이 텍스트만으로도 데이터 방향을 바로 확정할 수 있습니다. 둘째, “Functional Description” 또는 “Media Interface (MII/RMII/RGMII)” 섹션입니다. 여기에는 “The PHY samples TXD[3:0] on the rising edge of TX_CLK” 이런 식으로 서술이 들어가는데, 이 문장에서 “PHY samples TXD”라는 표현은, TXD가 PHY의 입력이라는 뜻이고, “TX_CLK is driven by the PHY” 같은 표현은 TX_CLK가 PHY 출력이라는 뜻입니다. 셋째, 타이밍 다이어그램입니다. MII/RMII/RGMII 인터페이스 타이밍 그림에서 신호의 출발점이 어디인지, 화살표 방향, setup/hold 기준이 어느 디바이스 기준인지가 나옵니다. 예를 들어 도표에서 “tSU(TXD): TXD valid to rising edge of TX_CLK” 이런 식이면, TXD가 TX_CLK 기준으로 setup/hold을 맞춰야 하는 입력이라는 의미이고, TX_CLK이 기준이 되는 쪽(즉 클럭을 소스에서 내보내는 쪽)이 PHY라는 설명이 함께 달려 있는 경우가 많습니다.TX_CLK 같이 이름만 보면 헷갈리는 신호를 예로 들어보겠습니다. 전형적인 10/100M Ethernet MII 인터페이스에서, TX_CLK는 보통 PHY가 MAC에게 제공하는 전송 클럭입니다. 이 경우 데이터시트에는 대략 이런 식으로 기술됩니다. “TX_CLK: Transmit clock. 25 MHz clock output used to clock the TXD[3:0] and TX_EN inputs.” 여기서 “clock output”이란 단어가 명확한 방향 힌트입니다. 또 “used to clock the TXD[3:0] and TX_EN inputs” 라는 표현은 TXD, TX_EN이 PHY 입장에서는 입력이며, TX_CLK 기준으로 샘플링한다는 뜻입니다. 즉, 회로 설계 시에는 MAC 쪽 데이터시트를 같이 확인해서, MAC 입장에서는 TX_CLK가 Input(외부에서 들어오는 클럭)으로 표기되는지를 함께 확인해야 합니다. 실제 보드 레벨에서는 “PHY의 TX_CLK(출력) → MAC의 TX_CLK(입력)”으로 선을 연결하게 됩니다. 이런 식으로 양쪽 데이터시트의 I/O 표기를 서로 교차 검증하면 방향이 훨씬 명확해집니다.TXD, RXD, TX_EN, CRS, COL 등의 신호도 마찬가지입니다. 예를 들어 MII에서 TXD[3:0]은 MAC이 데이터를 만들어 PHY로 보내는 신호이므로, MAC 데이터시트에서는 TXD가 Output, PHY 데이터시트에서는 Input으로 표기됩니다. 반대로 RXD[3:0]은 PHY가 수신 데이터를 만들어 MAC으로 보내는 신호이므로, PHY 데이터시트에서 Output, MAC 데이터시트에서 Input으로 표기됩니다. 이런 식으로 “누가 데이터를 생성하느냐”를 먼저 생각하고, 그 다음에 각각의 칩 데이터시트에서 I/O 타입을 확인하면 방향을 일관되게 이해할 수 있습니다.이제 Pin Function이 모드에 따라 달라지는 부분에 대해 설명드리겠습니다. PHY 칩들은 보통 하나의 핀을 여러 용도로 재사용합니다. 예를 들어 부트 시에는 Strap Pin (내부 Pull-up/down에 따라 부트 모드 설정), 동작 중에는 LED 출력, 또는 MDIO/MDC와 같은 관리용 신호로 동작하기도 합니다. 데이터시트의 Pin Description에는 이런 식으로 적힙니다. “Pin X: LED1 / CONFIG1. At power-up/reset, sampled to determine configuration. After reset deassertion, functions as LED1 output.” 이런 경우 모드에 따라 방향이 달라집니다. 리셋 전/부트 시점에는 내부에서 핀을 입력으로 보고 외부 저항 상태를 샘플링합니다. 이때 회로 설계자는 외부로부터 적절한 Pull-up 또는 Pull-down을 걸어줘야 합니다. 리셋이 풀리고 정상 동작 모드가 되면, 동일한 핀이 LED 구동용 Output으로 동작합니다. 즉, 시간 축에 따라 같은 핀이 Input -> Output으로 기능이 전환되는 것입니다.그렇다면 “어떤 모드를 기준으로 봐야 하나?”라는 질문에 대해 실무적인 답을 드리면, 다음 순서대로 판단하시는 것이 좋습니다. 가장 먼저, “이 칩을 우리 보드에서 어떤 인터페이스 모드로 사용할 것인가?”를 확정해야 합니다. 예를 들어 MAC과의 인터페이스가 MII인지 RMII인지, RGMII인지, 또 Auto-Negotiation, Speed, Duplex 모드는 어떤 조합인지 등입니다. 이것은 보통 상위 MCU/SoC(STM32 등)의 주변장치 구성이 먼저 정해지고, 거기에 맞는 PHY 모드를 고르는 흐름입니다. 그 다음으로, 데이터시트에서 “Mode-specific Pin Multiplexing” 혹은 “Strap Configuration” 테이블을 찾아서, 해당 모드에서 각 핀이 어떤 기능으로 고정되는지 확인합니다. 예를 들어 RMII 모드에서는 “Pin 21: RXD3 / MODE2 -> Not used / Strap only” 같이 되어 있을 수 있고, MII 모드에서는 “Pin 21: RXD3 – Receive data bit 3 (Output)”처럼 정의되어 있을 수 있습니다. 이런 경우, 실제 설계에서 사용하는 모드가 RMII라면 RXD3 데이터 핀으로는 쓰이지 않고, 부트 시 Strap 기능만 사용되거나 아예 사용되지 않는 핀이 됩니다. 마지막으로, 실제 동작 구간에서의 기능을 기준으로 방향을 정리하시면 됩니다. 즉, 부트/리셋 시점에는 Strap 입력이지만, 이후에는 LED 출력이라면 “최종 동작 모드에서 이 핀을 외부 회로가 어떻게 봐야 하는지”를 초점을 맞춰 설계합니다. 예를 들어 LED 직결 시에는 Output 기준으로, MCU GPIO와 연결해서 양방향으로 제어하고 싶다면 데이터시트에서 해당 모드가 허용하는지, Open-drain 인지 등을 보고 판단해야 합니다.현업에서 실제로 작업할 때는 다음과 같이 체크리스트처럼 접근하시면 좋습니다. 먼저, PHY 데이터시트에서 Pin Description 테이블을 통으로 엑셀에 옮겨 I/O Direction, Power Domain, Reset/Boot 시 기능, Normal Operation 기능을 컬럼으로 나누어 정리합니다. 이때 TX/RX 관련 핀만 보더라도 대략 20개 이상의 신호가 나오기 때문에, 하나하나 텍스트만 보면서 기억에 의존하면 오류가 나기 쉽습니다. 정량적으로 이야기해보면, 예를 들어 48핀 PHY를 설계한다고 할 때, 전원/그라운드/NC 등을 빼면 실질적으로 기능이 있는 핀이 30~35개 정도이고, 이 중 절반 이상이 모드에 따라 의미가 바뀌는 핀입니다. 따라서 각 핀별로 “Power-up: Input (Strap) / Run: Output (LED)”처럼 시퀀스별 방향을 정리해두면, 후에 레이아웃 단계에서 신호 방향을 다시 확인할 때도 큰 도움이 됩니다.또 하나 중요한 포인트는, PHY 쪽 데이터시트만 보고 판단하지 말고 반드시 반대편 디바이스(STM32의 ETH MAC, 또는 별도 MAC 칩)의 데이터시트를 같이 보라는 것입니다. 예를 들어 STM32의 RMII 인터페이스에서, REF_CLK는 외부 50 MHz 클럭 입력이라고 되어 있고, 데이터시트에 “REF_CLK: Input”으로 표시되어 있다고 하겠습니다. 그런데 어떤 PHY들은 RMII 모드에서 50 MHz REF_CLK를 출력해주는 타입도 있고, 외부 크리스탈이나 오실레이터에서 PHY와 MAC이 함께 받아쓰는 타입도 있습니다. 만약 전자라면 PHY 데이터시트에 “REF_CLK: 50 MHz reference clock output”이라고 되어 있을 것이고, 후자라면 둘 다 Input입니다. 회로 설계에서 방향을 잘못 이해하면, 출력끼리 충돌하는 상황(두 칩이 서로 REF_CLK를 내보내려는 형태)이 생길 수 있고, 이런 경우 보통 전류 충돌로 발열, 신호 찌그러짐, 최악에는 핀 손상까지 갈 수 있습니다. 실제 업계에서는 이런 실수가 발생하면, 보드를 리워크하면서 클럭 공급 방향을 바꾸거나 시리즈 저항/클럭 버퍼를 추가하는 등으로 수정하게 되는데, 초기 설계 단계에서 I/O 방향만 정확히 정리해도 이런 리워크의 80%는 예방할 수 있습니다.정리하자면, TX, RX, TX_CLK, REF_CLK 등 각 핀의 방향을 판단할 때는, 첫째로 데이터시트 Pin Description에서 Input/Output/Bidirectional 표기를 직접 확인하시고, 둘째로 Functional Description과 타이밍 다이어그램의 문구에서 “drives”, “samples”, “output”, “input” 같은 표현을 근거로 보완하시고, 셋째로 실제 사용할 모드(MII/RMII/RGMII, 부트 Strap 조합)를 먼저 결정한 후 그 모드에서의 Pin Multiplexing 표를 기준으로 보시면 됩니다. 그 다음, 항상 PHY와 MAC 양쪽 데이터시트를 교차 검증해서 한쪽에서 Output이면 반대쪽이 반드시 Input으로 정의되어 있는지 확인하는 습관을 들이시면, TX_CLK 같은 헷갈리는 신호도 일관되게 이해하실 수 있습니다.
- 0
- 2
- 21
질문&답변
SPICE Output Log에 대한 질문
안녕하세요, 답변 남겨드립니다.지금 보신 SPICE Output Log에서의 Vth 값은 잘못 나온 것이 아니라, 강의에서 “대략 300 mV”라고 두고 계산하던 이상적인 Vth와 정의가 조금 다른 값이라고 보셔야 합니다. 그리고 회로 안에 실제로 들어가 있는 트랜지스터의 바이어스 상태 때문에 400~500 mV 수준으로 올라가는 것이 자연스러운 상황입니다.우선 로그 화면을 그대로 해석해 보면, BSIM3 MOSFET 테이블에서Vth 행에 M1, M4는 약 5.34e-01 ≒ 0.534 V,M5, M6는 약 4.0e-01 ≒ 0.40 V 정도로 표시되어 있고,그 바로 위 Vbs 행을 보면 M1, M4는 Vbs ≒ -4.78e-01 V, M5, M6는 0 V로 보입니다.여기서 Vbs는 바디전압(Vb) – 소스전압(Vs) 입니다. NMOS 기준으로 바디는 0 V에 붙어 있고, 소스 쪽 노드가 0.48 V 정도로 떠 있다면 Vbs ≒ -0.48 V가 됩니다. 바디 입장에서 보면 VSB = Vs – Vb = 0.48 V가 되는 셈이죠.MOSFET의 문턱전압은 단일 상수가 아니라, 바디 효과 때문에 실제 동작점에서 다음과 같이 바뀝니다.Vth(VSB) = Vth0 + gamma ( sqrt(2 phi_f + VSB) - sqrt(2 * phi_f) )여기서 Vth0는 VSB = 0 일 때의 기본 문턱전압, gamma는 바디효과 계수, phi_f는 공핍층과 관련된 파라미터입니다. 강의에서 “Vth ≒ 0.3 V”라고 둔 값은 보통 이 Vth0에 대응되는, 긴 채널 + VSB = 0 가정의 이상적인 값이라고 보시면 됩니다.대략적인 숫자로 예를 들면, 공정에서Vth0 = 0.30 V, 2*phi_f ≒ 0.6 V, gamma ≒ 0.7 V^(1/2)라고 가정하고, 지금 회로처럼 VSB = 0.48 V 라고 두면sqrt(2phi_f + VSB) = sqrt(0.6 + 0.48) = sqrt(1.08) ≒ 1.039sqrt(2phi_f) = sqrt(0.6) ≒ 0.775따라서 바디 효과로 증가하는 문턱전압 증가분은delta_Vth = gamma (1.039 - 0.775) ≒ 0.7 0.264 ≒ 0.185 V이렇게 되면 실제 동작점에서의 문턱전압은Vth_eff = Vth0 + delta_Vth ≒ 0.30 V + 0.185 V = 0.485 V정도가 됩니다. 로그에 찍힌 0.53 V와 오차 50 mV 이내 수준이라, “VSB 때문에 Vth가 0.3 V에서 0.5 V 정도로 올라갔다”고 해석할 수 있습니다. 반대로 M5, M6처럼 Vbs가 0인 트랜지스터는 Vth가 약 0.4 V로 더 낮게 나오고 있지요. 같은 모델을 쓰더라도, 각 소자의 VSB, 길이, 폭, 전압 조건에 따라 SPICE가 내부적으로 계산한 “유효 문턱전압”이 조금씩 달라집니다.즉, 지금처럼 .op로 보고 있는 Vth 값은 “해당 바이어스에서 BSIM 모델이 계산한 유효 문턱전압”입니다. 강의에서 가정한 300 mV는 손계산을 하기 위해 단순화한 기준값이고, 실제 회로에 올려놓고 나면 보디 효과, 짧은 채널 효과 때문에 400~500 mV로 바뀌는 것은 매우 자연스러운 현상입니다.Vth를 확인하는 방법 관점에서 말씀드리면, 회로 전체의 .op 결과에서 Vth 행을 보는 방식도 맞는 방법이지만, 이 값은 어디까지나 “그 회로 안에서 그 소자가 현재 놓여 있는 상태의 Vth”입니다. 공정 자체의 기준 Vth0를 보고 싶다면, 별도의 테스트 벤치를 만들어서 소스와 바디를 0 V에 두고, 간단한 단일 트랜지스터 회로로 .op를 돌리거나, 모델 파일의 VTH0 파라미터를 직접 보는 식으로 확인하는 게 좋습니다.예를 들어 LTspice에서 NMOS 하나만 놓고,소스와 바디를 GND에 묶고, 드레인은 VDD에, 게이트에 어떤 바이어스를 줘 .op를 돌린 다음, 그때 Vbs = 0인 상태에서 출력되는 Vth를 보면 “이 공정 NMOS의 기본 문턱전압이 어느 정도인지”를 깔끔하게 볼 수 있습니다. 같은 모델이라도 회로 안에서 VSB가 0.5 V, 1 V 이렇게 올라가면 방금 계산한 것처럼 그때그때 Vth가 달라지기 때문에, 이 둘을 헷갈리면 지금처럼 혼동이 오게 됩니다.이제 두 번째 질문, “그렇다면 Vth가 0.5 V라면 W를 키워서 Vgs를 552 mV까지 낮춰도 되나?”에 대해 정리해 보겠습니다.아날로그 설계에서 트랜지스터를 강한 포화 영역에서 쓰는 경우, 단순화해서Id ≒ (1/2) mu Cox (W / L) (Vgs - Vth)^2라고 두고 계산합니다. 여기서 (Vgs - Vth)를 보통 Vov, overdrive voltage라고 부르는데, 동작 여유, gm, 노이즈, 스윙 등을 결정하는 핵심 변수입니다.Id를 일정하게 유지한 채로 W를 두 배로 키운다고 가정해 보겠습니다. 그러면 식에서 (W/L) 항이 두 배가 되므로, 같은 Id를 만들기 위해서는 Vov가 줄어들어야 합니다. 수식으로 보면Id = (1/2) k W (Vov)^2 (여기서 k = mu Cox / L 로 묶었습니다)W를 2W로 바꾸고 Id를 동일하게 두면Id = (1/2) k 2W (Vov_new)^2 = k W * (Vov_new)^2이 값이 기존 Id = (1/2) k W * (Vov_old)^2 와 같아야 하므로k W (Vov_new)^2 = (1/2) k W (Vov_old)^2(Vov_new)^2 = (1/2) (Vov_old)^2Vov_new = Vov_old / sqrt(2)즉 W를 두 배로 키우면, 같은 전류에서 Vov는 약 0.707배로 줄어듭니다. 예를 들어 Vth_eff = 0.5 V, Vov_old = 150 mV (즉 Vgs_old = 0.65 V)로 설계되어 있던 소자를 W 2배로 키우면, Id가 같을 때 Vov_new는 약 106 mV가 되고 Vgs_new는 0.5 V + 0.106 V = 0.606 V 수준으로 떨어집니다. 질문에서 말씀하신 “Vgs를 552 mV까지 낮춘다”라는 것도 이와 같은 맥락의 조정이라고 보시면 됩니다. 전류를 유지한 채 W를 키우면 Vgs는 내려가고, 그만큼 overdrive가 줄어드는 것이죠.문제는 “얼마까지 내려도 되는가”입니다. 이건 단순히 Vgs 수치만 보는 게 아니라,Vov = Vgs - Vth가 충분히 남아서 Vds(sat) ≒ Vov 조건을 만족해야 하는지,다단 구조에서 위·아래 트랜지스터의 헤드룸 합이 공급전압 안에 들어오는지,gm/Id, 노이즈, 선형성, 스윙 등 설계 사양에 맞는지를 종합적으로 따져야 합니다.예를 들어 동일 전류에 대해 Vov = 150 mV에서 동작하던 차동쌍을 Vov = 50 mV까지 낮추면, gm/Id는 올라가서 이득은 좋아질 수 있지만, 각 트랜지스터가 포화 영역에서 버틸 수 있는 Vds 여유가 줄어들어 위쪽 미러나 캐스코드가 쉽게 triode로 떨어질 수 있습니다. 또 너무 Vov를 줄이면 트랜지스터가 약한/중간 인버전 영역에 들어가서 우리가 가정한 단순 제곱법칙과 실제가 많이 어긋나기도 합니다.실무에서는 그래서 “Vth 숫자 하나”보다는 “현재 바이어스에서의 Vov, gm/Id”를 기준으로 봅니다. 지금과 같이 .op 결과에서 각 소자의Vgs, Vth, gm, Id를 동시에 볼 수 있으므로, 예를 들어 M1에 대해Vov = Vgs - Vthgm/Id = gm / Id를 직접 계산해 보시면, 이 소자가 강한 인버전인지, 중간 인버전인지 감이 잡힙니다. 예를 들면 Id = 10 uA, gm = 200 uS 라면 gm/Id = 20 V^-1 정도라 중간~강한 인버전 영역으로 보고, 이 정도면 아날로그 증폭기로 쓸 때 적당한 영역이라고 판단하는 식입니다. 강의에서 “Vth ≒ 300 mV, Vov ≒ 100~150 mV”를 기준으로 손계산을 하는 이유도, 이런 gm/Id와 헤드룸 감각을 잡기 위한 것이지, 실제 SPICE에서 Vth가 딱 0.300 V로 나와야 한다는 의미는 아닙니다.정리해서 말씀드리면,지금처럼 .op 로그의 Vth를 보는 방법은 맞지만, 그것은 “해당 바이어스, 해당 VSB에서의 유효 Vth”이고, VSB가 0.5 V 가까이 생기면 0.3 V였던 기준 Vth가 0.4~0.5 V로 올라가는 것이 정상입니다.W를 키워 Id를 고정한 채 Vgs를 내리면, 결국 Vov = Vgs - Vth가 줄어드는 방향으로 바이어스가 이동하므로, 헤드룸과 포화 조건, gm/Id를 기준으로 “어디까지 줄일지”를 결정해야 합니다.설계할 때는 강의에서처럼 Vth0 ≒ 0.3 V를 가정해 손계산으로 초기 값들을 잡고, 이후 SPICE에서 나온 실제 Vth_eff, Vgs, gm/Id를 보면서 W, L, 바이어스를 조금씩 조정해 가는 것이 일반적인 실무 흐름입니다.
- 0
- 2
- 21
질문&답변
섹션4 BOOT0 핀 설정
안녕하세요, 답변 남겨드립니다.BOOT0 핀을 GND에 바로 쇼트시키지 않고 100 kΩ 저항을 거쳐서 GND로 당겨 주는 데에는 실무적인 이유가 있습니다. 한 줄로 요약하면, “기본값은 항상 0으로 두되, 나중에 필요하면 강제로 1로 올릴 수 있도록 여지를 남겨두기 위해서”라고 보시면 됩니다. 이 강의에서 사용하는 STM32F103 보드도 동일한 개념을 따르고 있습니다.먼저 BOOT0의 역할을 다시 짚어보면, 리셋 시점에 BOOT0 레벨에 따라 다음과 같이 부트 경로가 결정됩니다.BOOT0 = 0 → 사용자 Flash에서 부트BOOT0 = 1 → 시스템 메모리(ROM 부트로더) 또는 SRAM 부트 (옵션에 따라)양산 보드는 대부분 “항상 Flash에서 부트”가 기본이기 때문에, BOOT0를 0으로 묶어 두는 게 맞습니다. 여기서 선택지가 두 가지입니다.BOOT0를 GND에 직접 접지BOOT0를 저항을 통해 GND로 풀다운1번처럼 GND에 직접 연결해 버리면 회로는 단순해지지만, 나중에 BOOT0를 1로 만들 수 있는 방법이 사실상 없어집니다. 예를 들어 펌웨어가 망가져서 부팅이 안 되거나, 사용자가 플래시를 잠가 버려 SWD가 정상 동작하지 않는 상황에서, ROM 부트로더(USART, USB DFU 등)를 이용해서 다시 살리고 싶을 때가 있습니다. 이때 BOOT0를 1로 강제로 올릴 수 있어야 ROM 부트로더로 진입이 가능한데, 핀이 GND에 직접 쇼트되어 있으면 외부에서 3.3 V를 물리는 순간 VDD와 GND를 직결시키는 꼴이 되어 버립니다. 심하면 보드가 타거나 보호회로가 동작합니다.반대로 2번처럼 100 kΩ을 거쳐서 GND에 연결하면, “기본 상태에서는 논리 0으로 확실하게 잡혀 있으면서도, 필요할 때는 외부에서 고레벨을 인가해서 모드를 바꿀 수 있는” 구조가 됩니다. 예를 들면 다음과 같은 방식이 가능합니다.개발 초기에만 사용하는 2.54 mm 핀헤더를 BOOT0 핀과 3.3 V 사이에 하나 빼 두고, 점퍼를 꽂으면 3.3 V로 강제 High, 점퍼를 빼면 100 kΩ을 통해 GND로 Low 유지.ICT(테스트 장비)나 JTAG/Serial 프로그래머에서 BOOT0 테스트 패드를 집게로 물고, 테스트 시에만 High로 강제.이때 전류를 정량적으로 보면, 외부에서 BOOT0를 3.3 V로 직접 구동하고, 보드 쪽에는 100 kΩ 풀다운만 걸려 있다고 가정하면, 저항을 통해 흐르는 전류는I = V / R = 3.3 V / 100 kΩ ≒ 33 µA정도로 아주 작습니다. 외부 드라이버 입장에서는 33 µA 정도만 더 내면 되고, 보드 전력 소모도 사실상 무시 가능한 수준입니다. 만약 풀다운을 10 kΩ으로 설계했다면 I = 3.3 / 10 kΩ = 330 µA가 되는데, 이것도 절대값으로는 작지만, 저전력 시스템에서는 불필요한 누설 전류를 줄이기 위해 100 kΩ 수준으로 올리는 경우가 많습니다.“그러면 왜 아예 내부 Pull-down만 믿고 외부 저항도 안 달면 안 되나요?”라는 질문도 많이 나오는데, STM32F1의 BOOT0는 리셋 시점 부트모드 결정에 매우 중요해서, 데이터시트/앱노트에서도 외부에서 확실한 레벨을 잡아 주는 것을 권장합니다. 전원 인가 순간의 노이즈, 주변 신호에 의한 커플링 등을 고려하면, 고정값이 필요한 핀은 외부 풀업/풀다운으로 확정해 두는 것이 안전합니다.현업 보드에서 자주 쓰는 패턴을 예로 들면 다음과 같습니다.양산 제품: BOOT0 – 100 kΩ – GND, 그리고 패널이나 내부에 숨겨진 Test Pad를 BOOT0 핀에 하나 빼 둠. 양산 단계에서는 항상 0으로 동작하지만, RMA(고장 분석)나 펌웨어 복구 시에는 엔지니어가 그 패드를 집게로 찝어서 High로 만들어 ROM 부트로더 진입.개발 보드: BOOT0 – 100 kΩ – GND, 그리고 점퍼 셀렉터 [GND – BOOT0 – VDD] 구조. 사용자가 점퍼 위치를 바꿔서 수 초 안에 부트 모드를 바꿀 수 있도록 설계. STM32 Nucleo/Discovery 보드들이 거의 이 패턴을 따릅니다.또 하나의 실무적인 이유는 “핀 재사용 가능성”입니다. 일부 STM32 라인업에서는 부트핀을 GPIO로 재활용하기도 하는데, 이 경우에도 저항을 통해 기본값만 정해 주고, 실제 동작 중에는 GPIO로 사용하면서도, 리셋 시에는 원하는 부트모드가 유지되도록 설계하는 패턴이 많이 쓰입니다. BOOT0가 완전 전용 핀인 경우에도, 나중에 동일 보드를 다른 MCU나 다른 리비전으로 교체할 때 이런 유연성이 도움이 됩니다.정리하면, BOOT0를 GND에 바로 연결해도 동작 자체에는 문제가 없지만,펌웨어 복구 및 ROM 부트로더 진입 경로 확보개발·양산 테스트에서 부트모드 강제 설정전원/드라이버 충돌 없이 외부에서 High를 인가할 수 있는 안전한 회로 구성저전력 관점에서 누설 전류를 제한하면서도 안정적인 기본값 확보이 네 가지 관점 때문에, 현업에서는 100 kΩ 정도의 풀다운 저항을 두고 GND에 연결하는 방식을 많이 사용합니다.
- 0
- 2
- 23
질문&답변
디버거에 대한 질문입니다.
안녕하세요, 답변 남겨드립니다.질문 주신 내용을 하나씩 나눠서 설명드리겠습니다.먼저 “F407의 디버거로 F103을 설계했다”는 부분은, 강의에서 사용한 STM32F407 보드(NUCLEO, Discovery 혹은 ST-LINK 기능이 포함된 보드)의 디버거 기능을 떼어다가, STM32F103이 달린 여러분의 메인 보드를 디버깅·프로그램하는 용도로 활용한다는 의미입니다. 즉 F407은 실제 제품의 기능을 수행하는 메인 MCU 역할이 아니라, PC ↔ F103 사이에서 “USB–SWD/JTAG 디버그 브리지” 역할을 하는 전용 디버거/프로그래머로 동작하게 됩니다. 이런 보드에는 ST-LINK V2/V3가 온보드로 구현되어 있고, USB를 통해 PC와 통신하면서 SWDIO, SWCLK, NRST, GND, VTREF(타겟 전압 인식용) 신호를 F103 쪽으로 보내게 됩니다. 실제로는 SWD 클럭이 수 MHz(예: 1~4 MHz 정도)로 동작하면서, 수십 kB~수백 kB의 펌웨어를 몇 초 이내에 다운로드하고, 그 이후에는 실시간 디버깅(브레이크포인트, 레지스터 읽기/쓰기, 메모리 확인, Run/Stop 제어 등)을 수행합니다.디버거의 핵심 역할을 정리하면, 첫째, Flash 프로그램 다운로드입니다. F103의 Flash에 펌웨어를 굽는 일을 전담합니다. 예를 들어 128 kB 정도의 펌웨어를 2~5초 이내 수준으로 반복 다운로드 가능하게 해줍니다. 둘째, 디버깅 인터페이스 제공입니다. PC의 IDE(STM32CubeIDE, Keil, IAR 등)에서 C 소스 단위로 Breakpoint를 걸고, 한 줄씩 Step-into/Step-over 하면서 레지스터 값, 메모리 맵(예: 0x2000_xxxx RAM, 0x4001_xxxx Peripheral) 등을 실시간으로 확인할 수 있게 해줍니다. 셋째, Chip 상태 제어입니다. 디버거를 통해 하드웨어 Reset을 걸거나, Low-power 모드에 들어간 이후에도 다시 깨워서 상태를 확인할 수 있어서, 저전력 설계나 Fault 상황(예: HardFault) 분석에 매우 유용합니다. 실무에서도 보드 Bring-up 시 거의 100% 필수로 사용하는 장비가 이 디버거입니다.두 번째로 질문 주신 “F103 설계 내에 따로 디버깅 핀을 부여하고 커넥터를 연결해 둔 이유”는, 디버거 기능을 특정 보드(F407 보드) 하나에만 의존하지 않고, 표준화된 디버그 포트를 보드에 남겨두기 위해서입니다. 강의의 “STM32F103 schematic – Debugging pin 설계” 파트에서도 별도의 Debug 커넥터(예: 2x5 1.27mm Cortex Debug Connector나 1x6/1x10 2.54mm 핀 헤더)를 배치하는 흐름을 잡습니다.이 커넥터에는 일반적으로 다음과 같은 신호들이 연결됩니다. 타겟 전원 기준 전압(VTREF, 예: 3.3 V), GND, SWDIO(PA13), SWCLK(PA14), NRST(하드웨어 리셋), 필요시 SWO(Trace 출력) 혹은 추가 UART Tx/Rx 핀 등이 함께 나갈 수 있습니다. 예를 들어 Cortex 10핀 커넥터를 쓴다고 하면, 실제 핀 구성은 다음과 같이 될 수 있습니다: Pin1 VTREF(3.3 V), Pin3 GND, Pin5 SWCLK, Pin7 SWDIO, Pin9 SWO, 나머지 핀들은 NC 또는 Reset, 특정 Vendor 정의 핀으로 사용. 이런 식으로 구성해 두면, 외부에서 ST-LINK V2 독립형 디버거, J-LINK, CMSIS-DAP 디버거, 혹은 양산 라인의 프로그래밍 장비를 그대로 꽂아서 사용할 수 있습니다.“이 커넥터는 어디에 연결되나요?”라는 질문을 현업 관점에서 답변드리면, 기본적으로는 “외부 디버거/프로그래머”에 연결된다고 보시면 됩니다. 개발 단계에서는 USB가 달린 상용 디버거 박스(예: ST-LINK V2 동글, Segger J-LINK)를 이 커넥터에 꽂고, PC에 연결해서 F103의 펌웨어를 다운로드하거나 디버그를 수행합니다. 예를 들어 개발 초기에는 F407 보드를 디버거처럼 사용하다가, 이후에는 사내 표준 J-LINK 디버거를 사용하고 싶을 수 있는데, 이때도 같은 커넥터 핀맵만 유지하면 디버거만 교체해서 바로 사용 가능합니다.양산 관점에서는 이 커넥터가 ‘프로그램 포트’가 됩니다. 예를 들어 생산 라인에서 ICT(In-Circuit Tester)나 간단한 Jig에 ST-LINK 여러 개를 달아서, 보드를 컨베이어로 흘려보내며 자동으로 펌웨어를 굽고, 검사하는 식의 공정을 구성합니다. 이때 Jig에는 이 디버그 커넥터와 대응되는 테스트 핀(POGO 핀)이 배치되어 있고, 보드가 내려앉으면 VTREF / GND / SWDIO / SWCLK / NRST가 자동 접촉되어, 한 번에 수십 개 보드에 동시에 펌웨어를 굽기도 합니다. 이처럼 디버그 커넥터를 설계 단계에서 확보해 두면, 개발–디버깅–양산까지 전 흐름에서 동일 포트를 재활용할 수 있어 실무 효율이 매우 높습니다.또 하나 중요한 포인트는, F407 디버거 보드가 항상 붙어 있을 수는 없다는 점입니다. 예를 들어 실제 고객에게 납품하는 최종 제품에는 F407 보드를 같이 넣지 않겠죠. 하지만 필드에서 문제가 생겼을 때, RMA로 회수된 보드에 다시 디버거를 꽂고 상태를 분석해야 하는 경우가 있습니다. 이런 상황에서 디버그 커넥터가 보드 상에 남아 있으면, 외부에서 별도의 디버거만 들고 가서 SWD로 연결해 펌웨어 버전 확인, Fault 발생 시점 레지스터 값 확인, 부트로더 재플래시 등 다양한 작업을 할 수 있습니다. 실무에서는 필드 디버깅을 고려해 이 디버그 포트를 숨기거나(케이스 내부에 배치), 혹은 서비스용 포트로 별도 관리하는 경우도 있습니다.정리하자면, F407의 디버거는 PC와 F103 사이를 중계하는 “USB–SWD 디버그 장비” 역할을 하고, F103 설계 내의 디버깅 핀+커넥터는 이 SWD 신호들을 보드 밖으로 꺼내서, F407 보드든 ST-LINK V2든 J-LINK든 어떤 디버거든 자유롭게 연결할 수 있도록 해주는 “표준 디버그 인터페이스”라고 이해하시면 됩니다. 개발 단계에서는 F407을 임시 디버거로 쓰고, 장기적으로는 그 디버그 커넥터를 통해 다양한 디버거/양산 프로그래머를 꽂을 수 있도록 확장성을 확보했다고 보시면 됩니다.
- 0
- 2
- 21
질문&답변
GPIO 에 대한 질문입니다.
안녕하세요, 답변 남겨드립니다.영상에서 말씀하신 “GPIOA~E가 있고, 각각이 16개 기능이 있어서 총 80개 핀이 칩에 담겨 있다”는 표현은, 조금 더 정확하게 말하면 “GPIO 포트가 5개 있고, 각 포트가 16개의 비트(라인)를 가진다 → 내부적으로 최대 80개의 GPIO 라인이 설계되어 있다”는 뜻이라고 이해하시면 좋습니다.먼저 용어를 하나씩 정리해 보겠습니다.STM32F103 같은 MCU에서 GPIOA, GPIOB, GPIOC … 이런 이름은 “포트(Port)” 이름입니다. 하나의 포트는 16비트 레지스터로 구성되어 있고, 그 16비트 각각이 하나의 GPIO 핀에 대응됩니다. 그래서Port A → PA0, PA1, …, PA15 (총 16개)Port B → PB0, PB1, …, PB15 (총 16개)…이런 식으로 최대 포트 A~E까지 있으면 이론적으로는5개 포트 × 16비트 = 80개즉, 내부 설계 관점에서 80개의 GPIO 라인이 존재한다고 말할 수 있습니다. 여기서 강의에서 “16개 기능”이라고 표현한 부분은 엄밀히 말하면 “16개의 GPIO 라인(=핀, 비트)”라고 보시는 게 더 정확합니다.다만 중요한 포인트는, 데이터시트 상에 이렇게 80개의 GPIO가 “논리적으로” 정의되어 있다고 해서, 여러분이 쓰는 패키지(LQFP48, LQFP64, BGA 등)에 실제로 80개의 물리 핀이 다 나와 있다는 뜻은 아니라는 점입니다. 예를 들어 LQFP48 패키지를 쓰면, 내부에는 PA0~PE15까지 라인이 설계돼 있어도, 그 중 일부만 실제 패키지 패드에 연결되고 나머지는 “unbonded”라서 밖으로 안 나옵니다. 그래서 CubeMX에서 핀맵을 볼 때 어떤 포트 비트는 회색으로 막혀 있거나, 해당 패키지에서는 사용 불가로 표시되는 경우가 생깁니다.또 하나 헷갈리기 쉬운 부분이 “하나의 PAx 핀이 여러 기능을 가진다”는 개념입니다. STM32에서는 각 핀이 기본적으로는 GPIO(일반 입출력)로 동작하지만, 같은 핀을 USART, SPI, I2C, TIM(타이머 채널) 같은 주변장치의 Alternate Function으로도 쓸 수 있습니다. 예를 들어 데이터시트에서PA9 → GPIO 기능 + USART1_TX 기능PA10 → GPIO 기능 + USART1_RX 기능PB6 → GPIO 기능 + I2C1_SCL 기능PB7 → GPIO 기능 + I2C1_SDA 기능이런 식으로 표시됩니다. 이때 중요한 것은 “핀 개수가 늘어나는 것”이 아니라 “하나의 물리 핀에 여러 주변기능이 멀티플렉서로 매달려 있다”는 것입니다. 실제로는 PA9이라는 한 개 패드가 있고, 내부에서 “지금은 GPIO로 쓸래?”, “지금은 UART TX로 쓸래?”를 레지스터 설정으로 선택하는 구조입니다. 그래서내부 GPIO 라인 수: 최대 80개 (포트 A~E × 16비트)각 GPIO 라인에 매달린 주변 기능: 핀마다 2~4개 정도 Alternate Function이 붙어 있음이렇게 보시면 됩니다.현업 PCB 설계 관점에서 정량적으로 감을 잡으려면, 다음 순서를 머릿속에 그려보시면 좋습니다. 예를 들어 STM32F103 LQFP64 패키지를 써서 보드를 설계한다고 가정하겠습니다. 데이터시트 기준으로 이 패키지는 대략 51개 내외의 I/O가 외부로 나옵니다(숫자는 패키지에 따라 조금씩 다릅니다). 논리적으로는 80개의 GPIO 라인이 정의돼 있지만, 실제로는 그 중 50개 남짓만 패드로 나옵니다. 이 50개 중 일부는 전용 기능(전원, 그라운드, NRST, OSC_IN/OUT, BOOT0 등)으로 잡혀 있으니, 애플리케이션에서 걸 수 있는 “실질적인 GPIO/주변 핀 수”는 예를 들어 40개대 중반 정도가 됩니다. 이 40여 개 핀 각각에 대해 “여기는 UART TX/RX, 여기는 SPI, 여기는 ADC 입력, 남는 곳은 GPIO” 식으로 CubeMX에서 매핑하면서, 어떤 포트/비트가 실제로 쓰이는지 정리하는 것이 MCU Pin Mapping 작업입니다.실제로 프로젝트를 하나 예로 들면,모터 제어 PWM 출력에 6핀(3상 하이/로우)UART 디버깅용 2핀(USART1_TX/RX)I2C 센서용 2핀(SCL/SDA)ADC 센싱용 4핀LED 제어용 4핀버튼 입력용 3핀Ethernet, DAC, 기타 인터페이스 추가이런 식으로 요구사항을 나열한 뒤, CubeMX에서“PWM은 TIM1_CH1~3 / CH1N~3N이 있는 PA8~PA11 등”“UART는 PA9/PA10 또는 PB6/PB7 중 패키지에서 가능한 조합”“ADC는 ADC1_IN0~INx에 해당하는 PA0, PA1, PB0 …”같은 식으로 배치를 합니다. 이 때 화면에서 보이는 PA0~PE15가 바로 강의에서 말한 “총 80개의 논리 GPIO 라인”이고, 그 중 회색으로 막힌 비트는 현재 패키지에서는 외부로 안 나온 비트라고 이해하시면 됩니다.정리하면,GPIOA~E가 있다 → 최대 5개의 GPIO 포트 모듈이 있다각 포트는 16비트 폭이다 → PA0~PA15처럼 16개의 GPIO 라인이 있다따라서 내부적으로는 5 × 16 = 80개의 GPIO 라인이 설계되어 있다하지만 실제 패키지에서 외부로 나오는 물리 핀 수는 패키지에 따라 더 적을 수 있고, 각 핀은 GPIO 외에도 여러 Alternate Function을 선택해서 쓸 수 있다이렇게 이해하시면 강의에서 하신 설명이 훨씬 자연스럽게 느껴지실 겁니다.
- 0
- 1
- 27
질문&답변
TI 홈페이지 Block Diagram 관련 질문드립니다.
안녕하세요, 답변 남겨드립니다.질문을 두 가지로 나눠서 보시면 이해가 훨씬 잘 되십니다.(1) TI 홈페이지 Block Diagram의 “현실성”이 어느 정도인지,(2) 과제 예시로 드린 블록 다이어그램이 어떤 시스템을 가정하고 있는지 입니다.먼저 TI 홈페이지 Block Diagram이 실제 회사에서 사용하는 것과 얼마나 비슷한지부터 말씀드리겠습니다.TI가 사이트에 올려놓는 블록 다이어그램은 두 가지 성격이 섞여 있습니다.하나는 “마케팅용”이고, 다른 하나는 “실제로 현업에서 자주 쓰는 구조를 요약한 교육용/레퍼런스용”입니다.완전히 광고만을 위한 허구는 아니고, 실제로 돌아가는 전형적인 구조를 상당히 충실하게 반영합니다.예를 들어 Automotive Sensor Node, BMS, 인버터, AC/DC 전원, 산업용 센서 노드 같은 시스템 블록을 보시면12 V 혹은 24 V 메인 전원 → 보호 소자 → DC-DC → LDO → MCU/센서/통신칩이라는 흐름이 거의 빠짐없이 들어가 있습니다. 이런 전원 트리 형태는 실제 자동차 ECU, 산업용 컨트롤러, IoT 게이트웨이 보드에서도 그대로 등장합니다. 현업에서 회로를 설계하면, 최상위 시스템 다이어그램 한 장에 대략 10~30개 정도의 블록이 들어가는데, TI가 그려놓은 시스템 블록도 비슷한 스케일을 유지합니다.다만 실제 회사 내부에서 쓰는 블록 다이어그램과 비교했을 때 차이점이 몇 가지 있습니다.첫째, 상세도입니다.TI 사이트의 다이어그램은 고객이 한눈에 이해할 수 있도록 블록을 꽤 크게 묶어놓습니다. 예를 들어 실제 시스템에서는“프론트 엔드 보호 회로(ESD, TVS, EMI 필터) → 커넥터 → DC-DC 컨버터 1차 → DC-DC 보조 레일 → 여러 개의 LDO → 전류 센싱”처럼 다 쪼개서 그리는 경우가 많은데, TI 블록 다이어그램에서는 이것을 “Protection & Power Management” 정도로 하나의 큰 상자로 묶어버리는 식입니다.둘째, 부품 벤더 편향입니다.실제 양산 보드에는 TI, NXP, ST, Infineon, ADI 등 여러 벤더의 칩이 섞여 들어가지만, TI 사이트의 블록에는 당연히 TI 부품만 들어갑니다. 예를 들어 “Automotive Sensor Node” 예시도 실전에서는 DC-DC는 TI, MCU는 ST, 센서는 Bosch, 통신은 NXP 조합이 흔하지만, TI 다이어그램에서는 MCU까지 TI 제품으로 제안하는 식입니다. 구조는 맞지만, 실제 BOM 구성은 회사마다 훨씬 다채롭습니다.셋째, 누락된 현실 요소들입니다.실제 회사 내부 블록 다이어그램에는 종종 다음과 같은 것들이 별도 블록으로 나타납니다.ASILD 레벨 대응을 위한 이중화 센서, 듀얼 MCU, 독립 Watchdog온라인 진단 회로, 자체 Test 모드, 공장 보정(Trim) 회로안전 규격(ISO 26262, IEC 61508 등)을 만족시키기 위한 모니터링 전원 레일TI 블록 다이어그램은 이런 안전·품질 관련 블록을 대부분 생략하고 “핵심 동작 플로우”에 집중합니다. 동작 원리 자체는 맞지만, 실제 양산 시스템에서 요구되는 안전·진단 구조까지는 다 반영되어 있지 않은 경우가 많습니다.그래서 정리하면, TI 시스템 Block Diagram은동작 원리와 전원/신호 흐름 관점에서는 현실과 매우 유사하고,부품 구성과 안전/테스트/진단 같은 디테일은 축약된 “교육 + 마케팅용” 그림이라고 보시면 됩니다.과제를 하실 때는 그래서 다음처럼 받아들이시는 것이 좋습니다.“이 블록 다이어그램은 실제로 동작 가능한 전형적인 구조를 보여준다. 다만 현업에서 쓰는 것보다 약간 단순화되어 있고, 일부 보호/진단/안전 블록이 빠져 있다.”즉, 과제에서는 TI 다이어그램을 그대로 가져와서 전원 흐름, 신호 흐름을 이해하시고, 강의에서 배운 내용에 따라 “여기에는 사실 ESD/TVS가 더 들어가야겠구나, 여기 DC-DC 뒤에 LDO를 하나 더 두는 이유는 노이즈 때문이겠구나” 하는 식으로 현실적인 요소를 덧붙여 보시면 좋습니다.이제 두 번째 질문, 과제 예시로 드린 블록 다이어그램이 어떤 시스템인지에 대해 설명드리겠습니다.과제 예시에서 설정한 시스템은 TI에서 제공하는 Automotive Sensor Node 레퍼런스 디자인을 기반으로 한 “자동차용 센서 노드 ECU”입니다. 즉, 차량의 12 V 배터리를 전원으로 사용하면서 온도, 압력 같은 센서 데이터를 측정하고, 이를 MCU가 처리해서 CAN 통신으로 메인 ECU나 다른 모듈로 전송하는 소형 ECU를 가정한 것입니다.조금 더 시스템적으로 풀어보면 다음과 같습니다.차량에서 제공되는 전원은 12 V Nominal이지만 실제로는 시동 크랭킹 시 약 6~9 V까지 떨어지고, 로드 덤프 상황에서는 순간적으로 40 V 근처까지 튈 수 있습니다. 예시 시스템에서는 이 9~16 V(또는 그 이상 스파이크)를 EMI/ESD 보호 회로로 먼저 한번 걸러주고, AEC-Q100 등급의 자동차용 DC-DC 컨버터로 약 5 V 레일을 만듭니다. 이 DC-DC의 효율이 85~90% 정도라고 가정하면, 예를 들어 5 V 레일에서 100 mA를 소모할 때 입력 전류는 대략I_in ≈ (V_out I_out) / (η V_in) = (5 V 0.1 A) / (0.9 12 V) ≈ 46 mA정도가 됩니다.그 다음 단계에서 5 V 레일을 LDO로 3.3 V로 낮춰 MCU, CAN Transceiver, 일부 디지털 센서를 구동합니다. LDO는 효율만 보면 손해처럼 보이지만, 출력 노이즈와 PSRR 관점에서 DC-DC의 스위칭 리플을 상당 부분 필터링해 주기 때문에, ADC를 쓰는 MCU나 민감한 센서가 있는 Mixed-signal 보드에서는 5 V → 3.3 V 구간에 LDO를 넣는 구성이 현업에서도 자주 사용됩니다. 예를 들어 3.3 V에서 60 mA를 쓰면 LDO에서 소모하는 전력은P_LDO ≈ (5 V - 3.3 V) * 0.06 A ≈ 0.102 W정도이고, 이 정도는 보드 내에서 열 관리가 크게 부담되지 않는 수준이라 “노이즈 이득 > 효율 손실”이라고 판단해서 선택하는 구조입니다.신호 흐름 관점에서 보면, 센서는 보통 두 가지 유형을 가정합니다.하나는 아날로그 출력 센서로, 0~5 V 또는 0.5~4.5 V 범위의 전압을 내보내고, MCU의 ADC(예: 12-bit, 1 ksps ~ 10 ksps 정도)로 샘플링합니다. 샘플링 주기를 10 ms로 잡으면 초당 100 Sample, 센서 하나당 데이터 속도는 대략 12 bit * 100 Hz = 1.2 kbit/s 정도라서 속도 요구사항은 낮지만, 노이즈 민감도는 높습니다.다른 하나는 디지털 센서(I2C/SPI)로, 예를 들어 I2C 400 kHz 또는 SPI 몇 MHz 수준에서 데이터를 전송합니다. 이 경우 배선 길이가 짧고, 통신 대상이 MCU 하나라서 속도는 비교적 느슨해도 되지만, 풀업 저항 값과 라인 커패시턴스에 의해 Signal Integrity가 영향을 받기 때문에 PCB 레이아웃에서 라우팅이 중요합니다.MCU는 이 센서 데이터를 주기적으로 읽고, 예를 들어 100 ms마다 CAN 메시지 하나를 보내도록 설계할 수 있습니다. CAN 통신 속도가 500 kbps라고 하면, 1 프레임이 대략 수십 bit~백수십 bit 수준이므로 100 ms에 한 프레임 정도 보내면 전체 Bus 사용률은 1% 미만으로 매우 낮은 수준입니다. 이런 설계는 자동차 전체 네트워크 부하에 거의 영향을 주지 않으면서도 센서 값을 충분히 자주 업데이트할 수 있다는 장점이 있습니다.이 과제 예시는 그래서 “매우 전형적인 소형 Automotive Sensor ECU”를 모델로 삼고 있습니다. 실제 자동차 회사나 1차 벤더에서 설계하는 도어 모듈, 시트 모듈, 공조 센서 모듈 등도 구조를 뜯어보면12 V 입력 → 보호 및 필터 → DC-DC → LDO → MCU/센서 → CAN/LIN 통신이라는 동일한 패턴을 공유합니다. 차이는 센서 개수, 통신 속도, 전류 용량, 안전 기능(예: 듀얼 센서, 듀얼 MCU) 같은 스펙적인 부분입니다.정리해서 말씀드리면,TI Block Diagram은 “대략 이런 구조로 동작하고, 이런 자리에 TI 부품들을 꽂아 쓸 수 있다”를 보여주는 동시에, 실제 현업에서도 거의 그대로 쓰이는 전형적인 전원·신호 구조를 반영합니다. 과제를 하실 때는 TI 다이어그램을 신뢰해도 되지만, 그 위에 ESD/TVS, 필터, 추가 전원 레일, 저전력 모드 등 강의에서 다룬 현실적인 요소를 한두 단계 더 얹어서 스스로 블록을 세분화해 보시는 것이 좋습니다.과제 예시로 드린 시스템은 “자동차 12 V 배터리를 이용해 센서 데이터를 측정하고 CAN으로 상위 ECU에 전송하는 소형 Sensor Node ECU”를 가정한 것이고, 실제 TI Automotive Sensor Node 레퍼런스 디자인의 구조와 거의 동일합니다. 따라서 전원 흐름에서는 12 V → DC-DC → LDO → MCU/센서/통신, 신호 흐름에서는 센서 → MCU → CAN Transceiver → CAN Bus라는 큰 줄기만 정확히 잡으셔도 시스템 관점에서 충분히 좋은 과제 답안을 작성하실 수 있습니다.
- 0
- 1
- 32
질문&답변
PCB Artwork 질문드립니다!
회로설계 질문 답변의 말:안녕하세요, 답변 남겨드립니다.우선 System-level이라는 말을 강의 맥락에서 정리해보면, 개별 부품이나 회로 단위가 아니라 “제품 전체 관점”에서 전원과 신호 흐름, 기능 블록, 인터페이스 관계를 보는 설계 레벨을 의미합니다. 예를 들어 이 강의에서처럼 STM32 MCU, Ethernet PHY, Motor Driver, ADC, DAC, LDO, MIC 등이 한 보드에 섞여 있을 때, 각 블록을 개별 회로로 보는 것이 아니라 “전력이 어디서 들어와서 어떤 레귤레이터를 거쳐 어떤 칩에 얼마의 전류가 분배되는지”, “어떤 신호가 어느 블록을 지나서 최종 출력까지 어떻게 이동하는지”, “노이즈가 어디서 발생해서 어디로 돌아가는지”를 한 번에 그려보는 단계가 System-level입니다. 그래서 섹션 2에서 System-level 이해, 섹션 7의 과제에서 Power & Signal Flow Exploration을 따로 강조하는 이유가 여기에 있습니다.조금 더 구체적으로 말하면, MCU가 최대 100 mA, Motor Driver가 피크 2 A, ADC/DAC/MIC가 합쳐서 수십 mA를 쓴다고 할 때, 전체 보드에서 “5 V 어댑터 하나로 이걸 다 감당할 수 있는지, Surge가 걸릴 때 버틸 수 있는지, 각 레귤레이터별 Margin을 얼마나 줄지, GND를 아날로그/디지털로 어떻게 분리해서 리턴을 어떻게 태울지”를 정량적으로 검토하는 게 System-level 설계입니다. 이 레벨에서 전류 합, 전압 Margin, 노이즈 Budget을 숫자로 정의해두면, 이후의 개별 회로/레이아웃 설계가 훨씬 명확해집니다.이제 질문 주신 PCB Artwork 이후 외주 제작과 칩 실장(솔더링) 방식에 대해 말씀드리겠습니다.현업에서 “외주 제작된 PCB에 칩을 따로 사서 엔지니어가 직접 솔더링” 하는 경우는 분명 존재하지만, 이것은 주로 프로토타입이나 소량 개발 단계에서 많이 쓰는 방식입니다. 예를 들어 R&D 팀에서 보드 3장만 만들어 보는 EVT(Engineering Validation Test) 단계라고 하면, 보통은 Gerber 파일만 PCB 공장에 보내서 ‘Bare PCB’만 받아온 뒤, 사내에서 다음과 같이 처리하는 케이스가 많습니다. 엔지니어 한 명이 하루에 수작업으로 0402 저항·커패시터 기준 약 100~200개의 솔더 Joint를 안정적으로 작업할 수 있다고 가정하면, 부품 수가 300~400개 정도인 Mixed-signal 보드 한 장을 완전히 수동 솔더링하는 데 대략 3~5시간 정도가 걸립니다. 이렇게 2~3장 수준만 필요할 때는 사내 온도조절 납땜 인두, 핫에어, 소형 리플로우 오븐 등을 활용해서 직접 SMD를 실장하는 편이 비용과 일정 면에서 효율적일 수 있습니다.반대로 양산 단계나 수십 장 이상이 넘어가는 파일럿 생산 단계부터는 거의 항상 “PCB + SMT 실장까지 외주(EMS/Assembly 업체)”로 진행합니다. 이유는 세 가지 정도로 요약할 수 있습니다. 첫째, 작업 시간과 인력 비용입니다. 예를 들어 부품 수 500개, 솔더 Joint가 약 800~1000개인 보드를 50장 만든다고 하면, 수동 솔더링으로는 사람 한 명이 아무리 빨라야 1장당 4시간 × 50장 = 200시간, 즉 한 사람이 순수 작업만 잡아도 한 달 가까이 필요합니다. 둘째, 품질과 수율입니다. 수작업은 숙련자라도 1000 Joint 기준 1~2% 수준의 불량 가능성은 거의 피하기 어렵지만, 잘 갖춰진 SMT 라인에서는 AOI, X-Ray 검사까지 포함해 99.9% 이상의 초기 조립 수율을 노릴 수 있습니다. 셋째, 공정 이력 관리와 신뢰성입니다. 의료·자동차·산업용 제품은 납땜 프로파일, 플럭스 종류, 세척 여부, Baking 이력 등이 모두 품질 문서화 대상이라 사내에서 “연구소 작업자 개인 손기술에 의존하는 방식”을 허용하지 않는 경우가 많습니다.강의에서 “원래는 칩들은 존재하지 않지만 외주 업체에서 해주는 곳도 있다”라고 설명한 것은, 기본적으로 PCB 업체는 Gerber만 받아 Bare PCB만 만들어 주는 게 원칙이지만, 요즘은 PCB 제작과 동시에 SMT Assembly까지 같이 해주는 원스톱 업체들도 많다는 뜻입니다. 이런 업체들은 보통 다음 세 가지 방식 중 하나로 일을 받습니다. 첫째, 고객이 BOM과 Pick&Place 파일만 주고 부품 구매까지 전부 업체가 대행하는 Full Turn-key 방식. 이 경우 부품 단가에 일정 마진이 붙고, 납기와 EOL 관리까지 업체가 어느 정도 책임집니다. 둘째, 고객이 주요 IC 같은 고가/긴 납기 부품은 직접 구매해서 보내고, 패시브와 범용 커넥터 등은 업체가 구매하는 Partial Turn-key 방식. 예를 들어 STM32, 고가 Motor Driver, PHY, 고정밀 ADC 같은 것만 고객이 미리 확보해서 보내고, 0402 패시브는 업체가 조달합니다. 셋째, PCB는 외주로 만들고 부품은 전부 고객이 보내는 Consignment 방식으로, 업체는 순수 조립 공정만 수행합니다. 이 방식은 단가 관리가 좋은 대신, 부품 재고관리와 Shortage 책임이 대부분 고객 쪽에 있습니다.실제 회사에서는 이 세 가지를 단계별로 섞어서 씁니다. 예를 들어 스타트업이나 소규모 팀의 초기 프로토타입에서는, 첫 버전은 Bare PCB만 외주 제작하고 핵심 IC와 주변 부품을 직접 솔더링하여 기능을 빠르게 검증합니다. 여기서 발견된 설계 이슈를 반영해 Rev.B를 만들 때는, BGA 패키지나 Fine-pitch QFP처럼 수작업 난이도가 높은 칩들은 PCB 업체에서 먼저 실장해 오고, 커넥터나 테스트 핀 같은 Through-hole 부품은 사내에서 손납땜으로 채우는 식으로 나누기도 합니다. 그리고 양산이 확정된 뒤에는 BOM 확정, 대체 부품 리스트, 조립 공정서까지 포함한 자료를 EMS 업체에 넘겨 “PCB+Assembly+검사”를 한 번에 외주로 돌립니다.연구소/사내 개발 환경이 잘 갖추어진 대기업 R&D의 경우에는 조금 다릅니다. 사내에 소형 SMT 라인이나 프로토타입 전용 라인이 있는 경우도 많습니다. 이런 곳에서는 다음과 같이 진행합니다. PCB는 여전히 외주 fab에서 제작하지만, 조립은 사내 SMT 라인에 올려서 부품 실장, Reflow, AOI까지 내부에서 처리합니다. BGA나 QFN 같은 부품의 리워크를 위한 리워크 스테이션, X-Ray 검사 장비도 사내에 있는 경우가 많습니다. 이런 환경에서는 “칩을 따로 사서 직접 솔더링”이라고 해도, 엔지니어가 인두를 들고 일일이 붙이는 수준이 아니라, 생산기술팀에 조립을 의뢰하는 형태가 됩니다.정리하자면, 질문 주신 “외주제작된 PCB에 칩만 따로 구매해 직접 솔더링하는 경우”는 다음과 같은 상황에서 많이 발생합니다. 첫째, 1~5장 수준의 극소량 프로토타입, 혹은 개인/학생 프로젝트. 둘째, 부품 조달이 까다롭거나 기밀 이슈로 인해 특정 칩은 외주 업체에 넘기기 어려운 경우. 셋째, 회로가 자주 변경될 때라 SMT 라인 세팅과 스텐실 제작 비용을 매번 지불하기 아까운 경우입니다. 반대로 현업에서 본격적인 제품 개발과 양산을 한다고 하면, 대부분은 PCB Artwork 이후에 Bare PCB만 받는 게 아니라, BOM, Pick&Place, Assembly Drawing까지 넘겨서 “PCB 제작 + SMT 조립”을 함께 외주 주거나, 사내 SMT 라인에서 조립하는 방식이 일반적이라고 보시면 됩니다.
- 0
- 2
- 36




