|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- [![Build Status](https://travis-ci.com/olagrottvik/encdec8b10b.svg?token=jVu3gMDvjaqfNCVgNVai&branch=master)](https://travis-ci.com/olagrottvik/encdec8b10b)
-
- # encdec8b10b
-
- Encode and decode 8B10B encoding
-
- ## Get
-
- ```
- python3 -m pip install encdec8b10b
- ```
-
- ## Usage
-
- ### Encode Data Byte
- ```
- from encdec8b10b import EncDec8B10B
-
- running_disp = 0
- byte_to_enc = 0xf
- running_disp, encoded = EncDec8B10B.enc_8b10b(byte_to_enc, running_disp)
- print(hex(encoded))
- Output >> 0xba
- ```
- ### Encode Control Byte
- ```
- from encdec8b10b import EncDec8B10B
-
- running_disp = 0
- byte_to_enc = 0xbc # comma
- ctrl = 1
- running_disp, encoded = EncDec8B10B.enc_8b10b(byte_to_enc, running_disp, ctrl)
- print(hex(encoded))
- Output >> 0x17c
- ```
- ### Decode Data Byte
- ```
- from encdec8b10b import EncDec8B10B
-
- byte_to_dec = 0xba
- ctrl, decoded = EncDec8B10B.dec_8b10b(byte_to_dec)
- print(hex(decoded))
- Output >> 0xf
- # ctrl variable confirm that it was a data byte
- print(ctrl)
- Output >> 0
- ```
- ### Decode Control Byte
- ```
- from encdec8b10b import EncDec8B10B
-
- byte_to_dec = 0x17c # comma encoded
- ctrl, decoded = EncDec8B10B.dec_8b10b(byte_to_dec)
- print(hex(decoded))
- Output >> 0xbc
- # ctrl variable confirm that it was a control byte
- print(ctrl)
- Output >> 1
- ```
-
- ### Verbosity
- Both functions have a verbose-mode to make it easier to confirm everything that's happening:
- ```
- from encdec8b10b import EncDec8B10B
-
- running_disp = 0
- byte_to_enc = 0xA0
- running_disp, encoded = EncDec8B10B.enc_8b10b(byte_to_enc, running_disp, verbose=True)
-
- Output >> Encoder - In: A0 - Encoded: 146 - Running Disparity: 0
-
- ctrl, decoded = EncDec8B10B.dec_8b10b(encoded, verbose=True)
-
- Output >> Decoded: A0 - Control: 0
- ```
-
-
- ## 8B10B
- 8B10B Encoding were implemented by Al Widmer and Peter Franaszek in 1983. It is still widely used in high-speed electronics.
-
- - [Original article](https://ieeexplore.ieee.org/document/5390392)
- - [Wikipedia](https://en.wikipedia.org/wiki/8b/10b_encoding)
-
-
- ### Thanks
- - [Ryu Shinhyung](https://opencores.org/projects/async_8b10b_encoder_decoder) for creating the tables used in this module
- - [Chuck Benz](http://asics.chuckbenz.com/) for creating awesome combinational 8B10B modules
- - [Alex Forencich](http://www.alexforencich.com/wiki/en/scripts/matlab/enc8b10b) for his 8B10B Matlab script
|