Natural and Gray Coding

After writing up the Variable Power Quantiser work I added another function to my fuzzy_gray.m Octave simulation to compare natural and Gray coded binary.

Here are some results for 3,4, and 5 bit quantisers over a range of errors:

Curiously, the natural binary results are a little better (about 1dB less Eb/No for the same SNR). Another surprise is that at low Eb/No (high BERs) the SNRs are about the same for each quantiser. For example around 9dB SNR at Eb/No = -2dB, for 5,4 and 3 bits.

Here is a plot of 2 to 7 bit natural binary quantisers over a wide Eb/No range. Up to about Eb/No of 4dB (a BER of 1%), the 3-7 bit quantisers all work about the same! At lower BER (higher Eb/No), the quantisation noise starts to dominate and the higher resolutions quantisers work better. Each extra bit adds about 6dB of improved SNR.

Channel errors dominate the SNR at BER greater than 1% (Eb/No=4dB). In some sense the extra quantiser bits are “wasted”. This may not be true in terms of subjective decoded speech quality. The occasional large error tends to drag the SNR measure down, as large errors dominate the noise power. Subjectively, this might be a click, followed by several seconds of relatively clean speech. So more (subjective) testing is required to determine if natural or Gray coding is best for Codec 2 parameters. The SNR results suggest there is not much advantage either way.

Here is a plot of the error from the natural and Gray coded quantisers at Eb/No=-2dB. Occasionally, the Gray coded error is very large (around 1.0), compared to the natural coded error which has a maximum of around 0.5.

This example of a 3 bit quantiser helps us understand why. The natural binary and Gray coding is listed below the quantiser values:

Quantised Value 0.0 0.125 0.25 0.375 0.5 0.625 0.75 0.875
Natural Binary Code 000 001 010 011 100 101 110 111
Gray Code 000 001 011 010 110 111 101 100

Although Gray codes are robust to some bit errors (for example 000 and 001), they also have some large jumps, for example the 000 and 100 codes are only 1 bit error apart but jump the entire quantiser range. Natural binary has an exponentially declining error step for each bit.

Variable Power Quantisation

A common task in speech coding is to take a real (floating point) number and quantise it to a fixed number of bits for sending over the channel. For Codec 2 a good example is the energy of the speech signal. This is sampled at a rate of 25Hz (once every 40ms) and quantised . . . → Read More: Variable Power Quantisation

Aspitech E-waste Recycling Tour

Yesterday Robert Hart was kind enough to take a group of local hackerspace members on a tour through Aspitech, and Adelaide e-waste recycler. The Australian government has mandated that all importers must pay to recycle 33% of their products (by weight), which has created a new, high growth industry. The South Australian government is . . . → Read More: Aspitech E-waste Recycling Tour

Not Activiating Mt Remarkable

Last Saturday I had my first Summits on The Air (SOTA) attempt on top of Mount Remarkable here in South Australia.

As a first step on Friday I registered my SOTA attempt on the Sotawatch web site

On Saturday morning I started by testing my FT-817 and Alexloop magnetic loop antenna at our camp. While . . . → Read More: Not Activiating Mt Remarkable

Fox Hunting

This weekend I have been attending the SERG Ham radio convention in Mount Gambier where I have enjoyed the company of some good friends and learnt a lot about fox hunting.

A group of us decided to go 3 weeks ago. The well-connected Mark VK5QI has been scouring Adelaide for fox hunting equipment, including beam mounts, . . . → Read More: Fox Hunting

FreeDV Robustness Part 3

Since the last post I have explored some improvements to PAPR, and tested the 1600/2000 modes introduced in the last post in real time. These tests have given me a little more insight into the problems with HF channels and led me to better understand the requirements. This has lead to a new 1600 bit/s . . . → Read More: FreeDV Robustness Part 3

FreeDV Robustness Part 2

Since the last post I have been working on two new FreeDV modes (1600 and 2000 bit/s), designed to improve the performance of FreeDV over HF multipath fading channels. This involved modifying the Octave and C modem code to support a variable number of carriers, a new 1600 bit/s Codec 2 mode, and some C . . . → Read More: FreeDV Robustness Part 2

FreeDV Robustness Part 1

Here is the next installment in my adventure of making FreeDV work as least as well as analog SSB over HF multipath fading channels. I’ve included the command lines I am using for those who want to play along with me.

Incremental Improvements

Over the past few weeks I have made some incremental improvements:

Bill Cowley pointed out . . . → Read More: FreeDV Robustness Part 1

Dead DC-DC converter in my EV

About a week ago I returned from LCA 2013 after being away from home for 1 month. My EV was parked at a house close to the airport. It burst into life and off I went. However about 1 km from home the front lights and dash went dim and the EV ground to . . . → Read More: Dead DC-DC converter in my EV

HF Modem Bit Error Patterns

I am working on improving the performance of FreeDV on HF channels. As a first step I have been exploring the bit error patterns from the modem using some samples of a 1300 km HF radio path. These samples were kindly collected by Mark, VK5QI and Brenton, VK2MEV.

The FDMDV modem has 14 DQPSK data . . . → Read More: HF Modem Bit Error Patterns