상세 컨텐츠

본문 제목

임베디드 시스템의 Ethernet PHY 100FDX/10FDX 고정 사용 with W6100-EVB

WIZnet

by 잡기장 2024. 4. 22. 16:33

본문

 

Ethernet 10Mbps 및 100Mbps 개요

이더넷은 Xerox PARC에서 개발된 네트워킹 기술로, 원래는 로컬 에어리어 네트워크 (LAN)를 위해 설계되었습니다. 이더넷은 그 이후로 많은 변화를 겪었지만, 오늘날에는 가장 널리 사용되는 유선 네트워크 기술 중 하나입니다.

10Mbps 이더넷

10Mbps 이더넷은 가장 초기의 이더넷 표준 중 하나로, 초당 10 백만 비트의 데이터 전송 속도를 제공합니다. 이는 당시에는 매우 빠른 속도였으며, 이더넷이 넓게 채택되는 데 크게 기여하였습니다. 10Mbps 이더넷은 일반적으로 10Base-T라는 이름으로 알려져 있습니다.

100Mbps 이더넷

100Mbps 이더넷은 10Mbps 이더넷에 비해 10배 더 빠른 데이터 전송 속도를 제공합니다. 이 표준은 1995년에 IEEE 802.3u로 발표되었으며, Fast Ethernet라고도 불립니다. 100Mbps 이더넷은 일반적으로 100Base-TX라는 이름으로 알려져 있습니다.

 

각기능 소개

10Mbps 이더넷 기능

10Mbps 이더넷은 비교적 단순한 네트워킹 환경에서 사용되며, 작은 사무실이나 가정에서의 사용을 목표로 합니다. 이 표준은 UTP 케이블을 사용하여 데이터를 전송하며, 최대 100미터까지의 거리를 두고 장치를 연결할 수 있습니다.

  • 속도: 초당 10 메가비트(Mbps)의 데이터 전송 속도를 제공합니다.
  • 표준: IEEE 802.3이라는 표준에 정의되어 있으며, 1980년대 중반에 널리 사용되기 시작했습니다.
  • 케이블: 주로 트위스트 페어 케이블을 사용하며, 최대 100미터의 케이블 길이를 지원합니다.
  • 용도: 초기 사무실 및 소규모 네트워크 환경에서 널리 사용되었습니다.

100Mbps 이더넷 기능

100Mbps 이더넷은 더 큰 네트워크와 더 높은 대역폭이 필요한 환경에서 사용되는 것을 목표로 합니다. 이 표준은 10Mbps 이더넷과 같은 UTP 케이블을 사용하지만, 더 높은 전송 속도를 지원하기 위해 더 진보된 신호 처리 기술을 사용합니다. 또한, 이 표준은 10Mbps 이더넷과 마찬가지로 최대 100미터까지의 거리를 두고 장치를 연결할 수 있습니다.

  • 속도: 초당 100 메가비트(Mbps)의 데이터 전송 속도를 제공합니다.
  • 표준: 10Mbps Ethernet보다 더 빠른 속도를 요구하는 환경을 위해 1990년대에 IEEE 802.3u 표준으로 개발되었습니다.
  • 케이블: 일반적으로 Cat 5 이상의 트위스트 페어 케이블을 사용하며, 역시 최대 100미터를 지원합니다.
  • 듀플렉스: 100BASE-TX는 전이중(full-duplex) 및 반이중(half-duplex) 모드를 지원합니다. 전이중 모드를 사용하면, 전송과 수신이 동시에 이루어져 데이터 흐름이 개선됩니다.

공통점 및 차이점

공통점:

  • 두 표준 모두 Ethernet 기술을 기반으로 하며, MAC (Media Access Control) 주소를 사용하여 네트워크 내 장치들을 구별합니다.
  • CSMA/CD (Carrier Sense Multiple Access with Collision Detection) 방식을 사용하여 네트워크 상에서 데이터 충돌을 감지하고 처리합니다.

차이점:

  • 전송 속도: 100BASE-TX는 10BASE-T보다 10배 빠른 속도를 제공합니다.
  • 케이블 요구 사항: 100Mbps 연결은 더 높은 품질의 케이블이 필요합니다 (예: Cat 5).
  • 대역폭: 100BASE-TX는 더 많은 대역폭을 요구하며, 따라서 더 많은 데이터를 빠르게 전송할 수 있습니다.

 

Ethernet PHY 100Mbps/10Mbps 고정

Ethernet PHY를 특정 속도로 고정하는 것은 네트워크의 성능과 안정성을 조절하고, 특정 환경이나 요구 사항에 맞추기 위한 조치입니다. 자동 협상 기능을 통해 다양한 속도와 듀플렉스 설정 사이에서 최적의 구성을 자동으로 선택할 수 있지만, 특정 상황에서는 수동 설정이 더 바람직할 수 있습니다.

예를 들어, 레거시 시스템이나 덜 발전된 네트워크 기기는 자동 협상이 지원되지 않거나 잘못 구현되어 있을 수 있습니다. 이러한 경우, 미리 정해진 속도로 PHY를 설정하는 것이 연결의 안정성을 보장할 수 있습니다. 또한, 네트워크 트래픽이 많은 환경에서는 자동 협상 과정에서 발생할 수 있는 지연이나 불안정을 방지하기 위해 속도를 고정할 필요가 있습니다.

  1. 호환성 문제: 네트워크에 구형 장비나 특정 속도만을 지원하는 장비가 포함되어 있는 경우, 이 장비들과의 호환성을 위해 PHY를 고정 속도로 설정해야 할 수 있습니다.
  2. 성능 최적화: 특정 네트워크 세그먼트에서 최적의 성능을 보장하기 위해, 네트워크 관리자가 고의로 PHY를 특정 속도로 고정시킬 수 있습니다. 이는 자동 협상 과정에서 발생할 수 있는 지연을 피하기 위함일 수 있습니다.
  3. 네트워크 안정성: 자동 협상 과정에서 발생할 수 있는 문제로 인한 연결 불안정을 방지하려고 PHY 속도를 고정시킬 수 있습니다. 일부 경우, 자동 협상이 실패하면 연결이 끊어지거나 잘못된 속도로 연결될 수 있습니다.
  4. 정책 및 보안 요구: 기업이나 조직의 네트워크 정책에 따라 특정 속도로만 통신을 제한하고자 할 때 PHY 속도를 고정시킬 수 있습니다. 또한, 네트워크 성능 모니터링을 간소화하고 보안을 강화하기 위한 조치로 사용될 수도 있습니다.
  5. 트래픽 관리: 네트워크 상의 트래픽을 관리하고, 네트워크의 특정 부분에서 트래픽을 제한하기 위해 사용될 수 있습니다. 예를 들어, 관리 트래픽을 위해 특정 포트의 속도를 제한할 수 있습니다.
  6. 장비의 기술적 제한: 일부 장비는 자동 협상 기능을 지원하지 않거나 제대로 구현하지 않아 속도를 수동으로 설정해야 할 수 있습니다.

물론, 이러한 상황은 네트워크의 설계, 구성, 사용하는 장비의 종류 및 기능에 따라 달라질 수 있습니다. 현대의 네트워크 장비는 대부분 자동 협상 기능(Auto-Negotiation)을 지원하며, 잘 작동하지만 특수한 경우를 제외하고는 수동으로 속도를 설정할 필요는 점점 줄어들고 있습니다.

Ethernet Auto-Negotiation (이더넷 자동 협상)

IEEE 802.3u는 이전에 10Mb/s에 불과했던 이더넷 속도는 100Mb/s의 도입과 1000Mb/s 의 상용화로 인해 장치간의 속도, 이중 모드, Flow control과 같은 전송 매개변수를 Physical Layer에서 결정하는 절차는 중요한 요소입니다. 디바이스와 허브(스위치)등의 양쪽 Node를 연결하고자 할 때 사용하는 이더넷 속도를 모르는 상태에서 Ethernet Cable을 연결했을 때 전송 속도를 결정하기 위해 플러그 앤 플레이(PnP)와 자동 협상 프로토콜이 생성되었습니다.

자세한 내용 : https://maker.wiznet.io/jaden/projects/auto%2Dnegotiation%2Danalysis/?page=2&serob=rd&serterm=all

 

W5100S, W5500 Auto-Negotiation analysis

Auto-Negotiation analysis

maker.wiznet.io

 

 

임베디드 시스템의 Ethernet PHY 100Mbps/10Mbps 고정 테스트

임베디드 시스템에서 Ethernet PHY를 100Mbps 또는 10Mbps로 고정하는 방법은 HOST system을 통해서 PHY를 컨트롤하는 것입니다. 테스트에서 사용된 임베디드 시스템은 32bit ARM Cortex-M3가 탑재된 STM32F103 시리즈 MCU를 사용하고 있는 WIZnet의 W6100-EVB 보드입니다. 해당 EVB 보드에는 W6100 Ethernet IC가 장착되어 있고 내부에 10/100 Ethernet PHY가 내장되어 있습니다.

W6100-EVB (STM32F103) 보드

 

PHY Configuration 방법 가이드

기본적으로 PHY의 특정 레지스터를 Access 하거나 Register를 컨트롤 하기 위해서는 PHY에서 제공하는 표준 MDC/MDIO 인터페이스를 통해 접근해야 하지만 Ethernet PHY가 내장된 W6100은 사용자 컨트롤에 용이하도록 wiz_mdio_write() 함수 및 wiz_mdio_read() 함수를 통해 PHY Register에 r/w access가 가능하도록 io6Library에서 제공하고 있습니다.

https://github.com/Wiznet/io6Library/tree/master

 

GitHub - Wiznet/io6Library: io6Library is the integrated library for dual TCP/IP statck contorller such as W6100.

io6Library is the integrated library for dual TCP/IP statck contorller such as W6100. - Wiznet/io6Library

github.com

 

해당 함수를 사용하기 위해서는 다음의 경로( io6Library/Ethernet/wizchip_conf.h )에서 _PHY_IO_MODE__PHY_IO_MODE_MII_ 로 설정되어 있어야 합니다.

/**
 * @brief Select PHY Access Mode
 * @details @ref _PHY_IO_MODE_ selects PHY access method.
 * @todo You should select one of @ref _PHY_IO_MODE_PHYCR_ or @ref _PHY_IO_MODE_MII_.
 * @sa ctlwizchip()
 */
#define _PHY_IO_MODE_                  _PHY_IO_MODE_MII_ //_PHY_IO_MODE_PHYCR_

 

io6Library/Ethernet/W6100/w6100.c

 

또한 아래와 같이 W6100 Datasheet의 6.8.2 Ethernet PHY Operation Mode Configuration 에 따르면 PHYCR 을 통해 Mode를 변경하기전에 PHYLCKR(PHY Lock Register)로 해당 Register 접근을 Unlock 해주고, Mode 설정 이후, PHY 를 Reset 후 재가동시켜야 Mode 설정이 완료되는 것을 확인할 수 있습니다.

Ethernet PHY Operation Mode Configuration 플로우

 

F/W 작성 가이드

해당 내용은 하기의 W6100-EVB Github 레포지토리에서 wizchip_conf.c 에서 ctlwizchip() 함수를 사용하여 PHY Mode를 설정할 수 있으며, main.c에서 아래 코드를 작성하면 됩니다.

https://github.com/Wiznet/W6100-EVB/tree/master

 

GitHub - Wiznet/W6100-EVB: W6100-EVB Library and Example,

W6100-EVB Library and Example,. Contribute to Wiznet/W6100-EVB development by creating an account on GitHub.

github.com

 

( https://github.com/Wiznet/W6100-EVB/blob/master/W6100_EVB_FSMC_DMA/Drivers/io6Library/Ethernet/wizchip_conf.c#L313 )

 

 

ctlwizchip() 함수에서 정의된 구조체를 사용하여 사용자 임의의 PHY Mode를 정의할 수 있습니다.

typedef struct wiz_PhyConf_t
{
      uint8_t mode;     ///< set by @ref PHY_MODE_MANUAL ,@ref PHY_MODE_AUTONEGO, or @ref PHY_MODE_TE
      uint8_t speed;    ///< set by @ref PHY_SPEED_10 or @ref PHY_SPEED_100
      uint8_t duplex;   ///< set by @ref PHY_DUPLEX_HALF @ref PHY_DUPLEX_FULL 
}wiz_PhyConf;

 

아래와 같이 해당 구조체에 100FDX 또는 10FDX를 정의하고 ctlwizchip() 함수를 통해서 PHY Mode 설정 및 PHY Reset을 수행하며 W6100에 내장된 PHY의 Speed 및 Duplex 가 설정이 완료됩니다.

/* PHY configuration Register Unlock */
uint8_t phylock = SYS_PHY_LOCK;
ctlwizchip(CW_SYS_UNLOCK,&SYS_PHY_LOCK);

/* PHY configuration structure */
wiz_PhyConf phy_conf;

/* Configure PHY */
phy_conf.mode = PHY_MODE_MANUAL;
//phy_conf.mode = PHY_MODE_AUTONEGO;
if(phy_conf.mode == PHY_MODE_MANUAL)
{
	phy_conf.speed = PHY_SPEED_100;     // PHY_SPEED_10
	phy_conf.duplex = PHY_DUPLEX_FULL;  // PHY_DUPLEX_HALF
}

/* Set PHY configuration */
ctlwizchip(CW_SET_PHYPOWMODE, &phy_conf);

/* Reset PHY */
ctlwizchip(CW_RESET_PHY, &phy_conf);
delay(1000*3); // more than 1000ms

/* Get PHY configuration */
ctlwizchip(CW_GET_PHYPOWMODE, &phy_conf);

printf("\r\nMode : %s\r\n", phy_conf.mode ? "AUTO" : "MANUAL");
if(phy_conf.mode == PHY_MODE_MANUAL)
{
	printf("Speed : %s\r\n", phy_conf.speed ? "100M" : "10M");
	printf("Duplex : %s\r\n", phy_conf.duplex ? "FULL" : "HALF");
}

 

설정이 완료되면 아래와 같이 기존 Auto-Negotiation(자동 협상)을 통한 100FDX 우선결정이 아니라 사용자가 임의로 설정한 PHY Mode에 따라서 PHY Speed 및 Duplex가 변경되는 것을 확인할 수 있습니다.

W6100-EVB 와 24port Gigabit Switch 연결
100FDX/10FDX/10HDX 를 변경하며 LINK 테스트

 

댓글 영역