# qpsk and viterbi decoding

Started by June 9, 2004
```QPSK has four constellation points representing a the following data
bits (00, 01, 10 and 11).

If this was transmitted using, say 1/3 rate convolutional encoder, and
soft decision viterbi decoding was applied at the receiver, then of
the 3 bits received, 2 of the 3 bits can be used to decode a QPSK
symbol. from which the euclidean distance can be calculated. This now
leaves one bit remaining.

Question/assumption. Does this mean that we now wait for the next 3
bits, and from these 3 bits we take one of the bits and combine it
with the bit that remained from the previous symbol, extract the QPSK
symbol and then then calculate the next euclidean distance ?
```
```Ted,

What you receive is QPSK symbols.  These symbols are then demapped into
2-bits per symbol; however, since you are using soft decision viterbi,
instead of getting 2-bits out of the demapper, you get 'soft' bits (some
weighting symbols).  These are then sent to the viterbi for decoding where
for every 3 'soft' bits that are inserted there is one decoded data bit that
comes out.  As you are probably aware, the depth of you viterbi decoder will
cause latency, i.e., you will have to wait a little before the decoded data
starts coming out.

QPSK --> demapper --> 'soft' bits --> viterbi --> uncoded data bits

Regards,
Phil

```
```Hi Phil, Ted,

I think the next is true (it's just an example). Phil will hopefully confirm
this :-))

encoding:
data(2bits) --> viterbi-encoding(2bits -> 2*3bits = 6bits = 3*2bits) -->
QPSK-mapping (3*2bits -> 3symbols of 2bits/symbol)

decoding:
--> QPSK-demapping (3symbols -> 3*2softbits= 6 softbits = 2*3softbits) -->
viterbi-decoding ( 2*3softbits -> 2bits) --> 2bits = uncoded data bits

Regards,
Laki

> Ted,
>
> What you receive is QPSK symbols.  These symbols are then demapped into
> 2-bits per symbol; however, since you are using soft decision viterbi,
> instead of getting 2-bits out of the demapper, you get 'soft' bits (some
> weighting symbols).  These are then sent to the viterbi for decoding where
> for every 3 'soft' bits that are inserted there is one decoded data bit
that
> comes out.  As you are probably aware, the depth of you viterbi decoder
will
> cause latency, i.e., you will have to wait a little before the decoded
data
> starts coming out.
>
> QPSK --> demapper --> 'soft' bits --> viterbi --> uncoded data bits
>
> Regards,
> Phil
>
>

```
```"phil" <phil_simulink@sympatico.ca> wrote in message
news:MpYxc.41673\$sS2.1489094@news20.bellglobal.com...
> What you receive is QPSK symbols.  These symbols are then demapped into
> 2-bits per symbol; however, since you are using soft decision viterbi,
> instead of getting 2-bits out of the demapper, you get 'soft' bits (some
> weighting symbols).  These are then sent to the viterbi for decoding where
> for every 3 'soft' bits that are inserted there is one decoded data bit
that
> comes out.  As you are probably aware, the depth of you viterbi decoder
will
> cause latency, i.e., you will have to wait a little before the decoded
data
> starts coming out.
>
> QPSK --> demapper --> 'soft' bits --> viterbi --> uncoded data bits

While the system *will* work as described, the performance might
be different from theoretical predictions or simulation results for the
reasons described below

Alternate 3-bit symbols going into the Viterbi decoder have different
weight structures:  In symbol #1, the first two bits have weights assigned
by one QPSK symbol demodulation, while the weight assigned to the
third bit comes from the next QPSK symbol demodulation, which also
assigns a weight to the first bit of the next 3-bit symbol (symbol #2).
The second and third bits of symbol #2 have weights assigned by the
third QPSK demodulation, etc.  Thus, there is correlation between the
weights assigned to symbols #1 and #2 (but not between the weights
assigned to symbols #2 and #3), the weights assigned to symbols #3
and #4 (but not between #4 and #5) and so on.  Such correlations might,
or might not, have been accounted for in the analysis or simulation....
The usual assumption is that weights assigned to successive symbols are
independent.

```
```Lakie,

I think that a more clear way of representing it is as follows

Encoding:
N-data bits, where N is an integer multiple of 2 -->
rate 1/3 convolutional encoding -> 3*N encoded bits -->
QPSK - mapping -> 3 * N / 2 QPSK symbols.

Decoding
3 * N / 2 QPSK symbols -->
QPSK soft demapper -> 3*N softbits ( example: the softbit might indicate a
75% certainty of the bit being 1.  this weighting is based on the distance
from the ideal symbol location.  each softbit can be an M-bit word
representing this information, M =  3 or 4 is the norm.) -->
soft-decision viterbi decoder -> N decoded bits.

I think that this is essentially what you wrote, but the interchanging of
2*3 and 3*2 was confusing me.  I wasn't sure if I was misinterpreting what
you were trying to say or if you were just misunderstanding the concept.

The digital modulation scheme (QPSK) doesn't really have anything to do with
the viterbi apart from the error patterns in the uncoded bits coming from
the demapper.  Also the weighting for the bits from a given QPSK symbol are
independent for each bit and for each symbol.  Some more advanced algorithms
also use the information of the channel condition to apply a more advanced
weighting scheme per symbol, however, sometimes this still ends up being per
bit.

Regards,
Phil

"lakie" <just_me_myself_and_i1@hotmail.com> wrote in message
news:1086878995.598397@seven.kulnet.kuleuven.ac.be...
> Hi Phil, Ted,
>
> I think the next is true (it's just an example). Phil will hopefully
confirm
> this :-))
>
> encoding:
> data(2bits) --> viterbi-encoding(2bits -> 2*3bits = 6bits = 3*2bits) -->
> QPSK-mapping (3*2bits -> 3symbols of 2bits/symbol)
>
> decoding:
> --> QPSK-demapping (3symbols -> 3*2softbits= 6 softbits = 2*3softbits) -->
> viterbi-decoding ( 2*3softbits -> 2bits) --> 2bits = uncoded data bits
>
> Regards,
> Laki
>
> > Ted,
> >
> > What you receive is QPSK symbols.  These symbols are then demapped into
> > 2-bits per symbol; however, since you are using soft decision viterbi,
> > instead of getting 2-bits out of the demapper, you get 'soft' bits (some
> > weighting symbols).  These are then sent to the viterbi for decoding
where
> > for every 3 'soft' bits that are inserted there is one decoded data bit
> that
> > comes out.  As you are probably aware, the depth of you viterbi decoder
> will
> > cause latency, i.e., you will have to wait a little before the decoded
> data
> > starts coming out.
> >
> > QPSK --> demapper --> 'soft' bits --> viterbi --> uncoded data bits
> >
> > Regards,
> > Phil
> >
> >
>
>

```
```Thx,
Lakie

> Lakie,
>
> I think that a more clear way of representing it is as follows
>
> Encoding:
> N-data bits, where N is an integer multiple of 2 -->
> rate 1/3 convolutional encoding -> 3*N encoded bits -->
> QPSK - mapping -> 3 * N / 2 QPSK symbols.
>
> Decoding
> 3 * N / 2 QPSK symbols -->
> QPSK soft demapper -> 3*N softbits ( example: the softbit might indicate a
> 75% certainty of the bit being 1.  this weighting is based on the distance
> from the ideal symbol location.  each softbit can be an M-bit word
> representing this information, M =  3 or 4 is the norm.) -->
> soft-decision viterbi decoder -> N decoded bits.
>
> I think that this is essentially what you wrote, but the interchanging of
> 2*3 and 3*2 was confusing me.  I wasn't sure if I was misinterpreting what
> you were trying to say or if you were just misunderstanding the concept.
>
> The digital modulation scheme (QPSK) doesn't really have anything to do
with
> the viterbi apart from the error patterns in the uncoded bits coming from
> the demapper.  Also the weighting for the bits from a given QPSK symbol
are
> independent for each bit and for each symbol.  Some more advanced
algorithms
> also use the information of the channel condition to apply a more advanced
> weighting scheme per symbol, however, sometimes this still ends up being
per
> bit.
>
> Regards,
> Phil
>
>
>
>
> "lakie" <just_me_myself_and_i1@hotmail.com> wrote in message
> news:1086878995.598397@seven.kulnet.kuleuven.ac.be...
> > Hi Phil, Ted,
> >
> > I think the next is true (it's just an example). Phil will hopefully
> confirm
> > this :-))
> >
> > encoding:
> > data(2bits) --> viterbi-encoding(2bits -> 2*3bits = 6bits = 3*2bits) -->
> > QPSK-mapping (3*2bits -> 3symbols of 2bits/symbol)
> >
> > decoding:
> > --> QPSK-demapping (3symbols -> 3*2softbits= 6 softbits =
2*3softbits) -->
> > viterbi-decoding ( 2*3softbits -> 2bits) --> 2bits = uncoded data bits
> >
> > Regards,
> > Laki
> >
> > > Ted,
> > >
> > > What you receive is QPSK symbols.  These symbols are then demapped
into
> > > 2-bits per symbol; however, since you are using soft decision viterbi,
> > > instead of getting 2-bits out of the demapper, you get 'soft' bits
(some
> > > weighting symbols).  These are then sent to the viterbi for decoding
> where
> > > for every 3 'soft' bits that are inserted there is one decoded data
bit
> > that
> > > comes out.  As you are probably aware, the depth of you viterbi
decoder
> > will
> > > cause latency, i.e., you will have to wait a little before the decoded
> > data
> > > starts coming out.
> > >
> > > QPSK --> demapper --> 'soft' bits --> viterbi --> uncoded data bits
> > >
> > > Regards,
> > > Phil
> > >
> > >
> >
> >
>
>

```
```Phil,

thanks for that reply. What would happen now if the code was
punctured.

eg have say a 1/2 rate coder generate a 2/3 punctured code to give
something like

00 0x 11 1x 01 1x. I assume for the qpsk transmission the x is ignored
and what we have is 00 01 11 01... (the punctured bit x is now
completely dropped)
now used as the symbols to be transmitted ?

Also at the receiver I understand that the punctutred trellis for the
1/2 rate coder is used to decode the received punctured convolutional.
How is the x handled in the trelllis for hard decision decoding and
for soft decision decoding ?

"phil" <phil_simulink@sympatico.ca> wrote in message news:<XH2yc.44402\$sS2.1585819@news20.bellglobal.com>...
> Lakie,
>
> I think that a more clear way of representing it is as follows
>
> Encoding:
> N-data bits, where N is an integer multiple of 2 -->
> rate 1/3 convolutional encoding -> 3*N encoded bits -->
> QPSK - mapping -> 3 * N / 2 QPSK symbols.
>
> Decoding
> 3 * N / 2 QPSK symbols -->
> QPSK soft demapper -> 3*N softbits ( example: the softbit might indicate a
> 75% certainty of the bit being 1.  this weighting is based on the distance
> from the ideal symbol location.  each softbit can be an M-bit word
> representing this information, M =  3 or 4 is the norm.) -->
> soft-decision viterbi decoder -> N decoded bits.
>
> I think that this is essentially what you wrote, but the interchanging of
> 2*3 and 3*2 was confusing me.  I wasn't sure if I was misinterpreting what
> you were trying to say or if you were just misunderstanding the concept.
>
> The digital modulation scheme (QPSK) doesn't really have anything to do with
> the viterbi apart from the error patterns in the uncoded bits coming from
> the demapper.  Also the weighting for the bits from a given QPSK symbol are
> independent for each bit and for each symbol.  Some more advanced algorithms
> also use the information of the channel condition to apply a more advanced
> weighting scheme per symbol, however, sometimes this still ends up being per
> bit.
>
> Regards,
> Phil
>
>
>
>
> "lakie" <just_me_myself_and_i1@hotmail.com> wrote in message
> news:1086878995.598397@seven.kulnet.kuleuven.ac.be...
> > Hi Phil, Ted,
> >
> > I think the next is true (it's just an example). Phil will hopefully
>  confirm
> > this :-))
> >
> > encoding:
> > data(2bits) --> viterbi-encoding(2bits -> 2*3bits = 6bits = 3*2bits) -->
> > QPSK-mapping (3*2bits -> 3symbols of 2bits/symbol)
> >
> > decoding:
> > --> QPSK-demapping (3symbols -> 3*2softbits= 6 softbits = 2*3softbits) -->
> > viterbi-decoding ( 2*3softbits -> 2bits) --> 2bits = uncoded data bits
> >
> > Regards,
> > Laki
> >
> > > Ted,
> > >
> > > What you receive is QPSK symbols.  These symbols are then demapped into
> > > 2-bits per symbol; however, since you are using soft decision viterbi,
> > > instead of getting 2-bits out of the demapper, you get 'soft' bits (some
> > > weighting symbols).  These are then sent to the viterbi for decoding
>  where
> > > for every 3 'soft' bits that are inserted there is one decoded data bit
>  that
> > > comes out.  As you are probably aware, the depth of you viterbi decoder
>  will
> > > cause latency, i.e., you will have to wait a little before the decoded
>  data
> > > starts coming out.
> > >
> > > QPSK --> demapper --> 'soft' bits --> viterbi --> uncoded data bits
> > >
> > > Regards,
> > > Phil
> > >
> > >
> >
> >
```
```Ted,

In both hard and soft-decoding, prior to viterbi decoding, there is a
'de-puncturer' that returns the data to rate 1/2 (in your example).  These
inserted bits (soft-bits) are ignored when updating the viterbi metric.

There are probably some websites that describe all of this if you take a
look around.

Sorry for the delay in my reply.  Haven't had much time lately.

Regards,
Phil

```
```Phil,

I have been looking around at websites for some information especially
on decoding punctured convolutional codes. But when it comes to the
crunch, ie "ignoring" the inserted soft bits during viterbi metric
update, there is no explanation of how to exactly compute the metric
if these bits are ignored.

Some info on this would really help.

Thanks

Ted

"phil" <phil_simulink@sympatico.ca> wrote in message news:<OoZzc.21999\$nY.796595@news20.bellglobal.com>...
> Ted,
>
> In both hard and soft-decoding, prior to viterbi decoding, there is a
> 'de-puncturer' that returns the data to rate 1/2 (in your example).  These
> inserted bits (soft-bits) are ignored when updating the viterbi metric.
>
> There are probably some websites that describe all of this if you take a
> look around.
>
> Sorry for the delay in my reply.  Haven't had much time lately.
>
> Regards,
> Phil
```