Convolutional code: Difference between revisions

Content deleted Content added
m Fixing bare references Wikipedia:Bare_URLs
Tags: AWB Reverted
m revert WP:CITEVAR violation
Line 131:
{{see also|Viterbi algorithm}}
 
[[File:Convolutional codes PSK QAM LLR.svg|thumb|right|300px| Bit error ratio curves for convolutional codes with different options of digital modulations ([[Phase-shift keying|QPSK, 8-PSK]], [[Quadrature amplitude modulation|16-QAM, 64-QAM]]) and [[Likelihood_function#Log-likelihood|LLR]] Algorithms.<ref>{{cite web| url = [https://www.mathworks.com/help/comm/examples/llr-vs-hard-decision-demodulation.html| title = LLR vs. Hard Decision Demodulation (MathWorks)}}]</ref><ref>{{cite web| url = [https://www.mathworks.com/help/comm/ug/estimate-ber-for-hard-and-soft-decision-viterbi-decoding.html| title = Estimate BER for Hard and Soft Decision Viterbi Decoding (MathWorks)}}]</ref> (Exact<ref>{{cite web| url = [https://www.mathworks.com/help/comm/ug/digital-modulation.html#brc6yjx| title = Digital modulation: Exact LLR Algorithm (MathWorks)}}]</ref> and Approximate<ref>{{cite web| url = [https://www.mathworks.com/help/comm/ug/digital-modulation.html#brc6ymu| title = Digital modulation: Approximate LLR Algorithm (MathWorks)}}]</ref>) over additive white Gaussian noise channel.]]
 
Several [[algorithm]]s exist for decoding convolutional codes. For relatively small values of ''k'', the [[Viterbi algorithm]] is universally used as it provides [[maximum likelihood]] performance and is highly parallelizable. Viterbi decoders are thus easy to implement in [[VLSI]] hardware and in software on CPUs with [[SIMD]] instruction sets.
Line 149:
[[Mars Pathfinder]], [[Mars Exploration Rover]] and the [[Cassini probe]] to Saturn use a {{mvar|K}} of 15 and a rate of 1/6; this code performs about 2&nbsp;dB better than the simpler <math>K=7</math> 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.<ref>{{cite web| url = [http://www.scholarpedia.org/article/Global_system_for_mobile_communications_(GSM)| title = Global system for mobile communications (GSM)}}]</ref>
 
==Punctured convolutional codes==
Line 155:
{{See also|Puncturing}}
 
[[File:Soft34.png|thumb|right|300px|Convolutional codes with 1/2 and 3/4 code rates (and constraint length 7, Soft decision, 4-QAM / QPSK / OQPSK).<ref>{{cite web| url = [https://ch.mathworks.com/help/comm/ug/punctured-convolutional-coding-1.html| title = Punctured Convolutional Coding (MathWorks)}}]</ref>]]
 
Convolutional code with any code rate can be designed based on polynomial selection;<ref>{{Cite web|url=https://www.mathworks.com/help/comm/ref/poly2trellis.html|title=Convert convolutional code polynomials to trellis description - MATLAB poly2trellis}}</ref> however, in practice, a puncturing procedure is often used to achieve the required code rate. [[Puncturing]] is a technique used to make a ''m''/''n'' rate code from a "basic" low-rate (e.g., 1/''n'') code. It is achieved by deleting of some bits in the encoder output. Bits are deleted according to a ''puncturing matrix''. The following puncturing matrices are the most frequently used:
Line 224:
{{main article|Turbo code}}
 
[[File:Turbo codes scheme.png|thumb|350 px| A turbo code with component codes 13, 15.<ref>{{cite web| url = [http://www.scholarpedia.org/article/Turbo_codes| title = Turbo code}}]</ref> Turbo codes get their name because the decoder uses feedback, like a turbo engine. Permutation means the same as the interleaving. C1 and C2 are recursive convolutional codes. Recursive and non-recursive convolutional codes are not so much different in BER performance, however, recursive type of is implemented in Turbo convolutional codes due to better interleaving properties.<ref>Benedetto, Sergio, and Guido Montorsi. "[https://ieeexplore.ieee.org/abstract/document/390945/ Role of recursive convolutional codes in turbo codes]." Electronics Letters 31.11 (1995): 858-859.</ref>]]
 
Simple Viterbi-decoded convolutional codes are now giving way to [[turbo code]]s, a new class of iterated short convolutional codes that closely approach the theoretical limits imposed by [[Shannon's theorem]] with much less decoding complexity than the Viterbi algorithm on the long convolutional codes that would be required for the same performance. [[Concatenated code|Concatenation]] with an outer algebraic code (e.g., [[Reed–Solomon error correction|Reed–Solomon]]) addresses the issue of [[error floor]]s inherent to turbo code designs.