88 lines
2.0 KiB
Markdown
88 lines
2.0 KiB
Markdown
# 运行
|
|
|
|
运行工具: 运行你的命令行工具时,输入数据需要以十六进制格式提供,并且可以指定控制字符:
|
|
```bash
|
|
python main.py -m encode -i "16A" -c 1
|
|
python main.py -m decode -i "16A"
|
|
```
|
|
# 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)
|