1. 什麼是4B/5B編碼
就是用5bit的一個二進制數來表示一個4bit二進制數.
2. 目的
爲了保證物理層通信的同步(一般數字電路實現),線路中傳輸的碼流需要有足夠多的跳變.
顯然正常的方式如:00000000(0)~11111111(255)在大部分情況下是沒有足夠跳變的。
曼徹斯特編碼有足夠跳變,但效率低,這裏不進一步討論了。
因此就有了4B/5B編碼,用一個5bit表示一個4bit,效率應在80%,它爲什麼有足夠多的跳變呢?
5bit(32種組合)中挑選一些有足夠跳變的來表示4bit(16種組合)。
3. 編碼基本規則
每個5bit碼組中不多於3個"0"
或者5bit碼組中不少於2個"1"
附:USB PD3.0中4B/5B對應表
表格來自:USB_PD_R3_0 V2.0 20190829 + ECNs 2020-02-07 Redline.pdf
P70,Table 5-1 4b5b Symbol Encoding Table
(如0~F的對應,顯然遵循上面的2條規則的,不是數學邏輯轉換關係,應不必尋求對應公式,按對應錶轉換即可)
Name | 4b | 5b | Symbol Description |
---|---|---|---|
0 | 0000 | 11110 | hex data 0 |
1 | 0001 | 01001 | hex data 1 |
2 | 0010 | 10100 | hex data 2 |
3 | 0011 | 10101 | hex data 3 |
4 | 0100 | 01010 | hex data 4 |
5 | 0101 | 01011 | hex data 5 |
6 | 0110 | 01110 | hex data 6 |
7 | 0111 | 01111 | hex data 7 |
8 | 1000 | 10010 | hex data 8 |
9 | 1001 | 10011 | hex data 9 |
A | 1010 | 10110 | hex data A |
B | 1011 | 10111 | hex data B |
C | 1100 | 11010 | hex data C |
D | 1101 | 11011 | hex data D |
E | 1110 | 11100 | hex data E |
F | 1111 | 11101 | hex data F |
Sync-1 | K-code | 11000 | Startsynch #1 |
Sync-2 | K-code | 10001 | Startsynch #2 |
RST-1 | K-code | 00111 | Hard Reset #1 |
RST-2 | K-code | 11001 | Hard Reset #2 |
EOP | K-code | 01101 | EOP End of Packet |
Reserved | Error | 00000 | Shall Not be used |
Reserved | Error | 00001 | Shall Not be used |
Reserved | Error | 00010 | Shall Not be used |
Reserved | Error | 00011 | Shall Not be used |
Reserved | Error | 00100 | Shall Not be used |
Reserved | Error | 00101 | Shall Not be used |
Sync-3 | K-code | 00110 | Startsynch #3 |
Reserved | Error | 01000 | Shall Not be used |
Reserved | Error | 01100 | Shall Not be used |
Reserved | Error | 10000 | Shall Not be used |
Reserved | Error | 11111 | Shall Not be used |