I am sitting here in front of this PC studying Digital Transmission. This basically means that I am studying how information can be sent over a channel (ex: a cable) in a discrete way (basically using bits). Now I want to write a very short example about what hard and soft decoding is.
Before sending bits to the channel, they are usually somehow coded. By coding the bits we want to make it easier for the receiver to localize errors which are likely to occur during our transmission (the most easy case to understand is the additive noise added by the channel). It is actually also possible to correct some of these errors. But this is not the topic now.
If we code, we of course have also to decode in order to get the original information back. When you read about decoding techniques you will find Hard Decoding and Soft Decoding. The idea behind these two was not clear for me until I read a nice explanation. I will try to report this explanation with my own words here on the blog.
Useful concepts: metrics
It is important to understand what Hamming Distance and Euclidean Distance mean, especially applied to vectors. You can have a look at the following links:
Imagine we want to send 1 bit of information, either 0 or 1, over a channel. To make our system more robust, we decide to use coding. We use a very simple and straight-forward coding technique: we just repeat the bit 4 times. So if the bit we have to send is 0, we will actually send 0000, and if it is 1 we will send 1111. We decide that on our cable we will have +1 V (volt) if the bit to send is 1, and -1 V if the bit to send is zero.
Ok, let’s assume we like the number one and we want therefore to send a bit with value 1.
What we will actually send on the cable (=channel) is [+1V, +1V, +1V, +1V], four impulses of +1 V (the duration of these impulses is not really crucial for this discussion).
Our channel will introduce distortions, additive noise (AWGN) and all possibile mess. At the end, what we receive is [+1.1, -0.2, -0.1, -0.1]. Now, based on this, in the receiving phase we have to decide weather we sent a 1 or a 0. here is how the two decoders will act:
- Hard decoder: it treats all bits separately. basically the received sequence is though to [+1, -1, -1, -1] and based on this we use Hamming metric to find out which sent sequence is nearer. As we basically have more negative values than positive ones, we conclude that the sent bit was a zero;
- Soft decoder: it does not make a decision on each bit. First it sums up all the single bit values, obtaining +0.7. After this, the decoder looks which bit is, in an Euclidean way, nearer to this value. In this case of course +1 V is nearer to 0.7 V than -1 V. We therefore conclude that the sent bit was a one.
Both decoders use a Maximum Likelihood principle. They just use different metrics.
As we can see in this small example the soft decoder is able to decode the sent bit correctlym, while the hard decoder fails. It is usually true that soft decoders have better performance than hard decoders, but they are also usually more difficult to implement in practice.
Hope this helps somebody to understand better these concepts. I think I got it right now! 🙂