Qu'est-ce que Codage one-hot ?
Codage qui attribue une bascule à chaque état d'une machine à états, une seule étant à 1 à tout moment. La logique est simple et tend à être rapide ; très utilisé sur FPGA.
Nom japonais: ワンホット符号化
« Codage one-hot » apparaît dans 2 questions d'entraînement réparties sur 1 thèmes, dont HDL et vérification.
Domaine: HDL et vérification
Comment fonctionne le codage one-hot des états
Dans une machine à états finis, le codage one-hot attribue à chaque état sa propre bascule, et exactement une bascule est à 1 à tout instant. Quatre états deviennent 0001, 0010, 0100 et 1000. Tester si la machine est dans un état donné revient à examiner un seul bit ; les sorties qui dépendent de l'état se réduisent donc souvent à une seule bascule ou à un petit OU de quelques-unes. L'entrée d'état suivant de chaque bascule est le OU des conditions des transitions entrant dans cet état, chacune combinée par ET avec le bit de l'état source, ce qui maintient une faible profondeur logique et une machine rapide.
Codage one-hot ou binaire
Le codage binaire numérote les états et ne nécessite que la partie entière supérieure de log2 N bascules : trois états tiennent dans deux bascules alors que le one-hot en exige trois, et seize états nécessitent quatre bascules contre seize. Le coût du codage binaire est une logique de décodage plus large, car reconnaître un état implique de comparer tous les bits d'état. Le codage en code Gray, troisième option, attribue les codes de sorte que les transitions fréquentes ne changent qu'un bit, ce qui réduit l'activité de commutation. Le binaire convient aux conceptions où les bascules sont rares ou le nombre d'états élevé ; le one-hot convient à la vitesse et à la simplicité lorsque les bascules sont abondantes.
Pourquoi les FPGA le privilégient
Un bloc logique de FPGA associe chaque petite table de correspondance (LUT) à une ou plusieurs bascules : les registres y sont abondants, tandis que les fonctions logiques larges doivent être réparties sur plusieurs niveaux de LUT. Le codage one-hot s'adapte bien à cette structure : la fonction d'état suivant de chaque bit d'état ne fait généralement intervenir que quelques entrées et tient dans une seule LUT, ce qui raccourcit les chemins critiques. Les outils de synthèse détectent couramment les machines à états et choisissent automatiquement un codage, souvent le one-hot pour les machines petites et moyennes, même si les concepteurs peuvent imposer un autre choix. En ASIC, où les bascules coûtent davantage de surface, le binaire ou d'autres codages compacts sont plus courants.
Questions fréquentes
Combien de bascules le codage one-hot nécessite-t-il ?
Une bascule par état : une machine à N états nécessite N bascules. Le codage binaire de la même machine ne nécessite que la partie entière supérieure de log2 N.
Quelle est la différence entre codage d'états one-hot et binaire ?
Le one-hot utilise une bascule par état avec un seul bit à 1, ce qui donne une logique de décodage simple et rapide au prix de davantage de registres. Le codage binaire stocke le numéro d'état dans le moins de bascules possible, mais nécessite une logique plus large pour décoder chaque état.
Le codage one-hot en conception numérique est-il le même qu'en apprentissage automatique ?
L'idée est la même : un vecteur dont un seul élément vaut 1 identifie un élément d'un ensemble. En matériel, il code l'état courant d'une machine à états ou un signal de sélection, tandis qu'en apprentissage automatique il représente une valeur catégorielle sous forme de vecteur numérique.