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.
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.