laboratoryjny generator i analizator ramek ethernet

Transkrypt

laboratoryjny generator i analizator ramek ethernet
Dariusz Kościelnik
Jacek Stępień
Katedra Elektroniki
Akademia Górniczo-Hutnicza
al. Mickiewicza 30, 30-059 Kraków
[email protected], [email protected]
2006
Poznańskie Warsztaty Telekomunikacyjne
Poznań 7 - 8 grudnia 2006
LABORATORYJNY GENERATOR I ANALIZATOR RAMEK
ETHERNET
Streszczenie: W artykule przedstawiono
konstrukcję i zasadę działania układów generatora i
analizatora ramek Ethernet, wykorzystywanych
podczas zajęć laboratoryjnych ze studentami
kierunku Elektronika. Urządzenia umożliwiają
zapoznanie ze strukturą rejestrów popularnego
kontrolera sieci Ethernet, tworzenie i nadawanie
własnych ramek oraz ich odbiór i wstępna analizę.
1.
WPROWADZENIE
Generacja i analiza ramek Ethernetowych
realizowana
jest
zazwyczaj
podczas
zajęć
laboratoryjnych w oparciu o komputery PC,
wyposażone
w
karty
sieciowe.
Stworzenie
oprogramowania sterującego z poziomu aplikacji
użytkownika nadawaniem czy odbiorem ramek, z
wykorzystaniem
driver’ów
systemowych
jest
zadaniem, któremu sprosta każdy przeciętny
informatyk. Wydawać by się mogło, że uniwersalność
takiego rozwiązania, bazująca
na szerokich
możliwościach aplikacji użytkownika predysponuje je
do zajęć dydaktycznych. Podejście takie odsuwa
jednakże kwestię analizy protokołu sieciowego od
zagadnień związanych ze sprzętem w kierunku
oprogramowania. Dla konstruktora-elektronika wydaje
się wiec to być w jakimś sensie ograniczeniem. Karta
sieciowa traktowana jest jako pewnego rodzaju
interfejs wejścia/wyjścia, natomiast bezpośrednią
generację i odbiór ramek zapewnia odpowiednie
wykorzystanie funkcji oferowanych przez driver. Nie
pozwala to na bezpośrednie odwoływanie się do
rejestrów wewnętrznych kontrolera sieci, jak również
ogranicza obserwację jego pracy do zakresu
podstawowych
funkcji,
obsługiwanych
przez
oprogramowanie systemowe.
Budowa kart sieciowych utożsamiana jest obecnie
z firmowymi, najczęściej nieudokumentowanymi od
strony technicznej chipsetami układów sterujących, o
funkcjach których niewiele wiadomo. Poza takimi
rozwiązaniami dostępne są jednak również układy
kontrolerów ethernetowych, ogólnego przeznaczenia.
Są
to
układy,
o
charakterystycznej
dla
mikrokontrolerów strukturze rejestrowej, pozwalające
na skonstruowanie własnego, dedykowanego dla sieci
Ethernet urządzenia. Urządzeniem tym może być
zarówno klasyczna karta sieciowa, jak i dowolny inny
moduł (również niezależny od komputera PC)
pracujący zgodnie z zasadami protokołu IEEE802.3.
Taki właśnie układ kontrolera protokołu Ethernet
wykorzystano do skonstruowania sprzętowego
generatora i analizatora ramek.
2.
BUDOWA URZĄDZEŃ
Struktura układowa obydwu modułów jest bardzo
podobna. Są to niezależne urządzenia pracujące pod
kontrolą mikrokontrolera jednoukładowego firmy
Atmel AT89S8252, komunikujące się z komputerem
sterującym za pośrednictwem portu szeregowego
RS232. Różnice w konstrukcji układów generatora i
analizatora ramek sprowadzają się do wykorzystania w
układzie analizatora dodatkowego układu zewnętrznej
pamięci RAM, przechowującej odebrane ramki
danych.
2.1. KONTROLER ETHERNET RTL8019AS
Układem odpowiedzialnym za realizację procesu
nadawania i odbioru ramek jest jednoukładowy
kontroler Ethernet firmy Realtek – układ RTL8019AS.
Podstawowe cechy tego układu kontrolera to:
• Kompatybilność ze standardami Ethernet II i IEEE
802.3: 10Base5, 10Base2 oraz 10BaseT,
• Wbudowana pamięć SRAM o pojemności 16KB,
• Dwa 16- bitowe kanały DMA,
• 16 bajtowa kolejka FIFO,
• możliwość współpracy z 8, 16 i 32 bitowymi
systemami mikroprocesorowymi,
• obsługa transmisji typu unicast (MAC), multicast
oraz broadcast.
Strukturę modułową układu przedstawiono na
Rys. 1. Może ona umownie zostać podzielona na dwie
wzajemnie niezależne części: tor odbiorczy i
nadawczy.
Moduł odbiorczy umożliwia zapisywanie
odczytywanych zgodnie z taktem zegara bitów, do
rejestru przesuwnego. Rozpoczyna pracę w momencie
kiedy na wejściu układu wykryty zostanie sygnał
nośnej. Wchodzący w skład toru odbiorczego detektor
synchronizacji ramki wykrywa znacznik początku
ramki SFD (ang. Start Frame Deliminater). Każdy
kolejny odebrany bajt jest przesyłany do kolejki FIFO,
a licznik odebranych bajtów jest inkrementowany.
Wewnętrzny układ DMA nadzoruje przepisywanie
C OL
C RS
UKŁAD
DETEKC JI
KOLIZJI
BREQ,BAC K
/AC K, READY
/MRD, /MWR
ARBITRAŻ
BSC
PROTOKÓŁ
PLA
TABLIC A
ADRESOWA
UKŁAD
WERYFIKAC
JI ADRESU
RXC
REJESTR
STATUSOWY
8
8
8/16
16 BYTE
FIFO
NAD/ODB
LIC ZNIK
RXD
TXC
TXD M
U
X
NADAJNIK
GENERATOR
C RC
GENERATOR
PREAMBUŁY, JAM
M
U
X
REJESTRY
DMA
1
MAGISTRALA
ODBIORNIK
BUFORY
DMA
FIFO
C ONTROL
LOGIC
I
/
O
B
U
F
O
MAGISTRALA
ADDRES/DANE
RXD
Rys. 1. Schemat blokowy układu kontrolera sieci Ethernet RTL8019AS
kolejnych bajtów ramki z pamięci FIFO do bufora
kołowego, zorganizowanego w formie 256-cio
bajtowych obszarów (stron) wewnętrznej pamięci
RAM. Stąd, po skompletowaniu i weryfikacji całej
ramki mogą zostać odczytane przez procesor
nadrzędny.
Pierwsze sześć bajtów (czyli adres odbiorcy)
następujących po SFD jest sprawdzane przez układ
kontroli adresu. Decyduje on na podstawie parametrów
wpisanych w rejestrach wewnętrznych kontrolera o
przyjęciu, bądź odrzuceniu aktualnie odbieranej ramki.
W przypadku adresów typu multicast do sprawdzenia
wykorzystywany jest algorytm filtracji hash.
Zadaniem układu generatora i kontroli CRC
podczas odbioru jest obliczenie sumy kontrolnej
przychodzącego pakietu i porównanie jej z sumą
zapisaną na końcu ramki przez stację nadającą. W
przypadku zgodności sumy obliczonej i odebranej
ustawiany jest znacznik oznaczający poprawność CRC.
Jeżeli sumy nie będą zgodne, zapamiętywany jest kod
błędu i pakiet zostaje odrzucony (chyba że
konfiguracja rejestrów zezwala na przyjęcie pakietów z
nieprawidłową sumą kontrolną).
Proces generacji ramki Ethernet podzielić można
na trzy etapy:
• przygotowanie danych do wysłania,
• konfiguracja rejestrów wewnętrznych, inicjująca
nadawanie,
• sprawdzenie stanu rejestru statusu w celu
nadzorowania poprawności transmisji.
Przygotowanie danych do wysłania sprowadza się
do odpowiedniego skonfigurowania wewnętrznego
kanału DMA układu, a następnie wpisywaniu
danych do wejściowego portu DMA. Zostaną one
stamtąd automatycznie przeniesione do pamięci
podręcznej kontrolera. Po skompletowaniu całości
danych przeznaczonych do transmisji niezbędne jest
zaprogramowanie
odpowiednich
rejestrów
„wskaźnikowych” układu, na podstawie których układ
samodzielnie konstruuje ramkę Ethernet. Pamięć
podręczna przechowywać może więcej niż jedną ramkę
danych. Dzięki temu możliwa jest wstępne
przygotowanie ciągu ramek transmisyjnych, a ich
nadawanie może być przeprowadzane bez konieczności
komunikacji z układami zewnętrznymi.
Poprawność procesu transmisji kontrolowana
jest poprzez nadzorowanie stanu bitów rejestru
statusowego. W wypadku wykrycia błędów lub
zakłóceń możliwe jest zgłoszenie przerwania do
systemu nadrzędnego.
2.2. ZASADA DZIAŁANIA MODUŁÓW
Układy generatora i analizatora ramek pracować
mogą w dwóch trybach:
• Trybie zdalnym, w którym podłączone są do
komputera PC i pracują pod kontrolą aplikacji
sterującej,
• Trybie ręcznym, w którym pracują jako układy
niezależne od zewnętrznego komputera a całe
sterowanie realizowane jest za pomocą przycisków
umieszczonych na urządzeniu.
Schemat blokowy układów przedstawiono na Rys. 2.
Układ generatora ramek w obu trybach pracy
musi zostać wstępnie zainicjowany przez komputer,
który zapisuje do wewnętrznej pamięci dane
przeznaczone do transmisji. Cały proces nadawania
Wyświetlacz
Wyœw
ietlaczLCD
LCD
Układ
zasilający
Uk³ad
zasilaj¹cy
(zasilacz/baterie)
(zasilacz/baterie)
Magistrala adresowa
Adres/Dane
Dekoder adresu
Magistrala danych
RS232
Mikrokontroler
AT89C8252
Kontroler sieci
RTL8019AS
74HC573
Pamiêæ
RAM
Pamięć RAM
Rys.2 . Schemat blokowy generatora i analizatora ramek Ethernet
odbywa się już niezależnie od komputera PC
(urządzenie może zostać od niego odłączone i
pracować samodzielnie, po wcześniejszym zapisaniu
danych do transmisji w wewnętrznej pamięci
nieulotnej). Kolejne etapy przetwarzania danych w
procesie transmisji oraz stan urządzenia obrazowany
jest na wyświetlaczu LCD, w postaci odpowiednich
komunikatów. Wyświetlacz umożliwia również
„podejrzenie” zawartości generowanej ramki. Układ
może pracować w trybie jednokrotnej generacji ramki
(wyzwalanie ręczne) lub w trybie automatycznym –
ramka generowana jest wtedy okresowo, co określony
zaprogramowany w układzie odcinek czasu.
Analizator ramek może pracować zgodnie z
zaprogramowanymi przy pomocy komputera PC
parametrami lub przy wykorzystaniu predefiniowanego
i zapisanego w kodzie programu zestawu parametrów
konfiguracyjnych. Odbierane ramki umieszczane są w
pamięci RAM, a na wyświetlaczu pojawiają się
informacje o ilości odebranych ramek i stanie
urządzenia. Możliwe jest oczywiście również
obserwowanie
bezpośrednio
na
wyświetlaczu
zawartości pola danych poszczególnych ramek.
Ponieważ w układzie tym, do przechowywania
odebranych ramek wykorzystywana jest pamięć ulotna
więc aby zapewnić pełna przenośność danych,
wyposażone zostało w układ bateryjnego podtrzymania
napięcia.
2.3. APLIKACJA STERUJĄCA
Zarówno generator jak i analizator pracować mogą
pod nadzorem aplikacji sterującej zainstalowanej na
komputerze PC i komunikującej się z modułem za
pomocą odpowiednich komunikatów przesyłanych
poprzez interfejs RS232.
Zadania realizowane przez aplikację sterująca
generatorem ramek są w gruncie rzeczy bardzo
elementarne. Sprowadzają się do odczytu z wcześniej
skonstruowanego pod dowolnym edytorem pliku
tekstowego, zawierającego dane, które mają być
wysyłane w postaci ramki Ethernet (pojedynczej lub
sekwencji) i przesłania go do urządzenia. Transmisja
ramki może zostać przeprowadzona w sposób w pełni
automatyczny – po podaniu nazwy pliku z danymi do
wysłania aplikacja przesyła dane do kontrolera i
programuje go w tryb jednokrotnej transmisji ramki.
Jednakże,
aby
rozszerzyć
funkcjonalność
oprogramowania oraz przystosować je do zajęć
laboratoryjnych zaimplementowana została możliwość
samodzielnego
programowania
wewnętrznych
rejestrów kontrolera RTL8019. Rozbudowana funkcja
pomocy zawiera opis wykorzystywanych podczas
transmisji i odbioru rejestrów wewnętrznych
kontrolera. Dzięki temu możliwe jest ręczne,
stopniowe konfigurowanie trybu pracy urządzenia oraz
obserwacja jaki wpływ na jego pracę mają zmiany
Rys. 3. Przykładowy ekran aplikacji współpracującej z generatorem ramek
zawartości poszczególnych rejestrów sterujących
(Rys. 3). W takim przypadku wysłanie pojedynczej
ramki z danymi, wcześniej przesłanymi do kontrolera
wymaga znacznie bardziej skomplikowanej obsługi.
Przykładowa sekwencja programowania procesu
transmisji ramki jest następująca:
• Należy załadować do licznika DMA długość
pakietu transmitowanego do pamięci podręcznej
kontrolera,
• Następnie określamy miejsce w pamięci w którym
znajdują się dane transmisyjne (programujemy
rejestry adresu startowego DMA),
• Odpowiednio ustawiamy tryb pracy kontrolera
DMA.
• Bajt po bajcie przepisujemy treść pakietu do portu
zdalnego DMA.
• Ustawiamy w rejestrze startowym numer
wykorzystywanej strony pamięci układu
• Ustawiamy w liczniku bajtów do nadania długość
pakietu, który chcemy wysłać z bufora nadajnika,
• W rejestrze sterującym ustawiamy parametry
transmisji
• Ustawiamy bity odblokowujące układ nadajnika.
Po zakończeniu nadawania pakietu można sprawdzić
poprzez rejestr statusowy czy transmisja zakończyła się
pomyślnie.
W podobny sposób, programując i odczytując
stany poszczególnych rejestrów i pamięci kontrolera
możemy realizować inne operacje, np. transmisje
niestandardowe – ramek dłuższych i krótszych niż
zdefiniowane dla sieci Ethernet itp.
Znacznie bardziej rozbudowana wizualnie jest
aplikacja współpracująca z analizatorem ramek
Ethernet. Wygląd okna głównego programu
przedstawiono na Rys. 4. Zostało ono podzielone na
kilka podstawowych obszarów funkcjonalnych,
opisanych na rysunku. W obszarze pamięci RAM
analizatora zgromadzone są kontrolki sterujące
pamięcią statyczną urządzenia. Pozwalają one na
przepisanie ramek z bufora kołowego kontrolera do
pamięci RAM oraz pokazują stopień
zajętości
pamięci. Przesłane z analizatora do komputera i
rozkodowane ramki wyświetlane są na ekranie w
obszarze odbierania danych.
Za pomocą przycisków w obszarze adresów MAC
możliwe jest zapisanie unikatowego, przydzielonego
urządzeniu adresu fizycznego oraz określenie adresu
rozsyłania grupowego (ang. multicast).
Obszar rejestrów stron pozwala na śledzenia stanu
rejestrów kontrolno sterujących związanych z buforem
kołowym. Możliwe jest więc nie tylko obserwowanie i
analizowanie poszczególnych pól odebranej ramki ale
śledzenie stanu rejestrów kontrolera odpowiedzialnych
za kontrolowanie procesu odbioru ramki.
Oprogramowanie
umożliwia
ponadto
przeprogramowywanie
kodu
źródłowego
w
mikrokontrolerze jednoukładowym AT89S8252.
3.
PODSUMOWANIE
Omówione w artykule układy sprzętowego analizatora
i generatora ramek Ethernet są w pełni funkcjonalnymi
urządzeniami, pozwalającymi na przybliżenie podczas
zajęć laboratoryjnych podstawowych mechanizmów
działania protokołu Ethernet. Ten typ podejścia do
zagadnienia pozwala jednocześnie na bliższe
zapoznanie się ze strukturą sprzętową urządzeń
sieciowych oraz niskopoziomowymi procedurami
programowania układu kontrolera sieciowego.
Wykorzystanie tego typu urządzeń pozwala również na
łatwą rozbudowę stanowiska laboratoryjnego, np. o
oscyloskop, pokazujący stan linii transmisyjnej, czy też
„krokowanie” procesu generacji ramki z jednoczesnym
podglądem stanu rejestrów wewnętrznych kontrolera.
Rys. 4. Okno główne programu współpracującego z analizatorem ramek
Niewątpliwie większość z przedstawionych funkcji
realizowanych przez urządzenia można byłoby łatwo
zrealizować za pomocą oprogramowania na komputer
PC, wyposażonego z kartą sieciową, niemniej wydaje
się, że dla przyszłego inżyniera-elektronika takie
sprzętowe podejście jest znacznie bardzie interesujące.
SPIS LITERATURY
[1]
Web 51 - RTL8019AS Packet Driver rev. 1.0
Radek Benedikt http://web51.hw-server.com/
[2]
[3]
[4]
[5]
8019as.pdf, RTL8019AS Realtek Full-Duplex
Ethernet Controller with Plug and Play Function
(RealPNP) REALTEK SEMI-CONDUCTOR
CO., LTD.
Strona producenta http://www.atmel.com/
Strona producenta http://www.realtek.com.tw
Krzysztof Nowicki, Józef Woźniak, Sieci LAN,
MAN i WAN – protokoły komunikacyjne,
Wydawnictwo
Fundacji
Postępu
Telekomunikacji, Kraków 1998