Samodzielna Pracownia Radiokomunikacji Morskiej w Gdańsku (P-8) Szybka transmisja danych w paśmie krótkofalowym Etap 2: Opracowanie uniwersalnej platformy sprzętowej modemu Praca nr 08300016 Gdańsk, grudzień 2006 Szybka transmisja danych w paśmie krótkofalowym Etap 2: Opracowanie uniwersalnej platformy sprzętowej modemu Praca nr 08300016 Słowa kluczowe: radiokomunikacja morska, modem radiowy, kanał radiokomunikacyjny w paśmie krótkofalowym Kierownik pracy: dr inż. Jacek Stefański Wykonawcy pracy: mgr inż. Krzysztof Bronk dr inż. Rafał Niski mgr inż. Mirosław Radziwanowski Kierownik Zakładu: dr inż. Rafał Niski © Copyright by Instytut Łączności, Warszawa 2006 Spis treści 1. Wprowadzenie .................................................................................................................... 4 2. Platforma sprzętowa .......................................................................................................... 5 2.1. Dane techniczne i wydajność ......................................................................................... 6 2.1.1. Płyta główna typu VIA EPIA MII10000............................................................... 6 2.1.2. Ocena wydajności platformy sprzętowej ............................................................ 11 3. Platforma programowa.................................................................................................... 12 3.1. System operacyjny ....................................................................................................... 12 3.1.1. LINUX Fedora 5.0. ............................................................................................. 13 3.2. Język programowania JAVA ....................................................................................... 15 3.3. Zdalny panel sterowania............................................................................................... 18 4. Realizacja wybranych bloków funkcjonalnych modemu ............................................. 19 4.1. Stanowisko pomiarowe ................................................................................................ 19 4.2. Wyniki pomiarów......................................................................................................... 21 4.2.1. Generowanie sygnału nośnej.................................................................................. 23 4.2.2. Generowanie sygnałów zmodulowanych............................................................... 25 5. Sprzętowy symulator kanału radiokomunikacyjnego w paśmie krótkofalowym ...... 37 5.1. Krótka charakterystyka kanału HF............................................................................... 37 5.2. Realizacja symulatora kanału radiowego..................................................................... 37 5.3. Weryfikacja pracy symulatora kanału........................................................................... 39 5.3.1. Pomiar widma sygnału ........................................................................................... 39 5.3.2. Pomiar odpowiedzi impulsowej kanału radiowego ............................................... 42 5.3.3. Pomiar obwiedni sygnału odbieranego .................................................................. 42 5.4. Właściwości symulatora kanału radiowego .................................................................. 43 5.5. Uniwersalne środowisko projektowe „DSK Starter Kit” TSM320C6711 .................... 44 5.5.1. Ogólne właściwości zestawu.................................................................................. 44 5.5.2. Procesor sygnałowy TMS320C6711...................................................................... 45 5.5.3. Kodek audio TLC320AD535 ................................................................................. 46 5.5.4. Środowisko programowe Code Composer Studio ................................................. 48 6. Podsumowanie .................................................................................................................. 50 Bibliografia ............................................................................................................................. 51 Załącznik 1. Wydruk wybranych procedur w języku JAVA............................................. 53 Załącznik 2. Referat opublikowany w materiałach konferencyjnych KKRRiT .............. 58 3 1. Wprowadzenie Celem niniejszej pracy statutowej było opracowanie uniwersalnej platformy sprzętowej modemu, pracującego w wąskopasmowym kanale krótkofalowym. Praca ta stanowi drugi etap realizacji projektu pt. Szybka transmisja danych w paśmie krótkofalowym (nr 08300105). Dla zminimalizowania kosztów realizacji uniwersalnej platformy sprzętowej, dla potrzeb urządzenia definiowanego programowo, zaproponowano w pierwszej kolejności wykorzystanie tzw. komputerów jednopłytowych do zastosowań specjalnych. Koncepcja ta jest powszechnie stosowana podczas budowy urządzeń prototypowych, gdyż pozwala uniknąć, na etapie projektowym, błędów funkcjonalnych opracowywanego urządzenia. Odpowiednio dobrana platforma sprzętowa została dostosowana do współpracy ze środowiskiem programistycznym typu JAVA. Jak wynika z przeprowadzonych studiów literatury przedmiotu, koncepcja związana z wykonaniem modemu w technologii urządzenia definiowanego programowo, w oparciu o zaproponowane środowisko programistyczne JAVA, jest pomysłem nowym i stanowi autorski wkład w rozwój implementacji usług w sieciach radiokomunikacyjnych. Opracowanie składa się z 6 rozdziałów, podsumowania oraz dwóch załączników. Po krótkim wprowadzeniu do tematyki niniejszego opracowania została przedstawiona warstwa sprzętowa modemu, która spełnia wymogi urządzeniem definiowanego programowo. Rozdział trzeci stanowi opis wybranych aspektów platformy programowej, która została posadowiona na wyżej opisanej platformie sprzętowej. Kolejny, czwarty rozdział, dotyczy sprawozdania z przeprowadzonych testów funkcjonalnych wybranych modułów modemu zrealizowanych w technologii urządzenia definiowanego programowo. W następnym rozdziale przedstawiono założenia teoretyczne, koncepcję budowy i opis realizacji taniego symulatora kanału radiowego, zaimplementowanego na procesorze sygnałowym TMS320C6711 firmy Texas Instruments. Zrealizowany symulator spełnia zalecenia ITU-R odnośnie symulacji propagacji w kanale izosferycznym i zostanie on wykorzystany w trzecim etapie pracy statutowej, podczas weryfikacji oprogramowania opracowywanego modelu modemu krótkofalowego. Opracowanie kończy się krótkim podsumowaniem, dwoma załącznikami, zawierającymi wydruki wybranych procedur opracowanych w języku JAVA, a także artykuł opublikowany na KKRRiT [9] oraz spisem literatury zawierającym 26 pozycji. 4 2. Platforma sprzętowa W fazie projektowej modelu modemu krótkofalowego założono, iż platforma sprzętowa powinna charakteryzować się dużą uniwersalnością, łatwością przeprogramowywania oraz rozbudowaną funkcjonalnością, pozwalającą na późniejszą rozbudowę modemu. Założono, że zrealizowany model powinien od strony użytkownika dysponować interfejsem do sieci Ethernet. Od strony wejść/wyjść w paśmie podstawowym powinien natomiast posiadać szybkie min. 12-sto bitowe przetworniki cyfrowo-analogowe i analogowo-cyfrowe. Częstotliwość próbkowania powinna wynosić co najmniej 6 kHz, ponieważ na sygnał poddawany obróbce cyfrowej zostały nałożone obostrzenia co do pasma (3 kHz). Samo urządzenie powinno umożliwiać przezroczystą transmisję danych pomiędzy dwoma użytkownikami sieci Ethernet, znajdującymi się w ogólności w dwóch podsieciach, w których moduły szybkiej transmisji danych stanowiłyby niejako domyślne bramy. Od strony każdej z sieci możliwe byłoby zalogowanie się przez uwierzytelnionego wcześniej użytkownika, który za pomocą panelu mógłby konfigurować urządzenie, a także wymieniać oprogramowanie, zgodnie z koncepcją urządzenia definiowanego programowo. Z racji nałożonych wymagań sprzętowych, mając na uwadze niewielkie rozmiary projektowanego urządzenia zdecydowano, że platforma sprzętowa będzie oparta na komputerze klasy PC zrealizowanym w technologii mini-ITX. Jako podstawę wybrano płytę główną firmy VIA Epia z procesorem 1 GHz. Do podstawowych zalet takiego rozwiązanie należy zaliczyć małe rozmiary płyty (17 cm x 17 cm), wbudowaną kartę graficzną oraz kartę dźwiękową z 16 bitowymi przetwornikami cyfrowo-analogowymi i analogowo-cyfrowymi, pracującymi z częstotliwością próbkowania do 48 kHz, a także kartę sieciową Ethernet oraz czytnik pamięci CompactFlash. Pełną funkcjonalność zestawu dopełnia m.in. złącze PCMCIA oraz złącze USB, pozwalające na dalszą jego rozbudowę np. o modem telefoniczny, czy kartę Wi-Fi. Pamięci typu flash mogą być wykorzystywane nie tylko jako nośniki dodatkowych danych, np. kluczy szyfrujących, nowych wersji oprogramowania, itp., ale także jako nośniki, danych do transmisji. Nieodłączną część zestawu stanowi 1GB pamięci RAM. Z przeprowadzonych analiz w pierwszym etapie niniejszej pracy statutowej wynikało, że dopiero tak duża ilość pamięci operacyjnej wystarczy, aby zapewnić pożądaną wydajność modelu zarówno w jego planowej obecnie formie, jak również w późniejszych zastosowaniach. Dysk twardy projektowanego urządzenia nie musi być dużej pojemności, ponieważ znajdować się będzie na nim tylko system operacyjny wraz ze środowiskiem dla uruchomienia aplikacji modelu modemu oraz sama aplikacja definiowanego programowo modemu krótkofalowego. Wybrano zatem szybki dysk twardy firmy Western Digital o pojemności 40 GB. Szczegóły dotyczące poszczególnych komponentów zestawu wraz z ich orientacyjnymi cenami zostały zawarte w tabl. 11). Zestawienie to pokazuje jak bardzo mogą zostać obniżone koszty produkcji przyszłych modemów definiowalnych programowo w stosunku do tradycyjnych rozwiązań w pełni sprzętowych. Ceny finalnych produktów mogłyby być wielokrotnie niższe od tych oferowanych dzisiaj przez producentów modemów krótkofalowych do transmisji danych [2]. 1) Ceny na miesiąc marzec 2006 roku. 5 Tabl. 1. Wykaz elementów pojedynczego zestawu. Nazwa komponentu Cena brutto [PLN] Płyta główna VIA EPIA MII-10000 850,00 Obudowa MOREX CUBID 2677 490,00 Pamięć RAM 1 GB DDR PC-266MHz 380,00 Dysk twardy WD Scorpio 40GB (5400, 8MB, ATA/100) 330,00 Razem: 2050,00 2.1. Dane techniczne i wydajność Podrozdział ten ma na celu przedstawienie konkretnych parametrów technicznych omawianej platformy sprzętowej modelu modemu krótkofalowego oraz oceny jej wydajności i możliwości wykorzystania dla realizacji aplikacji urządzenia definiowanego programowo. 2.1.1. Płyta główna typu VIA EPIA MII10000 Płyta VIA EPIA MII [3, 4] ma niewielkie rozmiary, co jest rezultatem dużej integracji poszczególnych elementów oraz pomysłowej architekturze i odpowiedniego rozmieszczenia komponentów na płycie, co zostało przedstawione na rys. 1. Standard Mini-ITX charakteryzuje się zmniejszeniem gabarytów do 39% powierzchni standardowej płyty głównej komputera klasy PC z zachowaniem pełnej funkcjonalności. Dzięki temu rozmiary projektowanego modemu ulegną znacznemu zmniejszeniu. Dodatkową zaletą VIA EPIA MII10000 jest bardzo mały pobór mocy, co umożliwia wykorzystanie wolnych i stosunkowo cichych wentylatorów podnoszących ogólny komfort pracy. Rys. 1 prezentuje również jak wiele możliwości dodatkowych posiada prezentowane urządzenie. Kontroler IEEE 1394 umożliwić może na przykład pobieranie danych do transmisji z urządzeń multimedialnych wyposażonych w interfejs FireWire. Złącze USB 2.0 pozwoli na szybki transfer danych z pamięci zewnętrznych, a karta sieciowa umożliwi przesyłanie informacji pobieranych z sieci Internet, czy też sieci lokalnej. Złącze PCMCIA, jak już wspomniano wcześniej, pozwoli na korzystanie z sieci bezprzewodowych Wi-Fi. Zintegrowana karta graficzna wpływa znacząco na obniżenie kosztów całego projektu, gdyż zapewnia łatwy podgląd działania modelu modemu podczas prac projektowych. Dodatkowe złącze (slot) PCI może być wykorzystane do zamontowania w przyszłości na przykład dodatkowej karty dźwiękowej, która może być alternatywą dla tej już zintegrowanej z płytą. Miałoby to na celu porównywanie różnych kart dźwiękowych i badanie ich wpływu na jakość transmisji danych pomiędzy modemami. Karta dźwiękowa, to przecież jeden z najistotniejszych elementów tego urządzenia, ponieważ wyjście audio będzie podłączone bezpośrednio do nadajnika radiokomunikacyjnego, natomiast liniowe wejście audio będzie małosygnałowym wejściem z odbiornika radiokomunikacyjnego. 6 Rys. 1. Architektura płyty głównej VIA EPIA MII10000. Omawiane urządzenie pozwala również na wykorzystanie szybkich pamięci DDR, które mogą być odczytywane i zapisywane dwa razy w ciągu każdego taktu magistrali systemowej, co spowoduje szybką komunikacje z pamięcią, a to z kolei znacząco przyspieszy pracę modelu modemu. Sercem płyty głównej jest procesor firmy VIA, który pracuje z szybkością 1 GHz, zasilany jest napięciem stałym 1,4 V, co zapewnia bardzo niski pobór mocy przez jednostkę centralną jak i przez całą płytę główną. Procesor posiada wbudowaną pamięć podręczną pierwszego poziomu (L1 128KB) oraz drugiego (L2 64 KB), co znacząco wpływa na poprawę szybkości jego działania. Procesor VIA C3 obsługuje również technologię MMX oraz SSE, co dodatkowo przyspiesza przetwarzanie instrukcji multimedialnych. Pełna specyfikacja omawianej płyty głównej oraz jej poszczególnych elementów jest przedstawiona w tabl. 2. 7 Tabl. 2. Specyfikacja techniczna płyty głównej VIA EPIA MII10000. Procesor Mostki System pamięci VGA Sloty dodatkowe CardBus/CompactFlash IDE Port napędu dyskietek LAN Audio IEEE 1394 TV-out Panel Tylni I/O Złącza I/O na płycie BIOS Właściwości dodatkowe Temperatura użytkowania Wilgotność użytkowania Właściwości płytki drukowanej VIA C3™ 1 GHz (L1 128KB / L2 64 KB) Mostek północny VIA CLE266 Mostek południowy VIA VT8235 Jedno gniazdo DDR266 DIMM (maksymalna pojemność 1 GB) Zintegrowana grafika VIA UniChrome AGP 1 PCI CardBus typu I oraz II Ricoh R5C476 II kontroler CardBus 2 x UltraDMA 133/100/66 1 FDD VIA VT6103 10/100 base Ethernet PHY VIA VT1616 6-cio kanałowy kodek AC’97 VIA VT6307S IEEE 1394 VIA VT1622A TV-out 1 PS2 port myszki 1 PS2 port klawiatury 1 RJ-45 LAN 1 port szeregowy 2 USB 2.0 1 VGA 1 1394 1 CardBus Type I and II + 1 CompactFlash 1 RCA (SPDIF / TV-out) 1 S-video 3 gniazda audio: line-out, line-in and mic-in 1 USB na 2 dodatkowe porty USB 2.0 1 Front-panel złącza audio (mic-in and line-out) 1 IEEE 1394 1 CD Audio 1 LPT Wake-on-LAN 3 złącza wentylatorów CPU/Sys 1 LVDS 1 złącze dla dodatkowego portu szeregowego Award BIOS Pamięć flash 2/4Mbit Monitorowanie napięcia CPU Wake-on-LAN Włączanie komputera klawiaturą System zarządzania zasilaniem Przywracanie po utracie napięcia AC 0 ~ 50°C 0% ~ 93% Mini-ITX (6 warstw) 17cm x 17cm 8 Specyfikacja omawianej płyty głównej ukazuje, że urządzenie to ma rozszerzone możliwości związane z komunikacją z innymi urządzeniami zewnętrznymi, ponieważ posiada róznorodne interfejsy wejścia/wyjścia (I/O). Wiele z nich wyprowadzonych zostało na tylny panel płyty głównej, co zostało pokazane na rys. 2. Rys. 2. Panel tylni płyty głównej VIA EPIA MII10000. Na płytę główną zamontowano pamięć operacyjną, a całość umieszczono następnie w obudowie i podłączono wszystkie przewody, co przedstawiono na rys. 3 oraz rys. 4. Rys. 3. Montaż urządzenia – etap pierwszy. 9 Rys. 4. Montaż urządzenia – etap drugi. Urządzenie po zamknięciu obudowy wygląda tak, jak to pokazano na rys. 5. Rys. 5. Całkowicie zmontowane urządzenie. 10 2.1.2. Ocena wydajności platformy sprzętowej Komputer jednoukładowy VIA EPIA MII10000 to przede wszystkim małe rozmiary przy dużej integracji elementów na płycie. Producent stawia na obniżenie poboru prądu przez urządzenie, dzięki czemu nie trzeba stosować głośnych wentylatorów, a temperatura wewnątrz pozostaje na niskim poziomie. Obniżenie poziomu pobieranej mocy uzyskano przede wszystkim poprzez zastosowanie bardzo niskiego napięcia zasilania procesora, który jest głównym źródłem ciepła w każdym komputerze. Obniżenie napięcia zasilania nie spowodowało jednak utraty możliwości uzyskiwania dużych częstotliwości taktowania procesora. Dzięki czemu nie obniżono wydajności pracy całej płyty głównej w stosunku do standardu ATX. Procesor pracujący z częstotliwością taktowania 1 GHz jest w stanie skutecznie przetwarzać sygnał audio, który został spróbkowany z częstotliwością 48 kHz, a w przypadku realizacji modemu wystarcza zaledwie 8 kHz. Pewne jednak algorytmy obliczeniowe (na przykład algorytm Viterbiego [18]) związane z pracą modemu są dość złożone obliczeniowo, a jak wiadomo cały modem składa się z wielu bloków funkcjonalnych [18], a więc przewidywane nakłady przetwarzania związane z cyfrową obróbka sygnału w torze nadawczo-odbiorczym modemu powinny być odpowiednio duże. Z analizy pracy modemu zbudowanego w oparciu o technologię urządzenia definiowanego programowo ważne jest aby zapewnić w pierwszej kolejności możliwość nieprzerwanego i stabilnego nadawania określonej liczby pakietów danych. Samo przetwarzanie cyfrowe sygnału może odbyć się nieco wcześniej, a jego wyniki są zapisywane w postaci próbek w plikach audio. W związku z tym transmisja polega na odtwarzaniu pliku dźwiękowego z wykorzystaniem 16-to bitowego standardu PCM z częstotliwością próbkowania 8 kHz. Odbiór poprzez liniowe wejście audio polega zaś na zapisaniu strumienia dźwiękowego z wejścia przetwornika analogowo-cyfrowego do postaci pliku audio. Dalsze przetwarzanie może się już odbywać po odebraniu całej „porcji” informacji, czyli w trybie off-line. Wyżej opisana koncepcja nadawania i odbioru prowadzi również do złagodzenia wymagań na szybkość cyfrowego przetwarzania sygnałów w modemie. Implementacja poszczególnych bloków funkcjonalnych toru nadawczo-odbiorczego modemu wymagać będzie jednak sporych zasobów pamięci operacyjnej, aby przetwarzanie dużych ilości danych było efektywne. Dodatkowo, pamięć operacyjna jest potrzebna do pracy samego systemu operacyjnego oraz maszyny wirtualnej JAVA. Zdecydowano się zatem na 1 GB szybkiej pamięci operacyjnej pracującej z częstotliwością 266MHz w trybie DDR. Dysk twardy pracujący w standardzie ATA100 i posiadający 8 MB pamięci podręcznej zapewni szybką wymianę informacji podczas rzeczywistej pracy modemu w systemie łączności krótkofalowej. Poszczególne aplikacje realizujące funkcje modemowe będą się więc stosunkowo szybko uruchamiać, natomiast 40 GB pojemności pozwoli na przechowywanie danych do transmisji oraz danych odebranych, jak również wyników pomiarów dokonywanych podczas pracy modemu oraz np. ich archiwizację. Platforma sprzętowa została więc dobrana w taki sposób, aby spełnić wszelkie stawiane przed nią wymagania, dotyczące realizacji przy jej wykorzystaniu modemu krótkofalowego w technologii urządzenia definiowanego programowo. Każdy element zestawu wybrano tak, aby mógł on spełniać swe przyszłe zadania w sposób wydajny, umożliwiający modyfikacje oprogramowania bez konieczności wymiany podzespołów sprzętowych. Dzięki temu przyszłe modemy realizowane w oparciu o niniejsze opracowanie mogą być o wiele tańsze w porównaniu z obecnie dostępnymi. Podsumowując, platforma sprzętowa została wybrana w sposób zapewniający dużą wydajność przy jednocześnie niewielkich kosztach. 11 3. Platforma programowa Praktyczna realizacja modemu krótkofalowego w technologii urządzenia definiowanego programowo wymaga w pierwszej kolejności odpowiednio dobranej platformy sprzętowej oraz z racji przyjętej koncepcji odpowiedniego zaplecza programowego. W jego skład wchodzić powinno nie tylko narzędzie służące do tworzenia oprogramowania poszczególnych bloków funkcjonalnych modemu, ale również odpowiedni system operacyjny wraz ze środowiskiem umożliwiającym uruchamianie stworzonych aplikacji. 3.1. System operacyjny System operacyjny [1] to zbiór procedur i programów pośredniczących pomiędzy uruchamianymi aplikacjami a sprzętem. Podczas codziennej pracy komputera system operacyjny jest zawsze obecny, działa od chwili startu (chwilę po włączeniu komputera) do momentu zakończenia pracy. Podstawowe zadania przypisywane dzisiejszym systemom operacyjnym to: • Zarządzanie zasobami maszyny. System operacyjny optymalizuje wykorzystanie poszczególnych modułów wchodzących w skład komputera oraz steruje nimi. Specjalne moduły wchodzące w skład systemu operacyjnego (sterowniki) udostępniają aplikacjom jednolity sposób programowania poszczególnych modułów (interfejs), dzięki czemu każdy nowy sprzęt będzie współdziałać ze wszystkimi aplikacjami, o ile producent sprzętu przygotuje odpowiedni sterownik. • Gromadzenie danych na dyskach i zarządzanie nimi. Każdy system operacyjny jest wyposażony w moduł obsługujący system plików. System plików to struktura danych umieszczonych na dysku, która pomaga logicznie uporządkować te dane, dzieląc je na pliki i grupując w katalogach. • Maszyny wirtualne. System operacyjny udostępnia aplikacji tzw. maszynę wirtualną, czyli uproszczony obraz maszyny, na której pracuje aplikacja. System udostępnia szczegółowych aplikacji związanych z obsługą komputera oraz dodatkowe rozszerzenia, które ułatwiają pracę, (np. katalog udostępniony przez sieć dana aplikacja widzi tak samo, jak katalog znajdujący się na lokalnym dysku. Aplikacja korzystająca z takiego katalogu nie zajmuje się obsługą sieciową.). • Wielozadaniowość. Na jednym komputerze może działać wiele aplikacji jednocześnie. Każda otrzyma własną maszynę wirtualną i będzie mogła działać tak, jakby była jedyną aplikacją pracującą na komputerze. Dzięki temu nie trzeba specjalnie przystosowywać aplikacji, aby mogła "podzielić się" maszyną z innymi (np. przez zwrócenie procesora innej aplikacji). • Interakcja z użytkownikiem. Tę rolę spełnia zewnętrzna warstwa systemu, nazywana powłoką (shell), która umożliwia użytkownikowi uruchomienie aplikacji. W środowiskach graficznych do tej części systemu zalicza się również standardowe elementy interfejsu wykorzystywane przez aplikacje, np. standardowe okienka dialogowe, kontrolki itd. • Komunikacja z innymi maszynami. To jeden z najważniejszych elementów systemu. Dzięki modułom obsługującym sieć mamy dostęp zarówno do sieci Internet, jak i do zasobów dyskowych innego komputera lub do drukarki sieciowej. 12 Przed wyborem odpowiedniego systemu operacyjnego należy zastanowić się nad tym, co może on zaoferować swojemu użytkownikowi. Implementacja modemu krótkofalowego wymagać będzie zapewnienia odpowiednich zasobów systemowych udostępnionych przez platformę sprzętową za pośrednictwem systemu operacyjnego. Praca modemu musi być dodatkowo stabilna. Zapewniony powinien być również odpowiedni poziom bezpieczeństwa, aby ustrzec oprogramowanie przed niepożądaną ingerencją. 3.1.1. LINUX Fedora 5.0. System Linux zdobywa coraz większą popularność. Wiele firm wybiera go, jako system działający bez zastrzeżeń. Także wiele domowych użytkowników decyduje się na zmianę systemu, chcąc poznać coś nowego, powiększyć swą wiedzę informatyczną. Dlatego też dla realizacji niniejszej pracy statutowej wybrano właśnie ten system operacyjny. Dodatkowym jego atutem jest fakt, że jest on bezpłatny, co wpłynie na obniżenie końcowych kosztów związanych z ewentualnym wdrożeniem omawianej, w ramach niniejszej pracy statutowej, koncepcji modemu krótkofalowego. Linux [1] to stabilne i bezpieczne jądro systemu operacyjnego napisane przez fińskiego studenta Linusa Torvaldsa. Wszystkie uruchamiane programy są obsługiwane przez jądro systemu. To ono jest odpowiedzialne za przydzielenie odpowiedniej ilości pamięci do wykonywania określonych zadań, a późniejsze jej zwolnienie. Tak więc w pierwotnym nazewnictwie, Linux to wyłącznie jądro systemu, jednak w dalszej części niniejszego opracowania Linux oznaczać będzie cały system operacyjny. Linux jest darmowym systemem i w każdej chwili można pobrać jego dowolną wersję z sieci Internet. Płyty CD-ROM systemem operacyjnym Linux można także sprzedawać. Pozwala na to licencja GNU GPL (General Public Licence). Dodatkowo system Linux jest tzw. systemem wolnym, co oznacza, że kod źródłowy tego systemu jest jawny, który bez ograniczeń można zmieniać, poprawiać wedle uznania, nie łamiąc tym samym praw autorskich. Jest mnóstwo argumentów przemawiających za wykorzystaniem tego systemu operacyjnego Jednym z nich jest fakt, że Linux bardzo szybko się rozwija i coraz więcej firm z niego korzysta. Można zatem liczyć na ciągłe usprawnianie szybkości i stabilności jego pracy, co może mieć wymierne korzyści w przypadku realizacji aplikacji modemu w technologii urządzenia definiowanego programowo. Linux jest wieloplatformowy - można korzystać z niego na standardowych komputerach klasy PC, Macintosach, Sparcach, maszynach Alpha, a nawet Amigach. Jest zatem w dużym stopniu niezależny od platformy sprzętowej. Może być więc użyteczny w nowatorskim wykorzystaniu komputera PC opartego o płytę główną w standardzie Mini-ATX. Linux to jądro systemu, jednak aby można było go wykorzystać do realizacji aplikacji modemu definiowanego programowo, niezbędne będzie oprogramowanie, które dostarcza tzw. dystrybucja. Dystrybucja ta dodatkowo zawiera instalator systemu, dzięki czemu Linux umieszcza się na dyskach twardych wykorzystywanej platformy sprzętowej. Reasumując: dystrybucja to jądro z zestawem oprogramowania wzbogacone o instalator systemu. Obecnie dostępna jest ogromna ilość dystrybucji Linuxa. Aby wybrać odpowiednią jego realizację dla potrzeb niniejszej pracy; poniżej zamieszczono krótkie charakterystyki siedmiu najbardziej znanych odmian dystrybucji systemu Linux. 13 Mandrake Linux [23] Dystrybucja jest tworzona przez firmę o tej samej nazwie. Mandrake powstał na podstawie bardzo znanego Red Hata. Charakterystyczną cechą dystrybucji jest niebywała prostota jej obsługi. W tym celu napisano wiele programów wykonujących wiele czynności za użytkownika. Domyślne ustawienia systemu zostały tak skonfigurowane, aby były odpowiednie dla niedoświadczonych użytkowników. Mandrake można pobrać z oficjalnych serwerów firmy. Dystrybucja posiada także wersję płatną, do której dołączone są dodatkowe programy komercyjne. Red Hat [21] Red Hat jest tworzony przez amerykańską firmę Red Hat. Dystrybucja ta jest dziś jedną z najpopularniejszych odmian Linux’a. Ceniona przez wielu, zajmuje czołową pozycję na rynku systemów operacyjnych. Poziom trudności oferowany przez system jest średni, dlatego też Red Hat kierowany jest do użytkowników, którzy mieli już styczność z systemem Linux. Dystrybucja ta często wybierana jest przez administratorów serwerów sieciowych, ale radzi sobie również doskonale na komputerach użytkowych (osobistych). Red Hat, podobnie jak Mandrake, posiada wersję komercyjną i tak jak w przypadku swojego poprzednika zawiera ona dodatkowe oprogramowanie. Fedora [21] Dystrybucja Fedora jest to ewolucyjna odmiana Red Hat, tworzona przez tą samą firmę. Zyskuje ona coraz większą popularność wśród użytkowników systemu Linux. Jest bardzo łatwa w instalacji i konfiguracji. Posiada również wsparcie dla administratorów serwerów sieciowych. Dystrybucja ta jest bardzo bogata w oprogramowanie. Dostarcza wielu narzędzi programistycznych i zapewnia pełne wsparcie dla platformy JAVA, poprzez zintegrowaną maszynę wirtualną. Fedora jest zupełnie darmowa, a jej ciągłe aktualizacje i wysoka stabilność pracy oraz duże bezpieczeństwo systemu są dodatkowymi atutami. SuSE [24] Dystrybucja SuSE to dzieło niemieckich programistów. Prostota obsługi i wsparcie techniczne czyni go silną konkurencją dla innych dystrybucji systemu Linux. Duże grono zwolenników SuSE zyskał głównie dzięki swemu instalatorowi oraz konfiguratorowi Yast, charakteryzującemu się łatwością obsługi oraz dużą funkcjonalnością. Knoppix [22] Dystrybucja Knoppix jest tzw. systemem bootowalnym, oznacza to, że system uruchamia się bezpośrednio z płyty CD (lub DVD). Jest ciekawym rozwiązaniem, gdyż nie jest potrzebna instalacja na dysku twardym, a sam Linux jest wykorzystywany tylko tymczasowo. Knoppix bazuje na dystrybucji Debian. Dystrybucja ta jest oczywiście darmowa. Ciągłe aktualizacje zawierają nowsze wersje oprogramowania oraz jądra systemu. 14 Debian [20] Dystrybucja Debian różni się od innych dystrybucji tym, że nie stoi za nim żadna firma tworzy go grono programistów z całego świata. Jest to największa dystrybucja - posiada prawie 9000 pakietów umieszczonych na 7CD. Debian idealnie nadaje się dla serwerów sieciowych, a to za sprawą jego dużej stabilności, będącej wynikiem długotrwałej i szczegółowej pracy programistów nad każdym pakietem. Kolejnym atutem dystrybucji jest jej dostępność dla wielu platform, dzięki czemu Debian może być wykorzystany na różnych komputerach. Dodatkowo dystrybucja znakomicie nadaje się również do komputerów klienckich. Istotną wadą Debiana jest jednak jego bardziej skomplikowana, niż w przypadku pozostałych dystrybucji, obsługa i konfiguracja. Slackware [25] Slackware ceniony jest przede wszystkim przez administratorów serwerów i do nich jest kierowany. Firma tworząca dystrybucję położyła przede wszystkim nacisk na ochronę systemu. Mankamentem wydaje się jednak mała ilość programów dołączonych do dystrybucji systemu. Jest to spowodowane tym, że Slackware jest przeznaczony do serwerów, a nie do komputerów klienckich. Spośród powyższych dystrybucji systemu Linux do realizacji niniejszej pracy statutowej wybrano system Fedora w jego aktualnie najnowszej wersji – 5.0. Na tę decyzję wpływ miało wiele czynników. Przede wszystkim system ten jest nowatorski i bardzo intensywnie się rozwija. Nowe rozwiązania często nie są stabilne i istnieją problemy z ich kompatybilnością. W tym przypadku jest inaczej, ponieważ Fedora jest oparta na doświadczeniu swojego poprzednika - Red Hata, który zdobył szerokie grono użytkowników i jest przez nich bardzo ceniony. Twórcy systemu zapewnili również pełną kompatybilność systemu z jego poprzednikiem. Główną przewagą tej dystrybucji nad innymi jest jej pełne wsparcie dla platformy JAVA. Fedora zawiera nie tylko maszynę wirtualną, ale również narzędzia programistyczne wraz z kompilatorem języka JAVA. Wśród tych narzędzi jest dostępny bardzo popularny program Eclipse, który posłuży do napisania aplikacji modemu krótkofalowego definiowanego programowo. 3.2. Język programowania JAVA Powstanie języka JAVA [19] jest jednym z rezultatów szeroko zakrojonych prac projektowych związanych z obsługą nowoczesnych urządzeń pracujących w czasie rzeczywistym. Urządzenia te potrzebowały języka, który generuje niewielki kod wynikowy i jest niezależny od sprzętu. Pierwotnie, w systemach obsługujących te urządzenia używano języka C/C++, jednak ze względu na niedoskonałości kompilatorów i różnice występujące między poszczególnymi jego realizacjami, powstał pomysł stworzenia nowego języka, całkowicie niezależnego od sprzętu, czyli np.: procesorów, układów wejścia-wyjścia i systemu operacyjnego. Program napisany w języku JAVA może być zatem wykonywany zarówno na komputerze PC (pod kontrolą np.: systemu OS/2, Windows 95 lub Windows NT), na Macintosh'u, a także na maszynie UNIX’owej pod warunkiem, że jest tam również zainstalowany specjalny program interpretujący język JAVA. JAVA jest zatem językiem programowania umożliwiającym pisanie aplikacji na właściwie dowolną platformę. Platformą zwykle nazywa się pewną kombinację sprzętu i 15 oprogramowania umożliwiającą tworzenie i wykonywanie programów. Platformę stanowi więc komputer o określonej architekturze oraz system operacyjny, w środowisku którego można uruchamiać programy. Większość dostępnych języków programowania jest związana z konkretną platformą sprzętowo-programową. Jednak twórcom języka JAVA przyświecał inny cel: pragnęli stworzyć uniwersalny język, w którym raz napisany i skompilowany program będzie działał w wielu środowiskach w identyczny sposób. W języku JAVA zrealizowano paradygmat programowania zorientowanego obiektowo, z wbudowanymi mechanizmami współbieżności, obsługi sytuacji wyjątkowych i kontrolą przydziału pamięci. Inne języki programowania nie mają wszystkich tych zalet, które posiada JAVA. W tabl. 3 porównano właściwości języka JAVA z właściwościami innymi języków. Tabl. 3. Porównanie właściwości przykładowych języków programowania wysokiego poziomu. Tekstowo program w języku JAVA wygląda podobnie, jak napisany w języku C++. Każdy, kto posługuje się językiem C++ regularnie, nie będzie miał większych problemów z tworzeniem oprogramowania w języku JAVA. Jednak JAVA różni się od C++ w sposób znaczący [7]. Różnice te, będące zarazem cechami charakterystycznymi języka JAVA i celami, do których dążyli jej twórcy, są następujące: • • • • eliminacja składni języka C++, która utrudnia wykrywanie błędów, w języku JAVA nie ma wskaźników; do istniejących obiektów odnosimy się za pomocą referencji, narzucono ograniczenia, które ułatwiają testowanie programów i czynią kod przejrzystym, usunięto niektóre konstrukcje języka C++ (np.: typedef, #define, goto, struct, union) oraz preprocesor, jako elementy niezgodne z paradygmatem programowania zorientowanego obiektowo oraz utrudniające zrozumienie i modyfikowanie kodu; można je zastąpić poprzez definicje klas, 16 • • • • • • • • • • usunięto możliwość przeciążania operatorów, usunięto wielodziedziczenie (zastępując je mechanizmem implementacji interfejsów), "zlikwidowano" możliwość definiowania procedur i funkcji nie związanych z definicją żadnej klasy, nie trzeba manualnie usuwać przydzielonych wcześniej, a już nie używanych obszarów pamięci - są one zwalniane w sposób automatyczny. niezależność programów od komputera i systemu operacyjnego, zorientowanie obiektowe, wysoki poziom kontroli nad kodem źródłowym, na etapie kompilacji przeprowadzana jest ścisła kontrola typów, kompilator wymusza obsługę wyjątków, sprawdzanie kodu źródłowego przed wykonaniem w celu eliminowania potencjalnie niebezpiecznych programów. Aby osiągnąć wyżej wymienione cele, programy w języku JAVA wykonują się w specjalnym środowisku uruchomieniowym, zwanym maszyną wirtualną JAVA (Java Virtual Machine JVM). Maszyna wirtualna to rodzaj wirtualnego komputera, który ma swój zestaw rejestrów, zestaw instrukcji, stos i pamięć dla programów. Programy napisane w języku JAVA są kompilowane do poziomu kodu pośredniego, nazywanego kodem bajtowym JAVA (byte code), który jest interpretowany przez maszynę wirtualną JVM do kodu wykonywalnego dla danego systemu operacyjnego i komputera. Dzięki standaryzacji maszyny wirtualnej programy napisane w języku JAVA wykonują się w każdym systemie operacyjnym, w którym jest ona zainstalowana. Aby uwolnić programistę od konieczności pamiętania o zwolnieniu raz zaalokowanej pamięci, w maszynie wirtualnej pracuje specjalny wątek systemowy, zajmujący się odzyskiwaniem nieużywanej, ale zarezerwowanej pamięci. Taką czynność nazywa się „odśmiecaniem pamięci” (ang. garbage collection). Dzięki temu programista jest zwolniony z konieczności pamiętania o oddaniu zaalokowanej przez obiekty pamięci. JAVA zawiera elementy językowe ułatwiające pisanie programów przeznaczonych do pracy w sieci Internet. Do dyspozycji mamy zatem obsługę protokołów TCP/IP, co umożliwia łatwe korzystanie z zasobów znajdujących się na odległym komputerze. JAVA generuje bardzo mały "objętościowo" kod wynikowy, co wiąże się z wymaganiem minimalizacji czasu przesyłania programu poprzez siec Internet, szczególnie na liniach przesyłowych o małej przepustowości. JAVA jest językiem zapewniającym bezpieczeństwo użytkownikowi ładującemu program z sieci Internetu, poprzez wprowadzenie kontroli autentyczności kodu żródłowego. Przedstawione powyżej cechy języka JAVA sprawiają, że jest to język programowania, który idealnie pasuje do potrzeb realizacji niniejszej pracy statutowej. Modem definiowany programowo ma być zrealizowany na nietypowej platformie sprzętowej z wykorzystaniem systemu operacyjnego Linux. Wykorzystanie maszyny wirtualnej JAVA (wersja JRE 1.5) pozwoli na uruchamianie stworzonej aplikacji również na innych platformach sprzętowych jak i programowych. Takie rozwiązanie pozwoli na przykład na uruchomienie przyszłej aplikacji modemu na stacjonarnym komputerze PC, pracującym z systemem Windows. Stworzona aplikacja będzie zatem uniwersalna pod względem sprzętu i systemu operacyjnego. Dodatkowo JAVA jako język obiektowy umożliwi w przyszłości łatwą aktualizację i rekonfiguracje modemu. Możliwe będzie łatwe wymienianie poszczególnych 17 bloków modemu. Wymuszona obsługa sytuacji wyjątkowych zapewni natomiast dużą stabilność i pewność działania aplikacji. 3.3. Zdalny panel sterowania Jak wynika z powyższego opisu, język JAVA stwarza ogromne możliwości podniesienia funkcjonalności modemu w technologii urządzenia definiowanego programowo. Wydaje się być celowym, w dalszym etapie realizacji niniejszego projektu, rozwinięcie koncepcji zdalnego panelu sterowania, który m.in. umożliwiałby w sposób zdalny wybór szybkości przesyłu danych (a tym samym pośrednio modulacji i kodowania). Pozwalałby także na wybór protokołu retransmisji danych, ewentualnie ich szyfrowania, ustalenia praw dostępu itp. Z poziomu panelu sterowania możliwe byłoby także dokonanie aktualizacji oprogramowania poprzez wybór odpowiedniego pliku z dysku lokalnego użytkownika, a następnie jego pobranie. W przypadku stosowania dodatkowych kluczy zabezpieczeń z poziomu panelu określałoby się miejsce występowania plików z odpowiednimi kluczami (na przykład: pendrive, dysk lokalny komputera itp.). Panel sterowania umożliwiałby także generowanie statystyk, chociażby ilości przesłanych pakietów, ilości przesłanych bitów, ilości retransmitowanych ramek itp. Oprócz tego wyświetlane powinny być aktualne parametry transmisji w kanale, m.in. BER, FER oraz stosunek sygnału do szumu (uzyskiwany przy okazji algorytmów sterownia mocą). Z poziomu panelu sterowania możliwe byłoby także określenie mocy nadawanego sygnału. Rozważa się także funkcjonalność zapisu aktualnych parametrów w funkcji czasu do pliku, który mógłby być następnie wyeksportowany na komputer użytkownika. Taki zestaw funkcjonalności pozwoliłby na późniejsze testy zrealizowanego modemu i weryfikacje badań symulacyjnych. Ciekawym pomysłem jest także wzbogacenie urządzenia o protokoły QoS, chociażby o popularny HTB, pozwalający na odpowiedni rozdział pasma przepustowego na użytkowników sieci, tak aby jeden z nich nie zajął całego pasma jedynie dla siebie. Innymi słowy pozwalający na zapewnienie gwarantowanej szybkości połączenia z siecią. 18 4. Realizacja wybranych bloków funkcjonalnych modemu Rozdział ten ma na celu pokazanie możliwości wykorzystania omówionych wcześniej platform, do realizacji aplikacji modemu krótkofalowego definiowanego programowo. Zaprezentowane zostanie stanowisko pomiarowe oraz wyniki praktycznej implementacji, za pomocą wyżej opisanej technologii, wybranych bloków funkcjonalnych modemu. Celem tej części pracy jest pokazanie możliwości użycia strumienia audio oraz wyjścia audio karty dźwiękowej dla realizacji małosygnałowego wyjścia modemu krótkofalowego. 4.1. Stanowisko pomiarowe W celu przedstawienia możliwość wykorzystania wyjścia audio karty dźwiękowej dla realizacji wyjścia małosygnałowego modemu została przeprowadzona obserwacja sygnałów w dziedzinie czasu i częstotliwości. Stanowisko pomiarowe zawierało więc następujące elementy funkcjonalne (rys. 6): • • • • • Platformę sprzętową modemu wraz z systemem operacyjnym Fedora 5.0, maszyną wirtualną Javy JRE 1.5 oraz stworzonym oprogramowaniem; Oscyloskop cyfrowy LC574A [6] umożliwiający realizację wielu funkcji matematycznych (m.in. szybką transformatę Fouriera); Miernik zniekształceń nieliniowych HM8027; Kabel audio (Jack-Jack) oraz sondę pomiarową wykorzystywane do podłączenia wyjścia audio z oscyloskopem; Dodatkowe wyposażenie komputerowe: monitor, klawiaturę oraz myszkę (pełniący rolę interfejsu modemu krótkofalowego). Rys. 6. Stanowisko pomiarowe. 19 Wybrany oscyloskop cyfrowy bardzo dobrze nadaje się zarówno do przedstawiania sygnałów w czasie jak i częstotliwości, co zostało zaprezentowane na rys. 7 oraz rys. 8. Rys. 7. Wykorzystanie oscyloskopu cyfrowego do obserwacji sygnałów w dziedzinie czasu. Rys. 8. Wykorzystanie oscyloskopu do obserwacji sygnałów w dziedzinie czestotliwości. 20 Do pomiarów wykorzystano sondę pomiarową przystosowaną do sygnałów w paśmie do 500 MHz i tłumiącą sygnał wejściowy o 10 dB. W celu ograniczenia mocy szumów na wejściu oscyloskopu, wykorzystano wbudowany filtr wejściowy, dolnoprzepustowy o częstotliwości odcięcia 25 MHz. Aby podłączyć sondę do wyjścia audio karty dźwiękowej wykorzystano kabel audio typu Jack-Jack. Sposób podłączenia sondy przedstawiono na rys. 9. Rys. 9. Sposób podłączenia sondy pomiarowej. W celu prezentacji wyników pomiarów wykorzystano możliwość zapisywania na dyskietkę treści ekranu oscyloskopu w postaci plików graficznych. Dodatkowo do stanowiska pomiarowego dołączono również miernik zniekształceń nieliniowych, który zostanie wykorzystany przy wyznaczaniu stosunku sygnału do szumu dla nośnych o różnych częstotliwościach. 4.2. Wyniki pomiarów Pomiary przeprowadzone z wykorzystaniem przedstawionego w poprzednim paragrafie stanowiska pomiarowego mają na celu zobrazowanie możliwości platformy sprzętowej, a w szczególności karty dźwiękowej podczas praktycznej implementacji modemu krótkofalowego. Symulacje te mają pokazać, że wyjście audio może generować dowolny rodzaj sygnału zmodulowanego w paśmie podstawowym. W opracowaniu tym przedstawiono przebiegi czasowe oraz widma sygnałów przy zastosowaniu modulacji o różnych wydajnościach (efektywnościach) widmowych [5]. Dla niniejszej pracy statutowej wydajność widmowa jest określana w paśmie podstawowym, czyli można ją wyznaczyć z zależności 21 η= Rb , Bs (1) gdzie Rb oznacza przepływność bitową, a Bs szerokość pasma sygnału w paśmie podstawowym. Im większa efektywność widmowa modulacji tym większą przepływność bitową można uzyskać przy tym samym paśmie zajmowanym przez sygnał. Można również zachować przepływność bitową na stałym poziomie, wtedy zwiększając efektywność widmową modulacji można uzyskać węższe pasmo zajmowane przez sygnał. Dla potrzeb niniejszego opracowania przyjęto stałą przepływność bitową, ponieważ takie podejście umożliwia obserwacje zmieniającej się szerokości widma wraz ze wzrostem indeksu modulacji, a co za tym idzie ze wzrostem wydajności widmowej. Należy pamiętać, że wzrost indeksu modulacji, pociąga za sobą nie tylko zawężenie pasma sygnału, ale również zmniejszenie odporności na zakłócenia sygnału zmodulowanego. Jest to związane ze zmniejszaniem się odległości euklidesowych pomiędzy punktami konstelacji wraz ze wzrostem indeksu modulacji. W tabl. 4 zestawiono badane modulacje wraz z ich teoretycznymi efektywnościami widmowymi w paśmie podstawowym. Tabl. 4. Efektywności widmowe modulacji. Typ modulacji η [bit/Hz] QPSK 2 8PSK 3 16QAM 4 32QAM 5 64QAM 6 Wszystkie przebiegi czasowe oraz widma są wyznaczane dla nośnej o częstotliwości 2 kHz oraz dla przepływności bitowej 800 bps. Częstotliwość próbkowania w każdym przypadku wynosiła 8 kHz, a rozdzielczość 16 bitów. Przyjęcie takich parametrów ogranicza pasmo sygnału do 4 kHz. Maksymalny stosunek sygnału do szumu wynikający z rozdzielczości kwantyzera [5] można wyznaczyć z przybliżonej zależności: SNRdB ≈ 6 ⋅ N + 1,8 (2) gdzie N oznacza rozdzielczość bitową przetwornika. Dla szesnastobitowego przetwornika analogowo-cyfrowego maksymalny stosunek sygnału do szum, wynikający tylko z szumu kwantyzacji jest zatem równy około 98dB. Jest to wartość na tyle duża, że nie ma konieczności stosowania wyższych rozdzielczości kwantowania dla potrzeb realizacji wyjścia małosygnałowego modemu krótkofalowego. Wartość wyznaczona na podstawie zależności (2) jest wielkością teoretyczną i bierze pod uwagę tylko szum kwantyzacji jako jedyne źródło zniekształceń sygnału. Istnieją jeszcze inne źródła zakłóceń, takie jak: wszelkiego rodzaju szumy termiczne, śrutowe, strukturalne oraz przede wszystkim zniekształcenia nieliniowe wywołane niedostatecznie dużą częstotliwością próbkowania. W praktyce przy wyżej opisanych parametrach procesu cyfrowego 22 przetwarzania sygnałów uzyskiwany stosunek sygnału do szumu jest znacznie mniejszy. Aby wyznaczyć wartość stosunku sygnału do szumu na podstawie pomiarów za pomocą miernika zniekształceń nieliniowych, wykorzystano zależność określającą zawartość harmonicznych w sygnale [26] h[%] = N ⋅100% S+N (3) gdzie S reprezentuje moc sygnału użytecznego, a N sumaryczną moc wszelkich zakłóceń: szumów i zniekształceń nieliniowych. Na podstawie zależności (3) można wyznaczyć całkowity stosunek sygnału do szumu: ⎛ (100% )2 − ( h[%])2 ⎞ ⎛S⎞ ⎟. ⎜ ⎟ = 10 ⋅ log ⎜⎜ 2 ⎟ ⎝ N ⎠ dB ( h[%]) ⎝ ⎠ (4) 4.2.1. Generowanie sygnału nośnej W pierwszej części pomiarów na wyjściu audio modemu krótkofalowego został wygenerowany sygnał o pojedynczej częstotliwość 2 kHz, reprezentujący nośną. Pomiar ten ma na celu ocenę przede wszystkim „czystości” widmowej sygnału (zawartość harmonicznych sygnałów niepożądanych). Symulacja ta jest bardzo istotna, ponieważ pokaże rzeczywistą jakość użytych przetworników na karcie dźwiękowej i pozwoli odpowiedzieć na pytanie, czy modem na tej właśnie platformie sprzętowej może być rzeczywiście zrealizowany. Przebieg czasowy sygnału nośnej oraz jej widmo zostały przedstawiona na rys. 10. Rys. 10. Przebieg czasowy oraz widmo sygnału nośnej. 23 Analiza widmowa sygnału nośnej wskazuje na występowanie pewnych składowych harmonicznych sygnału. Na podstawie analizy rys. 10 można wywnioskować, że są to nieparzyste harmoniczne sygnału 2 kHz. Jednak składowa o częstotliwości 6 kHz ma moc o około 31dB mniejszą od sygnału nośnej i jest to wartość minimalna jaką udało się uzyskać poprzez zmianę wzmocnienia wyjścia audio karty dźwiękowej. Jest to różnica na tyle duża, że wynik ten należy uznać za zadowalający. Należy tu jednak zauważyć, że modem ma pracować w bardzo wąskim paśmie (300Hz do 3,3 kHz), więc częstotliwości wyższe zostaną odfiltrowane przez filtry cyfrowe na wyjściu nadajnika oraz wejściu odbiornika. Filtry te jednak nie będą wstanie wyeliminować składowych harmonicznych z wnętrza pasma. Należy zatem sprawdzić, czy generowanie częstotliwości poniżej 2 kHz będą źródłem zakłóceń w paśmie pracy modemu na poziomie, mogącym pogorszyć jakość transmisji. W tym celu zbadano stosunek sygnału do szumu dla różnych częstotliwości nośnych. W pomiarach tych wykorzystano miernik zniekształceń nieliniowych. Wyniki przedstawiono w tabl. 5 oraz na rysunku 11. Tabl. 5. Stosunek sygnału do szumu dla różnych częstotliwości nośnych. Częstotliwość [Hz] THD [%] SNR [dB] 300 1,25 38,061 500 1,25 38,061 1000 1,25 38,061 1500 1,45 36,771 2000 3 30,453 2500 9 20,879 3000 20 13,802 3500 36 8,2711 40 35 SNR [dB] 30 25 20 15 10 5 0 0 500 1000 1500 2000 2500 3000 3500 Częstotliowość [Hz] Rys. 11. Wpływ zniekształceń harmonicznych na jakość sygnału. 24 4000 Powyższe wyniki pokazują, że sygnały o częstotliwościach do około 1500 Hz nie podlegają zniekształceniom harmonicznym, ponieważ współczynnik zawartości wyższych harmonicznych nie przekracza dla tych sygnałów 1,5%, co zapewnia bardzo dobry stosunek sygnału do szumu, powyżej 35 dB. Dla częstotliwości wyższych od 1500Hz zawartość harmonicznych rośnie, zaczynają pojawiać się nieparzyste harmoniczne (rys. 11). Ich amplitudy szybko rosną wraz ze wzrostem częstotliwości. Jednak podczas praktycznej realizacji modemu, trzecie harmoniczne sygnałów powyżej 1,5 kHz mają zawsze częstotliwości powyżej 3,3 kHz, a więc wyższe od granicznej częstotliwości pasma użytecznego modemu. Zostaną więc odfiltrowane przez filtry w nadajniku i odbiorniku i nie będą miały wpływu na jakość transmisji. Dzięki powyższym rozważaniom można zauważyć, że częstotliwość próbkowania równa 8 kHz dla potrzeb realizacji niniejszego modelu modemu jest wystarczająca [13]. Jest to spowodowane faktem wykorzystywania przez projektowaną aplikację modemu niskiej częstotliwości nośnej oraz wąskiego pasma transmisyjnego. Poza nieparzystymi harmonicznymi nośna nie zawiera żadnych innych składowych niepożądanych. Szum jest na bardzo niskim poziomie (wynika on w dużym stopniu z szumu kwantyzacji) i nie występują żadne zakłócenia wąskopasmowe. Podsumowując stwierdzono, że wyżej przyjęte do analizy parametry sygnału nośnej są wystarczające dla realizacji modelu modemu krótkofalowego, opartego o wyjście audio karty dźwiękowej komputera jednoukładowego. Należy jeszcze tylko sprawdzić, czy badane urządzenie jest w stanie poprawnie wygenerować wszystkie rodzaje sygnałów zmodulowanych, z których w przyszłości korzystać będzie projektowane urządzenie. 4.2.2. Generowanie sygnałów zmodulowanych Jak się przewiduje [18], projektowana aplikacja modemu krótkofalowego definiowanego programowo będzie zgodna ze standardami [10, 11, 14, 15, 16, 17, 18]. Na ich podstawie do realizacji niniejszej koncepcji będą wykorzystane modulacje przedstawione w tabl. 4. Dla przyszłej aplikacji modemu wybór modulacji o większej efektywności widmowej będzie pozwalać na wykorzystanie większej przepływności informacyjnej zgodnie z tabl. 6. Tabl. 6. Przepływności oraz rodzaje modulacji realizowalne przez przyszłą aplikację modemu krótkofalowego. Przepływność informacyjna [bps] Rodzaj modulacji 3200 QPSK 4800 8PSK 6400 16QAM 8000 32QAM 9600 64QAM 25 4.2.2.1. Modulacje PSK Modulacje fazy [5, 26] to najprostsze wykorzystywane przez modemy krótkofalowe sposoby uzależniania sygnału nośnej od sygnału modulującego (informacyjnego). Podstawową zaletą tychże modulacji jest stosunkowo duża odporność na zakłócenia w kanale radiowym oraz stała amplituda obwiedni sygnału zmodulowanego. Informacja o sygnale nadanym znajduje się tylko w fazie sygnału zmodulowanego. Nie istnieje zatem problem z nieliniowymi wzmacniaczami nadajnika, które charakteryzują się różnymi wzmocnieniami dla różnych amplitud sygnału. Dla realizacji niniejszej koncepcji modelu modemu krótkofalowego wykorzystuje się modulacje QPSK oraz 8PSK. Obie opisywane są wspólnie, ponieważ korzystają z tych samych konstelacji. Symbole wykorzystywane przez modulację 8PSK zestawiono w tabl. 7. Tabl. 7. Mapowanie symboli 8PSK. Symbol Faza Składowa synfazowa Składowa kwadraturowa 0 0 1.000000 0.000000 1 π/4 0.707107 0.707107 2 π/2 0.000000 1.000000 3 3π/4 -0.707107 0.707107 4 π -1.000000 0.000000 5 5π/4 -0.707107 -0.707107 6 3π/2 0.0000000 -1.000000 7 7π/4 0.707107 -0.707107 Dla realizacji modulacji QPSK wykorzystano symbole 1, 3, 5, oraz 7 z tabl. 7. Konstelację dla obu tych modulacji przedstawiono na rys. 12. Wykorzystując tą konstelację oraz modulację QPSK, wygenerowano przebieg czasowy, będący zmodulowaną nośną o częstotliwości 2 kHz. Przebieg ten na wyjściu audio karty dźwiękowej przedstawiono na rys. 13. 26 Rys. 12. Konstelacja dla modulacji 8PSK oraz QPSK. Rys. 13. Przebieg czasowy dla modulacji QPSK. 27 Na podstawie powyższego przebiegu można zauważyć, że czas trwania symbolu zmodulowanego to 2,5ms, a co za tym idzie częstotliwość symbolowa to 400 Hz. Należy tu pamiętać, że modulacji podlegał strumień bitów o przepływności 800 bps. Widać zatem, że zgodnie z teorią przepływność symbolowa zmniejszyła się dwukrotnie w stosunku do bitowej. Pomiędzy symbolami jest wyraźnie widoczna różnica faz. Dla pełnego zobrazowania właściwości sygnału zmodulowanego QPSK przedstawiono na rys. 14 widmo sygnału dla tej modulacji. Rys. 14. Widmo sygnału zmodulowanego QPSK. Powyższy rysunek potwierdza dodatkowo, że modulacja QPSK, wygenerowana za pomocą omówionej wcześniej platformy sprzętowej wraz z wykorzystaniem platformy programowej, ma efektywność widmową w paśmie podstawowym o wartości równej 2, co jest zgodne z teorią. Należy tu jednak zauważyć, że w paśmie radiowym efektywność modulacji QPSK to oczywiście 1, ponieważ pasmo zajmowane przez sygnał to podwojona wartość pasma podstawowego, czyli 800 Hz. Modulacja QPSK cechuje się bardzo dużą odpornością na zakłócenia, dlatego jest często stosowana podczas transmisji w trudnych warunkach propagacyjnych. Modulacja 8PSK to przede wszystkim większa wydajność widmowa w stosunku do QPSK, a co za tym idzie mniejsza odporność na zakłócenia ze względu na mniejsze odległości euklidesowe pomiędzy punktami na konstelacji. Dla modulacji 8PSK dokonano podobnych pomiarów jak w poprzednim przypadku. Na rys. 15 przedstawiono przebieg czasowy sygnału dla modulacji 8PSK, a na rys. 16 jego widmo. 28 Rys. 15. Przebieg czasowy dla modulacji 8PSK. Rys. 16. Widmowa gęstość mocy dla modulacji 8PSK. W stosunku do modulacji QPSK widzimy tu przede wszystkim większą efektywność widmową, która wynosi 3. Jest to spowodowane faktem, że na każdy symbol zmodulowany 29 przypadają trzy bity informacyjne (danych). Czas trwania symbolu wynosi 3,75 ms, a więc częstotliwość symbolowa to 266 Hz. Można zatem powiedzieć, że widmo sygnału jest bardziej zwarte niż w poprzednim przypadku. Symbole zmieniają się wolniej i z mniejszymi skokami fazy, a co za tym idzie istnieje większe prawdopodobieństwo popełnienia błędu podczas odbioru takiego sygnału. Na podstawie przedstawionych w niniejszym paragrafie wyników można stwierdzić, iż zaproponowana platforma sprzętowa nadaje się do generowania sygnałów z modulacją fazy. Istotne jest teraz, aby pokazać, że jest możliwa również generacja sygnałów zmodulowanych amplitudowo i fazowo. 4.2.2.2. Modulacje QAM Dla modulacji QAM [5, 26] jest istotne to, aby amplitudy symboli były generowane poprawnie i nie podlegały zmianom podczas trwania symbolu. Nie mogą również występować efekty nieliniowe na wyjściu audio, ponieważ amplitudy muszą być rozróżnialne szczególnie dla wielowartościowych modulacji (na przykład 64QAM). W przypadku modulacji 16QAM na każdy symbol zmodulowany przypadają cztery bity danych. Efektem tego jest 16 różnych punktów konstelacji, które przedstawiono na rys. 17. Rys. 17. Konstelacja dla modulacji 16QAM. Jak widać na powyższym rysunku odległości pomiędzy poszczególnymi punktami konstelacji są mniejsze w stosunku do omawianych poprzednio modulacji fazy. Efektem tego będzie dodatkowe zmniejszenie odporności analizowanej modulacji na zakłócenia, aby temu 30 zapobiec należy zapewnić na przykład wydajniejsze kodowanie korekcyjne informacji przesyłanej w kanale radiowym. Kolejną istotną różnicą w stosunku do modulacji fazy są tu różne amplitudy symboli zmodulowanych. Zmianom podlegają zatem nie tylko faza, ale również amplituda symboli. Efekt ten jest widoczny na rys. 18. Rys. 18. Przebiegi czasowe dla modulacji 16QAM. Powyższe przebiegi czasowe pokazują, że wybrana konstelacja modulacji 16QAM pozwala na generację sygnału zmodulowanego o dwóch różnych wartościach amplitud obwiedni. Amplitudy te nie podlegają fluktuacjom i są w sposób jednoznaczny rozróżnialne. Efekty nieliniowe wzmacniaczy nie powinny mieć zatem znaczącego wpływu na jakość transmitowanego sygnału. Należy jednak pamiętać o tym, aby odpowiednio ustawić wzmocnienie sygnału wyjściowego. Czas trwania symbolu zmodulowanego wynosi 5 ms, a więc częstotliwość symbolowa to 200 Hz. Jak widać jest ona dwukrotnie mniejsza niż w przypadku modulacji QPSK. Można zatem stwierdzić, że wydajność widmowa modulacji 16QAM jest dwukrotnie lepsza niż dla modulacji QPSK i wynosi ona 4. Na rys. 19 przedstawiono widmo sygnału 16 QAM. 31 Rys. 19. Widmo sygnału zmodulowanego 16QAM. W dalszej kolejności generowano przebiegi zmodulowane z wykorzystaniem modulacji 32QAM, dla której na każdy symbol zmodulowany przypada 5 bitów danych. Konstelacja dla tej modulacji została przedstawiona na rys. 20. Rys. 20. Konstelacja dla modulacji 32QAM. 32 Na podstawie tej konstelacji można stwierdzić, że sygnał zmodulowany powinien mieć obwiednię o czterech różnych wartościach amplitudy. Efektywność widmowa tej modulacji wynosi więc 5. Charakterystyczne właściwości sygnału zmodulowanego przedstawiono na rys. 21 oraz rys. 22. Rys. 21. Przebiegi czasowe dla modulacji 32QAM. Rys. 22. Widmo sygnału zmodulowanego 32QAM. 33 Amplitudy są rozróżnialne w sposób jednoznaczny. Nie podlegają również żadnym fluktuacjom podczas trwania symbolu. Widoczne są również wyraźnie zmiany fazy z symbolu na symbol. Czas trwania symbolu wynosi 6,25 ms, czyli symbole zmieniają się 160 razy w ciągu sekundy. Jest to również widoczne na rys. 21. Ostatnim typem modulacji, który został analizowany w ramach niniejszej pracy statutowej jest modulacja 64QAM. W tym przypadku na każdy symbol zmodulowany przypada 6 bitów danych modulujących sygnał nośnej w fazie i amplitudzie. Konstelacja dla tej modulacji jest przedstawiona na rys. 23. Rys. 23. Konstelacja dla modulacji 64QAM. W przypadku modulacji 64QAM widoczne są bardzo małe odległości euklidesowe pomiędzy punktami konstelacji. Efektem tego jest bardzo mała odporność na zakłócenia. Jednak, efektywność widmowa wynosi w tym przypadku 6, więc jest trzykrotnie większa niż dla modulacji QPSK. Na rys. 24 i rys. 25 przedstawiono przebiegi czasowe jak i widmo sygnału zmodulowanego 64QAM. Sygnał zmodulowany ma obwiednie aż o siedmiu różnych wartościach amplitud. Większość z nich można zaobserwować na rys. 24. Są one rozróżnialne w sposób jednoznaczny. Nie występują żadne niepożądane ich fluktuacje. Zmiany fazy również są widoczne, chociaż są one niewielkie ze względu na specyfikę modulacji 64QAM. Czas trwania symbolu wynosi 7,5 ms, a więc częstotliwość symbolowa to tylko 133 Hz. 34 Rys. 24. Przebiegi czasowe sygnału 64QAM. Rys. 25. Widmo sygnału zmodulowanego 64QAM. 35 Powyższe wyniki świadczą o tym, że prezentowana platforma sprzętowa, która wykorzystuje odpowiednie oprogramowanie, może w sposób właściwy generować wszystkie typy sygnałów zmodulowanych, które będą wykorzystane w późniejszej realizacji aplikacji modemu krótkofalowego. Koncepcja wykorzystania tego typu urządzenia okazuje się być słuszna, ponieważ przy niedużych kosztach uda się zrealizować modem krótkofalowy definiowany programowo [8], który może być tak samo wydajny jak jego sprzętowe wersje. Dodatkowo warto pamiętać, że programowa wersja jest dużo tańsza, co obniży ewentualne koszty wdrożenia takiego rozwiązania. Ponadto modem definiowany programowo jest bardzo łatwo modyfikowalny poprzez aktualizację oprogramowania. Taka aktualizacja może nie tylko poprawić efektywność pracy urządzenia, ale nawet rozbudować je o nowe funkcje. 36 5. Sprzętowy symulator kanału radiokomunikacyjnego w paśmie krótkofalowym Telekomunikacja bezprzewodowa jest w dzisiejszych czasach jednym z najszybciej rozwijających się działów telekomunikacji na świecie, skupiającym olbrzymie inwestycje i obiecującym wysokie dochody. Projektowanie i tworzenie nowoczesnych systemów radiokomunikacyjnych jest zatem ogromnym przedsięwzięciem, które musi sprostać rosnącym wymaganiom klientów, zarówno pod względem dostępności usług jak i ich jakości. Zapewnienie oferowanym produktom wymaganych parametrów wiąże się nie tylko ze żmudnym procesem symulacji i analizy otrzymywanych wyników, ale także z budową prototypów i ich testowaniem. Podczas testowania gotowych prototypów wykorzystuje się sprzętowe symulatory kanału radiowego, pracujące w czasie rzeczywistym. Dostępne obecnie na rynku symulatory kanału radiokomunikacyjnego to urządzenia cechujące się bardzo zaawansowanymi rozwiązaniami technologicznymi, jednostki wieloprocesorowe, pozwalające na symulacje zjawisk w czasie rzeczywistym w paśmie do 2 GHz, ale co za tym idzie bardzo drogie. Rosnące w ostatnich latach zainteresowanie techniką cyfrowego przetwarzania sygnałów, przy wykorzystaniu procesorów sygnałowych DSP (Digital Signal Processor) stwarza możliwości znacznej redukcji kosztów oraz wymaganej złożoności w implementacji symulatora kanału radiowego. W ramach niniejszej pracy statutowej przewidziano wykonanie taniego, sprzętowego symulatora kanału radiowego dla potrzeb symulacji rzeczywistych zjawisk w kanale krótkofalowym, który będzie wykorzystywany do testowania opracowanego modelu modemu w technologii urządzenia definiowanego programowo [9]. 5.1. Krótka charakterystyka kanału HF Transmisja w kanale krótkofalowym odbywa się z wykorzystaniem fal radiowych z zakresu od 2 do 30 MHz. Jest to pasmo fal elektromagnetycznych podlegających podczas transmisji wzdłuż powierzchni Ziemi silnemu tłumieniu. W konsekwencji zasięg transmisji jest względnie niewielki i zmniejsza się wraz ze wzrostem częstotliwości fali nośnej. Zasięg ten może być jednak znacznie zwiększony dzięki tzw. zjawisku refrakcji jonosferycznej. Fala elektromagnetyczna rozchodząca się w kanale krótkofalowym w wyniku oddziaływania z jonosferą, podlega częściowej absorpcji i ugięciu. Ugięta część fali elektromagnetycznej jest skierowywana ponownie w stronę powierzchni Ziemi, która stanowi z kolei powierzchnię odbijającą. W wyniku wielokrotnych ugięć w jonosferze i odbić od powierzchni Ziemi jest możliwe przy odpowiednim doborze częstotliwości nośnej nawiązanie nawet łączności międzykontynentalnej. Ze względu na fakt, iż warstwa jonosfery ma charakter nieregularny, zmienny w czasie, gdyż procesy jonizacji zależą od promieniowania słonecznego, transmitowany sygnał podlega efektom Dopplera. Wszystkie wyżej przedstawione procesy wpływają na zniekształcenia transmitowanych sygnałów. Na skutek propagacji wielodrogowej odpowiedź impulsowa kanału krótkofalowego może zostać rozciągnięta nawet do kilku milisekund [9]. 5.2. Realizacja symulatora kanału radiowego Schemat blokowy uniwersalnego symulatora kanału radiokomunikacyjnego w paśmie podstawowym dla potrzeb łączności krótkofalowej, został przedstawiony na rys. 26. Sygnał wejściowy po przejściu przez filtr antyaliasingowy, ograniczający pasmo do 4 kHz, zostaje podany na 16-bitowy przetwornik analogowo-cyfrowy A/C typu sigma-delta TLC320AD535 [9], próbkujący go z częstotliwością 8 kHz. Próbki sygnału są gromadzone w buforze 37 wejściowym o pojemności 64 x 16bit. W momencie zapełnienia bufora, co 8 ms, zgromadzone próbki sygnału wejściowego zostają przesłane do pamięci operacyjnej procesora sygnałowego DSP typu TMS320C6711 [9], gdzie rozpoczyna się ich przetwarzanie. Rys. 26. Schemat blokowy uniwersalnego symulatora kanału radiowego. W pierwszej kolejności, próbki sygnału są poddawane filtracji Hilberta, w celu konwersji sygnału rzeczywistego na jego postać zespoloną. Zespolone próbki sygnału zostają następnie podane na wieloodczepową linię opóźniającą, dzięki której jest możliwa symulacja zjawisk wielodrogowości w kanale radiowym. Odpowiednio opóźnione próbki sygnału trafiają w dalszej kolejności na odpowiednie wejścia tzw. generatorów zaników. Schemat funkcjonalny pojedynczego generatora zaników został przedstawiony na rys. 27. Rys. 27. Schemat blokowy generatora zaników. Pojedynczy generator zaników jest zbudowany z dwóch generatorów liczb losowych o rozkładzie gaussowskim, dwóch filtrów dopplerowskich, których charakterystyka częstotliwościowa odpowiada pierwiastkowi charakterystyki symulowanej dopplerowskiej widmowej gęstości mocy, członu realizującego odwrotną szybką transformatę Fouriera IFFT (Inverse Fast Fourier Transform), dwóch bloków interpolacyjnych oraz dwóch modulatorów. Generatory liczb losowych generują dwie niezależne sekwencje addytywnego szumu gaussowskiego o wartości średniej równej 0 i wariancji równej 1. Próbki addytywnego szumu gaussowskiego są wymnażane następnie przez niezerowe próbki wektora współczynników filtru dopplerowskiego. Tak ukształtowane próbki są podawane na człon IFFT, na wyjściu którego otrzymujemy zespolony wektor współczynników rayleighowskich. Współczynniki rayleighowskie w dalszym etapie cyfrowego przetwarzania są poddawane procesowi liniowej interpolacji, dzięki któremu jest możliwe odpowiednie kształtowanie widma filtru dopplerowskiego w zakresie od 0,1 do 312,5 Hz, co pokrywa zakres symulowanych zjawisk fizycznych w kanale krótkofalowym. 38 Kolejnym etapem zaimplementowanego algorytmu jest sumowanie odpowiednich próbek sygnałów pochodzących z wyjść poszczególnych generatorów zaników i gromadzenie ich w buforze o pojemności 64 x 16 bit. Zgromadzone w buforze wyjściowym próbki sygnału są podawane na przetwornik cyfrowo-analogowy C/A, a następnie na dolnoprzepustowy filtr wygładzający o częstotliwości granicznej 4 kHz. Proces cyfrowego przetwarzania sygnału wprowadza 8 ms opóźnienie pomiędzy sygnałem wejściowym a sygnałem wyjściowym. Elastyczna architektura układu pozwala na łatwą rekonfigurację symulatora do pracy z różnymi scenariuszami propagacyjnymi, poprzez zmianę ilości i wartości poszczególnych próbek w widmie filtru dopplerowskiego, zmianę parametrów członu interpolacyjnego oraz zmianę opóźnień symulowanych dróg propagacyjnych. Wszystkie parametry symulatora kanału mogą być zmieniane w czasie rzeczywistym. 5.3. Weryfikacja pracy symulatora kanału W celu weryfikacji poprawności działania zbudowanego symulatora kanału radiowego zostało przeprowadzonych szereg pomiarów, których wyniki zostały porównane z wartościami teoretycznymi. Pomiary zostały przeprowadzone w układzie pomiarowym zgodnym z rys. 28. Komputer PC Generator sinus f 0=2 kHz Symulator kanału sterowanie Oscyloskop Analizator widma Rys. 28. Schemat układu pomiarowego. W skład układu pomiarowego wchodził generator sygnałów o częstotliwościach akustycznych, zrealizowany symulator kanału radiowego na płytce testowej DSK Starter Kit [9] oraz komputer klasy PC. Jako sygnał testowy wybrano sinusoidę o częstotliwości f0 = 2 kHz. Komputer służył do sterowania pracą symulatora kanału oraz do rejestracji sygnałów z wyjścia analogowego symulatora. Analiza otrzymanych wyników przeprowadzona została przy pomocy odpowiednich aplikacji programowych, realizujących funkcje oscyloskopu i analizatora widma w uniwersalnym środowisku obliczeń matematycznych MATLAB. 5.3.1. Pomiar widma sygnału Pomiary widm sygnału testowego na wyjściu symulatora kanału (rys. 29 i rys. 30) przeprowadzono dla standardowych środowisk testowych zgodnie z rekomendacją ITU-R [9]. Środowiska testowe są opisane za pomocą dwuprążkowej odpowiedzi impulsowej o równych średnich tłumieniach. Poszczególne środowiska charakteryzują się różnymi parametrami względnych opóźnień pomiędzy prążkami oraz różnymi wartościami „rozmycia” częstotliwości, oznaczane jako 2σ, na skutek efektu Dopplera. Parametr 2σ wyznacza szerokość symulowanego filtru dopplerowskiego dla około 2 dB spadku mocy. Z dostępnej listy wyspecyfikowanych środowisk propagacyjnych wybrano dwa, które charakteryzowały 39 się zdecydowanie różnymi parametrami względem siebie. Dla każdego z przypadków zamieszczono dwa periodogramy. Pierwszy z nich obrazuje zmienność w całym dostępnym paśmie, drugi zaś pozwala na lepszą obserwację widma w okolicach częstotliwości środkowej, czyli 2 kHz. a) b) Rys. 29. Widmo sygnału testowego na wyjściu symulatora kanału dla umiarkowanych warunków propagacji w obszarach okołorównikowych (2σ=1,5 Hz, różnica czasu opóźnień pomiędzy prążkami odpowiedzi impulsowej kanału równa 2 ms): a) zmienność w całym paśmie, b) powiększenie widma w okolicach częstotliwości środkowej. 40 a) b) Rys. 30. Widmo sygnału testowego na wyjściu symulatora kanału dla trudnych warunków propagacji w obszarach okołorównikowych (2σ=30 Hz, różnica czasu opóźnień pomiędzy prążkami odpowiedzi impulsowej kanału równa 7 ms): a) zmienność w całym paśmie, b) powiększenie widma w okolicach częstotliwości środkowej. Przedstawione na rys. 29 i rys. 30 periodogramy pokazują, iż kształt pomierzonych widm jest zbliżony do krzywej gaussowskiej, a więc jest zgodny z oczekiwaniami. Ponadto, po dokonaniu uśrednienia pomierzonych widm można stwierdzić, że ich kształt oraz szerokość jest zbliżona do zadanych. Obserwując pomierzone periodogramy w całym zakresie pasma, można zauważyć występowanie niepożądanych replik widma podstawowego. Ich obecność jest związana z 41 procesem liniowej interpolacji. Zjawisko to zostało jednak w dużym stopniu ograniczone poprzez zastosowanie odpowiedniej filtracji, dzięki której poziom replik widma podstawowego zmniejszył się o około 40 dB względem poziomu widma pożądanego. 5.3.2. Pomiar odpowiedzi impulsowej kanału radiowego Zrealizowany symulator kanału radiowego umożliwia obserwację dwuprążkowych odpowiedzi impulsowych, dla których względne opóźnienie pomiędzy poszczególnymi prążkami zmienia się w granicach od 0 do 7,875 ms z krokiem 125 μs. Przykładowo na rys. 31 zamieszczono pomierzone w odstępach 12,5 ms odpowiedzi impulsowe kanału krótkofalowego w przypadku trudnych warunków propagacyjnych dla obszarów okołorównikowych. Obserwując pomierzone odpowiedzi impulsowe kanału można zauważyć powolną zmianę wartości poszczególnych prążków w czasie. Zmiany amplitudy poszczególnych prążków powodują zmienność w czasie obwiedni amplitudy sygnału odbieranego, a więc kanał jest niestacjonarny. Rys. 31. Odpowiedzi impulsowe kanału krótkofalowego dla trudnych warunków propagacyjnych w obszarach okołorównikowych pomierzone w odstępach czasu 12,5 ms (czas trwania odpowiedzi impulsowej wynosi 6 ms). 5.3.3. Pomiar obwiedni sygnału odbieranego Przykładowo na rys. 32 została zaprezentowana obwiednia sygnału odbieranego unormowana względem wartości skutecznej dla umiarkowanych warunków propagacji w obszarach okołobiegunowych. Pomiar pokazuje, iż zrealizowany symulator kanału umożliwia symulację 42 a(t) / ask [dB] zaników o głębokościach dochodzących do 40 dB. Taka dynamika zaników była możliwa do osiągniecia dzięki zastosowaniu 16-sto bitowym przetwornikom A/C i C/A. t [sek] Rys. 32. Obwiednia sygnału odbieranego unormowana względem wartości skutecznej dla umiarkowanych warunków propagacji w obszarach okołobiegunowych (2σ = 10 Hz, różnica czasu opóźnień pomiędzy prążkami odpowiedzi impulsowej kanału równa 3 ms). Przedstawione pomiary pozwalają stwierdzić, iż zrealizowany symulator modeluje obwiednię sygnału odbieranego zgodnie z założeniami. 5.4. Właściwości symulatora kanału radiowego W niniejszym rozdziale przedstawiono sprzętową realizację, pracującego w czasie rzeczywistym, uniwersalnego symulatora kanału w oparciu o procesor sygnałowy TMS320C6711. Zrealizowany symulator pozwala na prosty i wygodny sposób symulacji wszystkich wyspecyfikowanych środowisk propagacyjnych, zalecanych dla wąskopasmowych kanałów krótkofalowych [9]. Dodatkowym atutem opracowanego symulatora jest możliwość łatwej i prostej rekonfiguracji jego pracy bez konieczności zmiany oprogramowania procesora, dzięki zastosowaniu dodatkowej aplikacji sterującej. Symulator umożliwia także tworzenie własnych scenariuszy zaników poprzez wybór niestandardowych ustawień kanału. Podsumowując, w tabl. 8 zamieszczono najważniejsze parametry zrealizowanego sprzętowego symulatora kanału radiowego w paśmie krótkofalowym. 43 Tabl. 8. Wybrane parametry zrealizowanego symulatora kanału. Max szerokość pasma sygnału 4 kHz Liczba ścieżek 2 Maksymalne opóźnienie pomiędzy ścieżkami 7,875 ms Rozdzielczość nastawy pomiędzy ścieżkami 125 μs „Rozmycie” dopplerowskie 0 - 50 Hz Minimalna rozdzielczość widma 1 Hz Dynamika zaników szybkich 0 - 40 dB Wymienione wyżej możliwości symulacji rekomendowanych środowisk propagacyjnych dla kanału krótkofalowego pozwalają na wykorzystanie zrealizowanego symulatora do badań wąskopasmowych modemów krótkofalowych pracujących w kanale o szerokości 3 kHz. 5.5. Uniwersalne środowisko projektowe „DSK Starter Kit” TSM320C6711 Do realizacji sprzętowego symulatora kanału radiowego wykorzystano uniwersalne środowisko projektowe „DSK Starter Kit” procesora sygnałowego TMS320C6711 firmy Teras Instrument [9]. W ramach niniejszego punktu zostały przedstawione podstawowe charakterystyki w/w narzędzia, za pomocą którego został zrealizowany symulator kanału radiowego. 5.5.1. Ogólne właściwości zestawu Karta DSK Starter Kit ze zmiennoprzecinkowym procesorem sygnałowym TMS320C6711 to uniwersalne środowisko projektowe, które umożliwia szybkie, łatwe i niedrogie wykorzystanie procesora DSP do symulacji projektowanych układów. Karta ta umożliwia efektywny rozwój i testowanie aplikacji z wykorzystaniem procesora DSP, która doskonale nadaje się do zastosowań naukowo-dydaktycznych. Oprócz jednego z najnowocześniejszych obecnie procesorów DSP zestaw jest wyposażony w: • 16MB zewnętrznej pamięci SDRAM i 128KB zewnętrznej pamięci Flash, • 16-bitowy kodek audio (TLC320AD535), • kontroler JTAG (ang. Joint Test Action Group), • interfejs do dodatkowych kart (tzw. dautherboard), • zestaw diod elektroluminescencyjnych LED do sygnalizacji wybranych stanów pracy tworzonej aplikacji, • zestaw przełączników do zadawania określonych stanów logicznych na wejściu procesora. Możliwości zestawu znacznie zwiększają także dodatkowe urządzenia peryferyjne do komunikacji z pamięcią zewnętrzną, koprocesorami, procesorami nadrzędnymi oraz urządzeniami szeregowymi. Do wspomnianych układów peryferyjnych należy zaliczyć: 44 • • • • • • • • • • kontroler bezpośredniego dostępu do pamięci DMA (ang. Direct Memory Access Controller), rozszerzony kontroler bezpośredniego dostępu do pamięci EDMA (ang. Enhanced DMA), interfejs komputera nadrzędnego HPI (ang. Host-Port Interface), szyna rozszerzeń XB (ang. Expansion Bus), interfejs pamięci zewnętrznej EMIF (ang. External Memory Interface), logika konfiguracji procesu startowania (ang. Boot Configuration Logic), wielokanałowy buforowany port szeregowy McBSP (ang. Multichanel Buffered Serial Port), zegary/liczniki (ang. Timers), selektor przerwań (ang. Interrupt Selector), logika zarządzania energią zasilania (ang. Power-Down Logic). Niektóre z wymienionych układów jako kluczowe przy realizacji symulatora kanału zostaną szerzej omówione w dalszej części niniejszego punktu. 5.5.2. Procesor sygnałowy TMS320C6711 Procesor sygnałowy TMS320C6711 produkcji Texas Instruments jest jednym z najszybszych obecnie dostępnych zmiennoprzecinkowych procesorów sygnałowych opartym na bardzo zaawansowanej architekturze VelociTI. Termin ten oznacza, iż strukturę procesora można podzielić na dwie prawie identyczne części, z których każda składa się z 16 rejestrów 32bitowych. Dzięki wykorzystaniu par rejestrów jest możliwe wykonywanie operacji z podwojoną precyzją 64 bitową. Każda z sekcji jest wyposażona w cztery mogące pracować niezależnie jednostki arytmetyczno-logiczne (ALU). Dzięki takiej konstrukcji jest możliwe jednoczesne wykonywanie do ośmiu 8-bitowych sekwencji „mnożenie-dodawanieakumulacja”, często oznaczanych jako MAC (ang. Multiply Add aCcumulate) albo dwóch 16bitowych mnożeń w jednym takcie zegara. Procesor taktowany jest zegarem o częstotliwości 150 MHz, co pozwala na uzyskanie mocy obliczeniowej rzędu 1200 MIPS (Million Instructions Per Second). Ponieważ wykonanie instrukcji zmiennoprzecinkowych wymaga więcej niż jednego taktu zegarowego procesor ten charakteryzuje się mocą rzędu 900 MFLOPS (Million Floating Point Operations Per Second). Wielkość ta czyni go porównywalnym z procesorem Intel Pentium IV 2GHz. Podstawowy schemat blokowy wewnętrznej architektury omawianego procesora sygnałowego został przedstawiony na rys. 33. Architektura VelociTI opiera się na tzw. architekturze harwardzkiej, zastosowanej po raz pierwszy w procesorze TMS32010. Cechą podstawową tej architektury jest zastosowanie oddzielnych magistrali systemowych do przesyłania instrukcji i do przesyłania danych. Architektura taka umożliwia tzw. potokowe przetwarzanie danych (ang. pipe-lining). Gdy jedna instrukcja jest wykonywana, następna jest dekodowana, a jeszcze następna – pobierana. Taka technika trzykrotnie skraca czas wykonywania programu, a zatem pozwala na zwiększenie w tej samej skali szybkości przetwarzania. Dodatkowo w ogólności każdy z ośmiu ALU może rozpocząć wykonywanie następnej instrukcji nie czekając na zakończenie poprzedniej przez pozostałe jednostki ALU. W rezultacie taki procesor wymaga wyrafinowanych technik współbieżnego programowania i może pracować w czasie rzeczywistym. 45 Kontroler emulacji JTAG Pamięć L1P cache 4KB C6711 CPU Ładowanie instrukcji Podział instrukcji na ścieżki Dekodowanie instrukcji Ścieżka danych A Ścieżka danych B Rejestry (A0-A15) Rejestry (B0-B15) .L1 .S1 .M1 .D1 .L2 .S2 .M2 .D2 Rejestry sterujące Sterowanie Pamięć L2 Test Emulator In-Curcuit 64KB Rozszerzony kontroler bezpośredniego dostępu do pamięci EDMA 10 kanałów Obsługa przerwań Interfejs pamięci zewnętrznej EMIF 20 32 A D McBSP 0 (T1/E1) McBSP 1 (T1/E1) Timer 0 Timer 1 Interfejs HPI 16-bit Pamięć L1D cache 4KB Zarządz. energią PLL Generator Rys. 33. Schemat blokowy procesora TSM320C6711 wraz z peryferiami Procesor sygnałowy TMS320C6711 charakteryzują dwa poziomy pamięci. Pierwszy tworzą dwa 4 KB pamięci tzw. cache: L1P przeznaczony do przechowywania instrukcji wykonywanego programu oraz L1D przeznaczony do przechowywania danych. Drugi poziom pamięci (L2) stanowi 64KB pamięci RAM, która może być skonfigurowana częściowo jako SRAM albo jako pamięć zewnętrzna. Dopóki program i dane mieszczą się w pamięciach L1, nie jest wykorzystywana wolniejsza zewnętrzna pamięć RAM, natomiast pamięć L2 jest wtedy w całości skonfigurowana jako SRAM. Zapis i odczyt z pamięci L1P i L1D jest wykonywany w czterech cyklach zegarowych. Ponieważ pamięć L2 jest wolniejsza, gdy jest wykorzystywana, może dochodzić do sytuacji, w których pamięć podręczna L1 będzie pusta, co spowalnia działanie jednostki centralnej CPU. Reasumując, dostępną jednostkę procesorową można określić mianem jednej z najlepszych obecnie na rynku jednostek tego typu, która z powodzeniem sprostać może wymaganiom systemów opartych na wyrafinowanych algorytmach arytmetycznych i kładących szczególny nacisk na skuteczne rozwiązania sprzętowe. 5.5.3. Kodek audio TLC320AD535 Uniwersalne środowisko projektowe „DSP Starter Kit” jest wyposażone w kompletny system przetwarzania analogowo - cyfrowego i cyfrowo-analogowego AIC (ang. Analog Interface Circuit). Tworzy go kodek audio TLC320AD535 oraz pasywne filtry antyaliasingowe i wygładzające. W kodeku TLC320AD535 można wyróżnić dwa tory przetwarzania sygnału, hybrydowy obwód analogowy z dwoma niezależnymi portami wspierającymi transmisję szeregową z procesorem szeregowym oraz zewnętrze układy rezystorowo – kondensatorowe, których zadaniem jest odpowiednie wysterowanie wzmocnienia kanałów analogowych oraz biegunów filtrów. Kodek TLC320AD535 używa szeregowego protokołu transmisji, komunikując się z procesorem sygnałowym poprzez wielokanałowy buforowany port szeregowy McBSP0 (ang. Multichanel Buffered Serial Port). Poglądowy schemat połączenia kodeka z procesorem sygnałowym został przedstawiony na rys. 34. 46 Multiplekser McBSP0 SN74CBT3257 C6711 DSP Rozszerzony interfejs zewnętrzny EPI LPF wejście TLC320AD535 Dwukanałowy kodek audio (16-bit, 8KHz) LPF wyjście Rys. 34. Schemat połączeń układu TLC320AD535 na płytce testowej DSK Dane z procesora sygnałowego trafiają poprzez port szeregowy McBSP0 na multiplekser SN74CBT3257, który w zależności od wysterowania może skierować je do kodeka audio albo poprzez 80-cio stykowe złącze do zewnętrznego układu (ang. daughterboard). Analogowy sygnał wejściowy przed podaniem na odpowiedni przetwornik analogowocyfrowy zostaje wzmocniony oraz przefiltrowany. Przetwornik zamienia tak przygotowany sygnał wejściowy na dane w postaci słów 16-sto bitowych w kodzie uzupełnienia do dwóch U2 (ang. 2s-complement format), a następnie kieruje je do procesora poprzez port szeregowy. W przypadku wystąpienia przekroczenia zakresu, przetwornik wystawia flagę przekroczenia zakresu w rejestrze flagowym kontroli danych. Flaga ta może zostać odczytana jedynie przez odpowiedni port transmisji szeregowej. W układzie TLC320AD535 zastosowano przetworniki analogowo-cyfrowe typu sigma-delta wykorzystujące nadpróbkowanie (ang. oversampling). Oznacza to, iż przetworniki te próbkują sygnał wejściowy ze znacznie większą częstotliwością niż wymagana, według twierdzenia Nyquista o próbkowaniu sygnałów analogowych. Zwiększając częstotliwość próbkowania można bowiem ograniczając wymagania co do dokładności układów analogowych, a także w przypadku przetwornika cyfrowo-analogowego dotyczące wyjściowego filtru odtwarzającego, uzyskać niskie wartości szumu. Duża rozdzielczość bitowa przetwornika zapewnia dodatkowo wysoki stosunek sygnału do szumu na poziomie 77 dB oraz pozwala na prawidłowe odwzorowanie sygnału wejściowego o dużej dynamice (do 80 dB), co jest szczególnie ważne z punktu widzenia konstrukcji symulatora kanału, ponieważ środowisko wielościeżkowe typowo powoduje powstawanie zaników do 40 dB. Sygnał w postaci cyfrowej przesyłany z procesora sygnałowego poprzez port szeregowy trafia na odpowiednie 16-sto bitowe przetworniki cyfrowe-analogowe również pracujące w kodzie uzupełnienia do dwóch. W konwersji cyfrowo-analogowej podobnie jak w przypadku konwersji analogowo-cyfrowej wykorzystano przetworniki typu sigma-delta z nadpróbkowaniem. Przetworzony sygnał jest podawany następnie na wewnętrzny filtr dolnopasmowy. W przypadku tego przetwarzania uzyskuje się stosunek sygnał-szum na poziomie 74 dB. Przetworniki analogowo-cyfrowe oraz cyfrowo-analogowe pracują synchroniczne w pętli synchronizacji fazowej PLL (ang. Phase Locked Loop). Układ TLC320AD535 może próbkować sygnał wejściowy z różnymi częstotliwościami aż do 11,025 kHz. W rozwiązaniu zastosowanym przez firmę Texas Instruments w zestawie „DSK Starter Kit” częstotliwość ta została ustalona na 8 kHz. Biorąc pod uwagę twierdzenie Nyquista, w celu uniknięcia zniekształcenia widma sygnału na skutek aliasingu, pasmo wejściowe i wyjściowe zostało ograniczone do 4kHz. Od strony sygnału wejściowego układ TLC320AD535 jest widziany poprzez 8 Ω impedancję. Dopuszczalny prąd źródłowy nie może przekraczać 5 mA, natomiast zakres 47 zmienności napięcia wejściowego nie powinien być większy niż 1,5 V. Od strony sygnału wyjściowego układ jest widziany jako 60 Ω impedancja. 5.5.4. Środowisko programowe Code Composer Studio Ze względu na zaawansowaną architekturę procesora, wykorzystującą technikę potokową programowanie procesora DSK przy użyciu języka maszynowego asembler może nastręczać wiele trudności, szczególnie, jeśli jest konieczne wykorzystanie pełnego potencjału drzemiącego w jednostce centralnej. Z tego też względu naprzeciw konstruktorom wychodzi stworzone przez Texas Instruments przyjazne środowisko programistyczne Code Composer Studio. Integruje ono wiele narzędzi w spójną platformę, wspomagającą pisanie w języku C i testowanie programów dla procesorów sygnałowych rodziny TMS320C6000. Do podstawowych zalet programu należy przyjazny interfejs użytkownika, rozbudowany debuger, umożliwiający śledzenie wykonywania programu krok po kroku, podglądanie zawartości poszczególnych rejestrów, pamięci, zmiennych, programu w asemblerze, ustawianie pułapek programowych itp. Możliwa jest symulacja występowania przerwań zewnętrznych. Dodatkową opcję stanowi wprowadzenie w debugerze punktów pomiarowych (ang. probe-point). Jest to odmiana pułapki programowej, przy której działanie programu nie jest wstrzymywane, lecz jest podejmowana określona przez programistę akcja (jest wykonywany skrypt, jest zapamiętywana wartość zmiennej itp.) W trakcie wykonywania programu jest możliwe również śledzenie zmian sygnałów i wartości zmiennych. Dane te można wyświetlać w formie przebiegu czasowego lub zapisać do pliku. Pozwala to uzyskać łatwy do odczytania i późniejszej analizy przebieg zmian wartości zmiennych w czasie działania programu. Środowisko Code Composer Studio oferuje także możliwość uzyskania informacji o wykorzystywanej mocy procesora, a także o czasach wykonywania poszczególnych funkcji. Dodatkowo pozwala na analizę czasów wykonywania fragmentów programu. Rozbudowane możliwości debugera są wynikiem zastosowania innowacyjnej technologii RTDX (ang. Real-Time Data Exchange). Interfejs RTDX wspierany przez firmę Texas Instruments to innowacyjna technologia, pozwalająca na wymianę danych pomiędzy komputerem klasy PC a zestawem „DSK Starter Kit C6711” w trybie „on-line”, która nie wymaga wstrzymania działania programu. Został on wykorzystany do wsparcia transmisji pomiędzy aplikacją sterującą pracą symulatora kanału a samym urządzeniem. Strefa programowa interfejsu składa się z dwóch aplikacji: docelowej i sterującej, uruchomianej na komputerze PC, działającej w połączeniu ze środowiskiem Code Composer Studio (rys. 35). Interfejs COM Interfejs JTAG Interfejs użytkownika Code Composer Studio Program komputera PC tzw, klient Komputer PC Biblioteka RTDX Biblioteka RTDX Aplikacja procesora sygnałowego Środowisko procesora sygnałowego opcjonalny plik log Rys. 35. Schemat procesu komunikacji pomiędzy komputerem PC a DSK C6711 48 Klientem może być aplikacja standardowych pakietów takich jak: National Instruments LabVIEW™, Quinn-Curtis Real-Time Graphics Tools, MATLAB, Microsoft Excel. Dzięki dołączonej do Code Composer Studio bibliotece typu COM jest możliwe także tworzenie aplikacji w środowiskach programistycznych takich jak Visual C++ czy też Borland Builder C++. Interfejs RTDX może być wykorzystywany zarówno do zadawania określonych parametrów, podglądu bieżących wartości systemu jak i do rozdzielenia realizowanego programu na części, które uruchomione na oddzielnych platformach będą się ze sobą komunikować. Mechanizm RTDX umożliwia transmisję danych z szybkościami od 20 do 50 kB na sekundę w specjalnie do tego celu powołanych kanałach transmisyjnych, wymagających wcześniejszej deklaracji w programie. Za odpowiedni format danych przesyłanych poprzez interfejs JTAG są odpowiedzialne biblioteki: RTDX Target Library po stronie programu zaimplementowanego w DSP oraz RTDX Host Library po stronie aplikacji klienckiej. Aplikacja kliencka uczestniczy w procesie wymiany danych z wykorzystaniem środowiska Code Composer Studio, umożliwiającego aktywację poszczególnych kanałów transmisyjnych, ich dodawanie, zapis transmitowanych danych do pliku i szereg innych działań konfiguracyjnych. Do najważniejszych funkcji wykorzystywanych podczas realizacji transmisji należy zaliczyć: • Enable/Disable Chanel („nazwa kanału RTDX”) – umożliwiającą aktywację kanału o podanej nazwie • channel->Open („nazwa kanału RTDX”,”R/W”) – umożliwiającą otworzenie kanału przepływu danych do zapisu lub odczytu w zależności do znacznika „R/W” • channel->Redia (data) – umożliwiającej odczyt pojedynczej danej • channel->WriteI (data) – umożliwiającej zapis pojedynczej danej • channel->Close () – umożliwiającej zamykanie kanału RTDX Na potrzeby niniejszej pracy wykorzystano dostarczaną przez producenta bibliotekę typu rtdxint.dll stworzoną w technologii COM do implementacji transmisji danych sterujących pomiędzy aplikacją kliencką napisaną w programie Borland C++ Builder 6.0, a programem zaimplementowanym w DSK. Technologia COM, która została zaprojektowana w celu umożliwienia tworzenia modułów programów w sposób pozwalający na ich wykorzystanie przez inne aplikacje, pozwala na zaimplementowanie transmisji w sposób stosunkowo wygodny dla programisty. Odpowiednia instalacja biblioteki pozwala sterować funkcjami transmisji danych poprzez wywoływanie funkcji dodanego do aplikacji komponentu TRtdxExp. Stworzona aplikacja kliencka umożliwia transmisję jednokierunkową danych w postaci pakietu, w którym są zawarte informacje na temat aktualnie symulowanego profilu propagacyjnego tzn. położenia czasowego i mocy prążków odpowiedzi impulsowej kanału oraz ich rozkładów widmowej gęstości mocy. 49 6. Podsumowanie Jak wynika z przeprowadzonych analiz, podstawowym warunkiem osiągnięcia sukcesu na rynku jest zbudowanie modemu charakteryzującego się dużą elastycznością w jego potencjalnych zastosowaniach i stosunkowo niską ceną w odniesieniu do oferowanej funkcjonalność. Zaproponowana technologia urządzenia definiowanego programowo jest w stanie sprostać postawionym zadaniom. Opracowanie modemu krótkofalowego, wykorzystując zasoby polskiej myśli technicznej stanowi cenny wkład w podniesienie konkurencyjności krajowej gospodarki, szczególnie podczas zalewania polskiego rynku produktami zagranicznymi, nie zawsze wysokiej jakości. Jak wiadomo, zbudowanie uniwersalnego modemu radiowego, pracującego w paśmie krótkofalowym jest procesem wieloetapowym. Niniejsza praca stanowi drugi i zarazem przedostatni etap realizacji modelu modemu w nowatorskiej technologii urządzenia definiowanego programowo. Opracowana uniwersalna warstwa sprzętowa modemu stanowi punkt wyjścia do opracowania warstwy programowej zaplanowanej na III etap realizacji niniejszego projektu. W ramach niniejszej pracy statutowej została sprawdzona zasadność zastosowania technologii urządzenia definiowanego programowo do budowy modemu krótkofalowego. Przeprowadzone analizy wskazują, ze jest możliwe zbudowanie takiego modemu, co zostanie w pełni zrealizowane w III etapie. Dodatkowo, został zrealizowany sprzętowy symulator kanału radiowego, który będzie wykorzystany w dalszej części uruchamiania oraz testowania zbudowanego modelu modemu krótkofalowego. Należy w tym miejscu dodać, że zdobyta wiedza podczas realizacji modemu dla potrzeb łączności krótkofalowej, a szczególnie uzyskane rezultaty w rzeczywistych warunkach pracy modemu, stanowić będą cenny materiał dydaktyczny dla studentów ze specjalności telekomunikacja. 50 Bibliografia [1] Ball B. Poznaj LINUX. MIKOM, Warszawa, 1999 [2] Commercial IPDP-1050 HF Modem, User Manual (Version 1,0), IP Unwired Inc., 2004, www.ipunwired.com [3] EPIA MII-Series Mini-ITX Mainboard Operating Guide [4] EPIA-MII Mini-ITX Mainboard User’s Manual [5] Haykin S.: Systemy telekomunikacyjne. Tom 1 i 2, WKŁ, Warszawa, 1998 [6] Instrukcja Obsługi, LeCroy Kolorowe oscyloskopy cyfrowe serii LC, Wydanie H, Styczeń 1999 [7] Jamsa K. JAVA Biblioteka programisty, MIKOM, Warszawa, 1997 [8] Katulski R., Marczak A., Stefański J.: Technika radia programowalnego. Przegl. Telekom. + Wiad. Telekom., nr 10, str. 402-406, 2004 [9] Lipka A., Niski R., Stefański J., Turek K., Sprzętowy symulator kanału radiowego dla potrzeb krótkofalowej radiokomunikacji morskiej. Materiały konferencyjne KKRRiT, str. 131-134, Poznań, 2006 [10] MIL-STD-188-110A, Interoperability and Performance Standards for Data Modems. Military Standard. U.S. Army Information Systems Engineering Command, 1991 [11] MIL-STD-188-110B, Interoperability and Performance Standards for Data Modems. U.S. Army Information Systems Engineering Command, 2000 [12] Proakis J. G.: Digital communications. McGrow-Hill, 1989 [13] Proakis J.G., Manolakis D. G.: Digital Signal Processing. Prentice Hall, 1996 [14] STANAG 4285, NATO Standardization Agreement: Characteristics of 1200/2400/3600 bps Single Tone Modulators/Demodulators for HF Radio Links. 1990 [15] STANAG 4415, NATO Standardization Agreement: Characteristics of a Robust NonHoping, Serial Tone Modulator/demodulator for Severely Degrade HF Radio links. 1999 [16] STANAG 4529, NATO Standardization Agreement: Characteristics of Single Tone Modulators/Demodulators for Maritime HF Radio Links with 1240Hz Bandwidth. 1998 [17] STANAG 4539, NATO Standardization Agreement: Technical Standards for an HF Non–Hopping Waveform. 2001 [18] Stefański J., Gencza S., Niski R., Radziwanowski M., Szybka transmisja danych w paśmie krótkofalowym; Etap 1: Opracowanie pakietu symulującego pracę toru nadawczo-odbiorczego modemu w krótkofalowym kanale radiowym. Instytut Łączności, Warszawa, 2005 [19] The Java(tm) Language Environment: A White Paper, http://java.sun.com [20] User Documentation, http://www.debian.org [21] User Documentation, http://www.fedora.redhat.com 51 [22] User Documentation, http://www.knoppix.org [23] User Documentation, http://www.mandriva.com [24] User Documentation, http://www.opensuse.org [25] User Documentation, http://www.slackware.com [26] Wesołowski K.: Podstawy cyfrowych systemów telekomunikacyjnych. WKŁ, Warszawa, 2003 52 Załącznik 1 Wydruk wybranych procedur w języku JAVA //import wymaganych biblotek import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.LineNumberReader; import java.io.IOException; import javax.sound.sampled.*; import static javax.sound.sampled.AudioSystem.*; import static javax.sound.sampled.AudioFileFormat.Type.*; import java.lang.InterruptedException; import static java.lang.Math.*; import static java.lang.Thread.*; //inicjalizacja pracy modemu public class Modem { static FileInputStream in = null, bin_in = null, sym_in = null, mod_in = null; static FileOutputStream out = null, mod_out = null, sym_out = null, bin_out = null, gen_out = null; static int [] gen; static double [] kon; //generator binarnej sekwencji pseudoprzypadkowej public static void generator(int ile) throws IOException { gen = new int[ile]; gen_out = new FileOutputStream("dane.txt"); for(int i = 0; i < ile; i++) { gen[i] = (int)(256d*random()); gen_out.write(gen[i]); } } //koniec procedury //blok uniwersalnego generatora symboli modulacji PSK / QAM public static long modulacja(int mod_id) throws IOException { in = new FileInputStream("dane.txt"); sym_out = new FileOutputStream("symbole.txt"); bin_out = new FileOutputStream("bity.txt"); int [] wej; int [] bity; int [] sym; int k = in.available(); wej = new int[k]; bity = new int[k * 8 + mod_id]; sym = new int[k * 8 / mod_id + 1]; int b = 128, j = 0; int i = 0; do {//zamiana znaków ASCII (pliku tekstowego z danymi) na postać bitową wej[i] = in.read(); j = 0; do{ bity[i * 8 + j] = (wej[i] & (b >> j)) >> (7 - j); bin_out.write(bity[i * 8 + j]); j++; } while(j < 8); i++; } while(i < k); //koniec procedury 53 i = 0; j = 0; do{//tworzenie symboli modulacji w zależności od indeksu modulacji j = 0; do{ sym[i] = sym[i] + (int)pow(2.0d,(double)(mod_id - j - 1)) * bity[i * mod_id + j]; j++; } while(j < mod_id); sym_out.write(sym[i]); i++; } while(i < ((k * 8 / mod_id) + 1)); //koniec procedury return ((k * 8 / mod_id) + 1); } //koniec bloku generatora symboli // PROGRAM GŁÓWNY public static void main(String[] args) throws IOException, LineUnavailableException, InterruptedException { AudioFormat format; AudioInputStream audio_in; try { mod_out = new FileOutputStream("zmodulowane.txt"); out = new FileOutputStream("sound.au"); format = new AudioFormat(8000, 16, 1, true, true); //ustalanie formatu audio double A, f; int sample; int sam_per_bit; double carier; long symbole; int mod_id; int ile; String buf; //wprowadzanie danych wejściowych InputStreamReader konsola = new InputStreamReader(System.in); LineNumberReader r_konsola = new LineNumberReader(konsola); System.out.println("Czy generowac dane? (t / n)"); buf = r_konsola.readLine(); if(buf.charAt(0) == 't') { System.out.println("Ile znakow ASCII wygenerowac?"); buf = r_konsola.readLine(); ile = Integer.valueOf(buf); generator(ile); } System.out.println("Podaj ilosc probek przypadajaca na jeden bit."); buf = r_konsola.readLine(); sam_per_bit = Integer.valueOf(buf); System.out.println("Podaj indeks modulacji "); System.out.println("(2 - QPSK, 3 - 8PSK, 4 - 16QAM, 5 - 32 QAM, 6 - 64QAM)."); buf = r_konsola.readLine(); mod_id = Integer.valueOf(buf); System.out.println("Podaj czestotliwosc nosnej (f < 4000) [Hz]."); buf = r_konsola.readLine(); carier = Float.valueOf(buf); System.out.println("Podaj maksymalna amplitude sygnalu (A <= 32767)."); buf = r_konsola.readLine(); A = Float.valueOf(buf); f = carier/8000d; //implementacja konstelacji poszczególnych modulacji switch(mod_id){ case 2: { double [] _qpsk = {0.707107,0.707107,-0.707107,0.707107,-0.707107,0.707107,0.707107,-0.707107}; kon = new double[8]; System.arraycopy(_qpsk, 0, kon, 0, 8); 54 break; } case 3: { double [] _8psk = {1,0,0.707107,0.707107,0,1,-0.707107,0.707107,-1,0,0.707107,-0.707107,0,-1,0.707107,-0.707107}; kon = new double[16]; System.arraycopy(_8psk, 0, kon, 0, 16); break; } case 4: { double [] _16qam = ( 0.866025,0.5,0.5,0.866025,1,0,0.258819,0.258819,-0.5, 0.866025,0,1,-0.866025,0.5,-0.258819,0.258819,0.5,-0.866025,0,1,0.866025, -0.5,0.258819,-0.258819,-0.866025,-0.5,-0.5,-0.866025,-1,0,-0.258819,0.258819}; kon = new double[32]; System.arraycopy(_16qam, 0, kon, 0, 32); break; } case 5: { double [] _32qam = {0.86638,0.499386,0.984849,0.173415,0.499386,0.86638, 0.173415,0.984849,0.520246,0.520246,0.520246, 0.173415,0.173415,0.520246, 0.173415,0.173415,-0.86638,0.499386,-0.984849,0.173415,0.499386,0.86638, -0.173415,0.984849,-0.520246,0.520246,-0.520246,0.173415,0.173415,0.520246, -0.173415,0.173415,0.86638,-0.499386,0.984849,-0.173415,0.499386,0.86638, 0.173415,-0.984849,0.520246,-0.520246,0.520246,-0.173415,0.173415,0.520246, 0.173415,-0.173415,-0.86638,-0.499386,-0.984849,-0.173415,-0.499386, -0.86638,-0.173415,-0.984849,-0.520246,-0.520246,-0.520246,-0.173415, -0.173415,-0.520246,-0.173415,-0.173415}; kon = new double[64]; System.arraycopy(_32qam, 0, kon, 0, 64); break; } case 6: { double [] _64qam = {1,0,0.822878,0.568218,0.821137,0.152996, 0.932897,0.360142, 0,-1,0.822878,-0.568218,0.821137,-0.152996,0.932897,-0.360142,0.568218, 0.822878,0.588429,0.588429,0.588429,0.117686,0.588429, 0.353057,0.568218, -0.822878,0.588429,-0.588429,0.588429,-0.117686,0.588429,0.353057,0.152996, 0.821137,0.117686,0.588429,0.117686,0.117686, 0.117686,0.353057,0.152996, -0.821137,0.117686,-0.588429,0.117686,-0.117686,0.117686,0.353057,0.360142, 0.932897,0.353057,0.588429,0.353057,0.117686, 0.353057,0.353057,0.360142, -0.932897,0.353057,-0.588429,0.353057,-0.117686,0.353057,-0.353057,0, 1,-0.822878,0.568218,-0.821137,0.152996,-0.932897,0.360142,-1,0,0.822878, -0.568218,-0.821137,-0.152996,-0.932897,-0.360142,-0.568218,0.822878, -0.588429,0.588429,-0.588429,0.117686,-0.588429,0.353057,-0.568218,0.822878, -0.588429,-0.588429,-0.588429,-0.117686,-0.588429,-0.353057,-0.152996, 0.821137,-0.117686,0.588429,-0.117686,0.117686,-0.117686,0.353057,0.152996, -0.821137,-0.117686,-0.588429,-0.117686,-0.117686,-0.117686,-0.353057, -0.360142,0.932897,-0.353057,0.588429,-0.353057,0.117686,0.353057,0.353057, -0.360142,-0.932897,-0.353057,-0.588429,-0.353057,-0.117686,-0.353057,0.353057}; kon = new double[128]; System.arraycopy(_64qam, 0, kon, 0, 128); 55 break; } default: { double [] def = {1,0,0.707107,0.707107,0,1,-0.707107,0.707107,-1,0, -0.707107,-0.707107,0,-1,0.707107,-0.707107}; kon = new double[16]; System.arraycopy(def, 0, kon, 0, 16); break; } } //koniec implementacji konstelacji //generacja symboli danej modulacji symbole = modulacja(mod_id); sym_in = new FileInputStream("symbole.txt"); //końcowy etap modulacji - zamioana symboli na //wartości I oraz Q konstelacji oraz mnożenie z sygnałem nośnej for(int b=0; b < (symbole); b++) { double q, i; int tmp = sym_in.read(); q = kon[2 * tmp]; i = kon[2 * tmp + 1]; for(int t = 0; t < mod_id * sam_per_bit; t++) { sample = (int)round(A * (q * cos(2 * PI * f * t) + i * sin(2 * PI * f * t))); int msb, lsb; lsb = sample & 255; msb = (sample>>8) & 255; mod_out.write(msb); //zapisanie próbek sygnału zmodulowanego mod_out.write(lsb); } } //koniec procedury //końcowe przetwarzanie audio mod_in = new FileInputStream("zmodulowane.txt"); audio_in = new AudioInputStream(mod_in, format, symbole*sam_per_bit*mod_id); Clip play = getClip(); play.open(audio_in); play.start(); //uruchomienie transmisji //czas transmisji long delay; delay = round(((double)symbole * (double)mod_id * (double)sam_per_bit) / 8.0d); sleep(delay + 10); System.out.println("Koniec transmisji"); //zapis w postaci pliku audio w formacie .AU (PCM(16bit, 8000Hz)) mod_in = new FileInputStream("zmodulowane.txt"); audio_in = new AudioInputStream(mod_in, format, symbole*sam_per_bit*mod_id); write(audio_in, AU, out); audio_in.close(); } finally { //zamykanie plików if (sym_in != null) { sym_in.close(); } if (bin_in != null) { bin_in.close(); } if (mod_in != null) { mod_in.close(); } if (out != null) { out.close(); } if (mod_out != null) { 56 mod_out.close(); } if (in != null) { in.close(); } if (sym_out != null) { sym_out.close(); } if (bin_out != null) { bin_out.close(); } if (gen_out != null) { gen_out.close(); } } } } //KONIEC GŁÓWNEGO PROGRAMU 57 Załącznik 2 Referat opublikowany w materiałach konferencyjnych KKRRiT 58 59 60 61