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.[1] Un'implementazione simile in cui tutti i bit sono posti a 1 tranne uno è chiamata one-cold.[2]
Utilizzo
[modifica | modifica wikitesto]Un'usuale applicazione della codifica one-hot è per indicare lo stato di una macchina a stati finiti.[3] 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 Qi connesso con l'input Di+1del successivo e l'output Qn dell'ultimo flip-flop connesso con l'input D1 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
[modifica | modifica wikitesto]Vantaggi
[modifica | modifica wikitesto]- 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[4]
Svantaggi
[modifica | modifica wikitesto]- Richiede molti più flip-flop,[5] il che rende impossibile effettuare questa implementazione, ad esempio, in un dispositivo PAL
- Possibilità più elevata di capitare in uno stato improprio[6]
Note
[modifica | modifica wikitesto]- ^ David and Harris, Sarah Harris, Digital design and computer architecture, 2nd ed., San Francisco, Calif., Morgan Kaufmann, 2013, p. 129, ISBN 978-0-12-394424-5.
- ^ (EN) Decoders, su csit-sun.pub.ro, Politechnica University of Bucharest - Dipartimento di informatica. URL consultato il 9 gennaio 2014.
- ^ (EN) Roger L. Traylor, One-Hot State Machines (PDF), su web.engr.oregonstate.edu, Oregon State University. URL consultato il 9 gennaio 2014 (archiviato dall'url originale il 9 gennaio 2014).
- ^ Xilinx. "HDL Synthesis for FPGAs Design Guide". section 3.13: "Encoding State Machines". Appendix A: "Accelerate FPGA Macros with One-Hot Approach". 1995.
- ^ Con n stati, la codifica one-hot richiede n bit, mentre un altro tipo di codifica ne può richiedere
- ^ Ad esempio quando tutti gli stati sono a zero o più di uno stato è impostato ad 1