CodingBox 문서

MII, RMII, GMII, RGMII: PHY로의 병렬 인터페이스

병렬 매체 독립 인터페이스(MII)는 MAC과 구리 PHY 칩을 PCB 위 몇 센티미터 구간으로 연결합니다 — 라우터, 소형 스위치, 액세스 포인트, 산업용 컨트롤러, RJ45가 달린 모든 임베디드 보드 내부에서 쓰입니다. 이들은 트랜시버 케이지까지 이어지지는 않지만, 케이지까지 이어지는 모든 인터페이스의 기준점이 됩니다: SGMII는 “직렬화된 GMII”이고, XGMII는 “10G에서의 GMII”이며, 구리 SFP 내부의 PHY도 이 가운데 하나로 내부 통신을 합니다. 이 페이지는 MII, RMII, GMII, RGMII의 핀, 클럭, 타이밍, RGMII 지연 문제, 인밴드 상태, MDIO 관리, 각 인터페이스에서 발생하는 장애를 다룹니다.

MII(IEEE 802.3 Clause 22)

항목
속도10, 100 Mb/s
데이터4비트 TXD[3:0], 4비트 RXD[3:0]
클럭TX_CLK, RX_CLK 모두 PHY에서 공급: 25 MHz(100M), 2.5 MHz(10M)
제어TX_EN, TX_ER, RX_DV, RX_ER, CRS(carrier sense), COL(collision)
관리MDC, MDIO(공유)
신호 수데이터/제어 16 + 관리 2
전압 레벨5 V/3.3 V TTL
전송 거리수 cm; MAC당 PHY 1개

마이크로컨트롤러와 FPGA에서는 여전히 쓰이지만, 핀 수 문제로 RMII가 그 자리를 대체했습니다.

RMII(RMII Consortium spec v1.2)

항목
속도10, 100 Mb/s
데이터2비트 TXD[1:0], RXD[1:0]
클럭단일 REF_CLK 50 MHz, MAC과 PHY가 공유; 오실레이터, MAC, PHY(PHY-clock-out 모드) 중 하나가 공급
제어TX_EN, CRS_DV(carrier sense와 data valid를 다중화), RX_ER(선택)
신호 수7–9
10 Mb/s 모드각 니블을 50 MHz에서 10회 반복
전송 거리cm 단위

50 MHz 기준 클럭 토폴로지는 RMII의 고전적인 버그입니다: PHY는 외부 클럭을 기대하는데 SoC는 PHY가 클럭을 공급하길 기대하면, 링크 LED는 정상인데 인터페이스는 죽어 있는 상태가 됩니다.

GMII(Clause 35)

항목
속도1000 Mb/s; 10/100에서는 MII 신호 방식으로 폴백
데이터8비트 TXD[7:0], RXD[7:0]
클럭송신은 MAC에서 공급하는 GTX_CLK 125 MHz; 수신은 PHY에서 공급하는 RX_CLK 125 MHz; TX_CLK(PHY 공급)은 10/100 폴백에서만 사용
제어TX_EN, TX_ER, RX_DV, RX_ER, CRS, COL
신호 수24 + 관리
전압 레벨2.5 V(다수 제품은 3.3 V 허용)
전송 거리cm 단위; 125 MHz 싱글 데이터 레이트에서는 타이밍 여유가 빠듯함

오늘날에는 대부분 온칩 또는 FPGA 내부 인터페이스로만 쓰이며, 보드 위에서는 RGMII가 그 자리를 대신합니다.

RGMII(Reduced GMII, HP/Marvell specification v1.3, v2.0)

항목
속도10/100/1000
데이터4비트 TXD[3:0]과 RXD[3:0], 더블 데이터 레이트: 라이징 엣지에 하위 니블, 폴링 엣지에 상위 니블
클럭TXC 125 MHz(MAC 공급), RXC 125 MHz(PHY 공급); 100M/10M에서는 25/2.5 MHz
제어TX_CTL(라이징 엣지에 TX_EN, 폴링 엣지에 TX_EN xor TX_ER), RX_CTL(RX_DV / RX_DV xor RX_ER)
신호 수12
전압 레벨2.5 V(v1.3), 1.5 V HSTL 또는 1.8 V(v2.0 옵션); 일부 PHY는 3.3 V
전송 거리≤ 10–15 cm, 길이를 맞춘 트레이스

지연 문제

RGMII는 수신단에서 클럭이 데이터 엣지보다 1.5–2.0 ns 늦게 도착해야 합니다(셋업/홀드 윈도). 이를 만족하는 방법은 세 가지입니다:

모드지연을 추가하는 주체디바이스 트리 phy-mode비고
PCB 지연(v1.3)클럭 트레이스를 약 5 cm 추가rgmii고전적이지만 불안정
PHY 내부 지연(RGMII-ID, v2.0)PHY가 TX/RX 클럭에 2 ns 추가rgmii-id오늘날 가장 흔함
MAC/SoC 내부 지연SoC가 지연을 추가rgmii + MAC 쪽 지연 레지스터
혼합PHY가 한쪽 방향에만 적용rgmii-txid, rgmii-rxid한쪽만 지원하는 경우

지연을 두 번(PCB와 PHY 모두) 추가하거나 전혀 추가하지 않으면 RGMII 특유의 장애가 나타납니다: 1G에서는 링크가 올라와도 CRC 오류가 나거나 트래픽이 없고, 100M은 정상 동작합니다(100M은 주기가 40 ns라 스큐를 견딜 수 있습니다). PHY의 지연 레지스터나 phy-mode를 바꿔서 해결합니다.

인밴드 상태

유휴 상태일 때 PHY는 RXD[3:0]에 링크, 속도, 듀플렉스 정보를 실어 보내므로 MAC은 MDIO를 읽지 않고도 클럭 분주기를 재설정할 수 있습니다: RXD[0]은 링크, RXD[2:1]은 속도(00 = 10, 01 = 100, 10 = 1000), RXD[3]은 듀플렉스를 나타냅니다. 일부 MAC은 이를 무시하고 MDIO 폴링에만 의존합니다; 기대치가 어긋나면 PHY에서는 링크가 올라왔는데 MAC에서는 다운으로 보이는 상태가 됩니다.

TBI와 RTBI

Ten-Bit Interface: MAC/PCS와 외부 SerDes 또는 광 PHY 사이에서 8b/10b로 인코딩된 1000BASE-X 심벌을 주고받습니다(125 MHz에서 10비트, RTBI는 DDR로 5비트). 보드에서는 더 이상 쓰이지 않으며, 그 직렬 후속 규격이 1000BASE-X/SGMII입니다(SGMII와 시리얼 기가비트).

비교

인터페이스핀(데이터+제어)클럭최대 속도전압일반적인 용도
MII16PHY에서 25 MHz100M3.3/5 VMCU, 레거시
RMII7–950 MHz 공유100M3.3 V임베디드 SoC + PHY
SMII포트당 2–3125 MHz100M3.3 V멀티포트 PHY(Cisco)
GMII24125 MHz(MAC 송신/PHY 수신)1G2.5 VFPGA, 온칩
RGMII12125 MHz DDR1G2.5/1.8/1.5 V보드 위 SoC ↔ PHY
SGMII4(2쌍)임베디드 1.25 GBd1G(10/100은 리플리케이션)CMLSoC ↔ PHY, SFP 케이지

PHY 관리: MDIO/MDC

항목Clause 22Clause 45
주소 지정5비트 PHY 주소, 5비트 레지스터(레지스터 32개)5비트 포트, 5비트 디바이스(PMA/PMD, PCS, PHY XS, DTE XS, AN, vendor), 16비트 레지스터
주요 레지스터0번 control(리셋, 속도, AN 활성화, 루프백), 1번 status(링크, AN 완료), 2–3번 PHY ID(OUI + 모델), 4번 AN advertisement, 5번 link-partner ability, 9/10번 1000BASE-T control/status, 17번 이상 vendor(RGMII 지연, LED)1.x PMA, 3.x PCS, 7.x AN, 30.x/31.x vendor
속도MDC ≤ 2.5 MHz(실제로는 더 빠른 경우가 많음)동일
Linux 도구mii-tool -v eth0, phytool read eth0/1/0, ethtool eth0; 드라이버는 phylib, phylink 경유phytool read eth0/1:1/0

이는 MDIO가 아니라 I²C로 관리되는 플러거블 모듈과 대조적입니다(2선식 인터페이스). 구리 SFP의 내부 PHY는 예외입니다: 많은 설계에서 이 PHY의 MDIO 레지스터는 모듈의 I²C에서 보조 주소를 통해 접근할 수 있으며, 벤더는 이를 이용해 10/100 폴백과 자동 협상 동작을 설정합니다.

흔한 PHY와 인터페이스

PHY 제품군인터페이스일반적인 보드
Marvell 88E1111/88E1512/88E1510GMII, RGMII, SGMII, TBI라우터, 구리 SFP 모듈(88E1111)
Realtek RTL8211F/RTL8201RGMII/RMIISBC, 소비자용 라우터
Microchip KSZ9031/KSZ8081/LAN8720RGMII/RMII/RMII산업용, MCU 보드
TI DP83867/DP83848RGMII, SGMII/MII, RMII산업용
Broadcom BCM54xxxRGMII, SGMII, QSGMII엔터프라이즈 스위치(쿼드/옥탈 PHY)
Marvell 88E1543/88E1548QSGMII 쿼드48포트 액세스 스위치

인터페이스별 장애

증상인터페이스원인
링크가 전혀 안 올라옴, PHY ID는 정상RMIIREF_CLK 방향/소스 불일치
100M은 정상, 1G는 트래픽 없음/CRC 오류RGMII지연 모드(ID) 오류 또는 중복 적용
PHY LED는 링크 업, MAC은 다운으로 인식RGMII/SGMII한쪽에서 인밴드 상태가 비활성화되었거나 MDIO 폴링 없음
1G에서 패킷 절반 손실GMII/RGMII트레이스 길이 스큐, 잘못된 전압 레벨
MDIO에서 PHY를 찾지 못함전체잘못된 PHY 주소(스트래핑 핀), MDIO 풀업 누락
속도가 10/100에 고정됨전체AN advertisement 레지스터 제한, 케이블 문제, 또는 1G를 지원하지 않는 phy-mode

CodingBox에서

이 페이지의 내용은 모듈의 EEPROM을 거치지 않습니다 — 구리 SFP만은 예외로, 그 내부 PHY(대개 88E1111급 부품)가 CodingBox가 읽는 것과 동일한 I²C 뒤에 자리합니다. 구리 모듈이 1G에서는 동작하는데 10/100에서 동작하지 않는다면, 원인은 A0h 식별 정보 바이트가 아니라 그 PHY의 설정과 호스트의 SGMII/1000BASE-X 모드에 있습니다(구리 이더넷과 DAC, SGMII와 시리얼 기가비트).


이 문서에서 부정확한 내용이나 오류를 발견하면 해당 부분을 선택하고 Ctrl+Enter를 눌러 해 주세요.