Sprzętowy stos TCP/IP

Coraz częściej popularne staje się podłączenie do sieci i Internetu różnych ciekawych zabawek, szczególnie tych wykonanych samodzielnie.  Pomińmy kwestie przemysłu i różnych gotowych produktów służących, czy to do zdalnego monitorowania obiektów, pomiarów i przesyłania danych poprzez sieć, czy tez do zdalnego sterowania. A skupmy się na bardziej amatorskich projektach.

Jak to zawsze bywa, możliwość podłączenie naszej zabawki do sieci zależy od czasu i pieniędzy.

Jeszcze do niedawna musieliśmy się sami bawić w obsługę stosu sieciowego, bądź wykorzystywać dostępne stosy programowe, głownie dla małych systemów mikroprocesorowych  opartych na  8-bitowych mikrokontrolerach rodziny ’51 czy AVR. Miało to swoje zalety i wady, do zalet możemy zaliczyć możliwość nieograniczonej konfiguracji i dużego wpływu na samą implementacje, a do wad znaczne, wręcz duże zapotrzebowanie na zasoby, co dawało o sobie znać przy wykorzystaniu małych mikrokontrolerów.

Ale to można zaliczyć już do przeszłości, obecnie można cieszyć się z możliwości wykorzystania sprzętowych implementacji stosu TCP/IP. Gdzie wszystkie bebechy związane z siecią zostały upakowane do jednego układu scalonego, dla niektórych „czarnej skrzynki”. Układy takie są nazywane często Internet Inside Chip, w skrócie iinChip lub i2Chip.

Jednym z takich układów jest kostka  W3100A firmy WIZnet. Układ ten wykonany w technologii CMOS 0,35 zawiera kompletny sprzętowy stos TCP/IP z obsługą podstawowych protokołów jak TCP, IP, UDP, ICMP, ARP, DLC i MAC. Możliwość pracy w trybie full-duplex, obsługa 4 niezależnych kanałów transmisyjnych (połączeń) w dowolnym kierunku. Schemat blokowy układu na poniższym rysunku.

w3100a

Nie chce tutaj kopiować dokumentacji czy noty katalogowej, ale sposób konfiguracji układu jest ciekawy.

Sam układ zawiera zestaw rejestrów konfiguracyjnych, a jego konfigurowanie to ustawienie odpowiednich stanów właśnie na tych rejestrach. Rejestry te można podzielić na rejestry poleceń – ustawiamy kod polecenia/funkcji jaki chcemy wykonać, na przykład otwarcie gniazda, wysłanie danych oraz rejestry statusowe – odzwierciedlają stan operacji, czyli informacje czy polecenie zakończyło się sukcesem. Każdy kanał zawiera swoje własne rejestr poleceń i statusowe, a synchronizacja pracy naszego układu z kostką W3100A może odbywać się poprzez przeglądanie rejestrów statusowych, lub poprzez przerwania generowane przez układ.

Oprócz rejestrów konfiguracyjnych, układ zawiera także w swoim wnętrzu 16kB pamięci RAM, którą użytkownik może w dowolny sposób podzielić pomiędzy poszczególne kanały.

Przy nadawaniu i odbieraniu pamięć ta pracuje jako bufor cykliczny dla danych, a dostęp do niej możliwy jest za pomocą 4-bajtowych rejestrów wskaźników, po dwie pary (zapis/odczyt) na kanał.

Komunikacja pomiędzy mikroprocesorem a stosem może odbywać  się za pomącą magistrali równoległej lub interfejsu szeregowego I2C. Głownie polega to na odczytywaniu wartości odpowiednich rejestrów o których wspomniałem wyżej.

Magistrala równoległa składa się z 8 linii danych, 15 linii adresowych i sygnałów ChipSelect, Read, Write. Dzięki temu, możemy podłączyć układ do mikroprocesora w taki sposób, aby był widoczny jako obszar w pamięci.

Oczywiście sam układ W3100A nie wystarczy nam do podłączenia się do sieci, potrzebujemy jeszcze transceivera warstwy fizycznej, czyli sterownika (PHY) jak na przykład RTL8210BL i transformatora (MAG).

Do komunikacji pomiędzy transceiverem a układem W3100A służy specjalna magistrala synchroniczna o nazwie MII (Media Independent Interface), która może pracować w dwóch trybach: równoległym i szeregowym.

Skompletowanie i uruchomienie takiego modułu może wydawać się trochę kłopotliwe, ale dla leniwych i tych, którzy nie maja czasu i ochoty na baranie się, firma WIZnet oferuje także gotowy moduł ethernetowy – NM7010A, który zawiera na swoim pokładzie W3100A, RTL8201BL oraz gniazdko RJ45 zintegrowane z transformatorem.

Moduł ten realizuje pełny interfejs miedzy naszym systemem mikroprocesorowym a warstwą fizyczną sieci ethernetowej, o czym świadczy „prosty” schemat blokowy przedstawiony poniżej.

NM7010A

Połączenie z systemem realizują dwie 28-nóżkowe łączówki, uwzględniające sygnały z 15-bitowej szyny adresowej, 8-bitowej szyny danych, sygnały sterujące, I2C, zasilanie, a także wyprowadzenia do sterowania diodą LED prezentującą status sieci.

Tak, więc użycie gotowego modułu jest bardzo wygodne i opłacalne.

Aktualnie, sam producent, nie zaleca już używania układu W3100A w nowych projektach, zastępując go jednym z nowszych i lepszych produktów. Zachęcam do zapoznania się z pełnym asortymentem produktów firmy WIZnet.

Jednym  z ciekawych układów zbudowanych na w/w aplikacjach może być prosty „pinger” do fingowania urządzeń w sieci przydatny sieciowcom, którego temat został poruszony na usenetowej grupie pl.misc.elektornika.

Kiedyś to się trzeba było namęczyć, a teraz jeden scalak i problem rozwiązany ;)

2 przemyślenia nt. „Sprzętowy stos TCP/IP”

  1. No, ciekawa rzecz. Fajnie byloby miec to w postaci SoC z jakims kontrolerem, bo tak mocno rozrasta sie rozmiar calego ukladu – stos, PHY, kontroler.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *