title: One-hot
text: # 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
  