SNR and Eb/No Worked Example

German Hams Helmut and Alfred have been doing some fine work with FreeDV 700B at power levels as low as 50mW and SNRs down to 0dB over a 300km path. I thought it might be useful to show how SNR relates to Eb/No and Bit Error Rate (BER). Also I keep having to work this out myself on scraps of paper so nice to get it written down somewhere I can Google.

This plot shows the Eb/No versus BER for of a bunch of modems and channels. The curves show how much (Eb/No) we need for a certain Bit Error Rate (BER). Click for a larger version.

The lower three curves show the performance of modems in an AWGN channel – a channel that just has additive noise (like a very slow fading HF channel or VHF). The Blue curve just above the Red (ideal QPSK) is the cohpsk modem in an AWGN channel. Time for some math:

The energy/bit Eb = power/bit rate = S/Rb. The total noise the demod sees is No (noise power in 1Hz) multiplied by the bandwidth B, so N=NoB. Re-arranging a bit we get:

    SNR = S/N = EbRb/NoB

or in dB:

    SNR(db) = Eb/No(dB) + 10log10(Rb/B)

So for FreeDV 700B, the bit rate Rb = 700, B = 3000 Hz (for SNR in a 3000Hz bandwidth) so we get:

    SNR = Eb/No – 6.3

Now, say we need a BER of 2% or 0.02 for speech, the lower Blue curve says we need an Eb/No = 4dB, so we get:

    SNR = 4 – 6.3 = -2.3dB

So if the modem is working down to “just” 0dB we are about 2dB worse than theoretical. This is due to the extra bandwidth taken by the pilot symbols (which translates to 1.5dB), some implementation “loss” in the sync algorithms, and non linearities in the system.

I thought it worth explaining this a little more. These skills will be just as important to people experimenting with the radios of the 21st century as Ohms law was in the 20th.

Codec 2 Masking Model Part 2

I’ve been making steady progress on my new ideas for amplitude quantisation for Codec 2. The goal is to increase speech quality, in particular for very low bit rate 700 bits/ modes.

Here are the signal processing steps I’m working on:

The signal processing algorithms I have developed since Part 1 are coloured in blue. . . . → Read More: Codec 2 Masking Model Part 2

Phase from Magnitude Spectra

For my latest Codec 2 brainstorms I need to generate a phase spectra from a magnitude spectra. I’m using ceptral/minimum phase techniques. Despite plenty of theory and even code on the Internet it took me a while to get something working. So I thought I’d post an worked example here. I must admit . . . → Read More: Phase from Magnitude Spectra

FreeDV Voice Keyer and Spotting Demo

I’ve added a Voice Keyer feature to the FreeDV GUI program. It will play a pre-recorded wave file, key your transmitter, then pause to listen. Use the Tools-PTT menu to select the wave file to use, the rx pause duration, and the number of times to repeat. If you hit space bar the . . . → Read More: FreeDV Voice Keyer and Spotting Demo

FreeDV QSO Party Weekend

A great weekend with the AREG team working FreeDV around VK; and despite some poor band conditions, the world.

We were located at Younghusband, on the banks of the river Murray, a 90 minute drive due East of Adelaide:

We had two K3 radios, one with a SM1000 on 20M, and one using laptop based FreeDV on . . . → Read More: FreeDV QSO Party Weekend

Testing the FreeDV API

James Ahlstrom (the author of the Quisk SDR software) submitted a patch for the FreeDV API to change the sample rate used for FreeDV 700 from the obscure 7500 Hz to a more useful 8000 Hz. FreeDV 700(B) mode uses the coherent PSK modem (COHPSK) which I spent the first six months of 2015 developing . . . → Read More: Testing the FreeDV API

Outernet modem and LDPC using Octave

I’ve recently started a project to develop a L-band satellite modem with the good people at Outernet. The application is one way broadcast data into the developing world. The “earth station”, or user terminal hardware, is an Outernet LNB and purpose-built patch antenna connected to low cost USB SDR dongle receiver. The modem will . . . → Read More: Outernet modem and LDPC using Octave

FreeDV SM1000 v SSB demo

Great demo of FreeDV 1600 (SM1000 at one end) and SSB between AA6E and K5MVP. You can really notice the reduced audio bandwidth and ever present noise of SSB compared to FreeDV. This is just the start – we are gradually improving the low SNR robustness and speech quality of FreeDV. Thanks so . . . → Read More: FreeDV SM1000 v SSB demo

Dual Rav 4 SM1000 Installation

Andy VK5AKH, and Mark VK5QI, have mirror image SM1000 mobile installations, same radio, even the same car! Some good lessons learned on testing and debugging microphone levels that will be useful for other people installing their SM1000. Read all about it on Mark’s . . . → Read More: Dual Rav 4 SM1000 Installation

Codec 2 Masking Model Part 1

Many speech codecs use Linear Predictive Coding (LPC) to model the short term speech spectrum. For very low bit rate codecs, most of the bit rate is allocated to this information.

While working on the 700 bit/s version of Codec 2 I hit a few problems with LPC and started thinking about alternatives based on the . . . → Read More: Codec 2 Masking Model Part 1