The original EasyDRF uses OFDM modulation. OFDM is fast and bandwidth efficient, but it has a high crest factor which reduces the average modulation power level through a transmitter.
In contrast, FSK modes use a single tone per baud, which has a lower crest factor. This raises the average power level of the modulated data signal by at least 6dB.
Because of this fact, an MFSK version of EasyDRF is being designed.
Modems are normally designed to use orthogonal tones. This means the tone separation needs to be wide enough to keep the sidebands from the tone switching from crossing over to the next tone frequency. This is very important if the tones are simulataneous, like in OFDM. This is not so important in MFSK modes, as only one tone is sent at a time.
Orthogonal tones reduce the bandwidth efficiency of the modem, because they require more widely spaced tones - especially when the baud rate increases and the baud period gets shorter.
Using modern signal detection methods it may be possible to use non-orthogonal tones, which would allow more tones in the available bandwidth. This would increase the modem speed, as it allows more bits to be sent per baud.
Closely spaced tones may cause problems with Doppler shift, as it will cause the tones to change frequency. Using chirp spread-spectrum methods may help prevent this.
Doppler spread is likely to be less of a problem with MFSK than OFDM, because the simultaneous OFDM tones are likely to cross over each other, causing more data loss - whereas the degradation MFSK might suffer can only be an incorrect tone detection during the baud.
Signals propagated by shortwave are degraded by various problems:
Possible ways to improve data decoding:
Standard methods:
Some modes being evaluated are:
Spread-Spectrum modes
MFSK modes
All of the above modes will require two layers of FEC. LDPC and RS layers are likely the best choices.
Spread spectrum methods can improve the modem performance by evening out both the channel response and the modem response.
Spread Spectrum is a way of spreading a signal out across a particular bandwidth, and un-spreading it at the receiver/decoder. This "dilutes" the signal across the spreading bandwidth, which helps to even out the effects of narrowband interference and propagation disturbances in the channel. In this application, the spreading bandwidth is only within the communications channel.
The decoder despreads the signal, putting all the power back on one frequency. If the original frequency was a single-frequency audio tone, then the result will also be a single-frequency. If the despreading is done by zero-beat, then the output will be DC.
With a constant-amplitude data modulation like MFSK, the most suitable Spread Spectrum mode to use would probably be chirp. Chirp typically uses a linear ramp to sweep the signal over a range of frequencies, but other waveforms can also be used.
Tests conducted with a PN (psudo-noise.. random numbers) based chirp spreading code showed that it was readily possible to encode and decode 257 different symbol patterns on the same channel. However, it also showed that the signal became phase-sensitive, which is a troublesome side effect - as shortwave signals are often distorted in phase by multipath propagation.
A linear ramp chirp may be more suitable for this application. This is because a linear ramp has relatively low frequency content, so it will have less phase distortion problems from propagation. A linear ramp can still spread an audio tone across a range of frequencies to help avoid amplitude notches from multipath. After despreading, the tone will be back on the original frequency, where it can be sent to an FFT for tone (symbol) detection.
Linear ramp chirp can also improve the isolation between narrowly spaced tones, by using different ramp slopes for adjacent tones. This could improve the apparent tone spacing of the MFSK, which would be useful for reducing or eliminating the effects of Doppler spread.
A protocol is required to transmit data in an orderly way. Transmitted symbols are grouped into packets for transmission. Each packet has a header, containing important decoding information such as packet number, packet size, transport ID, CRC code.
In the DRM/WinDRM/EasyDRF protocol, the filename data is sent in the header of segment 0. This is repeated at the end of the file data, in case segment 0 is lost. Since this does not guarantee the filename data will arrive, in EasyDRF the filename data is also sent in a header attached directly to the file. This guarantees delivery, but can't be decoded until all the file data arrives, due to the interleaved RS coding.
Ideally, a data modem should automatically sense the mode being used, and switch to it. This can be done by sending the mode at intervals, or by testing for each mode to find a match. In DRM and in EasyDRF this is done via the "Fast Access Channel". EasyDRF-MFSK could have a similar system, but it would need to use a consistent signalling method to allow easy and robust decoding.
If the active data mode was identified at intervals, the decoder could automatically switch to the correct mode. It could then also decode the previous data still in the buffer.
Whatever mode was used for this would need to be easy to decode, no matter which main mode was in use. It also would need to be at least as robust as all the other modes, so it would never fail before they did. This could be done using longer tones or using a higher level of error correction.
Since chirped MFSK is likely to have the best performance, an encoder of this type has been built into EasyDRF-MFSK. For modem evaluation, there is no error correction at this time.
The next step will be to get a decoder working...
The decoder needs to un-chirp the input signal 8 ways and then perform tone detection.
Tone detection is probably best done via FFT.
Since the decoder needs to adapt to the unknown timing of the input signal, there will need to be more than one pass of the buffer to gather the tone data needed to adjust the timing optimally.
This will likely mean making at least 3 passes (early, on-time, late). This totals 8 un-chirps and 24 FFTs for each baud (4mS with 257FSK).
This is a total of 6000 FFTs per second, which is from 1.536M to 12.288M FFT points per second.
| Type | Res | Size | Rate |
|---|---|---|---|
| Real | 32Hz | 512 | 16384 |
| Real | 16Hz | 1024 | 16384 |
| Real | 8Hz | 2048 | 16384 |
| IQ | 32Hz | 256 | 8192 |
| IQ | 16Hz | 512 | 8192 |
| IQ | 8Hz | 1024 | 8192 |
4mS tones will have a DSB bandwidth of about 250Hz. This is because a 4mS sinewave tone has an envelope that corresponds to a half-cycle of amplitude modulation of a 125Hz squarewave. This will cause sidebands out to +-125Hz, for a main lobe bandwidth of 250Hz.
The tone "carrier" will be narrow, but may vary with Doppler.
Each FFT will need to be windowed to 4mS. At 8192kHz this is about 33 samples. The rest of the FFT input samples will need to be zero-valued.
The better SNR of an MFSK signal (2nd) compared to OFDM (1st) is obvious in this spectrograph:
When a short baud period is sent through a narrow tone filter, the waveform is extremely smeared in time, making detection difficult:
Non-orthogonal, closely spaced, short FSK tones can be precisely detected in an FFT using a phase-reversal method. This subtracts the 50% phase flipped (DSB) tone spectrum from the normal tone spectrum to show the difference:
Code Shift Keying is a way of sending data symbols using PN codes. In this example, a PN modulated sinewave is decoded (zero-beat) first using an incorrect PN code (left), then with a matching PN code (right):
Sinewaves can also be chirped using other (lower-frequency) sinewaves. This creates audio-frequency FM. In these graphs, various sinewave chirp patterns are overlayed to check how similar their patterns are.
Ideally, the data symbol chirp patterns should have different shapes, so they still don't overlap when shifted in time - as this can happen due to propagation.
Y axis = Frequency, X axis = Time (baud):
Test1: 257FSK chirped sinewave symbols. Y axis = Frequency, X axis = Time:
Test2: It became apparent that a linear chirp could sometimes result in the chirped signal having a frequency that did not change between bauds. Since this could potentially make decoding more difficult, a time-symmetric chirp was designed. A time-symmetric chirp has the same start and end frequencies.
257FSK time-symmetric chirped sinewave symbols. Y axis = Frequency, X axis = Time: