First we look at the basic receive process by comparing a remote location outside the system's coverage area against a different, "good" location. The images on the left (A) side were captured from a location a few miles outside the county covered by the system using a directional antenna aimed for optimum reception. The images (B) on the right were taken using an omnidirectional mobile antenna from a stationary location, randomly selected prior to the test, with no further adjustments to the location or orientation of the antenna.
| Receiver Outside Designed Coverage Area Antenna: Yagi (A) | Receiver Within Coverage Area Antenna: Plain old 800 MHz collinear (omnidirectional) (B) | |
|---|---|---|
| Fig. 1. After input signal normalization (complex signal scaled so as to just fit within the unit circle). Ten samples are shown for each symbol. (An actual value for SPS, [Ω] might be something like 9.998560 or whatever depending on soundcard oscillator drift). | ![]() | ![]() |
| Fig. 2. Gardner symbol recovery block applied to normalized signal. This includes a decimation-by-Ω function (result: output SPS is 1). | ![]() | ![]() |
| Fig. 3. After Costas loop. Alternate symbols are coded red and green, clearly revealing the two π/4-interleaved constellations even though no demodulation or decoding has been performed yet. | ![]() | ![]() |
| Fig. 4. We might try doing coherent decoding of the constellations in Fig. 3, but differential decoding is simpler - this is the result. | ![]() | ![]() |
| Fig. 5. Demodulation in PM* [and FM] receivers discards the magnitude component and retains only the phase angle [frequency in FM] of received complex constellation points (see Fig. 4), rescaled from radians to the standard -3/-1/+1/+3 levels. * Phase Modulation | ![]() | ![]() |
| Fig. 6. Symbol population density by phase angle. As in Fig. 5, the symbol magnitude components are excluded. Note at (A) the overlap and failure to converge at the center point. Input for this function was taken prior to differential decoding (Fig. 3). | ![]() | ![]() |
| Fig. 7. Same as Fig. 6, except the differentially decoded constellation (Fig. 4) is used as input. | ![]() | ![]() |
| Fig. 8. Eye diagrams showing the usual simulcast distortion. Unlike Figures 1-7, the eye diagrams require an input signal that has been FM-demodulated. Except for Fig. 5 and Fig. 8, which are functions on real numbers, all others (above) are complex. | ![]() | ![]() |
![]() | ![]() | ![]() |
The need for the hack could summarized by saying that the standard Costas loop QPSK phase error detector handles QPSK and DQPSK, but apparently not π/4 (D)QPSK. The generic detector could have been used (configured for 8-psk) but would be less robust error-wise and would introduce other complexities.
The image covers a time span of 2.5 seconds (12000 symbols @ 4800).
A related problem (not depicted) has affected the Costas loop. It seems to lock at a frequency offset error of ±1200 Hz (90°) on either side as well as the proper frequency.
![]() | ![]() | ![]() |
| Dibits | Symbol | CQPSK Phase Change | Waveform |
|---|---|---|---|
| 01 | +3 | +135° | See Fig. 13 (B). |
| 00 | +1 | +45° | See Fig. 12 (B) |
| 10 | -1 | -45° | See Fig. 12 (A) |
| 11 | -3 | -135° | See Fig. 13 (A). |
![]() | ![]() |
| Fig. 12 (A) -45° | Fig. 12 (B) +45° |
![]() | ![]() |
| Fig. 13 (A) -135° | Fig. 13 (B) +135° |
0.502596 -0.463439 0.003992 0.777944 -0.559242 -0.585181 0.799180 0.096800 -0.651793 0.449018 -0.025315 -0.758719 -0.438181 0.484277 0.039774 -0.758367 0.572912 0.501793 -0.191679 -0.576948 -0.346958 0.496451 -0.041117 -0.723804 0.563131 0.484649 -0.248983 -0.559592 -0.210848 0.510672 0.567967 -0.129373 -0.522586 -0.376675 0.699166 0.015014 -0.502737 -0.457343 0.688883 0.062561 -0.514350 -0.410682 0.119573 0.612265 0.364705 -0.419835 -0.586067 -0.068158 0.374538 0.595147