page_title: Convolutional code
section_title: Popular convolutional codes
hierarchical_section_title: Convolutional code / Popular convolutional codes
caption_attribution_description: English: MATLAB script: clear all ; close all ; clc EbNo = 0:7; lens = 5:9; gens = [[35 23]; [51 73]; [171 133]; [371 247]; [753 561]]; for g = 1:length(gens) spect = distspec(poly2trellis(lens(g), gens(g,:)),lens(g)) ber_soft(:, g) = bercoding(EbNo,&#39;conv&#39;,&#39;soft&#39;,1/2,spect); ber_hard(:, g) = bercoding(EbNo,&#39;conv&#39;,&#39;hard&#39;,1/2,spect); end ber_u = berawgn(EbNo,&#39;psk&#39;,4,&#39;nondiff&#39;).&#39;; ber1 = [ber_soft ber_u]; ber2 = [ber_hard ber_u]; figure(1) semilogy(EbNo, ber1,&#39;LineWidth&#39;, 1.5) hold on legend(&#39;Soft (5,[35 23])&#39;,... &#39;Soft (6,[51 73])&#39;,&#39;Soft (7,[171 133])&#39;,... &#39;Soft (8,[371 247])&#39;,&#39;Soft (9,[753 561])&#39;,... &#39;Uncoded&#39;,&#39;location&#39;,&#39;best&#39;) grid on xlabel(&#39;Eb/No (dB)&#39;) ylabel(&#39;Bit Error Rate&#39;) figure(2) semilogy(EbNo, ber2,&#39;LineWidth&#39;, 1.5) hold on legend(&#39;Hard (5,[35 23])&#39;,... &#39;Hard (6,[51 73])&#39;,&#39;Hard (7,[171 133])&#39;,... &#39;Hard (8,[371 247])&#39;,&#39;Hard (9,[753 561])&#39;,... &#39;Uncoded&#39;,&#39;location&#39;,&#39;best&#39;) grid on xlabel(&#39;Eb/No (dB)&#39;) ylabel(&#39;Bit Error Rate&#39;)
context_page_description: In telecommunication, a convolutional code is a type of error-correcting code that generates parity symbols via the sliding application of a boolean polynomial function to a data stream. The sliding application represents the 'convolution' of the encoder over the data, which gives rise to the term 'convolutional coding'. The sliding nature of the convolutional codes facilitates trellis decoding using a time-invariant trellis. Time invariant trellis decoding allows convolutional codes to be maximum-likelihood soft-decision decoded with reasonable complexity.
  The ability to perform economical maximum likelihood soft decision decoding is one of the major benefits of convolutional codes. This is in contrast to classic block codes, which are generally represented by a time-variant trellis and therefore are typically hard-decision decoded. Convolutional codes are often characterized by the base code rate and the depth of the encoder. The base code rate is typically given as, where is the input data rate and is the output symbol rate. The depth is often called the "constraint length", where the output is a function of the current input as well as the previous inputs.
context_section_description: In fact, predefined convolutional codes structures obtained during scientific researches are used in the industry. This relates to the possibility to select catastrophic convolutional codes (causes larger number of errors).
  An especially popular Viterbi-decoded convolutional code, used at least since the Voyager program has a constraint length  of 7 and a rate r of 1/2. 
  Mars Pathfinder, Mars Exploration Rover and the Cassini probe to Saturn use a  of 15 and a rate of 1/6; this code performs about 2 dB better than the simpler  code at a cost of 256× in decoding complexity (compared to Voyager mission codes).
  The convolutional code with a constraint length of 2 and a rate of 1/2 is used in GSM as an error correction technique.
caption: Theoretical bit-error rate curves of encoded QPSK (soft decision), additive white Gaussian noise channel. Longer constraint lengths produce more powerful codes, but the complexity of the Viterbi algorithm increases exponentially with constraint lengths, limiting these more powerful codes to deep space missions where the extra performance is easily worth the increased decoder complexity.
exif: {}