Szybka transmisja danych w paśmie

advertisement
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
Download