일반적으로 SoC를 보면 EMAC/MAC 과 PHY Chip 분리되어 동작이 되는 것을 알 수가 있으며, 그 구조를 보면, Ethernet 의 L2와 L1의 구성이라고 생각하면 되겠다.
처음 MII (Media Independent Interface)를 접한 것은 MPC850T을 사용할 때 FAST Ethernet을 사용하면서 이것을 처음 접했는데, 그 때는 왜 사용하는 지 궁금했다.
하지만, 매번 SoC를 접하면서 각 종류별로 매번 MII를 접하다보니, 이것에 대해 정리를 하고자 아래와 같이 간단히 서술만 하기로 한다.
사실 MII 개념은 어렵지 않기 때문에, 한번 이해하면 다음에도 다른 MII 도 쉽게 이해한다.
그리고, Linux에서도 설정도 쉽게 하므로 자세한 설명은 모두 생략한다.
MII를 사용하는 이유는 뻔하다 SoC와 Phy Chip간의 중간 Interface로 사용하는 것으로 USB를 비롯하여 각 다른 고속 Serial Interface에서도 많이 볼 수있는 현상이다.
즉, Phy 칩의 표준 Interface라고 생각하면 될 꺼 같다.
1.1 MII(Media Independent Interface)의 종류들
MII(Media Independent Interface)만 알면 나머지도 쉽게 이해가 가면 어렵지가 않지만, 요즘은 거의 GMII기반으로 사용하기에 간단히 설명
MII
https://en.wikipedia.org/wiki/Media-independent_interface
GMII
https://en.wikipedia.org/wiki/Media-independent_interface#Gigabit_media-independent_interface
RGMII
https://en.wikipedia.org/wiki/Media-independent_interface#Reduced_Gigabit_Media_Independent_Interface
SGMII
https://en.wikipedia.org/wiki/Media-independent_interface#Serial_Gigabit_Media_Independent_Interface
XGMII
https://en.wikipedia.org/wiki/Media-independent_interface#10_gig
1.2 GMII(Gigabit Media Independent Interface) 구조
GMII의 MAC 과 PHY의 기본 Interface로 EMAC는 실제 DATA 구성이며, MDIO는 제어를 위해 사용되어진다.
1.3 MII와 GMII 다른점
MII : 2.5 MHz or 25 MHz
GMII : 2.5 MHz or 25MHz or 125MHz
MII 일 경우, TX, RX Clock을 모두 PHY에서 제공하는 Sync 방식
GMII 일 경우, TX Clock Host가, RX은 PHY가 제공한다. Async 방식 (Giga bit 일 경우)
Ref.
http://www.ti.com/lit/ug/sprugx8b/sprugx8b.pdf (EMAC)
1.4 ERROR Report
MII 이든, GMII 이든, 에러가 발생을 하며 이를 보고를 한다. 보통이를 EMAC Driver에서 제공하며,
Linux Device Driver에서는 이를 다시 /proc/net/dev로 연결을 해놓는다.
RX_ER, CRS, COL
관련 정보
2 How To Connect it with Host
각 Host 의 MAC-> MAC or PHY 연결하는 방법으로 간단하게 그림으로 설명
Host에서 PHY로 연결을 했기때문에, PHY의 정보를 읽어 올 수 있다. 그리고, PHY에서
발생하는 ERR 및 및 CRS, COL을 연결한다.
Host에서 MDIO Interface를 사용하여 PHY를 제어를 하며, CLK을 모두, PHY에서 얻어오는
Sync 방식이다.
2.2 MAC to MAC (GMII)
3. Timing
GMII Interface Timing 도를 구하지 못해, 아래와 같이, RGMII Timing도를 구함.
GTX_CLK의 Rising Edge에 가 Setup Time이며, 뒤는 Hold Time이다.
그래서, Data는 Setup Time 약간 뒤에 있는 것이 좋다.
GMII Interface 관련자료
http://hearlink.tripod.com/CandCDB/GMII_REPORT.pdf
즉, Phy 칩의 표준 Interface라고 생각하면 될 꺼 같다.
1.1 MII(Media Independent Interface)의 종류들
MII(Media Independent Interface)만 알면 나머지도 쉽게 이해가 가면 어렵지가 않지만, 요즘은 거의 GMII기반으로 사용하기에 간단히 설명
위키에 설명이 너무 잘되어 있어 관련 세부설명은 생략한다.
MII
https://en.wikipedia.org/wiki/Media-independent_interface
GMII
https://en.wikipedia.org/wiki/Media-independent_interface#Gigabit_media-independent_interface
RGMII
https://en.wikipedia.org/wiki/Media-independent_interface#Reduced_Gigabit_Media_Independent_Interface
SGMII
https://en.wikipedia.org/wiki/Media-independent_interface#Serial_Gigabit_Media_Independent_Interface
XGMII
https://en.wikipedia.org/wiki/Media-independent_interface#10_gig
1.2 GMII(Gigabit Media Independent Interface) 구조
GMII의 MAC 과 PHY의 기본 Interface로 EMAC는 실제 DATA 구성이며, MDIO는 제어를 위해 사용되어진다.
- EMAC: 실제 MAC Data 전송
- MAT To PHY (일반적인 구성이며, 아래 그림과 동일)
- MAC To MAC (TX, RX를 Cross로 연결 구성)
- MDIO: Phy 칩 Control
- Master/Slave 개념으로 동작
- AP의 MDIO가 Master가 되어 , PHY의 제어와 기능확인
https://www.ti.com/lit/ug/sprugx8b/sprugx8b.pdf (6.2.3) |
TI의 EMAC 과 일반 PHY가 아닌 Switch (RTL8370M) 외부와 연결시,아래의 그림 MAC To MAC으로 연결한다.
처음 이부분 때문에 조금 혼동이 되었으며, 아래와 같은 구성으로 연결이 된다.
처음 이부분 때문에 조금 혼동이 되었으며, 아래와 같은 구성으로 연결이 된다.
1.3 MII와 GMII 다른점
MII : 2.5 MHz or 25 MHz
GMII : 2.5 MHz or 25MHz or 125MHz
MII 일 경우, TX, RX Clock을 모두 PHY에서 제공하는 Sync 방식
GMII 일 경우, TX Clock Host가, RX은 PHY가 제공한다. Async 방식 (Giga bit 일 경우)
Ref.
http://www.ti.com/lit/ug/sprugx8b/sprugx8b.pdf (EMAC)
1.4 ERROR Report
MII 이든, GMII 이든, 에러가 발생을 하며 이를 보고를 한다. 보통이를 EMAC Driver에서 제공하며,
Linux Device Driver에서는 이를 다시 /proc/net/dev로 연결을 해놓는다.
RX_ER, CRS, COL
관련 정보
# cat /proc/net/dev
2 How To Connect it with Host
각 Host 의 MAC-> MAC or PHY 연결하는 방법으로 간단하게 그림으로 설명
2.1 MAC to PHY(GMII/MII)
가장 일반적인 구성으로 MAC 과 PHY 칩을 직접 연결하여, RJ45 나가는 구성
가장 일반적인 구성으로 MAC 과 PHY 칩을 직접 연결하여, RJ45 나가는 구성
다만 각 GMII/MII/RGMII/SGMII/XGMII 조금 씩 차이는 있지만, 그 구성은 거의 다 비슷하다.
Host에서 PHY로 연결을 했기때문에, PHY의 정보를 읽어 올 수 있다. 그리고, PHY에서
발생하는 ERR 및 및 CRS, COL을 연결한다.
- 상위 EMAC은 연결 구성도 (MDIO는 생략)
Host에서 MDIO Interface를 사용하여 PHY를 제어를 하며, CLK을 모두, PHY에서 얻어오는
Sync 방식이다.
- 상위 EMAC은 연결 구성도 (MDIO는 생략)
2.2 MAC to MAC (GMII)
일반적인 구성은 아니며, Host의 MAC to MAC 직접 연결(1:1 Mapping) 했기 때문에,
정확히 PHY가 없기 때문에, PHY 정보를 얻어 올수 없으며, 아래와 같이 HW 구성도 달라진다.
즉, TX, RX를 Cross 로 연결해주는 것이다.
가장 쉬운 예로
- AP의 MAC 과 SWITCH 의 MAC 연결
- AP의 MAC 과 AP 의 MAC 연결
정확히 말해, PHY 정보를 얻어오는 MDIO Interface를 사용할 수가 없다.
그래서, SWITCH 인 RTL8370M은 SMI Interface를 별도로 제공한다.
RX_ER, CRS, COL은 GR로 연결을 된다.
RX_ER, CRS, COL은 GR로 연결을 된다.
- 상위 EMAC은 연결 구성도 (MDIO는 생략)
3. Timing
GMII Interface Timing 도를 구하지 못해, 아래와 같이, RGMII Timing도를 구함.
http://www.cnblogs.com/shengansong/archive/2012/01/04/2311894.html |
GTX_CLK의 Rising Edge에 가 Setup Time이며, 뒤는 Hold Time이다.
그래서, Data는 Setup Time 약간 뒤에 있는 것이 좋다.
http://www.cnblogs.com/shengansong/archive/2012/01/04/2311894.html |
GMII Interface 관련자료
http://hearlink.tripod.com/CandCDB/GMII_REPORT.pdf