Orthogonal Frequency Division Multiplex & Convolutional Codes
Im ersten Praktikum wollen wir ein Grundverständnis
für die Signalausbreitung und das Empfängerdesign erwerben.
Ausgangspunkt ist ein Kommunikationssystem, in dem ein Sender mit einem
Empfänger über einen Audio-Kanal miteinander kommuniziert. Ihre Aufgabe
ist es, die Leistung des Systems mittels einer SNR-PER Messung zu
bestimmen und daraus ein Signalausbreitungsmodell herzuleiten.
Zusätzlich soll das System um OFDM und einen Convolutional Code
erweitert und gleichermaßen evaluiert werden.
Das Praktikum soll das Verständnis von folgenden
Verfahren, Methoden, Protokollen und Werkzeugen vertiefen:
- Digitale Modulation: BPSK
- Multi-Carrier Modulation: OFDM
- Forward Error Correction: Convolutional Codes
- Wireless Transceiver Design
- Drahtlose Signalausbreitung
- Leistungsbewertung von Kommunikationssystemen
durch PHY Layer Simulationen
- GNU Radio
Voraussetzungen
- Gnu Radio Software (Trunk oder evtl. Release 3.2,
in VMWare Image schon enthalten, sonst
www.gnuradio.org)
- Vorgaben Lab 1
- WAV Editor (Bspw. WavePad, Audacity)
- Mikrofon, Stereo-Lautsprecher und ein Audiokabel
mit 3,5 mm Klinkenstecker beidseitig
- Python & C++ IDE (Empfehlung: Eclipse oder
Netbeans)
Aufgaben
-
Machen Sie sich mit dem gegebenen
Kommunikationssystem vertraut. Das Programm „PassbandSim.py“ erzeugt
einen Sender und einen Receiver, die über einen (simulierten)
Kommunikationskanal gekoppelt sind. Der simulierte Kanal ist ein
AWGN-Kanal. Zusätzlich können per Kommandozeile eine Frequenz- und
Timing-Abweichung und auch Multipath Taps angegeben werden, mit
denen Sie sich vertraut machen sollen. Aktivieren Sie zusätzlich die
Option „--debug-wavs“, sodass die erzeugten Signale an verschiedenen
Punkten der Übertragungskette in Dateien gespeichert werden. Die
erzeugten Dateien lassen sich anschließend in einem WAV Editor
betrachten und abspielen. Zusätzlich stehen mit „constellation.py“
und „fft.py“ weitere graphische Werkzeuge bereit, mit denen sie die
erzeugten Dateien weiter analysieren können.
-
Ermitteln Sie charakteristische
Größen des Kommunikationssystems (Dauer eines Symbols, Symbole pro
Sekunde, etc.). Welchen Durchsatz (auf Anwendungsebene) kann man mit
dem System erzielen, wenn es keine Pausen zwischen
aufeinanderfolgenden Frames gibt? Begründen Sie kurz!
-
Ermitteln Sie den Zusammenhang
zwischen SNR und Packet Error Rate (PER) im simulierten Kanal und
stellen Sie die Abhängigkeit graphisch dar. Verwenden Sie dabei eine
Paketgröße von 400 Byte und zwei verschiedene Kanalkonfigurationen:
Zum einen den puren AWGN-Kanal, und setzen Sie einen relativen
Frequenzoffset von 0.006 mit Multipath Taps in einer weitern
Messreihe. Achten Sie bitte darauf, auch die Konfidenz der Messwerte
in den Ergebnissen darzustellen.
-
Um einen echten Kommunikationskanal
benutzen zu können, stehen die Programme „Sender.py“ und „Receiver.py“
bereit, mit denen sie sich vertraut machen sollen. Wiederholen Sie
obige Messungen mit unten angegebenen folgenden Kanälen.
Hinweis: Sie müssen evtl. am Receiver eine hohe Verstärkung
einstellen (bspw. „-a 100“), um eine zufriedenstellende Leistung zu
erzielen. Achten Sie auch auf die korrekte Einstellung des Mixers,
insbesondere Features wie „Rauschunterdrückung“ am Mikrophon können
die Messwerte verfälschen.
-
Direktverbindung über den
Sound-Mixer des Betriebssystems.
-
Draht-Verbindung des
Line-Out-Ausgangs mit dem Mikrophon-Eingang.
-
Drahtlose Verbindung von
Lautsprecher zu Mikrophon.
-
Leiten Sie ein Ausbreitungsmodell für
die drahtlose Verbindung her.
-
Erweitern Sie das
Kommunikationssystem um OFDM und evaluieren Sie dessen Leistung
analog zu Aufgabe 4c. Verwenden Sie die Bausteine aus dem „gnuradio-core.“
Es sollen 32 Subcarrier angelegt werden, von denen die inneren 16
zur Übertragung genutzt werden, und die Äußeren Null-Carrier sind.
Jeder Carrier soll 100 Hz breit sein (siehe dazu
„blks2.rational_resampler_ccc“) und eine BPSK Modulation verwenden.
Finden Sie selbstständig einen Cyclic Prefix, der eine akzeptable
Operation des Systems zulässt. Zur Visualisierung des OFDM Signals
kann das Programm „gr_plot_ofdm.py“ verwendet werden.
Zusatz
-
Realisieren Sie zusätzlich einen
Convolutional Code mit den Parametern von IEEE 802.11a (6 Mbps) und
evaluieren Sie das Ergebnis analog zu Aufgabe 3c. Verwenden Sie dazu
die Bausteine des Pakets „gr-trellis.“ Fortgeschrittene Konzepte
verbinden die Modulation und die Kodierung über Soft Information,
d.h. der Decoder arbeitet nicht auf hart ermittelten Positionen des
Demodulators, sondern erhält eine Wahrscheinlichkeitsverteilung für
jede Position. Wir beschränken uns im Praktikum aber auf einen Hard
Decision Decoder. Realisieren Sie einen Kodierungs-Layer über dem
OFDM Layer, ohne diesen zu verändern. Eine Frame-Synchronisation ist
möglich wie hier (http://gnuradio.org/trac/browser/gnuradio/branches/features/coded-ofdm)
demonstriert. Für die Kodierung und Dekodierung bietet es sich an,
jeweils einen eigenen Datenfluss zwischen zwei Queues aufzusetzen
(siehe dazu auch obige Quelle). Bedenken Sie außerdem, dass Sie
jetzt die Entscheidung treffen müssen, ob ein Frame korrekt
empfangen ist oder nicht.
Hinweis: Im vorgegebenen Kommunikationssystem sind alle Frames
gleich groß und werden evtl. mit Nullen aufgefüllt.
Abzugeben sind
-
Ein Bericht, der die durchzuführenden
Messungen protokolliert und auswertet (HTML oder PDF). Der Bericht
soll schematische Darstellungen der Systeme aus Aufgabe 6 und 7
enthalten (bspw. Generiert mit GNU Radio Companion). Der
Versuchsaufbau und die Durchführung soll reproduzierbar beschrieben
werden.
-
Den finalen Quellcode aus Aufgabe 6
als ein ZIP-Archiv.
Literatur
|
|