2/04/2015

Media Independent Interface (L2 와 L1 Interface)

1. MII Interface

일반적으로 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기반으로 사용하기에 간단히 설명 
위키에 설명이 너무 잘되어 있어 관련 세부설명은 생략한다.
  1. EMAC: 실제 MAC Data 전송  
    1. MAT To PHY  (일반적인 구성이며, 아래 그림과 동일)
    2. MAC To MAC (TX, RX를 Cross로 연결 구성)
  2. MDIO: Phy 칩 Control  
    1. Master/Slave 개념으로 동작  
    2. 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 나가는 구성  
다만 각 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 로 연결해주는 것이다. 

가장 쉬운 예로 
  1. AP의 MAC 과 SWITCH 의 MAC 연결 
  2. AP의 MAC 과 AP 의 MAC 연결 

정확히 말해, PHY 정보를 얻어오는 MDIO Interface를 사용할 수가 없다.
그래서, SWITCH 인 RTL8370M은 SMI Interface를 별도로 제공한다.

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