인프런 커뮤니티 질문&답변
핀 방향 설정 관련 질문드립니다
해결된 질문
작성
·
29
답변 1
0
안녕하세요, 답변 남겨드립니다.
글로벌 라벨의 “방향(화살표가 좌/우를 보는 것)”은 전기적으로는 넷 이름을 붙이는 표기일 뿐이라서, 실제 PCB 연결이나 동작을 바꾸지 않습니다. 현업에서는 이 방향을 “신호의 주된 흐름을 사람이 빠르게 읽기 위한 규칙”으로 정하고, 동시에 ERC(전기적 규칙 검사)에서 불필요한 에러가 나지 않도록 심볼의 핀 타입(입력/출력/양방향/패시브)을 함께 맞춰서 운용합니다. 즉, 라벨 방향은 데이터시트의 pin function을 참고하되, 최종 판단 기준은 “이 보드에서 그 넷을 누가 구동(driver)하고 누가 수신(receiver)하느냐”와 “리셋/부트 스트랩처럼 시간에 따라 역할이 바뀌는지”까지 포함하는 쪽이 실무적입니다.
질문 주신 RX_DV가 데이터시트에는 output으로 되어 있는데, 어떤 회로도(심볼)에서는 bidirectional로 표시되는 대표적인 이유가 바로 “스트랩(strap) 기능” 때문입니다. 첨부하신 표에서도 RX_DV/CRS_DV 항목에 Reset: I, PD / Active: O / Strap10처럼 적혀 있는데, 이 의미는 리셋 시점에는 해당 핀이 입력으로 동작하면서 외부 풀업/풀다운 저항 상태를 샘플링해 부트 설정을 결정하고, 정상 동작(Active) 구간에는 PHY가 MAC 쪽으로 신호를 내보내는 출력으로 바뀐다는 뜻입니다. 그래서 심볼 제작자 입장에서는 “한 단어로 딱 잘라 Input 또는 Output이라고 정의하면, 둘 중 하나의 구간이 틀려지는” 핀이 되고, 이런 핀은 양방향(bidir) 또는 패시브로 두어서 ERC 충돌을 피하는 경우가 많습니다. 실제로는 정상 동작 중 RX_DV는 PHY->MAC 방향의 출력이 맞지만, 리셋 직후 수 us~수 ms 구간(칩마다 다르지만 strap 샘플링 윈도우가 짧게 존재합니다)에는 외부 저항 네트워크가 핀 전압을 “구동”하는 형태가 되기 때문에, 회로도 관점에서는 입력 성격도 동시에 갖습니다.
정량적으로 왜 ERC가 꼬이기 쉬운지 예를 들어보겠습니다. 많은 PHY는 strap 핀에 내부 풀업/풀다운이 기본으로 걸려 있고(데이터시트에 “PU/PD”로 표기), 외부에서는 4.7 kOhm~10 kOhm 정도로 강하게 당겨서 원하는 논리값을 보장하는 구성을 자주 씁니다. 예를 들어 VDDIO=3.3 V, 입력 임계가 보수적으로 VIL<=0.3VDDIO=0.99 V, VIH>=0.7VDDIO=2.31 V라고 두고, 내부 풀다운이 50 kOhm 정도(전형적인 약한 풀)라고 가정하겠습니다. strap을 High로 만들려고 외부에 10 kOhm 풀업을 달면 분압으로 핀 전압은 Vpin = 3.3*(50k/(10k+50k)) = 2.75 V가 되어 2.31 V를 충분히 넘으니 High로 안정적으로 읽힙니다. 반대로 strap을 Low로 만들려고 10 kOhm 풀다운을 달고 내부 풀업이 50 kOhm이라면 Vpin = 3.3*(10k/(10k+50k)) = 0.55 V로 0.99 V보다 낮아 Low가 확실해집니다. 이때 ERC 관점에서는 “외부 저항이 리셋 구간에 핀을 특정 레벨로 만들어 주는 구동원 역할”을 하는데, 심볼을 Output으로 박아두면 “출력끼리 충돌” 또는 “출력에 외부에서 구동” 같은 경고가 날 수 있어서, 제작자가 bidirectional로 타협하는 경우가 많습니다. 즉, bidirectional 표기는 “정상 동작에서 양방향 데이터가 흐른다”는 뜻이 아니라, “시간/모드에 따라 입력과 출력 역할이 전환되는 멀티롤 핀이라서 ERC와 문서 가독성을 동시에 만족시키기 위한 표기”로 이해하시는 게 정확합니다.
글로벌 라벨 방향을 무엇을 보고 정하느냐로 돌아가면, 데이터시트의 pin function에서 방향을 1차로 참고하는 건 맞지만, PHY처럼 모드(MII/RMII), 리셋 스트랩, 테스트 모드에 따라 핀 역할이 바뀌는 칩은 데이터시트 표에 “Reset/Active”가 분리되어 있는지를 반드시 같이 봐야 합니다. 그리고 보드 레벨에서는 MAC(예: STM32) 쪽 RMII_RXD[1:0], RMII_CRS_DV 같은 신호는 MCU 입장에서는 입력이고 PHY 입장에서는 출력이므로, 회로도를 좌에서 우로 읽는 팀 규칙을 쓴다면 PHY 블록에서 MCU 블록으로 향하는 방향으로 라벨을 두는 식으로 통일하는 게 리뷰 효율이 좋습니다. 반대로 MDC는 보통 MAC이 클럭을 내보내는 출력이고, MDIO는 양방향이므로, MDC는 MAC->PHY 방향, MDIO는 양방향 표기가 자연스럽습니다. 이런 식으로 “프로토콜 관점의 마스터/슬레이브 구동 관계”까지 포함해서 라벨 방향을 잡으면, 회로도만 봐도 누가 드라이버인지 바로 파악되어 디버깅 시간이 줄어듭니다.
실무 예시를 하나 더 들면, RMII에서는 50 MHz REF_CLK가 보드에 따라 PHY가 출력(크리스털/PLL 기준 클럭 제공)일 수도 있고, MCU가 출력(외부 오실레이터/MCU MCO로 PHY에 공급)일 수도 있습니다. 같은 핀이라도 설계 선택에 따라 “누가 출력인지”가 바뀌기 때문에, 이런 넷은 데이터시트만 보면 착각하기 쉽고, 최종적으로는 레퍼런스 디자인/선택한 모드/클럭 트리 요구사항을 기준으로 심볼 핀 타입과 라벨 방향을 같이 결정하는 게 안전합니다. 예를 들어 MCU가 50 MHz를 공급하는 구조라면 PHY의 해당 핀은 입력으로 쓰이므로, 심볼을 무조건 Output으로 두면 ERC는 물론이고, 회로도 리뷰에서도 “클럭 소스가 어디냐”가 혼동되어 실수가 늘어납니다.
정리하면, 글로벌 라벨 방향은 전기적 정답을 맞추는 행위라기보다 “신호 소유권과 흐름을 문서화하는 행위”이고, RX_DV가 bidirectional로 보이는 건 정상 동작의 RX_DV 출력 성격과 리셋 구간의 strap 입력 성격이 공존하기 때문인 경우가 대부분입니다.





