DIY를 위한 AI

2022년 9월 24일 토요일

MII(통신)

1. MII에 대해

통신의 이해에 앞서, 먼저 MAC PHY이라는 것을 알아야 한다.
  MAC(Media Access Control :
매체 접근 제어)은 다수의 장치가 하나의 매체(통신 회선)을 공유하여 사용할 때 각 단말기간의 간섭이나 충돌을 줄이도록 제어하는 것을 말한다. 바꿔 말해, 매체에 대한 접근 권한과 데이터 송신 권한을 가져가는 것을 제어하며, OSI(Open Systems Interconnection)에서 2계층인 데이터 링크에 해당한다.
  PHY(Physical layer :
물리 계층) OSI에서 1계층을 말하는 것으로 전송매체와 OSI 2계층의 사이에 위치하여 데이터의 송수신을 담당한다. 당연히 매체의 종류(트위스트 페어, 동축케이블, 광섬유, 공기(무선 전파) )에 따라 PHY가 변경되어야 하며, 동작 가능한 속도의 범위(10 Mbps, 100 Mbps, 1 Gbps, 10 Gbps )도 다르므로 MAC과 호환되는지 확인하도록 한다.

 

기존의 10 Mbps 이더넷 표준을 확장하여, 1995년에 100 Mbps MAC PHY를 연결하도록 IEEE 802.3u 규격에 의해 지정된 통신표준을 MII(Media Independent Interface : 매체 독립형 인터페이스)라고 한다. 이름과 같이 매체를 어떤 것을 쓰더라도 통용 가능하여 어떤 환경에서도 광범위하게 쓰이는 통신이다.
 
100 Mbps를 지원하도록 하는 MII 16개의 회선들은 공간적으로 부담이 크다. 이에 통신속도를 2배로 하고 회선수를 반으로 줄인 RMII(Reduced Media Independent Interface : 축소된 매체 독립형 인터페이스)도 종종 쓰이므로 함께 알아본다.
 
참고로 트위스트 페어와 같이 매체에 따라서 바뀌어야 하는 통신을 MDI(Media Dependent Interface : 매체 종속형 인터페이스)라고 한다.

 

2. MII/RMII 결선도와 패킷

MII는 송신과 수신에 각 4개의 데이터용 회선을 보유하며 기준 클럭 25 MHz를 사용하여 표준 100 Mbps에 맞춘다. RMII의 경우 송신과 수신에 각 2개의 데이터용 회선을 보유하며 기준 클럭 50 MHz를 사용하여 100 Mbps로 통신한다. 둘 다 10 Mbps 속도의 통신으로 변경할 수도 있는데 MII는 기준클럭을 1/10으로 낮추어 2.5 MHz(2.5M×410M)으로, RMII는 데이터를 10개 클럭동안 유지(100M÷1010M)하여 동작한다. 이를 위한 결선도는 아래와 같다.

 

 

그림과 같이 16개의 회선을 연결하며 송신용과 수신용으로 구분된다. MAC이 송신할 때는 MAC이 송신 활성화용 TX_EN(Enable : 사용 가능)을 제어하며 PHY가 보내는 TX_CLK에 맞추어 4개의 송신회선을 통해 보낸다. TX_ER(Error : 오류)은 송신 중 오류가 발생했을 때 송신중인 데이터 프레임이 망가뜨려 PHY가 외부로 전송하지 않게 한다. 다만 실제로 잘 쓰이지 않아 회선 자체를 연결하지 않는 경우가 많고, PHY 제조사에서 제공하지 않는 경우도 있다. 있는데 사용하지 않을 경우 PHY측에 풀다운을 권장한다.
  MAC
이 수신할 때는 PHY가 수신된 데이터의 유효함을 알리는 RX_DV(Data Valid : 데이터 유효)와 함께 RX_CLK에 맞추어 4개의 수신회선을 통해 받는다. RX_ER은 매체에서 수신된 신호를 유효한 데이터로 디코딩(변환)이 불가함을 알린다.
 
남은 COL(Collision detect : 충돌 검출)CRS(Carrier sense : 반송파 감지)는 클럭과 무관한 비동기식 신호로 반이중 통신일 때 PHY가 감지한 상황을 MAC에 전달한다. COL의 경우 반이중 통신 모드에서 송신과 수신이 동시에 발생한 경우 ‘1’로 동작한다. CRS는 매체에서 반송파를 감지할 때, , 송신 또는 수신 중일 때를 감지하여 ‘1’로 동작한다. 둘 다 전이중 통신일 때는 항상 ‘0’이다. COLCRS까지 하여 총 회선의 수는 16개가 된다.
 
참고로 PHY의 외부에 크리스탈(Crystal)과 같은 발진소자를 25 MHz로 선정하여 결선한다. 그리고 송신 및 수신 시 클럭을 그대로 가져와서 TX_CLKRX_CLK를 통해 출력한다.

 

 

그림과 같이 RMIIMII에서 회선을 대폭 줄였다. 송신의 경우 실용성 낮은 TX_ER을 제거하고 동시에 송신 회선을 절반으로 줄인다. 수신의 경우 CRSRX_DV를 합쳐 CRS_DV라는 이름으로 복합된 신호를 받으며 COL을 제거하고 수신 회선을 절반으로 줄인다. 그리고 송신의 TX_CLK와 수신의 RX_CLK를 합쳐 REF_CLK(Reference : 기준)라는 이름으로 송수신 공용 클럭을 사용한다. 이것으로 회선의 수는 8개가 된다.
  MII
와 동일하게 25 MHz를 받아 내부에서 50 MHz로 변경하여 CLK에 쓰는 것이 일반적이지만, RMII에 한해 PHY를 거치지 않고 외부에서 REF_CLK로 직접 연결하기도 한다. , 외부 결선 방식은 제품에 따라 회선이 출력 전용인 경우 동작하지 않으니 주의한다.

 

 

MII에서 송신과 수신 모두 클럭의 상승 에지를 기준으로 데이터를 인식한다는 점을 알고 그림을 확인한다. 송신에서 TX_EN에 따라 매체인 트위스트 페어(MDI)로 데이터를 전송하는데 회선에서 패킷으로의 인코딩(일정한 변환 시간 필요)이 필요하다. 변환 시 패킷의 시작을 알리는 ‘J/K’와 종료를 알리는 ‘T/R’4-bit에서 5-bit 인코딩 기준에 따른 것으로 여기서는 다루지 않는다.
  
참고로 트위스트 페어에서 동작하는 데이터는 25 MHz 기준 5-bit 단위이므로 125 Mbps라고 할 수 있다.

 

 

수신은 회선의 ‘J/K’를 기준으로 패킷의 시작이 되어야 하나 5-bit에서 4-bit로의 디코딩 시간에 따라 RX_CRS에서부터 반응이 지연되고 RX_DV는 데이터가 디코딩 완료된 시점부터 시작한다. 패킷의 종료를 알리는 ‘T/R’ 기준으로도 RX_CRS는 그만큼 지연된다.(RX_CLK 생략)

 

3. MII/RMIIPHY의 제어

 

외부 MDI에 대한 설정 중 교섭방법(자동 또는 고정)이나 속도(10 Mbps 또는 100 Mbps), 이중모드(전이중 또는 반이중), 커넥터의 LED 동작 방법 등을 지정하도록 MAC PHY사이에 별도의 통신을 추가하는데 이를 SMI(Serial Management Interface : 직렬 관리 인터페이스) 또는 MIIM(MII Management : MII 관리)라고 한다. 이러한 이름이 있지만 통신 이름보다 회선의 이름인 MDIO(Management Data Input/Output : 관리 데이터 입출력)으로 더 자주 쓰이는 편이다.
 
참고로 MDIOMDC(Management Data Clock : 관리 데이터 클럭) I2C 통신과 유사하게 병렬접속이 가능하므로 하나의 MAC에서 다수의 PHY에 대한 제어가 가능하다. 그리고 1 Gbps, 10 Gbps 등 보다 빠른 통신용 PHY에도 SMI는 들어가게 되므로 빠뜨리지 않도록 한다.

 

SMI의 결선은 I2C 통신과 유사하지만 데이터 프레임은 다른데 각 프레임이 32-bit씩으로 구성되어 있다. MAC에서 PHY의 주소, 쓰기 또는 읽기 식별자를 포함하여 16-bit를 클럭과 함께 보낸다. 그 후 클럭 16회 동안 쓰기라면 MAC에서 데이터를 전송하고, 읽기라면 PHY에서 응답한다. 여기에 쓰이는 클럭은 25 MHz의 주파수가 일반적이다.

 

4. MII/RMII의 상위통신

MIIRMII10 Mbps 또는 100 Mbps 전용으로 이보다 빠른 속도를 위해 회선 수와 클럭의 주파수를 더 증가시키는 것으로 1 Gbps의 통신을 가능하게 한다.

 

 

MII에서 송신과 수신의 회선 수를 4개에서 8개로 변경하고 클럭의 주파수를 125 MHz로 하여 1 Gbps(125M×81G)에 맞춘 것을 GMII(Gigabit Media Independent Interface : 기가비트 매체 독립형 인터페이스)라고 한다.
 
송신의 경우 하위 속도인 100 Mbps10 Mbps도 지원할 수 있도록 125 MHz 전용인 GTX_CLK(Gigabit Transmit)25 MHz 2.5 MHz 겸용인 TX_CLK을 별도로 연결한다. 확인해둘 점은 TX_CLK의 경우 PHY에서 생성하여 MAC으로 전송하지만 GTX_CLK의 경우 MAC에서 데이터 8개와 함께 송신한다는 것이다. 이는 PHY가 클럭을 보내고 MAC으로부터 데이터를 받기까지의 위상지연을 없애려 하고 하드웨어적으로도 GMII부터 클럭과 회선의 길이를 맞춰야 한다는 것을 의미한다.

수신의 경우 회선의 수만 4개에서 8개로 변경되는데 RX_CLK에서 통신속도에 따라 2.5 MHz, 25 MHz, 125 MHz로 변경이 된다. 이것으로 회선의 수는 총 25개가 된다.

클럭은 MACPHY측 각각의 외부에 발진소자를 가지고 있어야 하며 여전히 25 MHz를 기준으로 하되 내부에서 속도를 높여 125 MHz를 생성한다.

그 외 하드웨어 적인 다른 부분은 MII와 동일하다. 그리고 데이터를 인식하는 기준도 송수신 모두 동일하게 상승 에지에서 샘플링한다.

 

 

GMII로부터 송신과 수신의 회선수를 8개에서 4개로 줄였지만 클럭의 주파수는 125 MHz를 그대로 사용하되, 데이터를 인식하는 기준을 상승 에지와 하강 에지 모두를 사용하는 DDR(Double Data Rate : 이중 데이터 전이 또는 이중 펌핑)를 적용하여 1 Gbps(125M×2×41G)에 맞춘 것을 RGMII(Reduced Gigabit Media Independent Interface : 축소된 기가비트 매체 독립형 인터페이스)라고 한다.
 
송신의 경우 클럭을 TX_CLK로 통합하고 이것과 데이터 4회선 및 TX_CTL(Control : 제어)을 함께 MAC에서 전송한다. TX_CTLTX_EN TX_ER 신호가 합쳐진 것으로, TX_C로 표기되는 경우도 있으니 클럭과 혼동하지 않도록 한다.
 
수신의 경우 클럭을 RX_CLK 그대로 사용하고 이것과 데이터 4회선 및 RX_CTL을 함께 PHY에서 전송한다. RX_CTL RX_DV RX_ER 신호가 합쳐진 것으로, RX_C로 표기되는 경우도 있으니 클럭과 혼동하지 않도록 한다. 이리하여 회선의 수가 14개로 축소된다.
 
참고로 RGMII의 경우 v1.3에서 2.5 V, v2에서 1.5V와 같이 버전에 따라 동작전압도 다를 수 있으니 주의한다.

 

 

그림과 같이 GMII RGMII를 비교하면 DDR 방식의 특성을 파악하기 쉽다. GMII의 경우 MAC에서 GTX_CLK를 통해 받은 클럭을 PHY에서 그대로 사용한다. 데이터는 MAC이 하강 에지에서 전환시켰으므로 PHY는 상승 에지에서 데이터를 판독한다.
  RGMII
의 경우 MAC에서 TX_CLK를 통해 받은 클럭을 PHY1/4주기 만큼의 시간을 지연시킨다. 데이터는 MAC이 모든 에지에서 전환시켰으므로 PHY1/4주기 지연한 클럭으로 모든 에지에서 데이터를 판독한다. 이 방법을 DDR이라고 한다.

 

그 다음으로 GMII에서 송수신 회선을 각각 32개로 변경하고 클럭 주파수를 156.25 MHz, DDR 방식을 적용하여 10 Gbps(156.25M×2×3210G)에 맞춘 XGMII(10-Gigabit Media Independent Interface : 10기가비트 매체 독립형 인터페이스)도 있다. XGMII의 경우 RX_D[31:0], TX_D[31:0]라는 데이터회선과 RX_C[3:0], TX_C[3:0]라는 제어회선이 각각 4개씩 존재한다.
  
다시 XGMII에서 송수신 회선을 각각 64개로 변경하고 클럭 주파수를 390.625 MHz을 적용하여 25 Gbps(390.625M×6425G)에 맞춘 25GMII(25-Gigabit Media Independent Interface : 25기가비트 매체 독립형 인터페이스)가 있다. 25GMIIDDR 방식을 적용하여 50 Gbps(390.625M×2×6450G)에 맞춘 50GMII(50-Gigabit Media Independent Interface : 50기가비트 매체 독립형 인터페이스)도 있다. 25GMII50GMII RX_D[63:0], TX_D[63:0] 데이터 회선과 RX_C[7:0], TX_C[7:0] 제어회선을 각각 8개씩을 가진다.
 
상기한 10 Gbps 이상의 통신들에 대한 상세는 생략한다. 그 외에도 이 통신들 이상으로도 빠른 통신들이 계속 개발 및 규격화되고 있다.

 

5. GMII의 변형

 

1 Gbps에 도달할 때부터 이미 회선의 수가 과도하게 많아 공간적인 제약이 커지므로 송신과 수신을 직렬방식으로 변형하는데 이를 SGMII(Serial Gigabit Media Independent Interface : 직렬 기가비트 매체 독립형 인터페이스)라고 한다. 그러기 위해 각 회선이 1 Gbps에 도달해야 하는데 외부의 영향에 민감해지므로 노이즈를 제거할 수 있도록 차동방식으로 변경한다. MACPHY의 각 내부에서는 625 MHz로 동작하며 수신한 데이터를 DDR방식으로 읽는다. 그러나 전송되는 데이터는 원 데이터가 아닌 8-bit10-bit로 인코딩한 것으로 인식할 때도 10-bit8-bit로 디코딩해야 한다. 이리하여 송신과 송신 클럭 각 1쌍과 수신과 수신 클럭 각 1쌍만으로 각각 1 Gbps(625M×2×0.81G)에 맞추게 된다. , 최대 회선수는 8개가 되는데, 내부의 클럭으로도 판독이 가능하므로 최소 4개가 될 수 있다. 참고로 회선상에서는 8-bit10-bit로 전송되므로 1 Gbps1.25배인 1.25 Gbps라고 할 수 있다.

더불어 4개의 PHY로부터 SGMII 전송속도 1.25 Gbps 4개조를 묶어내어, 송신 1쌍과 수신 1쌍의 5 Gbps(625M×2×45G)속도로 동작하며 하나의 MAC에서 디코딩을 하는 통신도 있다. 이것을 QSGMII(Quad Serial Gigabit Media Independent Interface : 4중 직렬 기가비트 매체 독립형 인터페이스)라고 한다. 같지는 않지만 이더넷 포트 4개를 묶어 하나의 포트로 전송하는 이더넷 스위치(공유기)처럼 생각하면 이해하기 쉽다.

 

6. 결론

고속 이더넷에서 필수가 되는 통신이므로 알아 둘 필요가 있으며 PHY 이후 통신구간인 MDI 도 함께 파악하는 것이 좋다.

 

 

댓글 없음:

댓글 쓰기