Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial Internet of Things >> Ingebed

De juiste FPGA-encoding kiezen: Een hands-on studie met Conway's Game of Life

Volg drie experimenten die illustreren hoe de meest geschikte encoding voor een FPGA-ontwerp te kiezen.

Bij het ontwerpen van FPGA-logica selecteert de synthesis-tool typisch de encoding; het is doorgaans het beste om haar beslissing te vertrouwen. Echter, de nuances van binaire, Gray en one-hot representaties te begrijpen kan helpen om te anticiperen wanneer de compiler de ene boven de andere kan prefereren.

Dit artikel wandelt door een praktisch experiment dat Conway's Game of Life gebruikt als testbench, waarbij de trade-offs die ontstaan wanneer elke encoding wordt toegepast op een grote array van finite-state machines, worden belicht.

In deze serie hebben we FSM-constructie in Verilog behandeld, de impact van initiële staten en geheugen op encoding, en een hoog-niveau vergelijking van binaire, one-hot en Gray schema's.

Het systeem onder test

Om de hardwareverschillen te vergroten, instantieerde ik een state machine tientallen keren over een 23×23 grid, wat een directe vergelijking van binaire, Gray en one-hot encodings toestaat.

Conway's Game of Life is een klassieke cellulair automaat dat de geboorte, overleving en dood van cellen op een rechthoekig 2-D rooster modelleert. Elke cel volgt drie eenvoudige regels in elke cyclus:

  1. Levende cellen met twee of drie levende buren overleven.
  2. Dode cellen met drie levende buren worden levend.
  3. Alle andere cellen sterven of blijven dood.

Deze regels geven aanleiding aan een rijke verscheidenheid aan emergente patronen en bieden een schone, goed begrepen workload voor het evalueren van encoding-strategieën.

Hieronder is een GIF van Bill Gosper's Glider Gun, een populair patroon in het Game of Life.

De juiste FPGA-encoding kiezen: Een hands-on studie met Conway s Game of Life

Een variatie van Conway's Game of Life, bekend als Bill Gosper's Glider Gun. Gif gemaakt door Lucas Vieira [CC BY-SA 3.0]

Verilog Code

De cellogica wordt gemodelleerd als een 8-state FSM. Hoewel de Game of Life's per-cel berekening in een enkele cyclus compleet is, creëert het 8-state ontwerp een merkbaar verschil tussen encodings. De volgende Verilog-module demonstreert de originele binaire encoding.

`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

Als u een diepere duik in de code wilt, is het volledige project beschikbaar op GitHub.

FPGA Encoding Implementaties

Het ontwerp werd gesynthetiseerd op een 23×23 cel grid, wat resulteerde in 27 distincte implementaties: drie FSM-varianten, elk gecompileerd met binaire, Gray en one-hot encodingen, over drie doel-FPGA's.

FSM #1: Origineel Model

Deze FSM draait een initiële state één keer, daarna cycelt hij door de overige zeven staten – een sequentie die suggereerde dat Gray encoding voordelig zou zijn.

De juiste FPGA-encoding kiezen: Een hands-on studie met Conway s Game of Life

FSM #2: Een Sequentie

Functionerend als een simpele 3-bit teller, versterkte deze FSM mijn verwachting dat Gray encoding zou domineren.

De juiste FPGA-encoding kiezen: Een hands-on studie met Conway s Game of Life

FSM #3: Een Willekeurige Tangled

Deze variant deelt het kritieke pad van FSM #1 maar neemt een niet-lineaire route wanneer de buurcount drie overschrijdt. One-hot encoding leek de natuurlijke keuze voor dergelijke irregular transitions.

De juiste FPGA-encoding kiezen: Een hands-on studie met Conway s Game of Life

Doelarchitecturen

De implementaties werden gebouwd met de vendor toolchains voor de volgende apparaten:

  • Xilinx Vivado Suite op een Artix-7 FPGA
  • Intel Quartus Prime op een Cyclone-V FPGA
  • Lattice Diamond op een LatticeXP2 FPGA

Resultaten vergelijken

Benchmarking van FPGA-ontwerpen is inherent metric-gedreven. Ik koos vier sleutelindicatoren – logic resource usage, register count, geschatte maximum frequentie en on-chip power – en wijst gewogen scores toe. De beste performer in elke metric kreeg +1 (of +2 voor gewogen metrics), de slechtste –1 (of –2), en de middelste 0.

  • Logic Units: LUTs (Xilinx/Lattice) of ALMs (Intel). Gewicht 1.
  • Registers: Gewicht 1.
  • Maximum Frequentie: Gewicht 2.
  • On-Chip Power: Gewicht 2.

De cumulatieve scores voor elk van de 27 implementaties worden hieronder getoond.

De juiste FPGA-encoding kiezen: Een hands-on studie met Conway s Game of Life

Resultatentabel voor alle 27 implementaties. Groen markeert de beste encoding, rood de slechtste, en geel de median (geen ties).

Over het bord heen, one-hot encoding verschijnt in de onderste twee rijen, met slechts twee instanties van pariteit met andere schema's. In tegenstelling, Gray encoding duikt consistent op als top performer, vooral wanneer frequentie en power zwaarder wegen.

Om de winnaars te benadrukken, isoleert de onderstaande tabel de leidende encoding voor elke variant.

De juiste FPGA-encoding kiezen: Een hands-on studie met Conway s Game of Life

De Oordeel

Hoewel de data wijst naar Gray encoding voor deze specifieke Game-of-Life workload, hangt het resultaat af van welke metrics u prioriteert. Als u resource usage boven prestaties waardeert, kan een andere ranking naar voren komen. Mijn doel is niet om een one-size-fits-all regel te voorschrijven, maar te illustreren hoe empirische evidence encoding keuzes kan leiden.

Voel u vrij om de broncode, de 27 gesynthetiseerde implementaties of de live Game-of-Life simulatie op de GitHub repository van het project te verkennen.

Ingebed

  1. De Juiste Controller Kiezen: PLC, PAC, DCS of IPC Uitgelegd
  2. Wanneer bare board testing te gebruiken voor betrouwbare PCB-ontwikkeling
  3. Bescherm Uw Motoren: De Essentiële Voordelen van Lijnreactoren
  4. Efficiëntie Maximeren met Remote Expert-oplossingen in Industrie 4.0
  5. Titaan vs. Aluminium: De Beste Niet-Ferreuze Metaalkeuze voor Sterkte en Gewicht
  6. De juiste tijd kiezen voor een hammerkraan: een praktische gids
  7. Sectoren die Kevlar benutten: van luchtvaart tot persoonlijke bescherming
  8. Prestaties Maximeren: De Meest Efficiënte Pomptype Selecteren
  9. Swissbit lanceert U-50n Nano USB 3.1 flash drive – robuuste, high-performance opslag voor industriële & IoT
  10. AAEON COM‑CFHB6: Compact, High‑Performance Type‑6 Module met Intel CPU's, 48 GB DDR4 ECC en 24 PCIe Lanes voor Edge, AIOT en Industriële Toepassingen
  11. De Juiste Aluminiumlegering Kiezen Voor Uw Project