Codifica 4B/5B
# Codifica 4B/5B

Nelle telecomunicazioni, 4B5B è una forma di codice per la trasmissione di dati. 4B5B lavora mappando gruppi di 4 bit in gruppi di 5. Siccome ci sono 32 possibili combinazioni usando 5 bit e solo 16 usandone 4, i 16 gruppi di 5 bit col maggior numero di transizioni sono usati per fornire più transizioni possibili. 4B5B garantisce almeno una transizione per blocco (ingresso di 4 bit / uscita di 5) il quale permette al segnale di essere scoperto. Sfortunatamente l'uso di 5 bit per rappresentarne 4 implica che per trasmettere i dati abbiamo bisogno di una larghezza di banda più grande del 25%.

Dipendentemente dallo standard o dalle specifiche, potrebbero esserci diversi caratteri che 4B5B non usa. La presenza di uno dei caratteri "inusati" nello stream di dati può essere usato come indice di un problema nella connessione. Infatti, i caratteri non usati vengono attualmente usati per scovare gli errori negli stream di dati.

Con la codifica 4B5B vengono risolti i problemi relativi alla trasmissione di più zeri consecutivi. Le sequenze generate vengono poi trasmesse attraverso una codifica NRZI (Senza ritorno a zero invertito), che elimina anche il problema della presenza di un numero eccessivo di 1 consecutivi. Il risultato è che la codifica 4B/5B elimina ripetizioni consecutive di un numero eccessivo di valori binari tutti uguali.

4B5B è usato nei seguenti standard:

* 100BASE-TX standard definito da IEEE 802.3u nel 1995.
* AES10-2003 MADI (Multichannel Audio Digital Interface)

## Esempio

Un esempio di mappatura può essere il seguente:

| Nome | 4B | 5B | Descrizione |
| - | - | - | - |
| 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 |
| I | -NONE- | 11111 | Idle |
| J | -NONE- | 11000 | SSD #1 |
| K | -NONE- | 10001 | SSD #2 |
| T | -NONE- | 01101 | ESD #1 |
| R | -NONE- | 00111 | ESD #2 |
| H | -NONE- | 00100 | Halt |

SSD = (Start of Stream Delimiter - 100BASE-TX Ethernet) Delimitatore di inizio stream

ESD = (End of Stream Delimiter - 100BASE-TX Ethernet) Delimitatore di fine stream

### I caratteri seguenti sono settati come riferimenti a caratteri di controllo

| Carattere di Controllo | Simboli 5B | Scopo |
| - | - | - |
| JK | 11000 10001 | Sync, SSD |
| II | 11111 11111 | Non Usato |
| TT | 01101 01101 | Non Usato |
| TS | 01101 11001 | Non Usato |
| IH | 11111 00100 | SAL |
| TR | 01101 00111 | ESD |
| SR | 11001 00111 | Non Usato |
| SS | 11001 11001 | Non Usato |
| HH | 00100 00100 | HDLC0 |
| HI | 00100 11111 | HDLC1 |
| HQ | 00100 00000 | HDLC2 |
| RR | 00111 00111 | HDLC3 |
| RS | 00111 11001 | HDLC4 |
| QH | 00000 00100 | HDLC5 |
| QI | 00000 11111 | HDLC6 |
| QQ | 00000 00000 | HDLC7 |

HDLC = High-Level Data Link Control

