Content deleted Content added
No edit summary |
m Open access bot: url-access updated in citation with #oabot. |
||
(34 intermediate revisions by 25 users not shown) | |||
Line 1:
{{Short description|High-performance forward error correction codes}}▼
{{Use American English|date = March 2019}}
In [[information theory]], '''turbo codes'''
▲{{Short description|High-performance forward error correction codes}}
▲In [[information theory]], '''turbo codes''' (originally in French ''Turbocodes'') are a class of high-performance [[forward error correction]] (FEC) codes developed around 1990–91 (but first published in 1993), which were the first practical codes to closely approach the [[Shannon–Hartley theorem|channel capacity]], a theoretical maximum for the [[code rate]] at which reliable communication is still possible given a specific noise level. Turbo codes are used in [[3G]]/[[4G]] mobile communications (e.g., in [[UMTS]] and [[LTE (telecommunication)|LTE]]) and in ([[Deep Space Network|deep space]]) [[satellite]] [[telecommunication|communications]] as well as other applications where designers seek to achieve reliable information transfer over bandwidth- or latency-constrained communication links in the presence of data-corrupting noise. Turbo codes compete with [[LDPC code]]s, which provide similar performance.
The name "turbo code" arose from the feedback loop used during normal turbo code decoding, which was analogized to the exhaust feedback used for engine [[turbocharging]]. [[Joachim Hagenauer|Hagenauer]] has argued the term turbo code is a misnomer since there is no feedback involved in the encoding process.<ref>{{cite
==History==
The fundamental patent application for turbo codes was filed on 23 April
The first public paper on turbo codes was "''Near Shannon Limit Error-correcting Coding and Decoding: Turbo-codes''".<ref>{{Citation|chapter-url=https://www.researchgate.net/publication/3604275 |
Turbo codes were so revolutionary at the time of their introduction that many experts in the field of coding did not believe the reported results. When the performance was confirmed a small revolution in the world of coding took place that led to the investigation of many other types of iterative signal processing.<ref>{{cite journal |author=Erico Guizzo |title=CLOSING IN ON THE PERFECT CODE |journal=IEEE Spectrum |date=Mar 1, 2004 |url=https://spectrum.ieee.org/closing-in-on-the-perfect-code|archive-url=https://archive.today/20230423205925/https://spectrum.ieee.org/closing-in-on-the-perfect-code|url-status=dead|archive-date=23 April 2023}}</ref>
The first class of turbo code was the parallel concatenated convolutional code (PCCC). Since the introduction of the original parallel turbo codes in 1993, many other classes of turbo code have been discovered, including
In addition to turbo codes, Berrou also invented recursive systematic convolutional (RSC) codes, which are used in the example implementation of turbo codes described in the patent.
Prior to turbo codes, the best constructions were serial [[concatenated code]]s based on an outer [[
In a later paper, Berrou gave credit to the intuition of "G. Battail, [[Joachim Hagenauer|J. Hagenauer]] and P. Hoeher, who, in the late 80s, highlighted the interest of probabilistic processing."
==An example encoder==
There are many different instances of turbo codes, using different component encoders, input/output ratios, interleavers, and [[Punctured code|puncturing patterns]]. This example encoder implementation describes a classic turbo encoder, and demonstrates the general design of parallel turbo codes.
This encoder implementation sends three sub-blocks of bits. The first sub-block is the ''m''-bit block of payload data. The second sub-block is ''n/2'' parity bits for the payload data, computed using a recursive systematic [[convolutional code]] (RSC code). The third sub-block is ''n/2'' parity bits for a known [[permutation]] of the payload data, again computed using an RSC code. Thus, two redundant but different sub-blocks of parity bits are sent with the payload. The complete block has {{nowrap|''m'' + ''n''}} bits of data with a code rate of {{nowrap|''m''/(''m'' + ''n'')}}. The [[permutation]] of the payload data is carried out by a device called an [[interleaver]].
Hardware-wise, this turbo
[[File:turbo encoder.svg]]
Line 74 ⟶ 73:
* 100 means "very likely 1"
* 127 means "certainly 1"
This introduces a probabilistic aspect to the data-stream from the front end, but it conveys more information about each bit than just 0 or 1.
For example, for each bit, the front end of a traditional wireless-receiver has to decide if an internal analog voltage is above or below a given threshold voltage level.
To decode the {{nowrap|''m'' + ''n''}}-bit block of data, the decoder front-end creates a block of likelihood measures, with one likelihood measure for each bit in the data stream.
==Solving hypotheses to find bits==
Line 95 ⟶ 93:
* [[MediaFLO]], terrestrial mobile television system from [[Qualcomm]].
* The [[return link|interaction channel]] of [[satellite communication]] systems, such as [[DVB-RCS]]<ref>[http://www.etsi.org/deliver/etsi_en/301700_301799/301790/01.05.01_60/en_301790v010501p.pdf Digital Video Broadcasting (DVB); Interaction channel for Satellite Distribution Systems], ETSI EN 301 790, V1.5.1, May 2009.</ref> and [http://www.dvb.org/standards/dvb-rcs2 DVB-RCS2].
* Recent [[NASA]] missions such as [[Mars Reconnaissance Orbiter]] use turbo codes as an alternative to [[
* [[IEEE 802.16]] ([[WiMAX]]), a wireless metropolitan network standard, uses block turbo coding and convolutional turbo coding.
==Bayesian formulation==
From an [[artificial intelligence]] viewpoint, turbo codes can be considered as an instance of loopy [[belief propagation]] in [[Bayesian network]]s.<ref>{{Citation
|
|
|
| title=Turbo decoding as an instance of Pearl's "belief propagation" algorithm
| journal=IEEE Journal on Selected Areas in Communications
Line 116 ⟶ 114:
==See also==
* [[BCJR algorithm]]▼
* [[Convolutional code]]
* [[
* [[Soft-decision decoding]]▼
* [[Interleaver]]
▲* [[BCJR algorithm]]
* [[Low-density parity-check code]]
* [[Serial concatenated convolutional codes]]
▲* [[Soft-decision decoding]]
* [[Turbo equalizer]]
* [[
==References==
{{
==Further reading==▼
===Publications===▼
* {{cite journal |last=Battail
* {{cite journal |last1=Brejza |first1=M.F. |last2=Li |first2=L. |last3=Maunder |first3=R.G. |last4=Al-Hashimi |first4=B.M. |last5=Berrou |first5=C. |last6=Hanzo |first6=L. |url=https://eprints.soton.ac.uk/378161/1/tutorial.pdf |doi=10.1109/COMST.2015.2448692
*{{cite conference |last1=Garzón-Bohórquez
==External links==
*
* [http://www.csee.wvu.edu/~mvalenti/documents/valenti01.pdf "The UMTS Turbo Code and an Efficient Decoder Implementation Suitable for Software-Defined Radios"] {{Webarchive|url=https://web.archive.org/web/20161020193559/http://www.csee.wvu.edu/~mvalenti/documents/valenti01.pdf |date=20 October 2016 }} (''International Journal of Wireless Information Networks'')
* {{
* [
* [http://www-turbo.enst-bretagne.fr/ International Symposium On Turbo Codes]
* [http://www.iterativesolutions.com/Matlab.htm Coded Modulation Library], an open source library for simulating turbo codes in matlab
* [http://www.ifp.uiuc.edu/~singer/journalpapers/tuchler_2002a.pdf "Turbo Equalization: Principles and New Results"] {{Webarchive|url=https://web.archive.org/web/20090227062216/http://www.ifp.uiuc.edu/~singer/journalpapers/tuchler_2002a.pdf |date=27 February 2009 }}, an ''[[IEEE Transactions on Communications]]'' article about using convolutional codes jointly with channel equalization.
* [http://itpp.sourceforge.net IT++ Home Page] The [[IT++]] is a powerful C++ library which in particular supports turbo codes
* [http://www.inference.phy.cam.ac.uk/mackay/CodesTurbo.html Turbo codes publications by David MacKay]
* [https://aff3ct.github.io AFF3CT Home Page] (
*
* [https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/an/an505.pdf 3GPP LTE Turbo Reference Design].
* [https://www.mathworks.com/help/comm/ug/estimate-turbo-code-ber-performance-in-awgn.html Estimate Turbo Code BER Performance in AWGN] {{Webarchive|url=https://web.archive.org/web/20190201172029/https://www.mathworks.com/help/comm/ug/estimate-turbo-code-ber-performance-in-awgn.html |date=1 February 2019 }} (MatLab).
* [https://www.mathworks.com/help/comm/examples/parallel-concatenated-convolutional-coding-turbo-codes.html Parallel Concatenated Convolutional Coding: Turbo Codes (MatLab Simulink)]
{{CCSDS|state=collapsed}}
{{Authority control}}
▲{{Use dmy dates|date=September 2010}}
▲==Further reading==
▲===Publications===
▲* Battail, Gérard. "A conceptual framework for understanding turbo codes." IEEE Journal on Selected Areas in Communications 16.2 (1998): 245-254.
▲* Brejza, Matthew F., et al. "20 years of turbo coding and energy-aware design guidelines for energy-constrained wireless applications." IEEE Communications Surveys & Tutorials 18.1 (2016): 8-28.
▲* Garzón-Bohórquez, Ronald, Charbel Abdel Nour, and Catherine Douillard. "Improving Turbo codes for 5G with parity puncture-constrained interleavers." Turbo Codes and Iterative Information Processing (ISTC), 2016 9th International Symposium on. IEEE, 2016.
{{DEFAULTSORT:Turbo Code}}
[[Category:Error detection and correction]]
[[Category:Capacity-approaching codes]]
[[Category:French inventions]]
|