WoW!!! Hardwired Dual TCP/IP Stack Controller - W6100 [PART II]


by MC



Overview

Part I에서 전반적인 IPv6 Feature들을 살펴 보았다.

이번 Part II에서는 이러한 IPv6 기능들이 Hardwired Dual TCP/IP Stack Controller - W6100에서 어떻게 구현되고 적용되는지 간략히 알아보겠다.

아래는 W6100의 Feature들을 정리하였다.

Features
  • Support Hardwired TCP/IP Protocols
    : TCP, UDP, IPv6, IPv4, ICMPv6, ICMPv4, IGMP, MLDv1, ARP, PPPoE
  • Support IPv4/IPv6 Dual Stack
  • Support 8 independent SOCKETs simultaneously
  • Support Ethernet Power Down Mode & Clock switching for power save
  • Support Wake on LAN over UDP
  • Support SOCKET-less Command
  • Support Serial & Parallel Host Interface
  • Internal 32KBytes Memory for TX/ RX Buffers
  • 10BaseT / 10BaseTe / 100BaseTX Ethernet PHY Integrated
  • 48 Pin LQFP & QFN Lead Free Package (7x7mm, 0.5mm pitch)
  • W5100S PIN-2-PIN Compatible

Dual TCP/IP Stack

W6100은 IPv6 전향 기술 중 하나인 Dual Stack을 지원한다. Dual Stack은 IPv4와 IPv6 모두 내재하여, IPv4 통신 뿐만 아니라 IPv6 통신을 동시에 지원할 수 있다.

아래 그림과 같이, W6100은 IPv4 주소로 수신되거나 송신되는 상위 Layer Packet을 처리하고, 동시에 IPv6 주소로 수신되거나 송신되는 상위 Layer Packet을 동시에 처리한다.

How to use W6100?

W6100은 초기화 과정 이후, SOCKET을 통해 통해 처리한다. W6100은 총 8개의 SOCKET을 가지고 있으며, 이는 아래 그림과 같이 생성-통신-소멸-생성 과정을 거치는 Life Cycle로 운영된다.

SOCKET Life Cycle을 각 단계로 살펴 보자.

Network Configuration

통신에 가장 기본이 되는 즉 W6100이 통신에 사용하게 될 MAC address, Source IP Address 등과 같은 Network 정보를 설정하는 과정이다.
다음은 W6100의 IPv4와 IPv6 Network 관련 Register를 나열한 것이다.

  • IPv4 Network Infomation Registers

    • SHAR : Source MAC Address
    • SIPR : Source IPv4 Address
    • SUBR : Subnet Mask Address
    • GAR : Gateway IPv4 Address
  • IPv6 Nework Information Registers

    • LLR : Link-Local Address (같은 망내에서 사용하는 자체 생성한 주소)
    • GUA : Global Unicast Address (Router나 DHCPv6 Server로부터 할당받은 외부통신용 IPv6 Address)
    • SUB6R : IPv6 Subnet Prefix Mask
    • GA6R : Gateway IPv6 Address

이와 같은 Register은 설정이 전에 반드시 NETLCKR를 통해 Lock을 해제 이후에 설정이 가능하다. 이 Lock 기능은 예기치 않은 오류에 의해 Network 정보가 변경되는 방지할 수 있다. 설정 이후에는 역시 NETLCKR를 통해서 Lock을 설정한다.

SOCKET Mode Configuration

W6100의 8개의 SOCKET은 아래의 Mode 중 한가지 Mode로 설정되고 Open될 수 있다.
W6100은 IPv6 추가에 따른 다음과 같은 새로운 Mode가 추가되었다.

Dual Mode SOCKET은 IPv4 및 IPv6을 모두 사용하여 통신해야하거나 상황에 따라 IPv4 및 IPv6 중 하나를 선택해야 할 때 사용할 수있는 매우 유용한 소켓 모드입니다.

IPRAW SOCKET은 Dual Mode를 지원하지 않으며, IPRAW4와 IPRAW6 Mode로 따로 구분되어 사용됨을 유의하자.

Dual Mode SOCKET은 TCP와 UDP인 경우 약간의 차이가 있다.
TCP와 UDP Dual Mode에서 각각의 SOCKET Life cycle을 살펴보자.

How to use Dual Mode SOCKET?
  • How to use W6100 in TCPD mode?

    TCPD SOCKET의 IP version은 접속하거나, 접속될 때 상대방의 IP version에 의해 결정되며, SOCKET이 Close 될 때까지 IP version을 계속 유지한다.

    • TCP Sever : 접속되는 상대방의 IP Address Version에 따라 결정된다. 접속된 상대방의 IP version 은 Sn_ESR[TCPM] bit를 통해 알 수 있다.
    • TCP Client : 접속할 상대방의 IP Address Version에 따라 Connect Command를 선택적으로 사용하여 결정한다.
      SOCKET command(Sn_CR)은, IPv4인 경우 CONNECT를, IPv6인 경우 CONNECT6 command를 사용한다.

  • How to use W6100 in UDPD mode?

    TCPD Mode SOCKET과 달리, UDPD Mode SOCKET은 IPv4와 IPv6를 매 Packet마다 선택적으로 사용할 수 있다.
    즉, UDPD SOCKET 하나로 IPv4나 IPv6 주소를 갖는 상대방으로 Packet을 수신할 수 있으며, 또한 송신도 할 수 있다.

    수신된 Packet의 IP version은 수신 Packet 전반부에 포함되는 PACKET INFO를 통해 알 수 있으며,
    또한 TCPD 와 같이 분리된 전송 SOCKET Command(Sn_CR) SENDSEND6를 통해서 각각 IPv4 주소를 갖는 상대방과 IPv6 주소를 갖는 상대방으로 송신할 수 있다.

SOCKET Status(Sn_CR) transited by SOCKET Command(Sn_CR)

아래 그림은 SOCKET이 사용되는 COMMAND에 따라 전이되는 상태 변화를 도식화한 것이다.

MACRAW, IPRAW4, IPRAW6, UDP Mode SOCKET은 OPEN 이후 해당 상태를 CLOSE되기 전까지 그대로 유지한다.
이와 달리, 즉, TCP 모드는 SERVER 및 CLIENT와 같은 TCP 동작 모드에 따라 서로 다른 상태 변화를 보인다.

SOCKET-less Command

W6100은 SOCKET을 사용하지 않고 아래와 같은 다양한 SOCKET-less Command를 지원한다.

  • ARP : IPv4로 Destination MAC Address를 구한다.
  • PING : IPv4로 PING 과정을 처리한다.
  • ARP6 : IPv6로 Destination MAC Address를 구한다.
  • PING6 : IPv6로 PING 과정을 처리한다.
  • ICMPv6 for AUTO-Configuration
    • DAD NS : Duplicated Address Detection 처리를 한다.
    • RS : Router로 부터 Prefix와 같은 Network Informatiion을 요구한다.
    • Unsolicited NA : Update된 IPv6 Network 정보를 이웃 Node에게 알린다.

SOCKET-less Command( SLCR), 아래 그림과 같이 처리되며, SOCKET-less Interrupt Register(SLIR)를 통해 그 결과를 확인 할 수 있다.

HOST Interface

W6100은 Host와 Inferface를 위해 2가지 Access Mode를 지원한다.

  • Parallel Bus Address Mode : 8Bit Data bus를 이용하여 W6100의 Register나 SOCKET TX/RX Memory를 간접적으로 Access한다.

  • Serial Bus Accss Mode : SCS, SCLK, MOSI, MISO와 같은 SPI 신호를 통해 W6100의 Register나 SOCKET TX/RX Memory를 간접적으로 Access한다.

Parallel Bus Access Mode & Timing

Parallel Mode를 사용하기 위해서는 반드시 W6100의 PIN MOD[3:0]“010X”로 설정하고, 아래와 같이 회로를 구성한다.

Parallel Bus Mode는 ADDR[1:0]으로 선택되는 IDM_AR0(Indirect Mode Address Register 0), IDM_AR1(Indirect Mode Address Register 1)과 IDM_BSR(Indirect Mode Block Select Regsiter), IDM_DR(Indirect Mode Data Register) Register를 통해 아래 그림과 같이 간접적으로 W6100을 Access한다.

IDM_BSR은 위의 표에서 보듯이 W6100의 COMMON Regsitr Block과 8개 SOCKET의 Register Block, TX RX Buffer Block을 각각 선택하는데 사용된다.

아래 그림은 Parallel BUS Mode를 사용하기 위해서 지켜야할 HOST의 Timing을 도식화한 것이다. 여기서 주의해야 할 것은 TCSn, TRDn, TWRn의 Timing은 반드시 지켜줘야 한다. 이를 지키지 못할 경우 W6100을 제대로 Access할 수 없다.

Serial Bus(SPI) Access Mode & Timing

Serial Bus Mode를 사용하기 위해서는 반드시 W6100의 PIN MOD[3:0] = “000X”로 설정하고, 아래와 같이 회로를 구성한다.

Serial Bus Mode는 아래 그림과 같이 MISO, MOSI를 통해 Register Offset Address bits, Block Select bits(BSR), R/W bit(RWR), OP Code bits, 쓰거나 읽을 8bit Data Bits를 SCLKK에 동기화하여 MSB부터 순차적으로 송수신해야 한다.

아래 표에서 BSB(Block Select Bits(BSB)는 Parallel BUS Mode와 같은 기능을 수행하나, RW bit(RWB)로 Read/Write를 구분하여야 하며, OP Code로 Data Length를 지정하여야 한다.

Data Length는 가변 데이터 길이 모드 (VDM )와 고정 길이 모드 (FDM)의 두 가지 유형이 있습니다.

  • VDM : CSn 신호가 Low인 동안 Data를 계속 읽거나 쓸 수 있다.
  • FDM : 반드시 CSn 신호를 항상 Low로 유지해야 하며, OP code를 통해 반드시 읽거나 쓸 Data 길이를 설정한다.

아래 그림은 Serial BUS Mode 신호에 대한 Host Timing을 도식화한 것이다. 여기서 주의할 사항은 VDM Mode를 사용할 경우, 반드시 TCSn 을 지켜야 한다.

Reset & System Clock Switching

아래 그림은 W6100 H/W Reset Timing과 System Clock Switching에 따른 Timing을 도식화 한 것이다.

  • Reset Timing (TRST)
    RSTn PIN으로 제어되는 W6100 Reset은 온습도에 따라 최소 350ns에서 1.0us로 가변적이다. 따라서 Reset 신호를 Max값 1.0us 이상 동안 Low를 안정적으로 유지하는 것이 좋다. 또한 Reset 이후 W6100의 내부 clock 안정화를 위해 반드시 60.3ms 동안 대기한 후 W6100을 Access한다.

  • System Clock Switching
    W6100은 Power Save를 위해 100MHz 에서 25MHz로 System Clock을 변경하는 것을 허용한다.
    System Clock이 변경되는 경우는 아래 3가지 경우가 있으며 위 표의 Timing(TPRST)을 반드시 지켜야 한다.

    • PHY Auto Reset Time : PHYCR1[RST] Register bit를 설정에 의한 PHY Reset 시 필요한 Time. PHY Reset동안 25MHz로 변경된다.
    • PHY Power Down Time : PHYCR1[PWDN] Register bit를 설정에 의한 PHY Power Down Mode 진입. 무조건 25MHz로 변경된다.
    • Clock Switch : SYCR[CLKSEL] Register bit를 제어를 통한 System Clock 변경. 100MHz에서 25MHz, 25MHz -> 100MHz로 사용자가 선택적으로 변경 가능한다.

ICMPv6 Offload

아래 표은 W6100이 Hardwired Logic으로 Offlad시킨 ICMPv6를 나타낸다. 지원하지 않는 ICMPv6 Packet은 IPRAW6 Mode SOCKET을 통해서 Software적으로 처리가 가능한다.

여기서, W6100은 RA Message를 특정 조건이 맞을 경우만 지원한다. 즉, 수신된 RA message의 첫 번째 Option이 Source link-layer address(0x01) 두번째 Option이 Prefix information Option(0x03) 인 경우만 아래의 Register이 제대로 설정된다. 그렇지 않은 경우는 IPRAW6 Mode SOCKET을 이용하여 RA message를 수신하여 해당 정보를 처리한다.

  • PLR (Prefix Length Register)
  • PFR (Prefix Flag Register)
  • VLTR (RA Valid Life Time Register)
  • PLTR (RA Preferred Life Time Register)
  • PAR (Prefix Address Register)

What is different from other WIZnet TCP/IP Stack Controller

아래표는 W6100 이외에 WIZnet TCP/IP Contoller를 사용해 본 사용자를 위해 W6100이 추가 보완하는 기능을 표로 정리한 것이다.

마치며

Part I는 IPv6에 대한 전반적인 지식을 알아 보았고, Part II에서는 IPv6가 W6100에 어떻게 적용되고 구현되었는지 간략하게 살펴 보았다. Part II에서 W6100에 대한 모든 것을 설명하지 못했고, W6100을 처음 접했을 때, 당황하지 않도록 최소의 기본 특징들만 간략히 살펴 본 것이다. 자세한 내용은 W6100 Datasheet를 참고하기 바란다.

이 글이 W6100 사용자들에게 조금이나마 도움이 되길 바란다.

블로그 이미지

MidnightCow

위즈네트 칩(W5300, W5200, W7100, W7500) 개발자

,