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.

États illégaux et récupération

Avec N bascules, le one-hot n'utilise que N des 2^N motifs possibles ; le motif tout à zéro et les motifs à plusieurs bits actifs sont donc illégaux. Du bruit, un glitch ou une inversion de bit induite par rayonnement peut faire entrer la machine dans l'un d'eux, où elle peut se bloquer ou se comporter de façon imprévisible. Le codage binaire présente le même problème avec les codes inutilisés, comme 11 dans une machine à trois états. Les conceptions robustes définissent donc une branche par défaut qui ramène tout état inattendu vers un état connu, et les outils de synthèse proposent des options de machine à états sûre qui conservent cette logique de récupération au lieu de l'éliminer par optimisation.

S'entraîner : questions sur Codage one-hot

Quelle est la caractéristique du codage one-hot des états d'une machine d'états ?

  1. AIl représente les états en binaire et minimise le nombre de bascules
  2. BToutes les bascules valent toujours 1
  3. CIl utilise autant de bascules que d'états, une seule valant 1 à la fois, ce qui tend à simplifier et accélérer la logique d'état suivant et de sortie
Afficher la réponse et l'explication

Réponse : C. Il utilise autant de bascules que d'états, une seule valant 1 à la fois, ce qui tend à simplifier et accélérer la logique d'état suivant et de sortie

En codage one-hot, quatre états sont par exemple représentés par 0001, 0010, 0100 et 1000, une bascule étant attribuée à chaque état. Le nombre de bascules augmente, mais la présence dans un état se lit sur un seul bit, ce qui rend la logique d'état suivant et de sortie peu profonde et rapide. Il est souvent utilisé sur FPGA, riches en bascules ; pour réduire le nombre de bascules, on utilise le codage binaire.

Pour une machine d'états à trois états, quelle combinaison donne le nombre de bascules nécessaires pour mémoriser l'état (codage binaire / codage one-hot) ?

  1. A3 / 2
  2. B2 / 3
  3. C1 / 3
Afficher la réponse et l'explication

Réponse : B. 2 / 3

En codage binaire, les états sont représentés par un numéro binaire ; 2 bits (2 bascules), 00, 01 et 10, suffisent pour trois états. En codage one-hot, une bascule par état est utilisée, soit 3. En binaire, le code inutilisé 11 subsiste ; il est prudent de fixer sa destination par default pour revenir à un état correct si le bruit y fait entrer la machine.

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.

« Codage one-hot » dans les explications

Questions mentionnant « Codage one-hot » (2)

  1. Quelle est la caractéristique du codage one-hot des états d'une machine d'états ?
  2. Pour une machine d'états à trois états, quelle combinaison donne le nombre de bascules nécessaires pour mémoriser l'état (codage binaire / codage one-hot) ?

Termes associés

Bascule (flip-flop) FPGA Affectation bloquante Affectation non bloquante Banc de test (testbench) Boucle combinatoire Instruction generate Langage de description matérielle Latch involontaire Lint

Retour au glossaire