5ca0bd9b23
Bump urllib3 from 1.24.2 to 1.26.5 |
||
---|---|---|
encdec8b10b | ||
tests | ||
.gitignore | ||
.travis.yml | ||
LICENSE | ||
Makefile | ||
README.md | ||
requirements.txt | ||
setup.py |
README.md
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.
Thanks
- Ryu Shinhyung for creating the tables used in this module
- Chuck Benz for creating awesome combinational 8B10B modules
- Alex Forencich for his 8B10B Matlab script