Content deleted Content added
m Fixing bare references Wikipedia:Bare_URLs |
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>
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 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>
==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>
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>
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.
|