8b10b-code
De 8B10B code (ook 8b / 10b code ) is een regel code in de telecommunicatie-technologie ontwikkeld in 1983 door Albert Xavier Widmer en Peter Franaszek . 8 informatiebits worden gecodeerd door 10 lijnbits . Volledige gelijkspanningsegalisatie is gegarandeerd en de klokcyclus en de datawoordlimieten kunnen ook gemakkelijk worden hersteld. De bitsnelheid neemt met 25 procent toe ( overhead ). Een soortgelijk gestructureerde code is de 16b18b-code (ook Albert Xavier Widmer) met slechts 12,5 procent overhead.
Andere, aanzienlijk efficiëntere codes zijn de 64b66b-code met 3 procent overhead , die 64 bits aan 66 bits toewijst , en de 128b130b-code met slechts 1,5 procent overhead. Deze codes garanderen echter eigenschappen (zoals vrijheid van gelijkspanning, herhalingssnelheid van hetzelfde niveau, herkenning van datawoordlimieten) alleen op een statistisch gemiddelde.
eigendommen
De 8b10b-code gebruikt een tien-bit lang codewoord om één octet te verzenden . Er wordt voldaan aan de volgende eigenschappen:
Gelijkspanningsvereffening:
Het aantal enen per codewoord wijkt maximaal twee af van het aantal nullen. Dit geeft drie soorten codewoorden:
- 252 neutralen (neutrale dispariteit): hetzelfde aantal "1" en "0", dus vijf keer "1" en vijf keer "0"
- 210 positief (positieve ongelijkheid): zes keer "1" en vier keer "0"
- 210 negatief (negatieve ongelijkheid): vier keer "1" en zes keer "0"
In een gegevensstroom komen "1" en "0" met dezelfde waarschijnlijkheid voor. Als u nu een "1" als positieve spanning + U en een "0" als negatieve spanning −U verzendt, heeft het gecodeerde signaal (bij een bepaalde datasnelheid) een lagere grensfrequentie, d.w.z. Met andere woorden, de spanning wordt uitgemiddeld over een langere bitreeks, zodat het signaal geen gelijkspanningscomponent bevat. Deze gelijkspanningsvereffening maakt bijvoorbeeld een capacitieve of inductieve koppeling van zender en ontvanger mogelijk.
Maximaal aantal identieke lijnbits in een rij
In het geval van pure datatransmissie , beperkt het ontwerp van de codering het maximale aantal (maximale runlengte) van opeenvolgende identieke lijnbits ( symbolen ) tot vijf; H. Een niveauverandering treedt uiterlijk na vijf klokcycli op.
Er zijn drie besturingswoorden (zij vertegenwoordigen geen gebruikersgegevens) waarin op een bepaald punt binnen de tien regelbits per gegevenswoord, gedurende zes klokcycli (komma's genoemd) opzettelijk geen niveauverandering plaatsvindt. Dit maakt een eenvoudig herstel van de datawoordgrenzen mogelijk. Het klokherstel zelf heeft zeer lage eisen vanwege de frequente niveauveranderingen.
ongelijkheid
Naast het te coderen datawoord (D.00.0 tot D31.7 voor reguliere datawoorden 0…255, Kxx.y voor twaalf andere mogelijke stuurwoorden), heeft de 8b10b-encoder ook de vorige dispariteit als ingangsvariabele. Hieruit worden de tien lijnbits en de volgende dispariteit berekend die nodig is voor het coderen van het volgende datawoord.
| forward gegaan ongelijkheid |
Dispariteit van het codewoord (na dispariteit) |
||
|---|---|---|---|
| −1 | ± 0 | +1 | |
| −1 |
Nee × |
Ja → (−1) |
Ja ↗ (+1) |
| +1 |
Ja ↘ (−1) |
Ja → (+1) |
Nee × |
Er wordt voor gezorgd dat het verschil alleen de waarden −1 en +1 kan aannemen.
In het eenvoudigste geval kan de codering worden gedaan met behulp van een alleen-lezen geheugen 1024 × 11 bits: 10 bits (acht databits, schakelen tussen datawoord / stuurwoord, vorige pariteit) → 11 bit (tien kanaalbits, volgende pariteit) . De code is echter zo gestructureerd dat de codering kan worden opgesplitst in twee aanzienlijk kleinere tabellen (128 × 7 bit en 32 × 5 bit) en een beetje extra logica.
K-woorden
Naast 256 mogelijke datawoorden kunnen twaalf mogelijke stuurwoorden worden verzonden. Deze controlewoorden worden K-woorden genoemd. Ze zijn nodig voor besturingsfuncties in protocollagen op een hoger niveau. Drie van deze K-woorden hebben een bitpatroon dat niet over codewoordgrenzen heen kan ontstaan. Dit betekent dat de laatste bits van een codewoord samen met de eerste bits van een volgend codewoord nooit kunnen resulteren in het bitpatroon van een van deze drie speciale K-woorden. Dit wordt gebruikt in seriële datastromen om het begin en het einde van een codewoord te herkennen. Deze drie speciale K-woorden worden ook wel kommawoorden genoemd .
Fout detectie
Omdat niet alle 1024 combinaties die met tien bits kunnen worden weergegeven, worden gebruikt en bovendien strikte selectieregels in acht moeten worden genomen, kunnen individuele bitfouten met een zekere waarschijnlijkheid (ca. 75 procent) worden gedetecteerd. Er kunnen echter ook geldige foutieve datawoorden ontstaan. Voor veilige verzendingen zijn daarom extra controlesommen of voorwaartse foutcorrectie nodig.
Toepassingen
De 8b10b-code vindt o.a. Gebruik in de volgende transmissienormen:
- PCI-Express (alleen 1.x en 2.x; 3.x gebruikt 128b / 130b )
- Seriële ATA (tot SATA III)
- Serial Attached SCSI (tot SAS-3; vanaf SAS-4 wordt 128b / 150b gebruikt)
- Fibre Channel (tot 8GFC; 10GFC, 16GFC gebruiken 64b / 66b)
- InfiniBand (tot QDR; FDR10, FDR en nieuwer gebruiken 64b / 66b)
- FireWire 800, S1600, S3200 ("bètamodus")
- DisplayPort (tot versie 1.4)
- DVI en HDMI (tot versie 2.0) ( TMDS )
- CPRI
- OBSAI
- USB 3.0 ( USB tot 2.0 gebruikt NRZI , USB 3.1 128b / 132b), USB 3.2 schakelt over naar 128b132b-codering
- Ethernet met -X - PCS code , tot 1 Gigabit Ethernet (niet meer gebruikt bij alle opvolgers)
De hoogtepunten van de 8b10b-code waren de jaren 2007 tot 2013. Bij nieuwe ontwikkelingen hebben deze plaatsgemaakt voor de scamblingcodes (64b66b tot 512b514b) en hun opvolgers (geïntegreerde foutcorrectie, multi-level codering ).
Zie ook
Individueel bewijs
- ↑ SAS Protocol Layer - 4 (SPL-4) concept 08b . INCITS. 18 juli 2016. Ontvangen op 21 juli 2016.
- ↑ http://www.cpri.info/spec.html CPRI gemeenschappelijke openbare radio-interface
- ↑ http://www.obsai.com Open Base Station Architecture Initiative, zie RP-specificaties: RP3_Vx.x.pdf (Physical Layer)
- ↑ https://www.heise.de/ct/hotline/USB-2-0-ausgebremst-325842.html
- ↑ USB3.0-beschrijving op itwissen.info ( Memento van 27 februari 2009 in het internetarchief )
web links
- AX Widmer, PA Franaszek: Een DC-gebalanceerd, gepartitioneerd blok, 8B / 10B transmissiecode . Gepubliceerd in het IBM Journal of Research and Development op de IBM-website. Ontvangen 26 april 2015.
- 8b/10b-codering op knowledgetransfer.net . Ontvangen 26 april 2015.