Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial Internet of Things >> Embarqué

Comparer l'encodage binaire, Gray et One-Hot

Cet article présente une comparaison des implémentations résultant de l'utilisation d'encodages binaires, Gray et one-hot pour implémenter des machines à états dans un FPGA. Ces encodages sont souvent évalués et appliqués par les outils de synthèse et de mise en œuvre. Il est donc important de savoir pourquoi le logiciel prend ces décisions.

Les machines à états finis (FSM) sont une partie très courante de presque tous les systèmes numériques. C'est pourquoi les outils de synthèse inspectent souvent votre code pour détecter les FSM et effectuer des optimisations susceptibles de modifier l'encodage des états. Peu importe si vous avez soigneusement sélectionné et spécifié les valeurs qui implémentent vos états dans votre code source, l'outil de synthèse peut remplacer ces valeurs par d'autres qui peuvent même avoir une longueur de bits différente de celle de votre encodage d'origine.

Si vous souhaitez vous familiariser avec la mise en œuvre des machines à états dans Verilog, vous devriez lire mon article intitulé Création de machines à états finis dans Verilog.


Encodage des états :Gray vs. Binary vs. One-Hot

Les trois encodages les plus populaires pour les états FSM sont binaire, Gray et one-hot.

Encodage binaire

L'encodage binaire est la méthode simple que vous pouvez utiliser intuitivement lorsque vous attribuez des valeurs séquentiellement à vos états. De cette façon, vous utilisez le moins de bits possible pour encoder vos états.

Un exemple d'encodage one-hot. Image de Steve Arar

Encodage Gray

Le code Gray consiste en une séquence où un seul bit change entre une valeur et la suivante. En plus d'utiliser également le nombre minimum de bits, ce codage minimise la consommation d'énergie dynamique si la séquence d'états est suivie de manière optimale.

La roue à code Gray. Image de Marie Christiano

Encodage One-Hot

Enfin, l'encodage one-hot consiste à utiliser un bit représentant chaque état, de sorte qu'à tout moment, un état sera codé comme 1 dans le bit qui représente l'état actuel, et 0 dans tous les autres bits. Cela peut sembler peu efficace au premier abord en raison du nombre de bits utilisés et du nombre excessif d'états invalides. Cependant, l'encodage à chaud est très efficace pour simplifier la logique de stimulation des bascules, car il n'est pas nécessaire de décoder les états. Les bits sont les États.

Un exemple d'encodage one-hot. Image de Steve Arar

Pour en savoir plus sur les encodages d'état, vous pouvez consulter l'article Encoder les états d'une machine à états finis en VHDL par Steve Arar.

Quel encodage est le meilleur ?

C'est une question difficile, principalement parce que chaque encodage a ses avantages et ses inconvénients, il s'agit donc d'un problème d'optimisation qui dépend d'un grand nombre de facteurs.

Maintenant, toutes ces affirmations ne sont que des suppositions éclairées, et trouver l'affectation d'état optimale est un problème compliqué. Pour cette raison, mon conseil officiel est de laisser le compilateur décider pour vous. Cela dit, j'ai décidé de comparer les résultats de ces trois encodages dans trois outils de développement différents et trois machines à états différentes.

Dans le prochain article, nous discuterons des résultats de mes expériences.


Embarqué

  1. Comparaison de l'acier des séries 300, 400 et 500
  2. Numération octale et hexadécimale
  3. Soustraction binaire
  4. Structures et classes en C++
  5. Comparaison Six Sigma et production au plus juste
  6. Quel type de codage dois-je utiliser ? Exemples d'applications FPGA
  7. Code Morse et double extorsion :l'état des logiciels malveillants aujourd'hui
  8. Protection contre l'incendie des machines EDM et CNC :comparaison de vos options
  9. Propriétés et qualités de la fonte grise expliquées