One-hot
# One-hot

| Codice binario | Codice Gray | One-hot |
| - | - | - |
| 000 | 000 | 00000001 |
| 001 | 001 | 00000010 |
| 010 | 011 | 00000100 |
| 011 | 010 | 00001000 |
| 100 | 110 | 00010000 |
| 101 | 111 | 00100000 |
| 110 | 101 | 01000000 |
| 111 | 100 | 10000000 |

In elettronica digitale, l'espressione one-hot si riferisce ad un gruppo di bit tutti posti a 0 tranne uno. Un'implementazione simile in cui tutti i bit sono posti a 1 tranne uno è chiamata one-cold.

## Utilizzo

Un'usuale applicazione della codifica one-hot è per indicare lo stato di una macchina a stati finiti. Infatti, mentre con il codice binario o il codice Gray un automa a stati finiti necessita di un decoder per determinare il suo stato, una macchina one-hot si trova nello stato n-esimo corrispondente al bit impostato ad 1.

Un contatore ad anello con quindici stati ordinati sequenzialmente è un esempio di questo automa. Un'implementazione one-hot necessiterebbe di quindici flip-flop concatenati in serie, con ogni output $Q_i$ connesso con l'input $D_{i+1}del$ successivo e l'output $Q_n$ dell'ultimo flip-flop connesso con l'input $D_1$ del primo. Il primo flip-flop rappresenta il primo stato, il secondo rappresenta il secondo stato e così via. Al ripristino della macchina tutti i flip-flop sono resettati a 0, tranne il primo della catena che è impostato a '1'. Il colpo di clock successivo, il bit hot avanza di un posto. Il bit impostato ad 1 progredisce in questo modo fino al quindicesimo stato, dopodiché la macchina torna al primo stato.

Un circuito di decodifica dell'indirizzo (address decoder) converte un codice Gray o binario nella rappresentazione one-hot. Un codificatore a priorità (priority encoder) effettua l'operazione inversa.

## Differenze dagli altri metodi di codifica

### Vantaggi

* Determinare lo stato della macchina al costo costante di accesso ad un flip-flop
* Cambiare lo stato della macchina al costo costante di accesso a due flip-flop
* Semplice da progettare e modificare
* Rilevare semplicemente uno stato improprio dei flip-flop
* In generale, possibilità di girare ad un ritmo di clock più elevato

### Svantaggi

* Richiede molti più flip-flop, il che rende impossibile effettuare questa implementazione, ad esempio, in un dispositivo PAL
* Possibilità più elevata di capitare in uno stato improprio
