FreeDV Specification

1. Introduction

FreeDV is a digital voice mode intended for transmission and reception over high-frequency (HF) radio. It uses a frequency division multiplex (FDM) modem with 15 carriers and no forward error correction (FEC). A low-bit-rate voice coder-decoder (Codec 2) provides voice quality without the listener fatigue caused by noise and interference normally associated with analog single sideband (SSB) voice. Setup and operation of the Windows® and Linux compatible program was developed to make operation straightforward. An HF SSB transceiver, a personal computer and two sound cards are required. Path simulation and on-the-air HF testing have shown that decoding voice is possible at a signal-to-noise ratio of 4 dB.

All of the software for FreeDV is open source, including Codec 2, the FDMDV modem, and the FreeDV GUI program. The source code may be referred to for a further explanation of the mode and algorithms employed.

The FreeDV software was developed by David Rowe (Codec 2, FDM modem implementation, integration) and David Witten (GUI, architecture design). The FreeDV design and user interface were based on the earlier FDMDV program which was developed by Francesco Lanza. The FDM modem design and development were supported from Peter Martinez.

2. Waveform and Emission Designator

The waveform consists of 14 differential quadrature phase-shift keying (DQPSK) carriers with 75-Hz spacing between centers and a total bandwidth of 1.125 kHz. A differential binary phase-shift keying (DBPSK) carrier is centered between the 14 DQPSK carriers, making a total of 15 carriers. The DBPSK carrier has approximately twice the power of the 14 DQPSK carriers and is used for frequency offset estimation and frame synchronization. The carriers operate at 50 symbols/s (50 baud) each. Combined, they carry the Codec 2 voice data, call sign text data, and synchronization information.

The International Telecommunication Union (ITU) emission designator is 1K20J2E.

3. Data Rate

14 DQPSK carriers at 50 symbols/second and 2 bits/symbol + 1 DBPSK carrier at 50 symbols per second = 14 x 2 x50 + 1 x 50 = 1450 bit/s total comprising 1375 bit/s Codec 2 data + 25 bit/s text data + 50 bit/s frame synchronization.

4. Frequency Tolerance and Correction

The FreeDV modulator is accurate to within +/- 5 Hz. The FreeDV demodulator can automatically acquire signals with a frequency offset of up to ±200 Hz. Manual tuning is also possible using mouse clicks on the waterfall and spectrum displays. Automatic frequency control (AFC) is capable of correcting frequency drift of up to 50 Hz/minute.

5. Frame Structure

Codec 2 Frame: 25 Hz, 40 ms, 55 bits/frame
Text Frame: 25 Hz, 40 ms, 1 bit/frame
Data Frame: 50 Hz, 20 ms, 14 carriers X 2 bits per symbol = 28 bits/frame.

Voice and Text to Data Frame mapping:

The modulator and demodulator operate on Data Frames of 28 bits. Two Data Frames comprise one Codec Frame (55 bits) and one Text Frame (1 bit) intended for call sign identification. A DBPSK symbol with a 180-degree phase change from the previous symbol indicates the first data frame which carries the first 28 bits of the Codec 2 Frame. The second Data Frame will have a DBPSK symbol with no phase change and contains the last 27 bits of the Codec 2 Frame and the 1-bit Text Frame.

Text is encoded with Varicode. The following table maps the binary Varicode to ASCII (source file name varicode_table.h). The MSB is sent first, and there are two binary zeros between each Varicode character.

varicode_table.h
0b10101010,
0b11000000, // 0 NUL
0b10110110,
0b11000000, // 1 SOH
0b10111011,
0b01000000, // 2 STX
0b11011101,
0b11000000, // 3 ETX
0b10111010,
0b11000000, // 4 EOT
0b11010111,
0b11000000, // 5 ENQ
0b10111011,
0b11000000, // 6 ACK
0b10111111,
0b01000000, // 7 BEL
0b10111111,
0b11000000, // 8 BS
0b11101111,
0b00000000, // 9 HT
0b11101000,
0b00000000, // 10 LF
0b11011011,
0b11000000, // 11 VT
0b10110111,
0b01000000, // 12 FF
0b11111000,
0b00000000, // 13 CR
0b11011101,
0b01000000, // 14 SO
0b11101010,
0b11000000, // 15 SI
0b10111101,
0b11000000, // 16 DLE
0b10111101,
0b01000000, // 17 DC1
0b11101011,
0b01000000, // 18 DC2
0b11101011,
0b11000000, // 19 DC3
0b11010110,
0b11000000, // 20 DC4
0b11011010,
0b11000000, // 21 NAK
0b11011011,
0b01000000, // 22 SYN
0b11010101,
0b11000000, // 23 ETB
0b11011110,
0b11000000, // 24 CAN
0b11011111,
0b01000000, // 25 EM
0b11101101,
0b11000000, // 26 SUB
0b11010101,
0b01000000, // 27 ESC
0b11010111,
0b01000000, // 28 FS
0b11101110,
0b11000000, // 29 GS
0b10111110,
0b11000000, // 30 RS
0b11011111,
0b11000000, // 31 US
0b10000000,
0b00000000, // 32 SP
0b11111111,
0b10000000, // 33 !
0b10101111,
0b10000000, // 34 "
0b11111010,
0b10000000, // 35 #
0b11101101,
0b10000000, // 36 $
0b10110101,
0b01000000, // 37 %
0b10101110,
0b11000000, // 38 &
0b10111111,
0b10000000, // 39 '
0b11111011,
0b00000000, // 40 (
0b11110111,
0b00000000, // 41 )
0b10110111,
0b10000000, // 42 *
0b11101111,
0b10000000, // 43 +
0b11101010,
0b00000000, // 44 ,
0b11010100,
0b00000000, // 45 -
0b10101110,
0b00000000, // 46 .
0b11010111,
0b10000000, // 47 /
0b10110111,
0b00000000, // 48 0
0b10111101,
0b00000000, // 49 1
0b11101101,
0b00000000, // 50 2
0b11111111,
0b00000000, // 51 3
0b10111011,
0b10000000, // 52 4
0b10101101,
0b10000000, // 53 5
0b10110101,
0b10000000, // 54 6
0b11010110,
0b10000000, // 55 7
0b11010101,
0b10000000, // 56 8
0b11011011,
0b10000000, // 57 9
0b11110101,
0b00000000, // 58 :
0b11011110,
0b10000000, // 59 ;
0b11110110,
0b10000000, // 60 <
0b10101010,
0b00000000, // 61 =
0b11101011,
0b10000000, // 62 >
0b10101011,
0b11000000, // 63 ?
0b10101111,
0b01000000, // 64 @
0b11111010,
0b00000000, // 65 A
0b11101011,
0b00000000, // 66 B
0b10101101,
0b00000000, // 67 C
0b10110101,
0b00000000, // 68 D
0b11101110,
0b00000000, // 69 E
0b11011011,
0b00000000, // 70 F
0b11111101,
0b00000000, // 71 G
0b10101010,
0b10000000, // 72 H
0b11111110,
0b00000000, // 73 I
0b11111110,
0b10000000, // 74 J
0b10111110,
0b10000000, // 75 K
0b11010111,
0b00000000, // 76 L
0b10111011,
0b00000000, // 77 M
0b11011101,
0b00000000, // 78 N
0b10101011,
0b00000000, // 79 O
0b11010101,
0b00000000, // 80 P
0b11101110,
0b10000000, // 81 Q
0b10101111,
0b00000000, // 82 R
0b11011110,
0b00000000, // 83 S
0b11011010,
0b00000000, // 84 T
0b10101011,
0b10000000, // 85 U
0b11011010,
0b10000000, // 86 V
0b10101110,
0b10000000, // 87 W
0b10111010,
0b10000000, // 88 X
0b10111101,
0b10000000, // 89 Y
0b10101011,
0b01000000, // 90 Z
0b11111011,
0b10000000, // 91 [
0b11110111,
0b10000000, // 92 "\"
0b11111101,
0b10000000, // 93 ]
0b10101111,
0b11000000, // 94 ^
0b10110110,
0b10000000, // 95 _ (underline)
0b10110111,
0b11000000, // 96 `
0b10110000,
0b00000000, // 97 a
0b10111110,
0b00000000, // 98 b
0b10111100,
0b00000000, // 99 c
0b10110100,
0b00000000, // 100 d
0b11000000,
0b00000000, // 101 e
0b11110100,
0b00000000, // 102 f
0b10110110,
0b00000000, // 103 g
0b10101100,
0b00000000, // 104 h
0b11010000,
0b00000000, // 105 i
0b11110101,
0b10000000, // 106 j
0b10111111,
0b00000000, // 107 k
0b11011000,
0b00000000, // 108 l
0b11101100,
0b00000000, // 109 m
0b11110000,
0b00000000, // 110 n
0b11100000,
0b00000000, // 111 o
0b11111100,
0b00000000, // 112 p
0b11011111,
0b10000000, // 113 q
0b10101000,
0b00000000, // 114 r
0b10111000,
0b00000000, // 115 s
0b10100000,
0b00000000, // 116 t
0b11011100,
0b00000000, // 117 u
0b11110110,
0b00000000, // 118 v
0b11010110,
0b00000000, // 119 w
0b11011111,
0b00000000, // 120 x
0b10111010,
0b00000000, // 121 y
0b11101010,
0b10000000, // 122 z
0b10101101,
0b11000000, // 123 {
0b11011101,
0b10000000, // 124 |
0b10101101,
0b01000000, // 125 }
0b10110101,
0b11000000, // 126 ~
0b11101101,
0b01000000, // 127 (del)

6. Modem

The modem uses a raised-cosine tone filter response having the property of zero inter-symbol interference (ISI) and zero adjacent tone interference with no side lobes. Half the channel filter is in the transmit (TX) side and the other half in the receive (RX) side. It may be called “root raised cosine” because the channel filters at each end have the net response of a square root of the complete filter. A 50% excess bandwidth factor is used. The demodulator also performs initial frequency acquisition, frame synchronization, timing offset estimation, and frequency tracking of the FDM signal.

7. Soundcard

Nominal sampling rates of 41.1 kHz and 48 kHz are used, which are compatible with sound cards and sound adapters of different manufacturers. The second sound card may be a USB headset such as used with VoIP applications to provide voice input and output.

8. FreeDV References

KØPFX Operation Document, http://www.freedv.org

9. Acknowledgement

This description was prepared by Mel Whitten, KØPFX, and David Rowe, VK5DGR.