DSPRelated.com
Forums

Good training material on convolutional encoding

Started by Tim Wescott February 3, 2017
A client wants to understand how to encode and decode convolutional codes 
before they move from phase A of a project to phase B (because they want 
to implement said en- and de-coding themselves).

Any good material on the web?  "This is how you do it" is to be preferred 
over "These are the theoretical underpinnings" -- they want results; 
they're paying me for the analytical part.

If I find something before you do I'll post links back here -- but if 
you've been down this road, please share.

-- 

Tim Wescott
Wescott Design Services
http://www.wescottdesign.com

I'm looking for work -- see my website!
Tim Wescott  <seemywebsite@myfooter.really> wrote:

>A client wants to understand how to encode and decode convolutional codes >before they move from phase A of a project to phase B (because they want >to implement said en- and de-coding themselves).
>Any good material on the web? "This is how you do it" is to be preferred >over "These are the theoretical underpinnings" -- they want results; >they're paying me for the analytical part.
A basic question, are they designing/selecting the convolutional codes, or have these already been selected and they only wish to implement them? Assuming the latter, there are some things you need to know to narrow down the design problem - is the code recursive and/or symmetric, is it punctured or interleaved and if so how, is it terminated (i.e. divided into blocks, as opposed to an indefinite stream). I'll give more thought into identifying a web resources or two. Steve
On Friday, February 3, 2017 at 3:20:06 PM UTC-5, Tim Wescott wrote:
> A client wants to understand how to encode and decode convolutional codes > before they move from phase A of a project to phase B (because they want > to implement said en- and de-coding themselves). > > Any good material on the web? "This is how you do it" is to be preferred > over "These are the theoretical underpinnings" -- they want results; > they're paying me for the analytical part. > > If I find something before you do I'll post links back here -- but if > you've been down this road, please share. > > -- > > Tim Wescott > Wescott Design Services > http://www.wescottdesign.com > > I'm looking for work -- see my website!
The early part of this app note may prove useful http://www.ti.com/lit/an/spra776a/spra776a.pdf Clay
<clay@claysturner.com> wrote:

>The early part of this app note may prove useful > >http://www.ti.com/lit/an/spra776a/spra776a.pdf
Yes, this one is very good. There are some common situations it doesn't address -- recursive symmetric codes, and situations requiring modulo normalization or similar, to keep word widths from blowing up. S.
On Fri, 03 Feb 2017 20:32:40 +0000, Steve Pope wrote:

> Tim Wescott <seemywebsite@myfooter.really> wrote: > >>A client wants to understand how to encode and decode convolutional >>codes before they move from phase A of a project to phase B (because >>they want to implement said en- and de-coding themselves). > >>Any good material on the web? "This is how you do it" is to be >>preferred over "These are the theoretical underpinnings" -- they want >>results; they're paying me for the analytical part. > > A basic question, are they designing/selecting the convolutional codes, > or have these already been selected and they only wish to implement > them?
We're going to be doing some experimentation with the exact codes used (mostly trying different constraint lengths). They're solely interested in implementation -- it's my job to come up with candidate codes.
> Assuming the latter, there are some things you need to know to narrow > down the design problem - is the code recursive and/or symmetric, > is it punctured or interleaved and if so how, is it terminated (i.e. > divided into blocks, as opposed to an indefinite stream).
Indefinite stream, no puncturing, recursive, or any of that fancy stuff. Just looking for how to do plain old Viterbi decoding. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com I'm looking for work -- see my website!
Tim Wescott  <seemywebsite@myfooter.really> wrote:

>On Fri, 03 Feb 2017 20:32:40 +0000, Steve Pope wrote:
>> A basic question, are they designing/selecting the convolutional codes, >> or have these already been selected and they only wish to implement >> them?
>We're going to be doing some experimentation with the exact codes used >(mostly trying different constraint lengths). They're solely interested >in implementation -- it's my job to come up with candidate codes.
>> Assuming the latter, there are some things you need to know to narrow >> down the design problem - is the code recursive and/or symmetric, >> is it punctured or interleaved and if so how, is it terminated (i.e. >> divided into blocks, as opposed to an indefinite stream).
>Indefinite stream, no puncturing, recursive, or any of that fancy stuff.
>Just looking for how to do plain old Viterbi decoding.
As it is a indefinite stream you will need to use something like modulo normalization or subtractive normalization, otherwise the accumulated distances will eventually exceed your word width. Googling on "modulo normalization" yields some info. Steve
On Fri, 03 Feb 2017 22:34:59 +0000, Steve Pope wrote:

> Tim Wescott <seemywebsite@myfooter.really> wrote: > >>On Fri, 03 Feb 2017 20:32:40 +0000, Steve Pope wrote: > >>> A basic question, are they designing/selecting the convolutional >>> codes, >>> or have these already been selected and they only wish to implement >>> them? > >>We're going to be doing some experimentation with the exact codes used >>(mostly trying different constraint lengths). They're solely interested >>in implementation -- it's my job to come up with candidate codes. > >>> Assuming the latter, there are some things you need to know to narrow >>> down the design problem - is the code recursive and/or symmetric, >>> is it punctured or interleaved and if so how, is it terminated (i.e. >>> divided into blocks, as opposed to an indefinite stream). > >>Indefinite stream, no puncturing, recursive, or any of that fancy stuff. > >>Just looking for how to do plain old Viterbi decoding. > > As it is a indefinite stream you will need to use something like modulo > normalization or subtractive normalization, otherwise the accumulated > distances will eventually exceed your word width. > > Googling on "modulo normalization" yields some info.
That's going to be kinda unique, because I'm planning on making the algorithm so that it takes in symbol probabilities and coughs up a running word probability -- so even though it'll be computationally expensive, I'll be tracking probabilities, and probably normalizing at each step so that the sum of probabilities of all surviving paths is equal to 1. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com I'm looking for work -- see my website!
Tim Wescott  <seemywebsite@myfooter.really> wrote:

>On Fri, 03 Feb 2017 22:34:59 +0000, Steve Pope wrote:
>> As it is a indefinite stream you will need to use something like modulo >> normalization or subtractive normalization, otherwise the accumulated >> distances will eventually exceed your word width.
>> Googling on "modulo normalization" yields some info.
>That's going to be kinda unique, because I'm planning on making the >algorithm so that it takes in symbol probabilities and coughs up a >running word probability -- so even though it'll be computationally >expensive, I'll be tracking probabilities, and probably normalizing at >each step so that the sum of probabilities of all surviving paths is >equal to 1.
Are you saying you want a soft output? That gets you into a class of algorithms beyond the basic Viterbi algorithm, although there is likely some similarity. (Is a "word" a codeword, or some more arbitrary slice of data?) S.
Tim Wescott wrote:
> On Fri, 03 Feb 2017 20:32:40 +0000, Steve Pope wrote: > >> Tim Wescott <seemywebsite@myfooter.really> wrote: >> >>> A client wants to understand how to encode and decode convolutional >>> codes before they move from phase A of a project to phase B (because >>> they want to implement said en- and de-coding themselves). >> >>> Any good material on the web? "This is how you do it" is to be >>> preferred over "These are the theoretical underpinnings" -- they want >>> results; they're paying me for the analytical part. >> >> A basic question, are they designing/selecting the convolutional codes, >> or have these already been selected and they only wish to implement >> them? > > We're going to be doing some experimentation with the exact codes used > (mostly trying different constraint lengths). They're solely interested > in implementation -- it's my job to come up with candidate codes. > >> Assuming the latter, there are some things you need to know to narrow >> down the design problem - is the code recursive and/or symmetric, >> is it punctured or interleaved and if so how, is it terminated (i.e. >> divided into blocks, as opposed to an indefinite stream). > > Indefinite stream, no puncturing, recursive, or any of that fancy stuff. > > Just looking for how to do plain old Viterbi decoding. >
Are those not encumbered by patent? I remember fairly detailed treatise on the MIT website. Lemme see... This? perhaps? http://web.mit.edu/6.02/www/f2010/handouts/lectures/L8.pdf It's been almost 15 years since I dealt with them, and I wasn't the one implementing them. -- Les Cargill
On Fri, 03 Feb 2017 14:19:58 -0600, Tim Wescott
<seemywebsite@myfooter.really> wrote:

>A client wants to understand how to encode and decode convolutional codes >before they move from phase A of a project to phase B (because they want >to implement said en- and de-coding themselves). > >Any good material on the web? "This is how you do it" is to be preferred >over "These are the theoretical underpinnings" -- they want results; >they're paying me for the analytical part. > >If I find something before you do I'll post links back here -- but if >you've been down this road, please share. >
Are you just looking for the computational architecture/algorithm info or are you looking for actual implementation details? If the latter, will it be in hardware or software, as they differ substantially? --- This email has been checked for viruses by Avast antivirus software. https://www.avast.com/antivirus