MODEM DLA LINII DZIERŻAWIONEJ

Podobne dokumenty
Z twierdzenia Nyquista wynika konieczność kodowania bitów za pomocą sygnałów w celu przesłania większej liczby bitów w jednostce czasu.

Kody transmisyjne. Systemy PCM Sieci ISDN Sieci SDH Systemy dostępowe Transmisja w torach przewodowych i światłowodowych

Aby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.

ZAKŁAD SYSTEMÓW ELEKTRONICZNYCH I TELEKOMUNIKACYJNYCH Laboratorium Podstaw Telekomunikacji WPŁYW SZUMÓW NA TRANSMISJĘ CYFROWĄ

2. STRUKTURA RADIOFONICZNYCH SYGNAŁÓW CYFROWYCH

PODSTAWY TELEKOMUNIKACJI Egzamin I (za każde polecenie - 6 punktów)

WFiIS CEL ĆWICZENIA WSTĘP TEORETYCZNY

Interfejs transmisji danych

Cyfrowe Elementy Automatyki. Bramki logiczne, przerzutniki, liczniki, sterowanie wyświetlaczem

Przesyłania danych przez protokół TCP/IP

Sieci Komputerowe Mechanizmy kontroli błędów w sieciach

1.Wprowadzenie do projektowania układów sekwencyjnych synchronicznych

Interfejsy systemów pomiarowych

Projekt z przedmiotu Systemy akwizycji i przesyłania informacji. Temat pracy: Licznik binarny zliczający do 10.

Architektura komputerów

Sławomir Kulesza. Projektowanie automatów asynchronicznych

XXXII Olimpiada Wiedzy Elektrycznej i Elektronicznej. XXXII Olimpiada Wiedzy Elektrycznej i Elektronicznej

Podstawowe elementy układów cyfrowych układy sekwencyjne Rafał Walkowiak Wersja

Zastosowanie procesorów AVR firmy ATMEL w cyfrowych pomiarach częstotliwości

Podział układów cyfrowych. rkijanka

dwójkę liczącą Licznikiem Podział liczników:

LICZNIKI PODZIAŁ I PARAMETRY

Tranzystor JFET i MOSFET zas. działania

Detekcja i korekcja błędów w transmisji cyfrowej

Zapoznanie się z podstawowymi strukturami liczników asynchronicznych szeregowych modulo N, zliczających w przód i w tył oraz zasadą ich działania.

Przerzutnik ma pewną liczbę wejść i z reguły dwa wyjścia.

Struktury specjalizowane wykorzystywane w mikrokontrolerach

Układy sekwencyjne. Podstawowe informacje o układach cyfrowych i przerzutnikach (rodzaje, sposoby wyzwalania).

f we DZIELNIKI I PODZIELNIKI CZĘSTOTLIWOŚCI Dzielnik częstotliwości: układ dający impuls na wyjściu co P impulsów na wejściu

1. Poznanie właściwości i zasady działania rejestrów przesuwnych. 2. Poznanie właściwości i zasady działania liczników pierścieniowych.

PRZERZUTNIKI: 1. Należą do grupy bloków sekwencyjnych, 2. podstawowe układy pamiętające

LABORATORIUM ELEKTRONIKI I TEORII OBWODÓW

Cyfrowe układy scalone c.d. funkcje

Podstawy Elektroniki dla Elektrotechniki. Liczniki synchroniczne na przerzutnikach typu D

Podstawowe moduły układów cyfrowych układy sekwencyjne cz.2 Projektowanie automatów. Rafał Walkowiak Wersja /2015

Projekt Koder HDB-3. Wykonali: Agnieszka Sikorska, Łukasz Kokosza EiTI Politechnika Warszawska Warszawa Projekt UCYF Koder HDB-3

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Systemy plezjochroniczne (PDH) synchroniczne (SDH), Transmisja w sieci elektroenergetycznej (PLC Power Line Communication)

Protokoły sieciowe model ISO-OSI Opracował: Andrzej Nowak

Interfejsy. w systemach pomiarowych. Ryszard J. Barczyński, 2016 Materiały dydaktyczne do użytku wewnętrznego

INTERFEJSY SYSTEMÓW ELEKTRONICZNYCH. Interfejsy klasy RS

Odbiór i dekodowanie znaków ASCII za pomocą makiety cyfrowej. Znaki wysyłane przez komputer za pośrednictwem łącza RS-232.

Detekcja i korekcja błędów w transmisji cyfrowej

Pracownia Transmisji Danych, Instytut Fizyki UMK, Toruń. Instrukcja do ćwiczenia nr 10. Transmisja szeregowa sieciami energetycznymi

Zastosowania mikrokontrolerów w przemyśle

Demodulator FM. o~ ~ I I I I I~ V

Hardware mikrokontrolera X51

Synteza strukturalna automatów Moore'a i Mealy

Teoria przetwarzania A/C i C/A.

Plan wykładu. Architektura systemów komputerowych. Cezary Bolek

LABORATORIUM TECHNIKA CYFROWA LICZNIKI I REJESTRY. Rev.1.1

4. UKŁADY FUNKCJONALNE TECHNIKI CYFROWEJ

Elektronika i techniki mikroprocesorowe

xx + x = 1, to y = Jeśli x = 0, to y = 0 Przykładowy układ Funkcja przykładowego układu Metody poszukiwania testów Porównanie tabel prawdy

Cel. Poznanie zasady działania i budowy liczników zliczających ustaloną liczbę impulsów. Poznanie kodów BCD, 8421 i Rys. 9.1.

WPROWADZENIE Mikrosterownik mikrokontrolery

Architektura komputerów

Systemy i Sieci Radiowe

Problematyka sieci miejscowej LIN

Sieci telekomunikacyjne sieci cyfrowe z integracją usług (ISDN)

Systemy bezpieczne i FTC (Niezawodne Systemy Cyfrowe)

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

. Rodzaje transmisji sygnału i RS-232

Podstawy Informatyki Elementarne podzespoły komputera

Wbudowane układy komunikacyjne cz. 1 Wykład 10

Badanie właściwości skramblera samosynchronizującego

Automatyzacja i robotyzacja procesów produkcyjnych

Zaliczenie Termin zaliczenia: Sala IE 415 Termin poprawkowy: > (informacja na stronie:

Wstęp do Techniki Cyfrowej... Synchroniczne układy sekwencyjne

Ćw. 7: Układy sekwencyjne

Logiczny model komputera i działanie procesora. Część 1.

W11 Kody nadmiarowe, zastosowania w transmisji danych

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja. do ćwiczeń laboratoryjnych z przedmiotu: SYSTEMY CYFROWE 1.

Sygnały, media, kodowanie

PAMIĘCI. Część 1. Przygotował: Ryszard Kijanka

LABORATORIUM Bezprzewodowych Sieci Komputerowych

Modelowanie liczników w języku Verilog i ich implementacja w strukturze FPGA

Programowalne układy logiczne

LICZNIKI LABORATORIUM. Elektronika AKADEMIA GÓRNICZO-HUTNICZA IM. STANISŁAWA STASZICA W KRAKOWIE. Wydział Informatyki, Elektroniki i Telekomunikacji

ĆWICZENIE 7. Wprowadzenie do funkcji specjalnych sterownika LOGO!

Systemy Czasu Rzeczywistego FPGA

Uniwersalny asynchroniczny. UART Universal Asynchronous Receier- Transmiter

Przetworniki cyfrowo analogowe oraz analogowo - cyfrowe

TECHNIKA MIKROPROCESOROWA

PL B1 PRZEDSIĘBIORSTWO BADAWCZO- -PRODUKCYJNE I USŁUGOWO-HANDLOWE MICON SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ, KATOWICE, PL

Podstawy elektroniki cz. 2 Wykład 2

Układy Cyfrowe projekt. Korekcja jasności obrazów w 24-bitowym formacie BMP z użyciem funkcji gamma. Opis głównych modułów sprzętowych

Uniwersalny Konwerter Protokołów

Standard transmisji równoległej LPT Centronics

Krzysztof Leszczyński Adam Sosnowski Michał Winiarski. Projekt UCYF

5. Model komunikujących się procesów, komunikaty

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014

LICZNIKI Liczniki scalone serii 749x

UKŁADY SEKWENCYJNE Opracował: Andrzej Nowak

ćw. Symulacja układów cyfrowych Data wykonania: Data oddania: Program SPICE - Symulacja działania układów liczników 7490 i 7493

Projektowanie układów na schemacie

Układy zegarowe w systemie mikroprocesorowym

Transmisja w paśmie podstawowym

UKŁAD SCALONY. Cyfrowe układy można podzielić ze względu na różne kryteria, na przykład sposób przetwarzania informacji, technologię wykonania.

Krótki wstęp do transmisji szeregowej

Transkrypt:

POLITECHNIKA ŚLĄSKA w Gliwicach WYDZIAŁ AUTOMATYKI, ELEKTRONIKI I INFORMATYKI Instytut Elektroniki MODEM DLA LINII DZIERŻAWIONEJ Praca magisterska napisana przez Michała Horbulewicza pod kierunkiem dra inŝ. Leszka Dziczkowskiego Gliwice 2006

SPIS TREŚCI Wstęp ROZDZIAŁ 1. Wprowadzenie 1.1 Cel i zakres pracy 1.2 Podstawowe załoŝenia ROZDZIAŁ 2. Cyfrowe kodowanie sygnałów 2.1 Kryteria doboru kodu 2.2 Kod HDB3 ROZDZIAŁ 3. Budowa modemu 3.1 Wprowadzenie 3.2 Warstwa fizyczna 3.3 Warstwa ramki 3.4 Warstwa danych 3.5 Interfejs analogowy ROZDZIAŁ 4. Praktyczna realizacja 4.1 Układy programowalne 4.2 Kodowanie w VHDL 4.3 Implementacja i testowanie modemu Zakończenie Dodatek D.1 Kody źródłowe D.2 Zawartość płyty CD D.3 Rezultat syntezy - raport D.4 Schematy, PCB Bibliografia x x x xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx

WSTĘP

1 WPROWADZENIE Modemy znajdują zastosowanie wszędzie tam gdzie trzeba połączyć dwa urządzenia cyfrowe, dwie sieci oddalone od siebie na znaczne odległości. Między połączonymi punktami zapewniają bezbłędną transmisję. Jak dotąd do przesyłu danych w kopalniach głębinowych * stosuje się modemy V.34 wykorzystujące modulację QAM (kwadraturowo - amplitudową). Standard ten oferuje niewielką szybkość transmisji - około 3kB/s (33600b/s wersji V.34+). Przepustowość tego rzędu pozwala na diagnostykę czujników, sterowanie maszynami górniczymi. Jednak obecnie widać tendencję do integracji działających w kopalniach systemów bezpieczeństwa. W kopalni Bielszowice w wyniku zalecenia Komisji WUG opracowano i wdrożono system wyłączania energii elektrycznej po wystąpieniu wstrząsu o odpowiedniej energii. Rozwiązanie to powstało przez połączenie systemu kontroli zjawisk sejsmicznych ARAMIS/ARES oraz systemu metanowo - pożarowego typu SMP-NT. Dzisiejsze, coraz szybsze, mikroprocesorowe czujniki stężenia gazów zapewniają dane, które można wykorzystać już nie tylko do monitorowania, ale także do wykrywania zagrożeń na podstawie symptomów. Coraz większa więc liczba danych (wynikająca także z potrzeby zapewnienia rozwiązań redundancyjnych, zabezpieczających przesyłane dane), ale również sygnałów mowy i w i z j i ** wymaga dużej przepustowości systemów transmisji danych. *W kopalniach odkrywkowych (np. węgla brunatnego Turów ) zastosowanie mają modemy GSM **Przesyłanie obrazu wideo telewizji przemysłowej o rozdzielczości 320x240 pikseli wymaga szybkości transmisji około 30kB/s przy przesyłaniu 4 klatek /s.

Wprowadzenie 7 Szybkie, cyfrowe, pracujące na standardowych, miedzianych liniach modemy zapewniające przepustowości rzędu kilku Mb/s szybko powinny więc znaleźć zastosowanie w kopalniach. 1.1 Cel i zakres pracy Celem pracy było opracowanie w układzie logiki programowalnej (PLD) modemu cyfrowego (ściślej kodera/dekodera) dla linii dzierżawionej * (ang. leased line). Należało zatem: dokonać przeglądu stosowanych kodów liniowych odpowiedni algorytm kodowania i dekodowania zaimplementować w układzie PLD w języku opisu sprzętu lub strukturalnie - za pomocą standardowych elementów bibliotecznych oprogramować inne funkcje modemu zaprojektować schemat ideowy i PCB urządzenia uruchomić modem, wprowadzając niezbędne modyfikacje w kodzie programu i przetestować gotowe urządzenie 1.2 Podstawowe załoŝenia Opracowania modemów cyfrowych mają zwykle po stronie interfejsowej szybki styk (Ethernet, PCM-30,X.21). Zaprojektowany w Instytucie Elektroniki modem, z uwagi na potrzebę łatwego testowania, ma po stronie interfejsowej łącze RS232. Umożliwia to podłączenie modemu do komputera z portem szeregowym i zweryfikowanie działania układu z rysunku 1. RS232 Modem Modem RS232 Komputer stacjonarny IBM ThinkPad Interfejs lokalny Rys.1: Docelowy układ weryfikujący działanie modemów * Eliminuje to potrzebę komutacji

8 Wprowadzenie Formalne założenia i parametry urządzenia: w lini między modemami kod liniowy realizujący szybkość transmisji 2,048Mb/s interfejs rs232 (jednoczesna transmisja w obu kierunkach - full-duplex) z uwzględnieniem sygnałów kontroli przepływu (CTS i RTS) transmisja w linii między modemami : naprzemienna z potwierdzeniem, po jednej parze przewodów - half-duplex, synchroniczna kontrola poprawności przesyłanych danych przeźroczystość dla transmitowanej informacji - para modemów nie wnika w strukturę danych Zaproponowano dwa różne układowe rozwiązania problemu. Pierwsze z nich, wymagające dużego doświadczenia w projektowaniu z wykorzystaniem układów PLD, zakładało zaimplementowanie wszystkich funkcji modemu w jednej strukturze FPGA *. W drugim natomiast jedynie część kodująca/dekodująca kod liniowy HDB3 miała zostać zrealizowana w układzie CPLD **. Natomiast funkcje takie jak: sterowanie transmisją kontrola poprawności transmisji za pomocą sumy kontrolnej CRC buforowanie danych przychodzących z linii i urządzenia lokalnego - FIFO (ze względu na dużą różnicę w szybkościach transmisji w łączu szeregowym i w linii między modemami) komunikacja z urządzeniem lokalnym po interfejsie szeregowym miał realizować mikrokontroler 8 bitowy. Drugi wariant, prostszy w realizacji, ale i mniej optymalny pod względem czasowym ***, miał szanse powodzenia jedynie dlatego, iż jako interfejs lokalny został wybrany RS232 o maksymalnej szybkości transmisji danych równej 115200b/s. Tymczasem wersja modemu całkowicie zaimplementowana w FPGA, mimo że funkcjonalnie nie różniłaby się, stwarzałaby lepszy punkt wyjściowy do opracowania układu mogącego współpracować z urządzeniami przesyłającymi dane o przepływnościach rzędu Mb/s. W praktyce tematowy modem został zaprojektowany w wariancie pośrednim. Część zadań realizowanych planowo w mikrokontrolerze została przeniesiona do układu PLD. * Rodzaj układu PLD ** Zasoby CPLD, mniejsze niż FPGA, są do tego celu wystarczające ***Mikrokontrolery 8 bitowe są w stanie przetwarzać szeregowe strumienie danych co najwyżej z szybkością 400-500kb/s

2 CYFROWE KODOWANIE SYGNAŁÓW Model łącza transmisyjnego w najogólniejszej postaci został przedstawiony na rysunku 2. Łącze takie składa się ze źródła i odbiornika informacji, połączonych ze sobą za pomocą systemu transmisji danych. Informacja wytworzona w źródle zostaje skierowana do części nadawczej systemu, gdzie zostaje zakodowana do postaci najlepiej przystoso-wanej do przesłania przez tor transmisyjny. Nadawanie danych Źródło informacji Koder Nadajnik Szum Dekoder Odbiornik Odbiorca informacji Odbiór danych Rys.2: System transmisyjny Niezwykle ważny proces kodowania może, w zależności od własności toru i źródła informacji, przybierać rozmaitą postać. W szczególnym przypadku może to być proces modulacji. Można wyróżnić cztery podstawowe techniki kodowania(rys.3). Z punktu widzenia tematowego modemu istotne jest zakodowanie danych binarnych w sygnał

10 Cyfrowe kodowanie sygnałów cyfrowy (ostatni przykład z rysunku 3). Mowa Telefon Sygnał analogowy Dane analogowe / sygnał analogowy z kodowaniem - telefon Dane binarne Modem Sygnał analogowy zmodulowany Dane cyfrowe / sygnał analogowy z modulacją - modem analogowy Mowa Kodek Sygnał cyfrowy PCM Dane analogowe / sygnał analogowy - CODEC w systemach PCM Dane binarne styku S Sygnał cyfrowy styku U Dane cyfrowe / sygnał cyfrowy - NT1 po stronie abonenta ISDN Rys.3: Techniki kodowania Sygnał binarny w swej oryginalnej postaci rzadko jest wprost przesyłany łączem teletransmisyjnym. Nie posiada bowiem pożądanych własności z punktu widzenia toru i zachodzi potrzeba zmiany jego parametrów. Wprowadza się więc kodowanie, które ogólnie ma za zadanie[1]: NT1 zakończenie sieciowe zwiększyć pojemność informacyjną systemu umożliwić wykrywanie błędów i ewentualnie ich korekcję rozwiązać problemy związane z transmisją Nie zawsze dąży się do spełnienia przez system kodowania wszystkich powyższych celów. W warunkach szczególnie trudnych dla transmisji, wynikających z dużego poziomu zakłóceń w torze i wysokiej tłumienności, waga pierwszego celu zmniejsza się. 2.1 Kryteria doboru kodu Stosowane kody transmisyjne, liniowe przekształcają dane binarne w elementy sygnału. Jeśli wszystkie elementy sygnału mają ten sam znak algebraiczny, to jest on unipolarny. Istnieją również sygnały bipolarne, w których jeden stan logiczny reprezentowany jest przez ujemny poziom napięcia a drugi przez dodatni. Wielopoziomowe sygnały binarne, tworzone np. przez kod 2B1Q, o większej liczbie poziomów napięć potrafią za pomocą jednego symbolu przenosić informację o dwóch i więcej bitach kodowanego ciągu binarnego.

Cyfrowe kodowanie sygnałów 11 Kody unipolarne można ponadto podzielić na kategorie * : bez powrotu do zera (NRZ ang. Non Return to Zero) - stały poziom napięcia w trakcie trwania bitu z powrotem do zera (RZ ang. Return Zero) - w połowie trwania bitu poziom napięcia wraca do zera bifazowe (np. kod Manchester, dla którego w połowie trwania bitu następuje zmiana poziomu napięcia ) kody Millera Poprawę jakości transmisji można uzyskać zwiększając stosunek sygnału do szumów, zwiększając szerokość pasma toru lub ewentualnie zmniejszając szybkość transmisji. Okazuje się, że gdy te czynniki są już ustalone, wybór odpowiedniego kodu liniowego również może przynieść polepszenie parametrów transmisji. Wiąże się to z następującymi wymaganiami stawianymi technikom kodowania: eliminacja składowej stałej w widmie energetycznym sygnału (poza torami światłowodowymi, w których wymagana jest niezmienna składowa stała), dzięki czemu zmniejsza się wpływ pojemności łącza, a w urządzeniach można stosować transformatory separujące koncentracja mocy sygnału w możliwie wąskim pasmie przy najmniejszych częstotliwościach pozwala ograniczyć wymagane pasmo przenoszenia. Tłumienie sygnału zwiększa się ze wzrostem częstotliwości. Aby więc uniknąć zniekształceń spowodowanych nierównomiernym tłumieniem dąży sie do ograniczenia wymaganego pasma przenoszenia. samosynchronizacja dzięki zawartej w widmie sygnału informacji o sygnale taktowania (odbiornik na podstawie zmian może uzyskać synchronizację) zdolność do wykrywania błędów opcjonalnie: obniżenie przepływności sygnału w stosunku do przepływności binarnej (np. kodowanie 2B1Q i inne oparte na modulacji PAM) Powyższe właściwości zostaną teraz szerzej omówione na przykładach najważniejszych kodów liniowych. Kody bez powrotu do zera Kody NRZ (rys.4) są proste w generowaniu. Najczęściej są stosowane w terminalach, w interfejsach szeregowych urządzeń stojących w niedużej odległości. W takim przypadku stan '1' koduje ujemne napięcie a stan '0' - dodatnie (kod polarny). Poza podstawowym kodem tej rodziny, będącym wprost odzwierciedleniem kodowanego ciągu binarnego, * Wśród niektórych kodów bipolarnych również można wyróżnić kody RZ i NRZ

12 Cyfrowe kodowanie sygnałów istnieją dwie odmiany kodów NRZ. Są to kody różnicowe ** : NRZ-M (mark) -znak i NRZ- S (space) przerwa. Rys.4: Reguły cyfrowego kodowania liniowego Cechy kodu NRZ-M (Non Return to Zero -mark) : stan bitu jest odwzorowany jako zmiana sygnału lub jej brak na początku okresu trwania bitu zmiana stanu oznacza logiczne '1', brak zmiany oznacza bit '0' stały poziom napięcia w trakcie trwania bitu Cechy kodu NRZ-S (Non Return to Zero - space) : zmiana stanu oznacza logiczne '0', brak zmiany oznacza bit '1' stały poziom napięcia w trakcie trwania bitu ** W kodowaniu różnicowym sygnał zostaje zdekodowany na podstawie biegunowości dwóch sąsiednich elementów, a nie ich bezwzględnych wartości

Cyfrowe kodowanie sygnałów 13 Poza prostotą realizacji koderów, sygnały generowane kodami NRZ odznaczają się dobrym wykorzystaniem dostępnego pasma. Na rysunku 5 przedstawiono widma mocy różnych technik kodowania. Rys.5: Gęstość widmowa sygnałów Wynika z niego, że większość energii sygnału zakodowanego NRZ skupiona jest między częstotliwością równą połowie największej szybkości transmisji a częstotliwością zerową. Na wykresie częstotliwość została znormalizowana do maksymalnej szybkości transmisji oznaczonej przez R. Sygnały NRZ zawierają jednak składową stałą i nie umożliwiają wydzielenia z ich strumienia informacji o sygnale taktowania. Kody z powrotem do zera Porównując do kodów NRZ, kody RZ nie różnią się od nich istotnie. Zmiana polegająca na wymuszeniu powrotu do zera (lub zmiany stanu na niski) nie poprawia właściwie własności kodów RZ: '0' logiczne kodowane niskim napięciem '1' logiczna kodowana jako zmiana stanu na początku trwania bitu i powrót do

14 Cyfrowe kodowanie sygnałów niskiego napięcia w połowie trwania bitu obecność składowej stałej szybkość modulacji *, rozumiana jako liczba zmian stanu na okres trwania bitu, jest dwukrotnie większa niż dla kodów NRZ. Stąd szerokość pasma zajętego przez widmo mocy sygnału RZ jest dwa razy większa brak informacji o sygnale taktowania uniemożliwia bitową synchronizację odbiornika. Kody bifazowe Kody bifazowe znakomicie eliminują powyższe wady. Reguły kodowania wymagają przynajmniej jednej zmiany stanu sygnału w trakcie trwania bitu. Mogą się zdarzyć dwie zmiany. Istnieje kilka kodów z tej grupy. Trzy z nich: kod Manchester, bifazowy- M oraz bifazowy -S zostały przedstawione na rysunku 4. Kod Manchester różnicowy ilustruje rysunek 6. Cechy kodu bifazowego (Manchester) : przejście zawsze w środku każdego przedziału (w połowie bitu) '0' logiczne kodowane przejściem: stan wysoki -> stan niski '1' logiczna kodowana przejściem: stan niski -> stan wysoki samosynchronizacja na podstawie dającej się przewidzieć zmiany w trakcie trwania każdego bitu szybkość modulacji dwa razy większa niż kodów NRZ; zakodowanie '1' następującej po logicznej '1' wymaga bowiem dwóch zmian poziomu napięcia w czasie trwania bitu (podobnie przy kodowaniu dwóch następujących po siebie '0') wymagania kodowania eliminują składową stałą Cechy kodu bifazowego-m (znak) : przejście zawsze na początku każdego przedziału '0' logiczne kodowane brakiem przejścia w połowie trwania bitu '1' logiczna kodowana przejściem w połowie trwania bitu samosynchronizacja na podstawie dającej się przewidzieć zmiany szybkość modulacji dwa razy większa niż kodów NRZ; '1' kodowana dwoma zmianami eliminacja składowej stałej kod różnicowy * Szybkość modulacji (sygnalizacji) w zasadzie mierzona jest w bodach (dla kodów RZ R= [1/T B ]gdzie T B jest okresem powtarzania bitów).dobrze jest jednak odnieść wprost jej wartość do jednego okresu T B

Cyfrowe kodowanie sygnałów 15 Kod bifazowy -S (przerwa) nie różni się co do istoty kodowania od kodu bifazowego -M). Zamieniony jest jedynie sposób przedstawiania logicznego '0' z kodowaniem '1'. Cechy kodu Manchester różnicowego - Differential Manchester (rys.6): przejście zawsze w środku każdego przedziału (w połowie bitu) '0' logiczne kodowane przejściem na początku każdego przedziału '1' logiczna kodowana brakiem przejścia na początku każdego przedziału samosynchronizacja na podstawie dającej się przewidzieć zmianie szybkość modulacji dwa razy większa niż kodów NRZ eliminacja składowej stałej kod różnicowy Rys.6: Ilustracja kodowania za pomocą kodu Manchester róŝnicowy Kody bifazowe mają wiele zalet. Do wymienionych już powyżej należy dodać możliwość detekcji błędów. Brak oczekiwanej zmiany poziomu sygnału oznacza przekłamanie. Aby błąd nie został wykryty, szum musiałby wywołać zmianę poziomu sygnału dwukrotnie: przed i po spodziewanym przejściu. Przenoszenie informacji o sygnale taktowania, brak składowej stałej a także inne zalety sprawiły, że kody bifazowe są wykorzystywane w lokalnych sieciach transmisji danych (LAN - ang. Local Area Network). Kod Manchester stosowany jest w wersjach standardu Ethernet o szybkościach transmisji równej 10Mb/s. Kod Manchester różnicowy ma zaś zastosowanie w lokalnych sieciach pierścieniowych (ang. token ring) (standard 802.5). Kodowanie manchesterskie upowszechniło się również na kontynencie amerykańskim w łączu abonenckim sieci ISDN * (tzw. styk U')[2]. Kody Millera Kody Millera(patrz rysunek.4) - z opóźnioną modulacją (ang. Delay modulation codes), kosztem nieco gorszego przenoszenia zegara, wymagają mniejszej szerokości dostępnego pasma niż kody bifazowe. Szybkość modulacji jest mniejsza, ponieważ zasada tworzenia sygnału sprawia, że potrzebna jest co najwyżej jedna zmiana stanu w trakcie trwania bitu. * W Europie w styku U stosowany jest wielopoziomowy kod 2B1Q.

16 Cyfrowe kodowanie sygnałów Cechy kodu Millera: '0' logiczne kodowane przejściem na początku przedziału, jeśli następuje po '0' i brakiem takiego przejścia, jeśli następuje po '1' '1' kodowana przejściem w połowie przedziału obecność składowej stałej samosynchronizacja kod różnicowy Kody bipolarne i inne wielopoziomowe binarne Rys.7: Ilustracja kodowania za pomocą wielopoziomowych kodów binarnych Wielopoziomowe kody wykorzystują co najmniej trzy poziomu sygnału. Zwane są również kodami transmisyjnymi PAM (ang. Pulse-Amplitude Modulation), gdyż elementy ciągu binarnego kodowane są poziomem amplitudy sygnału wyjściowego. Do najbardziej rozpowszechnionych kodów binarnych (o trzech poziomach sygnału) należy kod AMI (ang. Alternate Mark Inversion). Z rysunku 5 wynika, że większość energii sygnału AMI jest skupiona w okolicach połowy maksymalnej szybkości. Widmo sygnału nie zawiera składowej stałej. Inne cechy kodu AMI: '0' logiczne kodowane brakiem napięcia '1' logiczna kodowana naprzemiennymi impulsami (dwa kolejne o przeciwnej polaryzacji) dobre wykorzystanie pasma samosynchronizacja tracona przy dłuższych sekwencjach zer (brak impulsów) kod z redundancją - dwa symbole binarne są kodowane trzema elementami sygnału, co zapewnia zdolność do wykrywania niektórych błędów (dwie jedynki

Cyfrowe kodowanie sygnałów 17 muszą mieć przeciwną polaryzację) Istnieje kilka odmian kodów AMI: 1. kod pseudoternarny (na rysunku 7 jako AMI NRZ-S) 2. MLT-3 - różnicowy 3. AMI z powrotem do zera - AMI RZ Kody AMI ze względu na utrudnioną synchronizację odbiornika, tracą na znaczeniu. Są stosowane m.in. w styku S/T sieci ISDN - np. między cyfrową centarlką PABX a telefonem ISDN. Były lub są nadal używane w PCM30 -systemie zwielokratniania pierwszego poziomu systemu PDH (ang. Plesiochronous Digital Hierarchy). Czasami są stosowane wraz z kodowaniem eliminującym dłuższe sekwencje powodujące utratę synchronizacji. W kodowaniu 4B/5B ciągi czterobitowe kodowane są pięciobitowymi symbolami. Do każdych czterech bitów dodawany jest piąty, tak by zapewnić co najmniej jedną zmianę sygnału. Tak przygotowane dane trafiają do kodera AMI/MLT-3. Skrambler 4B/5B nie zapewnia oczywiście oryginalnej szybkości transmisji. Spośród kodów o większej liczbie poziomów niż trzy najbardziej reprezentatywny jest kod 2B1Q. Został przedstawiony na rysunku 7 jako ostatni. Jest to czterowartościowy kod bez redundancji (Two Binary One Quaternary). Grupuje pary sąsiednich bitów i każdej z nich przyporządkowuje jeden z czterech możliwych symboli. Zabieg ten obniża dwukrotnie szybkość transmisyjną i pozwala na przesunięcie widma sygnału w kierunku niższych częstotliwości[2]. Widmo tworzonego przebiegu zawiera składową stałą a przesyłanie w dłuższym okresie czasu tej samej pary bitów (tego samego symbolu) uniemożliwia synchronizację odbiornika. Jak już wspomniano, 2B1Q stosowany jest w styku U (w łączu abonenta ISDN ) w Europie. Ma zastosowanie w systemie PDH w trzecim poziomie zwielokrotniania o przepływności 34 Mb/s (kabel koncentryczny, odległość 4km). Pierwsze modemy DSL (ang. Digital Subscriber Line), które wykorzystywały modulację pasma podstawowego (SDSL - simple oraz HDSL - high data rate) stosowały kodowanie 2B1Q *. W modemach tych uzyskano przepływność rzędu 2Mb/s na odległość ok.3km (skrętka o przekroju 0,4mm 2 ). Kody 2B1Q, a także inne oparte na wielopoziomowych kodach binarnych, wymagają od odbiornika aby rozróżniał więcej niż cztery poziomy sygnału. W przypadku, gdy tor transmisyjny wprowadza znaczne tłumienie lub gdy zależy ono silnie od czynników takich jak temperatura czy wilgotność, poprawne zdekodowanie symboli kodu wielopoziomowego staje się trudne. * Obecnie modemy DSL wykorzystują zaawansowane modulacje jednotonowe (CAP) lub wielotonowe (DMT). Daje to możliwość transmisji POTS (telefonia analogowa w pasmie 3,1kHz) lub ISDN na tym samym kablu a także zwiększa osiągane szybkości transmisji

18 Cyfrowe kodowanie sygnałów 2.2 Kod liniowy HDB3 W tematowym modemie jako modulacja w pasmie podstawowym został zastosowany kod liniowy * (ang. line code) HDB3 (ang. High density Bipolar 3 zeros). W podrozdziale zostaną przedstawione argumenty uzasadniające taki wybór. Główną wadą kodu bipolarnego AMI jest fakt, iż tor transmisyjny nie może przenosić sygnału o dłuższych sekwencjach nie powodujących zmiany poziomu. W takim wypadku odbiornik, albo też regenerator, pozbawiony jest informacji o sygnale taktowania. Wspomniano już o kodowaniu 4B/5B, które eliminuje niepożądane sekwencje binarne, ale nie zachowuje oryginalnej szybkości transmisji. Lepsze rozwiązanie problemu przynoszą pewne modyfikacje kodów AMI, z których najpowszechniejszą jest kod HDB3. Jeśli w kodowanym ciągu binarnym nie występują więcej niż trzy logiczne zera, zasada tworzenia sygnału HDB3 jest taka sama jak dla AMI. Natomiast każda sekwencja czterech kolejnych zer zostaje przetworzona zgodnie z tabelą porównującą techniki kodowania. W tabeli element V oznacza impuls zakłócający (ang. violaton) naturalną przemienność polaryzacji kolejnych impulsów. Zaś element B to impuls o przeciwnej polaryzacji. Reguła sprawia, że kolejne elementy V mają przeciwne biegunowości (rys.8). Nie wpływają więc na wartość średnią sygnału. Jednak tzw. suma cyfrowa, czyli ilość nie skompensowanych elementów dla kodu HDB3 jest większa niż dla AMI. Dla AMI nie przekracza ona granic (+1) i (-1), tyle ile wartość jednego elementu. Dla kodowania HDB3 elementy V zwiększają sumę cyfrową do (+2) lub (-2). * Termin kody liniowe ma dwa znaczenia: 1 Gdy rozumiany jest jako kod tworzący sygnał przesyłany l i n i ą transmisyjną (np. HDB3). 2 Jako nadmiarowy kod korekcyjny, który umożliwia wykrycie błędnego słowa kodowego (np. kody Hamminga, cykliczne i inne).ogólnie kod można nazwać liniowym, gdy suma modulo dwóch dowolnych słów kodu daje również jego słowo kodowe.

Cyfrowe kodowanie sygnałów 19 Rys.8: Ilustracja kodowania HDB3 Zakłócenia V zmieniają również charakterystykę widmową mocy impulsów HDB3 w stosunku do kodowania AMI. Różnica została przedstawiona na rysunku 9, na którym częstotliwość została znormalizowana do okresu T= 1 fr (fr -szybkość transmisji). Rys.9: Widma mocy impulsów AMI i HDB3 Widać, że główne zalety kodu AMI zostały zachowane: brak składowej stałej efektywne wykorzystanie dostępnego pasma przenoszenia, widmo kodu ma charakter filtru kształtującego energię sygnału w ten sposób, że skupia ją w połowie pasma Ponadto HDB3 wnosi wiele udoskonaleń: dobre przenoszenie sygnału taktującego umożliwiające synchronizację odbiornika dekoder HDB3 może wykrywać przekłamania w postaci zakłóceń w regule kodowania: cztery lub więcej kolejno odebranych zer, dwie kolejne wartości kodowane tym samym impulsem, zbyt wczesne pojawienie się impulsu V itp. Wykorzystana tu zostaje redundancja wprowadzona przez kodowanie dwóch stanów logicznych przez trzy symbole (poziomy sygnału). Może się jednak okazać, że przekłamanie, które nie zostanie wykryte, spowoduje propagację błędów. Jeśli np. w sekwencji kodu liniowego (B+)(0)(B-)(B+) wystąpi przekłamanie na trzecim elemencie i dekoder odbierze (B+)(0)(0)(B+) to zostanie ona zrozumiana jako (B+)(0)(0)(V). Jeśli jednocześnie ostatnio odebrany element V miał polaryzację ujemną to dekoder całość potraktuje jak (0)(0)(0)(0). W efekcie wystąpią trzy błędy.

20 Cyfrowe kodowanie sygnałów + O [V] 1 1 1 1 - T B Rys.10: Szybkość modulacji przy przesyłaniu ciągu jedynek w kodzie HDB3 Szybkość modulacji, o której była już mowa przy okazji omawiania kodów RZ i bifazowych jest równa [1/T B ] gdzie T B jest okresem powtarzania bitów. Wynosi więc tyle samo ile szybkość transmisji. W najgorszym przypadku, gdy przesyłany jest ciąg logicznych jedynek (rys.10), występują jednak dwie zmiany poziomu sygnału przypadające na jeden bit. Pierwsza zmiana pojawia się na początku trwania bitu i druga w połowie okresu. Można by więc przypuszczać, że tak jak dla kodów bifazowych i RZ szybkość modulacji wyniesie [2/T B ]. Jednak wykorzystanie w kodowaniu AMI/HDB3 trzech poziomów sygnału (dodatniego, ujemnego i zerowego) sprawia, że obwiednia sygnału w linii ma częstotliwość powtarzania dwa razy mniejszą niż obwiednia dla sygnału bifazowego w takich samych warunkach. Zostało to zilustrowane na rysunkach 10 i 11. 1 1 1 T B Rys.11: Szybkość modulacji przy przesyłaniu ciągu jedynek w kodzie Manchester Widmo mocy impulsów kodu HDB3 nie zawiera więc składowych wyższych częstotliwości niż częstotliwość równa szybkości transmisji. Jest to bardzo ważna zaleta tego kodowania (rys.9).

Cyfrowe kodowanie sygnałów 21 Kod HDB3 jest opisywany w standardach G.703/G.704. Normy te dotyczą hierarchii PDH i definiują algorytmy kodowania, przepływności w kolejnych poziomach zwielokrotniania, parametry elektryczne sygnałów itp. Najczęściej występujące kodowanie HDB3 jest używane przy przepustowościach 2048 kb/s, 8448 kb/s i 34 368 kb/s. Poza zastosowaniem w systemie PDH, kod ten jednak nie jest dziś powszechnie używany do transmisji sygnałów. W modemach DSL wykorzystujących modulację pasma podstawowego- czyli kodowanie liniowe, stosowane są obecnie wielowartościowe kody takie jak TC-PAM32 i inne oparte na modulacji PAM. Zaawansowane techniki adaptacyjne kompensujące echo, eliminujące przesłuchy i inne szkodliwe dla transmisji czynniki, pozwalają odbiornikom na prawidłowe zdekodowanie wielopoziomowych kodów nawet gdy liczba używanych poziomów osiąga 32 i więcej. Zaprojektowany modem ma znaleźć zastosowanie w kopalniach głębinowych.

3 BUDOWA MODEMU 3.1 Wprowadzenie W trakcie definiowania celu i zakresu pracy na autora nie zostały nałożone dodatkowe wymagania ponad wymienione we Wprowadzeniu. Nie określono więc maksymalnej pobieranej przez urządzenie mocy, napięcia zasilania ani typu mikrokontrolera czy układu PLD. W związku z tą bardzo komfortową sytuacją autor miał duży wybór co do użytych podzespołów. Zaprojektowany modem ma budowę modułową i wielopoziomową. Problem opracowania urządzenia nie ograniczał się tylko do zaimplementowania algorytmów kodowania i dekodowania liniowego. Należało stworzyć lub wykorzystać wbudowany w mikrokontroler sprzętowy interfejs RS232 a następnie go oprogramować. Ponadto, ze względu na znaczną różnicę w szybkościach interfejsu lokalnego i liniowego między modemami, potrzebna była pamięć buforowa (FIFO). Ponieważ transmisja ma się odbywać permanentnie (nawet przy braku danych do przesłania), z potwierdzeniem odbioru, modem powinien również zarządzać transmisją: formować ramki danych, obliczać sumę kontrolną ramek przychodzących i nadawanych - CRC (ang. Cyclic Redundancy Codes) itp. Jak już wspomniano we Wprowadzeniu, funkcje te rozdzielono między prosty ośmiobitowy mikrokontroler -ATmega32 firmy Atmel w wersji niskonapięciowej i układ PLD. Ponieważ opisu funkcjonalnego części zawartej w PLD dokonano w języku VHDL,

Budowa modemu 23 wyboru rodziny układu programowalnego można było dokonać po pomyślnie przeprowadzonej symulacji komputerowej *. Takie podejście wydaje się naturalne przy definiowaniu struktury w języku opisu sprzętu. VHDL z założenia abstrahuje od architektury układu docelowego i ma uwalniać programistę od szczegółowej jej analizy. Inna rzecz, że narzędzia przekształcające abstrakcyjny opis na sieć połączeń podstawowych bramek i przerzutników nie są doskonałe i tworzą nieoptymalne, bardzo zasobochłonne opisy **. Na potrzeby opisu budowy urządzenia zostały stworzone następujące pojęcia: warstwa fizyczna warstwa ramki warstwa danych luźno związanych z modelem warstwowym ISO/OSI. Umiejscowienie warstw ilustruje rysunek 12. Zadania mikrokontrolera obejmują komunikację z komputerem po łączu RS232 oraz buforowanie danych. FIFOout jest pamięcią typu first in - first out i przechowuje dane do wysłania przychodzące z interfejsu lokalnego. Zaś FIFOin gromadzi dane odebrane z drugiego modemu i sukcesywnie wysyła je do sprzętowego interfejsu RS232. Mikroprocesor ATmega32 realizuje zadania warstwy danych. Operuje on bowiem na oryginalnej postaci wysłanej przez komputer informacji, nie zaburzając struktury bajtowej. ATmega realizuje również komunikację z układem PLD, wykorzystując swój sprzętowy interfejs SPI. Układ programowalny realizuje właściwą transmisję. Pobrane z FIFOout dane organizuje w ramki zawierające od zera do czterech bajtów danych oraz elementy kontrolujące poprawność transmisji: sumę CRC i licznik nadanych ramek. Natomiast po stronie odbiorczej, PLD weryfikuje pola kontrolne ramki i podejmuje decyzję o kontynuowaniu transmisji bądź retransmitowaniu ostatnio wysłanej ramki. Realizująca te zadania część modemu odpowiada tym samym za funkcje warstwy ramki. Za najważniejsze funkcje modemu, kodowanie/dekodowanie liniowe, odpowiada warstwa fizyczna zaimplementowana w układzie PLD. Warstwa ta operuje na poszczególnych bitach ramki i dlatego została wyróżniona w opisie budowy modemu. Interfejs analogowy ma zadanie sprząc jedno parowy przewód łączący modemy i część cyfrową modemu. Dwa sygnały w standardzie LVTTL, odpowiadające trójstanowemu kodowi HDB3 zostają w nim zsumowane na transformatorze. Ponieważ transmisja odbywa się naprzemiennie, zbędny jest układ eliminacji echa. Potrzebna jest natomiast funkcja przełączania linii na nadawanie lub odbiór danych. * Na tym etapie wiadomo było jedynie, że będzie to układ firmy Xilinx ** Szerzej będzie o tym mowa w rozdziale pt. Praktyczna realizacja

24 Budowa modemu RXT TXT RTS CTS FIFOin RS232 FIFOout Obróbka RAMKI SPI SPI ATmega32 FPGA XC2s30 Warstwa danych Warstwa ramki Pout KODER Mout Pin DEKODER Min Interfejs analogowy Warstwa fizyczna Rys.12 Poglądowa budowa modemu

Budowa modemu 25 Algorytm działania mikrokontrolera zostanie omówiony w podrozdziale Warstwa danych. Ponieważ warstwa fizyczna i warstwa ramki zostały zaimplementowane w jednej strukturze układu FPGA, warto w tym miejscu, nie wnikając w szczegóły, przedstawić opis działania tej części modemu. Opis architektury ma budowę modułową. Poszczególne bloki funkcjonalne zostały zapisane w osobnych plikach VHDL -*.vhd. Wzajemne powiązanie jednostek (w VHDL zwane entity) i odpowiadające im nazwy plików przedstawia rysunek 13. Rysunek nie przedstawia wszystkich entity. Pominięte zostały najmniej ważne (patrz D.4 Dodatku). Pracę tej części modemu kontroluje układ sterujący US. Jest to siedmiostanowy automat sekwencyjny, którego graf pracy przedstawia rysunek 14. W sytuacji, gdy nawiązana jest łączność między urządzeniami, modemy pracują cyklicznie w 3, 4, 5 lub 6 stanie grafu. Natomiast w stanach 0, 1 i 2 modem znajduje się w trybie czuwania, czyli oczekiwania na dane z urządzenia lokalnego (komputera) bądź z linii. Automat taktowany jest głównym zegarem - 'CLK', pochodzącym z oscylatora kwarcowego o częstotliwości 16,25MHz. Opis grafu: w stanie 0 wymagające tego bloki inicjowane są wartościami początkowymi w stanie 1 uaktywniana jest część odbiorcza modemu: układ odtwarzania zegara -UOZ dekoder HDB3 - dekhdb3 układ wykrywania przychodzącej ramki - debuff po wykryciu przychodzącej ramki uaktywniony zostaje (bez wiedzy US) układ weryfikowania ramki - WR WR zgłasza US zakończenie weryfikacji i automat przechodzi do stanu 3; w stanie 1 ponadto sprawdzany jest stan sygnału 'AR' (avr request), którym mikrokontroler zgłasza, że ma dane do wysłania i jeśli 'AR'!= 00 to automat przechodzi do stanu 2 w stanie 2 ponownie sprawdzany jest sygnał 'AR' i jeśli 'AR'!= 00 to automat przechodzi do stanu 3 w stanie 3 uaktywniany jest moduł SPI - SR do komunikacji z mikroprocesorem. Dane z ramki z WR wysyłane są do mikrokontrolera, zaś dane z mikrokontrolera trafią później do ramki w bloku FR - układu formowania ramki. Dezaktywowana jest część odbiorcza. Po zakończeniu wymiany danych moduł zgłasza US, że wykonał zadanie i automat przechodzi do stanu 4. w stanie 4 automat znajduję się przez jeden takt. Uaktywniony zostaje układ formowania ramki - FR. Następnie bezwarunkowo przechodzi do stanu 5.

CRC crc.vhd CRC Dane FR fr.vhd header + FRAMEtx + CRC NKB hdb3kod hdb3kod.vhd Done CRC FRAMEtx (31:0) counter(5:0) On/Off AR(1:0) SPI(3:0) CR(1:0) Dane FRAMErx (31:0) SR shiftr.vhd counter(5:0) Done On/Off Done US us.vhd On/Off FILTR1 filtr.vhd FILTR1 filtr.vhd WR wr.vhd header + FRAMErx + CRC NKB DekHdb3 dekhdb3.vhd clkodtw (odworzony zegar) UOZ uoz.vhd Taktowane zegarem odtworzonym Taktowane zegarem transmisyjnym clk16 (lokalnym) FPGA Taktowane głównym zegarem CLK (lokalnym) Rys.13 Schemat ideowy warstwy fizycznej i warstwy danych POut MOut PIn MIn

Budowa modemu 27 w stanie 5 formowana jest ramka. Do bajtów danych dodawane są bajty informacyjne i suma kontrolna CRC. Następnie ramka jest wysyłana do kodera HDB3 - hdb3kod i później FR informuje układ sterujący US, że wykonał zadanie. Automat przechodzi do stanu 6. w stanie 6 uaktywniona zostaje część odbiorcza i modem czeka na przychodzącą ramkę lub sygnał 'timeout' oznaczający, że czas oczekiwania na nią minął. 0 - - 0 - - - - 1 - - 0 0 10 00 1 00 01 0 - - 0 2 00 01 - - - 1 1 - - - - 0 - - 3 - - - 1 01 00 AR SR FR WR - - - 0 - - - 1-1 - - - - 0 - stan rst SR FR dek 6 00 01 - - 1-5 00 00 - - - - 4 00 10 Wyjścia US rst - globalny reset po włączeniu SR - uaktywnia SR FR - uaktywnia SR dek - uaktywnia cz. odbiorczą Wejścia US AR - ATmega request(ŝądanie AVR-a) SR - zgłoszenie wykonania zadania przez SR FR - zgłoszenie wykonania zadania przez FR WR -zgłoszenie wykonania zadania przez WR Rys.14 Graf automatu stanu układu sterującego US

28 Budowa modemu 3.2 Warstwa fizyczna Układ odtwarzania zegara ( UOZ) Zadaniem bloku jest zsynchronizowanie bitowego zegara taktującego przychodzące dane oraz zegara nadawczy drugiego modemu. Ideowa budowa bloku została przedstawiona na rysunku 15. Impulsy wejściowe 'P' i 'M' po przejściu przez filtr (FILTR) trafiają zarówno do dekodera HDB3 (dekhdb3) i do układu odtwarzania zegara. Część odbiorcza modemu w całości taktowana jest * zegarem odtworzonym, zaszytym w odbieranych danych, a więc całkowicie zsynchronizowanym z nadającym modemem. Budowa bloku opiera się na bloku wytwarzającym zegar dla części nadawczej urządzenia - clk16. Niewielkie modyfikacje w budowie jednostki UOZ pozwalają na regulowanie bieżącej fazy wytwarzanego zegara, co wyrównuje średnie częstotliwości. 'LicznikClk' liczący mod 16, podobnie jak w bloku clk16 jest dzielnikiem głównego zegara 'CLK' przez 16. Pomocnicze liczniki i komparatory pozwalają na przyspieszanie nadchodzącego zbocza zegarowego ('licznikclk' jest inkrementowany o 2 zamiast o 1) lub opóźnianie (wartość 'licznikclk' pozostaje niezmieniona). Poziomy wytworzonych sygnałów 'POK' i 'MOK' mają za zadanie rozróżnić czy dla bieżącego sygnału wejściowego 'P' lub 'M' pojawił się już impuls taktującego zegara. Ilustruje to rysunek 16. PlicznikA/MlicznikA liczy z rozdzielczością 1/16 od momentu pojawienia się sygnału 'P'/'M'(gdy będzie w stanie 'H') do chwili gdy pojawi się impuls 'clkodtw' taktujący ten sygnał. Odtąd liczy 'PlicznikB'/ 'MlicznikB' do chwili gdy 'P'/'M' przyjmie stan 'L'. Teraz na podstawie różnicy 'XlicznikA' 'XlicznikB' inkrementowany bądź dekrementowany jest licznik rewersyjny. Licznik 'rewersyjny' gdy osiągnie stan 3 (a więc trzy razy zostanie stwierdzone, że impuls taktujący jest zbyt blisko końca impulsu danych) wygeneruje sygnał 'dodaj'. Ten zaś spowoduje zwiększenie zawartości licznika 'licznikclk' o 2 iw konsekwencji impuls wyjściowy bloku UOZ następnym razem zostanie wygenerowany wcześniej. Natomiast gdy 'rewersyjny' osiągnie stan -3 (a więc trzy razy zostanie stwierdzone, że impuls taktujący jest zbyt blisko początku impulsu danych), wygeneruje sygnał 'odejmij'. Impuls wyjściowy bloku UOZ ('clkodtw') następnym razem zostanie wygenerowany z opóźnieniem. Dość wysoka wartość progowa licznika 'rewersyjny' sprawia, że moduł UOZ jest bardziej odporny na zakłócenia i nie synchronizuje się fałszywymi impulsami. * Nie jest to fizyczny zegar, patrz opis bloku clk16

Budowa modemu 29 UKŁAD ODTWARZANIA ZEGARA entity EUOZ is M D Q MOK port ( rst: in std_logic; En : in std_logic; P : in std_logic; M : in std_logic; CLK: in std_logic; outputt: out std_logic ); end EUOZ; clkodtw P D Q POK * clkodtw = outputt clkodtw P!POK P POK CLK En En PLicznikA PLicznikB PLicznikA > PLicznikB N T CLK + - rewersyjny M!MOK M MOK CLK En En MLicznikA MLicznikB MLicznikA > MLicznikB N T T rewersyjny == 3 +2 licznikclk +1 +0 CLK T N rewersyjn y == -3 D Q clkodtw N MSB(licznikClk) CLK Rys.15: Schemat ideowy bloku UOZ

30 Budowa modemu PlicznikA aktywny PlicznikB aktywny Plicznik > PlicznikB Rys.16: Przebiegi sygnałów bloku UOZ

Budowa modemu 31 Generator zegara transmisyjnego (clk16) W omawianym bloku główny sygnał zegarowy 'CLK' o częstotliwości 16,25MHz zostaje doprowadzony do 4 bitowego dzielnika częstotliwości - 'licznikclk'. Wytworzony sygnał zegarowy nie jest jednak wprost kopią najbardziej znaczącego bitu 'licznikclk'. 'Clk16' przyjmuje stan 'H' n a j e d e n takt sygnału 'CLK' w chwili narastającego zbocza 'clk' i gdy 'licznikclk' ma wartość 0x0F. Sygnał 'clk16' jest doprowadzany do wejść enable/cs wszystkich tych przerzutników, które mają pracować z częstotliwością 16 razy mniejszą niż częstotliwość zegara 'clk'. Rys.17: Przebieg czasowy sygnału clk16 zegara transmisyjnego Prosty przykład, w którym częstotliwość zegara została podzielona w dwubitowym liczniku przez 4 wyjaśnia przyczyny takiej implementacji, został zilustrowany poniżej na rysunku 18): CLK D1 Q1 t D2 Q2 CLKdiv4 Taka realizacja przy małym opóźnieniu logiki w chmurce jest niepewna. Nie jest pewne czy do Q2 zostanie przepisana "stara" czy "nowa" wartosc Q1 CLK D1 Q1 D1 Q1 t clk4 En CLK W calym projekcie podział czestotlowosci został zrealizowany przez zastosowanie wejść enable przerzutników Rys.18a: Przykład poprawnej i niepoprawnej realizacji podziału częstotliwości

32 Budowa modemu Rys.18b: Przebiegi sygnałów w testowym bloku clk4 Gdyby opóźnienie w omawianym bloku testowym (clk4) wprowadzane przez przerzutnik licznika clk4 było większe niż pierwszego przerzutnika z rysunku 18a ( D1 = 0,1ns), wyjście Q2 przyjęłoby zbyt wcześnie (już w po ok. 250ns ) stan 'H'. Innymi słowy, gdyby zbocze zegara 'clk4' pojawiło się nieco później, już po ustaleniu wyj-ścia Q1, do Q2 zostałaby przepisana nowa wartość Q1. Aby wyeliminować hazardy wszystkie przerzutniki modemu taktowane są więc tym samym zegarem ('CLK'), zaś sygnały uzyskane z podziału częstotliwości doprowadzane są do wejść enable/cs przerzutników. Clk16 odpowiada również za generowanie sygnału zegarowego dla bloku SR 'clkspi' o częstotliwości dwa razy większej niż sygnału 'clk16'. Wytwarza również sygnał 'clkrst', który asynchronicznie zeruje impulsy 'P' i 'M' bloku HDB3kod, aby dostosować sygnał w linii między modemami do wymogów jakie stawia kod HDB3(patrz opis kodera HDB).

Budowa modemu 33 Blok filtrów (FILTR) Blok budują dwa identyczne filtry pseudo-cyfrowe. Impulsy z linii po przekształceniu ich w interfejsie analogowym na standard LVTTL zrozumiały dla układu FPGA, trafiają do filtrów(jako 'Pin' i 'Min' ). Zadaniem tej części modemu jest wyeliminowanie z sygnałów 'Pin'/'Min' dziur i fałszywych impulsów spowodowanych zakłóceniami w linii. Rys.19: Filtrowanie impulsów wejściowych inputt Jak widać z rysunku 19 filtr stara się eliminować dziury w przychodzącym sygnale i ignorować samotne, krótkotrwałe impulsy. Ponieważ szerokość wytworzonego w nadajniku impulsu 'Pin'/'Min' jest równa połowie taktu zegara transmisyjnego *, filtr w odbiorniku musi wydłużyć go dwukrotnie. Przedłużony i odfiltrowany impuls może zostać posłany do dekodera HDB3 i układu odtwarzania zegara, gdzie taktowany będzie odtworzonym zegarem transmisyjnym. * Patrz opis bloku HDB3kod

34 Budowa modemu Koder HDB3 ( HDB3kod ) Blok przekształca binarny ciąg zero-jedynkowy w trójstanowy kod zgodnie z regułą kodowania HDB3 *. Zasada tworzenia kodu HDB3 jest taka sama jak dla AMI, o ile nie pojawi się sekwencja czterech lub więcej następujących po sobie zer. W takim wypadku sekwencje czterech zer zamieniane są na jeden z dwóch ciągów: Kod binarny Kod HDB-3 Warunki 0000 000V B00V Jeśli za ostatnim el. V była nieparzysta liczba el. B Jeśli za ostatnim el. V była parzysta liczba el. B W tablicy element V oznacza impuls o polaryzacji zgodnej z polaryzacją impulsu poprzedniego (a więc zakłócenie przemienności violation). Natomiast B to element o przeciwnej polaryzacji. Reguła sprawia, że kolejne impulsy V mają przeciwną polaryzację. Pozwala to wyzerować składową stałą w dłuższych chwilach. Rys.20: Reguła kodowania HDB3 Ideowo zasada działania HDB3kod została przedstawiona na rysunku 21. Rejestr przesuwny pełni rolę bufora wykrywającego cztery kolejne zera. Dane z rejestru, w takt zegara transmisyjnego, są wpisywane do Synchronicznego Automatu Stanu (SAS). Automat ma trzy wejścia i dwa wyjścia :'P' i 'M', które w logice TTL odzwierciedlają trójstanowy kod HDB3. Sygnał 'clkrst' asynchronicznie zeruje 'P' lub 'M',tak by impuls trwał tylko przez pół taktu zegara 'clk16'. Dziewiętnaście stanów SAS (rys. 22) można pogrupować na dwa rdzenie (zielone) i cztery gałęzie (szarą, oliwkową, błękitną i różową). Rdzenie realizują kodowanie regułą AMI (gdy nie ma potrzeby wyeliminowania ciągu czterech kolejnych zer), natomiast gałęzie na cztery różne sposoby sposoby zamieniają sekwencję "0000": Kolor Szary Oliwkowy Błękitny RóŜowy 0000 000(1) (1)00(1) (-1)00(-1) 000(-1) * Więcej o HDB3 w rozdziale pt. Cyfrowe kodowanie sygnałów

Budowa modemu 35 KODER HDB3 entity EHDB3KOD is port ( Data : in std_logic; clkrst: in std_logic; en : in std_logic; P :out std_logic; M :out std_logic; CLK : in std_logic; clk16 : in std_logic ); end EHDB3KOD; clk16 Data ShiftReg D3 D2 D1 D0 D Z SAS P M clk16 en Rys.21: Ideowy schemat bloku HDB3kod Dekoder HDB3 (dekhdb3) Sygnał trójstanowy HDB3 odebrany z linii po zregenerowaniu w bloku filtrów zostaje zdekodowany w dekhdb3 do postaci kodu naturalnego NRZ. Jednocześnie z tego sygnału wyławiany jest w UOZ przebieg zegarowy, którym taktowana jest cała część odbiorcza modemu (także dekoder). Na rysunku 23 została przedstawiona ideowa budowa bloku. Sygnały 'P' i 'M', odzwierciedlające w logice ttl kod HDB3, trafiają do siedmiostanowego Synchronicznego Automatu Stanu (SAS). Podstawowa, zaznaczona na zielono część grafu automatu (rys.24) pracuje jako dekoder AMI. Gdy natomiast SAS wykryje zakłócenia przemienności polaryzacji w kodzie HDB3, uaktywnia wyjście V resetujące rejestr (stany niebieskie) *. Dana zdekodowana przez SAS trafia do czterobitowego rejestru przesuwnego (wejście Data) i jeśli przez cztery takty zegarowe rejestr nie zostanie wyzerowany, po tym czasie pojawi się na wyjściu dekodera (outputt). *Sekwencje (1)00(1), (-1)00(-1), 000(1), 000(-1) zostają zamienione na 0000

36 Budowa modemu 101 101 7 6 10 00 100 100 14 16 00 00 100 110 0-- 0 00 101 100 100 1 00 100 en Z D stan PM 100 8 01 101 101 101 101 9 10 2 10 101 101 101 100 3 01 110 4 100 100 110 100 100 101 10 100 110 101 12 00 101 10 01 100 100 15 00 100 17 00 101 13 110 5 101 01 10 101 100 100 11 18 01 z kazdego ze stanów powrót do stanu 0 przy 0-- 00 101 101 Rys.22: Graf automatu stanu SAS z bloku HDB3kod DEKODER HDB3 entity EdekHDB3 is port ( En : in std_logic; P : in std_logic; M : in std_logic; CLK: in std_logic; clk16:in std_logic; outputt:out std_logic ); end EdekHDB3; clkodtw P M en SAS V Q clkodtw Data outputt rst D3 - D0 ShiftReg Rys.23: Ideowa budowa bloku dekhdb3

Budowa modemu 37 6 01 en P M 100 100 101 stan QV 110 101 100 0-- 4 00 10-0 00 101 110 110 1 10 101 110 2 10 1-0 100 101 110 3 00 101 110 5 01 100 z kazdego ze stanów powrót do stanu 0 przy 0-- lub -11 Rys.24: Graf automatu stanu SAS z bloku dekhdb3 Bloki pomocnicze (debuff, buff) Jednostki te pełnią podobną rolę, pośrednicząc w wymianie danych między warstwą fizyczną a warstwą ramki. Ich budowa jest nieskomplikowana, oparta na jednym rejestrze przesuwającym. Blok buff znajduje się w części nadawczej modemu między układem formowania ramki (FR) a koderem HDB3. FR, po sformowaniu ramki, rozpoczyna jej transmisję do kodera. Dane trafiają jednak wpierw do bufora, aby wcześniej do kodera trafiła tzw. rozbiegówka - początkowa zawartość bufora. Szesnasto-bitowa * rozbiegówka ("1111111111110000") jako początkowa część * Rejestr jest faktycznie dwunastobitowy z początkową zawartością "111111110000" a dodatkowe cztery jedynki zapewnia początkowy stan rejestru w koderze HDB3 - HDB3kod

38 Budowa modemu ramki odebranej w drugim modemie ma za zadanie zsynchronizować zegar przychodzącego strumienia danych z zegarem odbiorczym. Cztery ostatnie zera rozbiegówki oznaczają, że następny bit będzie pierwszym ważnym bitem właściwej ramki. Blok debuff znajduje się między dekoderem HDB3 a układem weryfikowania ramki- WR w części odbiorczej modemu. Ma za zadanie, na podstawie sekwencji "0000" w rozbiegówce, zasygnalizować jednostce WR początek ramki. 3.3 Warstwa ramki Dane wysyłane przez urządzenia lokalne są w układzie FPGA formowane w ramki o stałej długości. Informacje dodane do bajtów danych kontrolują transmisję i pozwalają wykryć błędnie odebraną ramkę. Jej format przedstawia rysunek * 25. Valid(1:0) counter(5:0) 1 bajt danych 2 bajt danych 3 bajt danych 4 bajt danych CRC(7:0) 48 bitów Rys.25: Format informacji przesyłanej między modemami Ponieważ ramka, niezależnie od liczby przesyłanych ważnych bajtów danych, ma stałą długość, potrzebna jest w jej strukturze informacja ile bajtów jest istotnych. Rolę tę pełni dwubitowy wskaźnik valid : Valid Bajt 1 Bajt 2 Bajt 3 Bajt 4 00 niewaŝny niewaŝny niewaŝny niewaŝny 01 waŝny niewaŝny niewaŝny niewaŝny 10 waŝny waŝny nie waŝny nie waŝny 11 waŝny waŝny waŝny waŝny Jak wynika z tabeli, można wysłać ramkę z danymi w ogóle nieważnymi (jedynie potwierdzającą), z jednym, dwoma bądź czterema bajtami danych. Po zapoczątkowaniu transmisji trwa ona non stop, nawet gdy żaden z modemów nie ma już danych do wysłania. Stąd wynika potrzeba istnienia pustych ramek. Sześciobitowe pole counter zawiera licznik modulo 64 nadanych ramek. Odbierający ramkę modem na jego podstawie stwierdza czy jest to ramka na którą rzeczywiście oczekiwał. Pole CRC to suma kontrolna * Bez uwzględnienia rozbiegówki, która dodawana jest w warstwie fizycznej

Budowa modemu 39 liczona algorytmem stosowanym w sieciach ATM (HEC) oraz interfejsie SMbus (scrc8). Warstwę ramki budują układ weryfikowania ramki - WR, układ formowania ramki - FR, blok liczący sumę kontrolną - CRC oraz licznik odmierzający czas oczekiwania na przychodzącą ramkę - timeout. Moduł SR odpowiedzialny m.in. za komunikację z mikrokontrolerem, mimo iż został zaliczony do warstwy danych, zostanie omówiony w tym miejscu. Pracuje bowiem w ścisłym powiązaniu z WR i z FR, a nawet jest w stosunku do nich nadrzędny. Układ weryfikowania ramki (WR) Sercem bloku jest rejestr przesuwny, do którego wpisywane są z dekodera HDB3 bity ramki. WR zostaje uaktywniony przez sygnał 'enfromhdb3', pochodzący z bloku wykrywającego początek ramki - buff. Od tej chwili rejestr, w takt odtwarzanego zegara, zostaje zapełniany 48 bitami ramki. Następnie sprawdzane jest jej pole counter. Mechanizm kontroli licznika zakłada, że przychodząca ramka będzie miała wartość licznika o jeden większą niż wartość sygnału 'EmbCounter', przechowywanego w module SR. Wysyłający ramkę modem ma bowiem obowiązek zwiększyć o jedność 'EmbCounter' i taką też wartość licznika umieścić w polu counter wysyłanej ramki. Stąd rozpoczynający transmisję modem wysyła ramki z nieparzystą wartością licznika, a drugi z parzystą. Później, jeśli ramka ma prawidłowe pole counter, w bloku CRC zostaje obliczona suma kontrolna pierwszych jej 40 bitów. Jeśli suma ta ma wartość taką jak wartość w polu CRC, ramka zostaje uznana za prawidłową. Natomiast w przypadku gdy pole counter, bądź obliczona suma kontrolna są błędne, ramka zostaje uznana za nieważną i WR ustawia zwrotny sygnał 'ErrToFr' w stan 'H'. 'ErrToFr', oznaczający błąd ramki, trafia zarówno do SR jak i FR do przyszłego wykorzystania. Omawiany moduł sprawdza również, czy nie minął czas oczekiwania na przychodzące dane. Blok timeout wysyła do WR sygnał 'timeout', który, gdy jest w stanie 'H', oznacza przekroczenie czasu oczekiwania na ramkę. W takiej sytuacji WR kończy pracę ('done' <= 1) i ustawia sygnał 'ErrToFr' w stan 'H'. Schemat blokowy algorytmu działania układu weryfikowania ramki przedstawia rysunek 26.

40 Budowa modemu UKŁAD WERYFIKOWANIA RAMKI entity EWR is port ( rst : in std_logic; CLK : in std_logic; clk16 : in std_logic; ErrToFR: out std_logic; done : out std_logic; resettotime:out std_logic; dtospi : out std_logic_vector(31 downto 0); ValidToSPI: out std_logic_vector( 1 downto 0); EmbCounter: in std_logic_vector( 5 downto 0); datatocrc : out std_logic_vector( 7 downto 0); rsttocrc : out std_logic; CRCFromCRC: in std_logic_vector( 7 downto 0); dfromhdb3 : in std_logic; enfromhdb3: in std_logic; donesr : in std_logic; timeout : in std_logic ); end EUOZ; enable(enfromhdb3) jest sygnałem z układu wykrywania poczatku ramki - debuff START N enable = 1 N timeout = 1 T T kompletowanie ramki ramka kompletna? N ErrToFR <= 1 done <= 1 T Obliczenie CRC ramki N popraw ne CRC i licznik? T ErrToFR <= 0 done <= 1 Rys.26: Schemat blokowy algorytmu działania WR

Budowa modemu 41 Moduł SPI (SR) Po zweryfikowaniu ramki, US uaktywnia moduł SPI. Ma on za zadanie, jeśli blok WR odebrał ramkę z co najmniej jednym ważnym bajtem danych, przesłać ją do pamięci buforowej FIFOin w mikrokontrolerze. Jednocześnie z pamięci FIFOout transmitowane są dane do wysłania do drugiego modemu. Ta dwukierunkowa transmisja odbywa się szeregowo, w obu kierunkach w tym samym czasie, co jest szczególną cechą interfejsu SPI. Sercem modułu jest rejestr przesuwający (rys. 27) wykorzystywany do wymiany danych z mikrokontrolerem poprzez SPI. W standardowym interfejsie SPI rejestr taki jest 8-bitowy. Ponieważ jednak ramka przesyłana między modemami ma stałą długość (cztery bajty danych użytecznych) i ponadto w jednym cyklu transmisyjnym między układem FPGA a mikroprocesorem wymieniane są z a w s z e cztery bajty, rejestr ten jest 32-bitowy.!ss mosi sck D31 Shift register D0 miso Rys.27: Rejestr przesuwający wykorzystywany w transmisji z mikrokontrolerem Jak już wspomniano, w ramce mogą być istotne cztery, dwa, bądź jeden bajt. Rozwiązanie zakładające transmisję całej części danych ramki do/z mikrokontrolera nie jest więc optymalne pod względem czasowym. Znacznie jednak upraszcza budowę modułu SR w układzie FPGA. Algorytm działania bloku SR przedstawia rysunek 28. Oprócz typowych dla interfejsu SPI sygnałów takich jak 'ss', 'mosi', 'miso', wymianie danych służą również dwa dwubitowe sygnały 'AR' oraz 'CR'. 'AR' (avr request) jest wystawiany przez mikrokontroler i informuje moduł SR o ilości ważnych bajtów w nadchodzącym cyklu transmisyjnym z układem FPGA. Z kolei 'CR' jest analogiczną informacją dla mikroprocesora. Format i znaczenie obu dwubitowych sygnałów jest taki sam jak format pola Valid w ramce. Po uaktywnieniu modułu SR przez US, sprawdzany jest sygnał wskazujący błędnie odebraną ramkę ('ErrFromWR' z układu weryfikowania ramki). Jeśli odebrano niepoprawną ramkę, SR nie będzie się komunikował przez interfejs SPI z mikrokontrolerem i zakończy pracę, a układ formowania ramki FR będzie musiał retransmi-

42 Budowa modemu Moduł interfejsu SPI entity ESR is port ( CLK : in std_logic; clkspi: in std_logic; En : in std_logic; rst : in std_logic; AR : in std_logic_vector(1 downto 0); CR : out std_logic_vector(1 downto 0):="00"; done : out std_logic; dfromwr: in std_logic_vector(31 downto 0); dtofr : out std_logic_vector(31 downto 0); EmbCounter : out std_logic_vector(5 downto 0); Err2ToFR : out std_logic; ValidFromWR: in std_logic_vector(1 downto 0); ValidToFR : out std_logic_vector(1 downto 0):="00"; sck : out std_logic; miso : in std_logic; mosi : out std_logic; ss : out std_logic; ErrFromWR : in std_logic; donefr : in std_logic ); end ESR; valid jest równy sygnałowi ValidFromWR i oznacza liczbę waŝnych bajtów w ramce z WR START T ErrFrom WR = 1 CR <= "00" done <= 1 N AR ="00" & valid = "00" T CR <= "00" EmbCounter++ validtofr<= "00" N CR <= valid EmbCounter++ SPI validtofr <= AR done <= 1 Rys.28: Algorytm działania modułu SR

Budowa modemu 43 mitować poprzednio wysłaną ramkę. Jeśli jednak ramka w WR jest bezbłędna i co najmniej jedno z urządzeń (mikrokontroler bądź FPGA) ma do przekazania drugiemu urządzeniu dane, to zostanie uruchomiona między nimi transmisja. Gdy natomiast 'CR', będący kopią pola Valid ramki odebranej, ma wartość "00" i ponadto 'AR' ma wartość "00", znaczy to, że: 1. modem odebrał jedynie ramkę potwierdzającą z danymi nieistotnymi 2. w pamięci FIFOout mikrokontrolera nie ma danych do wysłania i wymiana danych nie jest potrzebna. Transmisja interfejsem szeregowym odbywa się z następującymi parametrami: próbkowanie na narastającym zboczu zegara 'sck' wystawianie danych na opadającym zboczu 'sck' układ FPGA pracuje w trybie master, zapewnia zegar o częstotliwości 125kHz w trybie nieaktywnym 'sck' w stanie 'H' Układ formowania ramki (FR) Zadaniem bloku FR jest formowanie ramek transmisyjnych na podstawie danych otrzymanych od mikrokontrolera. Sprowadza się to do skopiowania wartości sygnału 'AR' w pole Valid a wartości 'EmbCounter' w pole counter wysyłanej ramki. Cztery bajty danych kopiowane są zaś z 32-bitowego rejestru przesuwnego bloku SR. Następnie FR, przy pomocy bloku CRC, liczy kontrolną sumę całości i umieszcza ją w polu CRC ramki. Tak sformowana ramka zostaje przesłana do kodera HDB3 - hdb3kod. Na wypadek przyszłej potrzeby retransmisji ramki (gdy drugi modem nie odpowie lub jego odpowiedź będzie niepoprawna) zostaje ona zachowana w bloku FR. Gdy uaktywniony układ formowania ramki stwierdzi, że sygnał 'ErrFromWR' z bloku WR jest w stanie 'H', oznaczającym błędnie odebraną ramkę, FR od razu będzie mógł retransmitować poprzednio wysłaną ramkę bez potrzeby jej formowania.

44 Budowa modemu Moduł generatora sumy kontrolnej (CRC) Moduł jest współdzielony przez WR w celu zweryfikowania odebranej ramki jak i przez FR do wyliczenia sumy kontrolnej wysyłanej ramki. Wielomian generujący sumy zastosowany w bloku CRC ma postać: x 8 + x 2 + x +1 (0x07). Jest ona wykorzystywana w sieciach ATM (określana jako HEC) i w interfejsie SMbus. Szeregowy generator 8- bitowej sumy pokazano na rysunku 29. Rys.29 Szeregowy generator sumy kontrolnej W praktyce zrealizowano generator z równoległym wejściem 8-bitowym, którego blok interfejsowy został przedstawiony na rysunku 30. W internecie dostepny jest generator plików w językach HDL dla dowolnego generatora CRC (do którego dane podaje się równolegle). Jest to internetowe narzędzie generujące kod w Verilog-u lub VHDL-u dla standardowych wielomianów generujących sumy takie jak: 32-bitowa suma stosowana w sieci Ethernet lub w warstwie AAL5 sieci ATM 16-bitowa suma stosowana w sieci X.25 i inne. Istnieje również możliwość stworzenia pliku dla dowolnego wielomianu. Wygenerowany plik zawiera równania logiczne przypisane każdemu bitowi sumy CRC. Ciąg danych, dla którego trzeba policzyć CRC, należy podzielić na bajty a te po kolei wysyłać na równoległe wejście bloku. 8 DataIN CLK 8 CRC Rys.30: Zrealizowany blok CRC Wygląd aplikacji internetowej przedstawia rysunek 31.

Budowa modemu 45 Rys.31: Dostępny w internecie generator kodu w językach HDL