refactor: psk

This commit is contained in:
Matthias Jung
2026-08-13 00:29:20 +02:00
parent 6dfed1b336
commit b1cc0dbc69
7 changed files with 113 additions and 29 deletions
+50
View File
@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="256.896pt" height="261.012pt" viewBox="0 0 256.896 261.012">
<defs>
<g>
<g id="glyph-0-0">
<path d="M 0.53125 1.140625 C 0.453125 1.21875 0.390625 1.28125 0.328125 1.375 L 0.625 1.546875 C 0.765625 1.390625 0.890625 1.25 1.03125 1.125 C 1.171875 1.046875 1.28125 1.015625 1.359375 1.015625 C 2.15625 1.015625 2.53125 1.875 3.640625 1.875 C 4.1875 1.875 4.59375 1.640625 5.015625 1.140625 L 4.890625 1.03125 C 4.671875 1.265625 4.328125 1.359375 4.078125 1.359375 C 3.328125 1.359375 2.78125 0.625 1.828125 0.625 C 1.78125 0.625 1.71875 0.625 1.65625 0.640625 C 2.1875 0.296875 2.65625 0.109375 2.953125 0.03125 C 4.3125 -0.234375 5.34375 -1.375 5.65625 -2.9375 C 5.6875 -3.171875 5.71875 -3.390625 5.71875 -3.609375 C 5.71875 -5 4.765625 -5.875 3.46875 -5.875 C 1.9375 -5.875 0.59375 -4.515625 0.25 -2.765625 C 0.203125 -2.53125 0.171875 -2.3125 0.171875 -2.09375 C 0.171875 -0.84375 0.921875 -0.0625 2.03125 0.078125 C 1.46875 0.34375 0.90625 0.765625 0.53125 1.140625 Z M 3.296875 -5.578125 C 4.265625 -5.578125 4.921875 -4.9375 4.921875 -3.671875 C 4.921875 -3.390625 4.890625 -3.09375 4.828125 -2.765625 C 4.515625 -1.171875 3.578125 -0.21875 2.59375 -0.21875 C 1.71875 -0.21875 0.984375 -0.921875 0.984375 -2.1875 C 0.984375 -2.40625 1.015625 -2.65625 1.078125 -2.921875 C 1.4375 -4.796875 2.515625 -5.578125 3.296875 -5.578125 Z M 3.296875 -5.578125 "/>
</g>
<g id="glyph-0-1">
<path d="M 1.90625 -5.078125 L 1.046875 -0.671875 C 0.984375 -0.421875 0.859375 -0.296875 0.484375 -0.265625 L 0.21875 -0.234375 C 0.171875 -0.203125 0.15625 -0.0625 0.203125 0.015625 C 0.59375 0.015625 0.921875 0 1.265625 0 C 1.609375 0 2.015625 0.015625 2.40625 0.015625 C 2.4375 -0.015625 2.453125 -0.203125 2.4375 -0.234375 L 2.125 -0.265625 C 1.78125 -0.296875 1.6875 -0.40625 1.734375 -0.671875 L 2.59375 -5.078125 C 2.65625 -5.328125 2.78125 -5.453125 3.15625 -5.5 L 3.4375 -5.515625 C 3.46875 -5.5625 3.484375 -5.703125 3.453125 -5.78125 C 3.046875 -5.78125 2.71875 -5.765625 2.375 -5.765625 C 2.03125 -5.765625 1.640625 -5.78125 1.25 -5.78125 C 1.21875 -5.75 1.1875 -5.5625 1.21875 -5.515625 L 1.515625 -5.5 C 1.875 -5.46875 1.96875 -5.359375 1.90625 -5.078125 Z M 1.90625 -5.078125 "/>
</g>
<g id="glyph-0-2">
<path d="M 2.03125 0.09375 C 2.71875 0.09375 3.765625 -0.609375 3.765625 -2.703125 C 3.765625 -3.59375 3.5625 -4.359375 3.15625 -4.875 C 2.9375 -5.1875 2.5625 -5.453125 2.078125 -5.453125 C 1.1875 -5.453125 0.34375 -4.390625 0.34375 -2.625 C 0.34375 -1.671875 0.640625 -0.78125 1.140625 -0.28125 C 1.390625 -0.03125 1.6875 0.09375 2.03125 0.09375 Z M 2.078125 -5.140625 C 2.21875 -5.140625 2.375 -5.078125 2.46875 -4.984375 C 2.75 -4.75 3 -4.078125 3 -2.875 C 3 -2.0625 2.96875 -1.5 2.84375 -1.03125 C 2.640625 -0.296875 2.203125 -0.21875 2.046875 -0.21875 C 1.21875 -0.21875 1.125 -1.75 1.125 -2.53125 C 1.125 -4.734375 1.671875 -5.140625 2.078125 -5.140625 Z M 2.078125 -5.140625 "/>
</g>
<g id="glyph-0-3">
<path d="M 2.578125 -1.09375 L 2.578125 -4.1875 C 2.578125 -4.734375 2.578125 -5.265625 2.59375 -5.390625 C 2.59375 -5.4375 2.578125 -5.4375 2.546875 -5.4375 C 2.0625 -5.125 1.578125 -4.90625 0.796875 -4.546875 C 0.8125 -4.4375 0.84375 -4.359375 0.921875 -4.296875 C 1.34375 -4.46875 1.53125 -4.515625 1.703125 -4.515625 C 1.859375 -4.515625 1.890625 -4.3125 1.890625 -4 L 1.890625 -1.09375 C 1.890625 -0.34375 1.640625 -0.296875 1.015625 -0.28125 C 0.96875 -0.21875 0.96875 -0.03125 1.015625 0.015625 C 1.453125 0.015625 1.78125 0 2.265625 0 C 2.6875 0 2.90625 0.015625 3.359375 0.015625 C 3.40625 -0.03125 3.40625 -0.21875 3.359375 -0.28125 C 2.71875 -0.296875 2.578125 -0.34375 2.578125 -1.09375 Z M 2.578125 -1.09375 "/>
</g>
</g>
<clipPath id="clip-0">
<path clip-rule="nonzero" d="M 0.433594 136 L 124 136 L 124 138 L 0.433594 138 Z M 0.433594 136 "/>
</clipPath>
<clipPath id="clip-1">
<path clip-rule="nonzero" d="M 123 136 L 124 136 L 124 260.027344 L 123 260.027344 Z M 123 136 "/>
</clipPath>
</defs>
<path fill="none" stroke-width="0.3985" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 0.000296406 -0.000345254 L 0.000296406 119.959836 " transform="matrix(0.996229, 0, 0, -0.996229, 123.597361, 136.862937)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.3985" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 3.173059 -0.000296406 L 0.200913 1.76417 L 0.200913 -1.764763 Z M 3.173059 -0.000296406 " transform="matrix(0, -0.996229, -0.996229, 0, 123.597361, 17.454062)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-0" x="120.653504" y="8.85548"/>
</g>
<path fill="none" stroke-width="0.3985" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 0.000296406 -0.000345254 L 119.960478 -0.000345254 " transform="matrix(0.996229, 0, 0, -0.996229, 123.597361, 136.862937)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.3985" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 3.1737 -0.000345254 L 0.197634 1.764121 L 0.197634 -1.764812 Z M 3.1737 -0.000345254 " transform="matrix(0.996229, 0, 0, -0.996229, 243.006237, 136.862937)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-1" x="249.738882" y="139.744032"/>
</g>
<g clip-path="url(#clip-0)">
<path fill="none" stroke-width="0.3985" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 0.000296406 -0.000345254 L -123.433923 -0.000345254 " transform="matrix(0.996229, 0, 0, -0.996229, 123.597361, 136.862937)"/>
</g>
<g clip-path="url(#clip-1)">
<path fill="none" stroke-width="0.3985" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 0.000296406 -0.000345254 L 0.000296406 -123.434565 " transform="matrix(0.996229, 0, 0, -0.996229, 123.597361, 136.862937)"/>
</g>
<path fill="none" stroke-width="0.3985" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(50%, 50%, 50%)" stroke-opacity="1" stroke-miterlimit="10" d="M 98.747672 -0.000345254 C 98.747672 54.537347 54.537989 98.74703 0.000296406 98.74703 C -54.537396 98.74703 -98.747079 54.537347 -98.747079 -0.000345254 C -98.747079 -54.538038 -54.537396 -98.747721 0.000296406 -98.747721 C 54.537989 -98.747721 98.747672 -54.538038 98.747672 -0.000345254 Z M 98.747672 -0.000345254 " transform="matrix(0.996229, 0, 0, -0.996229, 123.597361, 136.862937)"/>
<path fill-rule="nonzero" fill="rgb(0%, 62.745667%, 86.274719%)" fill-opacity="1" stroke-width="0.3985" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 102.974549 -0.000345254 C 102.974549 2.332671 101.080689 4.226532 98.747672 4.226532 C 96.410734 4.226532 94.520795 2.332671 94.520795 -0.000345254 C 94.520795 -2.333362 96.410734 -4.227222 98.747672 -4.227222 C 101.080689 -4.227222 102.974549 -2.333362 102.974549 -0.000345254 Z M 102.974549 -0.000345254 " transform="matrix(0.996229, 0, 0, -0.996229, 123.597361, 136.862937)"/>
<path fill-rule="nonzero" fill="rgb(0%, 62.745667%, 86.274719%)" fill-opacity="1" stroke-width="0.3985" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -94.520202 -0.000345254 C -94.520202 2.332671 -96.410142 4.226532 -98.747079 4.226532 C -101.080096 4.226532 -102.973956 2.332671 -102.973956 -0.000345254 C -102.973956 -2.333362 -101.080096 -4.227222 -98.747079 -4.227222 C -96.410142 -4.227222 -94.520202 -2.333362 -94.520202 -0.000345254 Z M -94.520202 -0.000345254 " transform="matrix(0.996229, 0, 0, -0.996229, 123.597361, 136.862937)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-2" x="228.263173" y="130.481094"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-3" x="14.777274" y="130.551827"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.0 KiB

+15
View File
@@ -0,0 +1,15 @@
% Author: Prof. Dr. Matthias Jung, DL9MJ
% Year: 2026
\begin{tikzpicture}
\draw[-Triangle](0,0) -- ++(0,1.25) node[anchor=south] {$Q$};
\draw[-Triangle](0,0) -- ++(1.25,0) node[anchor=west] {$I$};
\draw(0,0) -- ++(-1.25,0);
\draw(0,0) -- ++(0,-1.25);
\draw[gray](0,0) circle (1);
%
\draw( 0:1) node[anchor=center, circle, draw, fill=DARCblue](m1){};
\draw(180:1) node[anchor=center, circle, draw, fill=DARCblue](m2){};
%
\draw(m1.north east) node[anchor=south west] {$0$};
\draw(m2.north west) node[anchor=south east] {$1$};
\end{tikzpicture}
@@ -1,24 +0,0 @@
Viele digitale Modulationsverfahren verwenden mehr als zwei Symbole. Anstelle von nur zwei Amplituden (klein und groß) funktioniert Amplitudenumtastung auch mit vier oder noch mehr unterschiedlichen Amplituden, also beispielsweise $\qty{25}{\percent}$, $\qty{50}{\percent}$, $\qty{75}{\percent}$, $\qty{100}{\percent}$ des Maximums. So lassen sich zwei oder mehr Bits zu einem Symbol zusammenfassen und gleichzeitig übertragen.
[picture:701:4ask:Quaternäre Amplitudenumtastung (Quaternary Amplitude-shift Keying)]
Dieses Prinzip lässt sich auch wieder auf die Frequenz- und Phasenumtastung übertragen. Eine einfache Phasenumtastung (Binary Phase-Shift Keying, BPSK) verwendet nur zwei verschiedene Phasenlagen und kann daher nur ein Bit gleichzeitig senden. Die Quadraturphasenumtastung (Quadrature Phase-Shift Keying, QPSK) hingegen nutzt schon vier verschiedene Phasenlagen ($\qty{0}{\degree}$, $\qty{90}{\degree}$, $\qty{180}{\degree}$ und $\qty{270}{\degree}$). QPSK überträgt somit zwei Bits in jedem Schritt.
[question:AE402]
Da bei Verfahren wie QPSK mehr als ein Bit pro Symbol übertragen wird, müssen wir mit den Einheiten aufpassen. Während wir in Hinblick auf den Datenstrom von einer Datenrate in $\unit{\bit\per\second}$ sprechen, wird die Rate der Abfolge unterschiedlicher Symbole in Symbolen pro Sekunde mit der Einheit Baud notiert.
[question:AA104]
Werden nur zwei Symbole verwendet und somit jedes Bit einzeln gesendet, entspricht die Symbolrate in Baud ($\unit{\baud}$) der Datenrate in Bit pro Sekunde ($\unit{\bit\per\second}$). Werden jedoch mehr Symbole verwendet und somit mehrere Bits gleichzeitig übertragen, ist die Datenrate höher als die Symbolrate. Für den Zusammenhang gilt, dass die Datenrate in $\unit{\bit\per\second}$ gleich der Symbolrate in $\unit{\baud}$ multipliziert mit der Anzahl der pro Symbol übertragenen Bits ist:
$C=R_\mathrm{S}\cdot n$
$C$ Datenübertragungsrate in $\unit{\bit\per\second}$
$R_\mathrm{S}$ Symbolrate in $\unit{\baud}$
$n$ Symbolgröße in $\unit{\bit\per\text{Symbol}}$
[question:AE405]
[question:AE406]
+45 -2
View File
@@ -1,11 +1,21 @@
Die Phasenumtastung (Phase Shift Keying, PSK) ist ein digitales Modulationsverfahren, das zur Übertragung von Daten in der Telekommunikation und im Amateurfunk genutzt wird. PSK basiert auf der Veränderung der Phase eines Trägersignals, um verschiedene Datenzustände zu repräsentieren. Im Vergleich zu Amplituden- oder Frequenzmodulation ist PSK weniger anfällig für Amplitudenrauschen und kann bei gleicher Bandbreite eine höhere Datenrate erreichen.
<margin>
[picture:705:psk:Phasenumtastung (Phase-shift Keying)]
</margin>
Prinzip der Phasenumtastung (PSK)
<margin>
[picture:1101:psk:PSK im Konstellationsdiagramm]
</margin>
---
In der einfachsten Form, dem **BPSK (Binary Phase Shift Keying)**, gibt es zwei Phasenwinkel, z. B. $\qty{0}{\degree}$ und $\qty{180}{\degree}$. Jeder Phasenwinkel repräsentiert einen Bitwert ($\num{0}$ oder $\num{1}$). Bei einem Wechsel der Bitwerte verändert sich die Phase des Trägers um $\qty{180}{\degree}$.
<indepth>
Genaugenommen kann BPSK mit den Winkeln $\qty{0}{\degree}$ und $\qty{180}{\degree}$ auch als ein ASK-Verfahren betrachtet werden, bei dem die Amplitude des Trägersignals zwischen einem negativen und einem positiven Wert umgeschaltet wird. Durch die Symetrie des Sinus-Signals ensteht dann der Phasensprung. Dies ist ein Spezialfall. Es wären übrigens auch andere Phasenwinkel wie z. B. $\qty{90}{\degree}$ und $\qty{270}{\degree}$ möglich, die ebenfalls einen Phasensprung von $\qty{180}{\degree}$ erzeugen würden.
</indepth>
Für höhere Datenraten gibt es Varianten wie **QPSK (Quadrature Phase Shift Keying)** und **8-PSK**, bei denen vier bzw. acht Phasenlagen verwendet werden, um mehrere Bits pro Symbol zu übertragen:
- **QPSK**: Verwendet vier Phasen ($\qty{0}{\degree}$, $\qty{90}{\degree}$, $\qty{180}{\degree}$ und $\qty{270}{\degree}$), um jeweils zwei Bits pro Symbol zu kodieren.
- **8-PSK**: Verwendet acht Phasen, um drei Bits pro Symbol zu kodieren.
@@ -30,4 +40,37 @@ In einem Oszilloskop- oder Phasen-Diagramm sind die Phasenübergänge sichtbar:
PSK ist besonders nützlich in der digitalen Kommunikation, da es hohe Datenraten bei vergleichsweise robuster Übertragung erlaubt. Die Veränderung der Phase bei gleichbleibender Amplitude hilft, das Signal auch bei Rauschen und Interferenzen besser zu erkennen und damit eine stabilere Übertragung zu ermöglichen.
[question:AE401]
[question:AE401]
---
Dieses Prinzip von Symbolen lässt sich auch auf die Phasenumtastung übertragen. Eine einfache Phasenumtastung (Binary Phase-Shift Keying, BPSK) verwendet nur zwei verschiedene Phasenlagen und kann daher nur ein Bit gleichzeitig senden. Die Quadraturphasenumtastung (Quadrature Phase-Shift Keying, QPSK) hingegen nutzt schon vier verschiedene Phasenlagen ($\qty{0}{\degree}$, $\qty{90}{\degree}$, $\qty{180}{\degree}$ und $\qty{270}{\degree}$). QPSK überträgt somit zwei Bits in jedem Schritt.
[question:AE402]
---
Schauen wir uns im ersten Schritt QPSK in Abbildung [ref:a_qpsk] an: Bei QPSK werden jeweils zwei Bits zu einem Symbol zusammengefasst. Da wir zwei Bits pro Symbol haben, ergeben sich vier mögliche Kombinationen ($\num{00}$, $\num{01}$, $\num{10}$, $\num{11}$). Jede dieser Kombinationen wird einem spezifischen Signalpunkt zugeordnet, der durch eine bestimmte Phase repräsentiert wird.
<margin>
[picture:1059:a_qpsk:I-Q-Diagramm für ein QPSK-Mapping]
</margin>
---
Bei QPSK hat jedes Symbol eine eigene Phase. Die Phasen werden typischerweise in $\qty{90}{\degree}$-Schritten definiert und auf die vier möglichen Bitkombinationen gemapped, zum Beispiel:
- $\num{11}$ entspricht $\qty{45}{\degree}$
- $\num{01}$ entspricht $\qty{135}{\degree}$
- $\num{00}$ entspricht $\qty{225}{\degree}$
- $\num{10}$ entspricht $\qty{315}{\degree}$
Die Amplitude der Signale bleibt dabei konstant, und die Information wird ausschließlich durch die Phasenlage übertragen. Deshalb liegen die vier Punkte im Konstellationsdiagramm für QPSK auf einem Kreis.
<indepth>
Genau genommen gibt es aber auch noch andere Möglichkeiten, die Phasen den Bitkombinationen zuzuordnen, solange sie eindeutig sind. Das hier gezeigte Mapping ist nur ein Beispiel. In dem hier gezeigten Beispiel wurden die Zuordnungen so gewählt, dass sich zwischen benachbarten Symbolen nur wenige Bits ändern. Das hat den Vorteil, dass unter Rauscheinfluss nur wenige Bitfehler entstehen. Dafür wird der Gray-Code verwendet, der in den meisten digitalen Übertragungsverfahren Anwendung findet.
</indepth>
---
Jeder dieser Punkte repräsentiert ein Symbol. Der Empfänger kann anhand der Phasenlage bestimmen, welche Bitkombination gesendet wurde. Das Konstellationsdiagramm bei QPSK zeigt vier Signalpunkte im rechten Winkel zueinander, die den vier verwendeten Phasen entsprechen. Die große Trennung zwischen den einzelnen Phasen ermöglicht eine zuverlässige Decodierung auch unter rauschbehafteten Bedingungen.
+1 -1
View File
@@ -739,7 +739,7 @@
"video_url": null
},
{
"title": "Phasenumtastung (PSK)",
"title": "Phasenumtastung (PSK) und QPSK",
"ident": "psk",
"status": "alpha",
"class": "A",
+1 -1
View File
@@ -1259,7 +1259,7 @@
"video_url": null
},
{
"title": "Phasenumtastung (PSK)",
"title": "Phasenumtastung (PSK) und QPSK",
"ident": "psk",
"status": "alpha",
"class": "A",
+1 -1
View File
@@ -1900,7 +1900,7 @@
"video_url": null
},
{
"title": "Phasenumtastung (PSK)",
"title": "Phasenumtastung (PSK) und QPSK",
"ident": "psk",
"status": "alpha",
"class": "A",