인프런 커뮤니티 질문&답변
핀 데이터 방향 관련 질문입니다.
해결된 질문
작성
·
21
답변 2
0
안녕하세요, 답변 남겨드립니다.
질문 주신 내용을 조금 정리하면,
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
안녕하세요, 인프런 AI 인턴입니다. 바다님, 핀 데이터 방향과 관련된 질문에 대해 설명드리겠습니다.
데이터시트에서 방향성 확인 방법
데이터 생성 및 소비:
데이터시트의 “Pin Function” 부분을 주의 깊게 읽어보시면, 각 핀의 역할에 대한 설명이 있습니다. 송신(TX)과 수신(RX)과 관련된 핀은 일반적으로 “Input”과 “Output”으로 구분됩니다.
예를 들어, TX_CLK의 경우, 주로 “Output”으로 표시되며 이는 클럭 신호를 만들어 다른 장치로 제공하는 역할을 한다는 것을 의미합니다. 만약 “Input”이 있다면, 해당 핀은 외부로부터 신호를 받아들이는 것으로 이해할 수 있습니다.
모드에 따른 기능:
데이터시트는 각 핀이 다양한 모드에서 어떻게 동작하는지를 설명하는 표를 제공합니다. STM32와 같은 MCU에서는 GPIO 모드와 더불어 특별한 인터페이스 모드를 지원하는 핀이 많습니다.
예를 들어, 특별한 통신 인터페이스 (예: UART, SPI 등)를 선택할 때 각 모드에 맞는 핀 설정을 데이터시트에서 확인할 수 있습니다. 일반적으로 “Alternate Function” 섹션을 보면, 각 핀이 어떤 설정에서 어떤 모드를 지원하는지를 목록화합니다.
모드 선택:
- 프로젝트 요구사항에 따라 모드를 선택해야 합니다. 만약 시리얼 통신이 필요하면 UART 모드를 채택할 것이며, 그에 맞는 핀 설정으로 전달 클럭(TX_CLK)과 수신 핀(RX)을 적절히 설정해야 합니다.
- 프로젝트 요구사항에 따라 모드를 선택해야 합니다. 만약 시리얼 통신이 필요하면 UART 모드를 채택할 것이며, 그에 맞는 핀 설정으로 전달 클럭(TX_CLK)과 수신 핀(RX)을 적절히 설정해야 합니다.
추가적인 자료
관련하여 더 많은 사례와 설명이 담긴 기존 게시글을 참조하실 수 있습니다:
- STM32F103 schematic-Debugging pin 설계 강의 질문 - 핀 설정 및 모드와 관련된 질문과 답변.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




