Self-synchronizing code: Difference between revisions

Content deleted Content added
cite Berstel & Perrin (1985)
m avoid unnec redirect
 
(49 intermediate revisions by 28 users not shown)
Line 1:
{{Use American English|date=March 2019}}
{{distinguish|self-clocking signal}}
{{Short description|Type of code in coding theory}}
In [[telecommunication]]s, a '''self-synchronizing code'''<ref>US [[Federal Standard 1037C]]</ref> is a [[line code]] in which the [[symbol (data)|symbol]] stream formed by a portion of one [[code word]], or by the overlapped portion of any two adjacent code words, is not a valid code word. Put another way, a set of strings (called "code words") over an alphabet is called a self-synchronizing code if for each string obtained by concatenating two code words, the substring starting at the second symbol and ending at the second-last symbol does not contain any code word as substring.
{{Use dmy dates|date=March 2019|cs1-dates=y}}
{{Use list-defined references|date=August 2023}}
{{Distinguish|Self-clocking signal|Self-similar process}}
 
AIn synonym[[coding fortheory]], self-synchronizingespecially codein is[[telecommunications]], a '''commaself-freesynchronizing code'''.<ref>Berstel &is Perrina (1985)[[uniquely p.377</ref>decodable code]] However,in sometimeswhich the term[[symbol ''comma-free(data)|symbol]] code''stream isformed usedby ina the meaningportion of one [[prefixCode word (communication)|code word]], or by the overlapped portion of any two adjacent code words, is not a valid code word.<ref name="Glossary"/>US [[FederalPut Standardanother 1037C]]</ref>way, Thea latterset of strings (called "code words") over an alphabet is called a broaderself-synchronizing concept:code if for each string obtained by concatenating two code words, the substring starting at the second symbol and ending at the second-last symbol does not contain any code word as substring. everyEvery self-synchronizing code is a [[prefix code]], but not all prefix codes are self-synchronizing.
 
Other terms for self-synchronizing code are '''synchronized code'''<ref name="Brestel-Perrin-Reutenauer_2010"/> or, ambiguously, '''comma-free code'''.<ref name="Brestel-Perrin_1985"/> A self-[[synchronizing]] code permits the proper [[frame synchronization|framing]] of transmitted code words provided that no uncorrected errors occur in the [[data stream|symbol stream]]; external [[synchronization]] is not required. Self-synchronizing codes also allow recovery from uncorrected errors in the stream; with most prefix codes, an uncorrected error in a single [[bit]] may propagate errors further in the stream and make the subsequent data unreadable[[data corruption|corrupted]].
 
Importance of self-synchronizing codes is not limited to [[data transmission]]. Self-synchronization also facilitates some cases of [[data recovery]], for example of a [[character encoding|digitally encoded text]].
 
==Examples==
* [[UTF-8]] is self-synchronizing because the leading byte (<code>11xxxxxx</code>) and subsequent bytes (<code>10xxxxxx</code>) of a multi-byte code point have different bit patterns.
* [[High- Level Data Link Control]] (HDLC)
* [[Advanced Data Communication Control Procedures]] (ADCCP)
* [[UTF-8Fibonacci coding]]
 
Counterexamples:
* The prefix code {00, 11} is not self-synchronizing; while 0, 1, 01 and 10 are not codes, 00 and 11 are.
* The prefix code {''ab'',''ba''} is not self-synchronizing because ''abab'' contains ''ba''.
* The prefix code ''b''<sup>∗</sup>a (using the [[Kleene star]]) is not self-synchronizing (even though any new code word simply starts after ''a'') because code word ''ba'' contains code word ''a''.
 
==See also==
* [[Bit slip]]
* [[Comma code]]
* [[Consistent overhead byte stuffing]]
* [[Dynkin sequence]]
* [[Kraus principle]]
* [[Kruskal's principle]]
* [[Overlapping instructions]]
* [[Pollard's lambda method]]
* [[Self-clocking signal]]
* [[simple:Self-synchronizing block code]]
 
==References==
{{Reflist}}|refs=
<ref name="Glossary">{{Cite web |url=https://glossary.atis.org/glossary/self-synchronizing-code/?char=S&page_number=22&sort=ASC |title=Self-synchronizing code – Glossary}}</ref>
*<ref name="Brestel-Perrin_1985">{{citationcite |book |author-last1=Berstel | author-first1=Jean | author-last2=Perrin | author-first2=Dominique | title=Theory of Codes | publisher=[[Academic Press]] | yeardate=1985 | zbl=0587.68066 | series=Pure and Applied Mathematics | volume=117 |page=377}}</ref>
* {{FS1037C MS188}}
<ref name="Brestel-Perrin-Reutenauer_2010">{{cite book |author-last1=Berstel |author-first1=Jean |author-last2=Perrin |author-first2=Dominique |author-last3=Reutenauer |author-first3=Christophe |title=Codes and automata |series=Encyclopedia of Mathematics and its Applications |volume=129 |___location=Cambridge, UK |publisher=[[Cambridge University Press]] |date=2010 |isbn=978-0-521-88831-8 |zbl=1187.94001 |page=137}}</ref>
}}
 
== Further reading ==
* {{cite book |title=Federal Standard 1037C: Telecommunications: Glossary of Telecommunication Terms |title-link=Federal Standard 1037C |chapter=self-synchronizing code |date=1996-08-06 |publisher=[[General Services Administration]] |chapter-url=https://www.its.bldrdoc.gov/fs-1037/fs-1037c.htm |url-status=dead |archive-url=https://web.archive.org/web/20220122224547/https://www.its.bldrdoc.gov/fs-1037/fs-1037c.htm |archive-date=2022-01-22}}
* [[MIL-STD-188]]
 
{{DEFAULTSORT:Self-Synchronizing Code}}
[[Category:Line codes]]
[[Category:Synchronization]]
 
 
{{telecomm-stub}}
 
[[simple:Self-synchronizing code]]