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é

Choisir le bon encodage FPGA : étude pratique avec le Jeu de la Vie de Conway

Suivez trois expériences illustrant comment choisir l'encodage le plus adapté pour une conception FPGA.

Lors de la conception de logique FPGA, l'outil de synthèse sélectionne généralement l'encodage ; il est généralement préférable de faire confiance à sa décision. Cependant, comprendre les nuances des représentations binaire, Gray et one-hot peut vous aider à anticiper quand le compilateur peut favoriser l'une plutôt que les autres.

Cet article parcourt une expérience pratique qui utilise le Jeu de la Vie de Conway comme banc de test, mettant en lumière les compromis qui émergent lorsque chaque encodage est appliqué à un grand réseau de machines à états finis.

Dans cette série, nous avons couvert la construction de FSM en Verilog, l'impact des états initiaux et de la mémoire sur l'encodage, et une comparaison de haut niveau des schémas binaire, one-hot et Gray.

Le système sous test

Pour amplifier les différences matérielles, j'ai instancié une machine d'état des dizaines de fois sur une grille 23×23, permettant une comparaison directe des encodages binaire, Gray et one-hot.

Le Jeu de la Vie de Conway est un automate cellulaire classique qui modélise la naissance, la survie et la mort de cellules sur un réseau 2-D rectangulaire. Chaque cellule suit trois règles simples à chaque cycle :

  1. Les cellules vivantes avec deux ou trois voisines vivantes survivent.
  2. Les cellules mortes avec trois voisines vivantes deviennent vivantes.
  3. Toutes les autres cellules meurent ou restent mortes.

Ces règles donnent naissance à une riche variété de motifs émergents et fournissent une charge de travail propre et bien comprise pour évaluer les stratégies d'encodage.

Ci-dessous se trouve un GIF du Canon Planeur de Bill Gosper, un motif populaire dans le Jeu de la Vie.

Choisir le bon encodage FPGA : étude pratique avec le Jeu de la Vie de Conway

Une variation du Jeu de la Vie de Conway, connue sous le nom de Canon Planeur de Bill Gosper. Gif créé par Lucas Vieira [CC BY‑SA 3.0]

Code Verilog

La logique de cellule est modélisée comme un FSM à 8 états. Bien que le calcul par cellule du Jeu de la Vie se termine en un seul cycle, la conception à 8 états crée une différence notable entre les encodages. Le module Verilog suivant démontre l'encodage binaire original.

`define STATE_0 3'b000 `define STATE_1 3'b001 `define STATE_2 3'b010 `define STATE_3 3'b011 `define STATE_4 3'b100 `define STATE_5 3'b101 `define STATE_6 3'b110 `define STATE_7 3'b111

module LifeCell( input clk, input nrst, input seed, input [7:0] neighbors, output reg alive); reg [2:0] state; always @ (posedge clk) if (nrst == 0) state <= `STATE_0; else case(state) `STATE_0: begin // ... state <= `STATE_1; end `STATE_1: begin // ... state <= `STATE_2; end // ... `STATE_7: begin // ... state <= `STATE_1; end endcase endmodule

Si vous souhaitez une analyse plus approfondie du code, le projet complet est disponible sur GitHub.

Implémentations d'encodage FPGA

La conception a été synthétisée sur une grille de 23×23 cellules, résultant en 27 implémentations distinctes : trois variantes de FSM, chacune compilée avec les encodages binaire, Gray et one-hot, sur trois FPGA cibles.

FSM #1 : Modèle original

Ce FSM exécute un état initial une fois, puis parcourt les sept états restants — une séquence qui suggérait que l'encodage Gray pourrait être avantageux.

Choisir le bon encodage FPGA : étude pratique avec le Jeu de la Vie de Conway

FSM #2 : Une séquence

Agissant comme un simple compteur 3 bits, ce FSM a renforcé mon attente que l'encodage Gray dominerait.

Choisir le bon encodage FPGA : étude pratique avec le Jeu de la Vie de Conway

FSM #3 : Un enchevêtrement arbitraire

Cette variante partage le chemin critique du FSM #1 mais prend une route non-linéaire quand le nombre de voisins dépasse trois. L'encodage one-hot semblait être le choix naturel pour de telles transitions irrégulières.

Choisir le bon encodage FPGA : étude pratique avec le Jeu de la Vie de Conway

Architectures cibles

Les implémentations ont été construites avec les chaînes d'outils des fournisseurs pour les dispositifs suivants :

Comparaison des résultats

L'évaluation comparative de conceptions FPGA est intrinsèquement pilotée par des métriques. J'ai choisi quatre indicateurs clés — utilisation des ressources logiques, nombre de registres, fréquence maximale estimée et puissance sur puce — et assigné des scores pondérés à chacun. Le meilleur performeur dans chaque métrique a gagné +1 (ou +2 pour les métriques pondérées), le pire a reçu -1 (ou -2), et le milieu a reçu 0.

Les scores cumulatifs pour chacune des 27 implémentations sont montrés ci-dessous.

Choisir le bon encodage FPGA : étude pratique avec le Jeu de la Vie de Conway

Tableau des résultats pour les 27 implémentations. Le vert met en surbrillance le meilleur encodage, le rouge le pire, et le jaune la médiane (pas d'égalité).

Dans l'ensemble, l'encodage one-hot apparaît dans les deux dernières lignes, avec seulement deux instances de parité avec d'autres schémas. En revanche, l'encodage Gray émerge systématiquement comme le meilleur performeur, surtout quand la fréquence et la puissance sont plus fortement pondérées.

Pour mettre en évidence les gagnants, le tableau ci-dessous isole l'encodage dominant pour chaque variante.

Choisir le bon encodage FPGA : étude pratique avec le Jeu de la Vie de Conway

Le verdict

Bien que les données penchent vers l'encodage Gray pour cette charge de travail particulière du Jeu de la Vie, le résultat dépend des métriques que vous privilégiez. Si vous valorisez l'utilisation des ressources plutôt que la performance, un classement différent peut émerger. Mon but ici n'est pas de prescrire une règle universelle mais d'illustrer comment des preuves empiriques peuvent guider les choix d'encodage.

N'hésitez pas à explorer le code source, les 27 implémentations synthétisées ou la simulation vivante du Jeu de la Vie sur le dépôt GitHub du projet.

Embarqué

  1. Swissbit lance U‑50n Nano USB 3.1 Flash Drive : stockage rugged haute performance pour industriel & IoT
  2. AAEON COM-CFHB6 : Module Type-6 compact haute performance avec CPU Intel, 48 Go DDR4 ECC, 24 lignes PCIe pour Edge, AIOT et applications industrielles
  3. Choisir le Bon Contrôleur : PLC, PAC, DCS ou IPC Expliqués
  4. Quand utiliser le test de carte nue pour un développement PCB fiable
  5. Protégez vos moteurs : les avantages essentiels des réacteurs de ligne
  6. Choisir le bon moment pour déployer une grue à flèche droite : guide pratique
  7. Secteurs exploitant le Kevlar : de l'aérospatial à la protection individuelle
  8. Maximiser l'efficacité avec les solutions Remote Expert dans l'industrie 4.0
  9. Choisir le bon alliage d'aluminium pour votre projet