Coherent PSK Demodulation on HF

By david, on January 21st, 2013

This post is rather technical, and assumes a knowledge of PSK demodulator design. I apologise if it is difficult to understand for the general reader. I have spent the last few weeks working on this part time so felt compelled to record the results somewhere. Thanks to Bill Cowley VK5DSP and Peter Martinez G3PLX for their email advice on this work.

I have a background in modems for satellite communications, which use non differential PSK and coherent demodulation. This has a 3dB advantage over DPSK, at the cost of additional complexity. The FDMDV modem used for FreeDV uses Differential Phase Shift Keying (DPSK). This is the usual choice for HF radio channels which have phase distortion due to multipath propagation. However 3dB is a big potential improvement, so I couldn’t help wondering if coherent demodulation would work for HF radio channels. So I wrote some Octave code to try it.

First I needed to develop a phase estimation algorithm that could be bolted onto the FDMDV demodulator, but using the same DPSK modulator and over the air specification. True coherent demodulation requires a unique word to resolve phase ambiguities. This isn’t possible with the current FDMDV modem specification as there are no spare bits. So I went for a pseudo coherent scheme where we coherently demodulate the PSK symbols, then pass them to a DPSK decoder. This has a performance hit compared to coherent PSK, but resolves the phase ambiguity without a unique word.

The function rx_est_phase() in fdmdv.m estimates the phase over a window of Nph symbols.

As a first step I plotted the scatter diagram of DPSK (top) versus pseudo coherent DPSK (bottom) for data from a real HF channel.

The psuedo coherent scatter plot looked a bit better to me so I decided to go a little further. I implemented a demodulator simulation that could measure bit error Rate (BER) for AWGN channels. During development I found that the phase estimator couldn’t be used to track frequency offsets larger than 0.5 Hz. I think this is because of the low 50 Hz symbol rate. So the existing DPSK demodulator was run in parallel to provide frequency offset tracking.

Here are the BER results for two Eb/No values (5 and 7 dB) for the two different algorithms.

Demod

7dB

5dB

Differential

0.0128

0.0487

Pseudo Coherent

0.0068

0.0252

The bit error rates are about half, which is a 1dB improvement. This is not very much, but I decided to “run it to ground” and test using some FDMDV modem data from real HF channels. Mark VK5QI kindly gathered these samples for me. Rather than Codec 2 data, a known test sequence is transmitted so BER can be determined at the receiver. The fdmdv_demod_coh.m script implements a demodulator that uses sample files as input.

Here are the results for 50W Tx power (VK2-VK5_20m_50W_TX.raw) using 1400*10 bits. The “Nph” parameter is the size of the window used to estimate the phase. More symbols means a smoother estimate but a slower response to phase variations.

Demod

BER

Differential

0.0541

Pseudo Coherent Nph=5

0.0517

Pseudo Coherent Nph=7

0.0484

Pseudo Coherent Nph=9

0.0442

Pseudo Coherent Nph=13

0.0458

Not a very impressive improvement, at best a 20% improvement in BER. The results with 18W of Tx power (VK2-VK5_20m_18W_TX.raw) using 1400*10 bits are also marginal:

Demod

BER

Differential

0.0991

Pseudo Coherent Nph=9

0.0926

On the HF channel we have multipath pushing FDM carriers down into the noise. My guess is that the HF channel can be modelled as either good, where the SNR is high, or bad, where a fade knocks out one of the FDM carriers entirely. A small improvement in demodulator performance only affects the transition between the two states.

So, the next step in improving FreeDV performance is to explore Forward Error Correction (FEC).

7 comments to Coherent PSK Demodulation on HF

Nice piece of work . I have always wondered what real improvement would be had by having a ‘good’ clock in a system like this. It always seemed that there ‘should’ be a big improvement, but I never saw it in what I did ?

I guess this is [sort of?] what you are measuring and showing?

Measured data sure does beat theory! Gotta wonder about multiple antennas and receivers? Does that make any real difference? The internal noise from the different receive channels would hopefully not be correlated. So maybe that would give real help?

Is the phase response of the soundcard linear with respect to frequency? (Maybe this is an uninformed question — it’s probably not even relevant in the Matlab simulations anyway.) But perhaps better than 20% real world improvement is actually possible.

Also, I have been curious if it is possible to measure how much self-interference from amplifier intermodulation is occurring in the real world. Most amateurs are often operating with equipment that has maybe -30dB 3rd order products; perhaps only a few dB better at the 20W power levels most people are using with 100W PA’s. Perhaps the FDMDV modem could apply a user-tunable amount of digital predistortion to improve SNR somewhat on the TX audio. It might be considerably easier to predict the intermodulation products in this one specific implementation than to provide a general case that would work for arbitrary waveforms. There also may be some patent issues with these algorithms too… I suspect developing proper open-source predistortion algorithm that doesn’t step on anybody’s intellectual property toes is a problem on par with developing a new codec!

Regarding the previous poster’s question on multiple antennas, there are quite a few products that exist right now (hardware and software) that implement either noise rejection or diversity reception through the use of multiple antennas or phased antennas to improve SNR beyond what you can do simply with audio DSP. Is this what you are referring to with your question? I think some of this has been discussed a bit on the FreeDV Google group.

Thanks John. Peter Martinez has peformed some experiments with his FDM modem code that suggests clipping of the modulator waveform (in the software, prior to sending to the SSB Tx) can improve the average tx power by 3dB. It’s something I would like to try this year.

I had not considered improving average power that way but it makes sense that it should work very well and is far easier. Predistortion would only improve SNR, and possibly give the ability to transmit at higher power levels without needing a better amplifier. However I would guess that if the modem produces a more consistent average power it would make the estimation of the intermodulation products far simpler to compute. I am still getting up to speed with these topics, but my own goals are to experiment in these areas in a more general sense this year using the upcoming apache-labs Angelia hardware (similar to TAPR Hermes but with a larger FPGA and additional ADC’s)

I have implemented a similar comparison via 40Gbps systems using GNLSE library C++ software and in my results there was ~2dB improvement in performance of the coherent PSK system DPSK system. the performance improvement was constant for different received bandwidths and SNR.