Embedded FPGA-ontwerp: Een compleet ontwikkelproces
Opmerking van de redacteur: Naarmate geavanceerde algoritmes blijven opduiken voor slimme productontwerpen, worstelen ontwikkelaars vaak om embedded-systemen te implementeren die aan de verwerkingsvereisten van deze algoritmes voldoen. FPGAs leveren de benodigde prestaties, en recente vooruitgang in device-capaciteit en ontwikkelomgevingen hebben FPGA-ontwerp toegankelijk gemaakt voor een breder bereik van ingenieurs. Dit fragment uit Hoofdstuk 4 van *Architecting High‑Performance Embedded Systems* biedt een uitgebreide review van FPGA-apparaten, implementatietalen, en het ontwikkelproces, en biedt een praktische walkthrough voor aan de slag met FPGA-ontwerp.
1: Hardware-bronnen
2: Implementatietalen
3: Ontwikkelproces (dit artikel)
4: Een project bouwen
5: Implementatie
Aangepast van *Architecting High‑Performance Embedded Systems*, door Jim Ledin.
Het FPGA-ontwikkelproces
In diverse toepassingsdomeinen volgt FPGA-ontwikkeling een gemeenschappelijke reeks stappen die ingenieurs leiden van concept tot functionele hardware. De volgende secties schetsen de typische workflow, met nadruk op sleutelbeslissingen en best practices.
Systeemvereisten definiëren
Succesvolle FPGA-projecten beginnen met een heldere, onmiskenbare definitie van systeemfunctionaliteit, werkmodi, en sleutelfuncties. Documenteer het beoogde gedrag in platte taal en deel het met alle stakeholders om consensus te bereiken. Inclusieve kwantitatieve prestatiemetriche – zoals input-sampling-rates, output-update-intervallen, doorvoer, latentie, en vermogenslimieten – alsmede beperkingen op fysieke grootte, batterijlevensduur, temperatuurbereik, en kosten. Een complete vereistenset zorgt ervoor dat elk ontwerp dat aan alle specificaties voldoet haalbaar is; als een technisch correcte oplossing faalt om redenen zoals kosten, ligt de uitsluiting waarschijnlijk in de vereistenfase.
Eenmaal top-level vereisten overeengekomen, decomponeer het systeem in coherente subsystemen, elk met zijn eigen functionele en technische specificaties. In real-time embedded-systemen vormt de digitale verwerkingscapaciteit typisch een toegewezen subsysteem met zijn eigen set beperkingen.
Functionaliteit toewijzen aan de FPGA
Wanneer de digitale verwerkingsvereisten van een systeem de mogelijkheden van microcontrollers of processoren overschrijden, overweeg een FPGA. Architecturen die baat hebben bij hoge-snelheid, parallelle hardware, zijn prima kandidaten. Zelfs als een conventionele processor aan de prestaties kan voldoen, kan een FPGA flexibiliteit en upgrade-potentieel bieden over de productlevenscyclus.
Na het besluiten om een FPGA te gebruiken, wijst u de relevante verwerkingstaken aan het toe. Definieer de FPGA's input- en output-interfaces, update-snelheden, en interacties met perifere componenten zoals ADCs, DACs, en geheugenapparaten.
Vereiste FPGA-functies identificeren
Met de FPGA's verantwoordelijkheden en interfaces gedefinieerd, stel een lijst op van verplichte device-functies. Overweeg bronvereisten – logica-cellen, DSP-blokken, geheugen – en stroom- en koelingsbehoeftes. Laagkost, batterij-aangedreven ontwerpen kunnen kleinere devices met passieve koeling gebruiken, terwijl hoogpresterende systemen grote FPGAs met actieve koeling nodig kunnen hebben.
Device-families verschillen in beschikbare functies; bijvoorbeeld, sommige omvatten geïntegreerde ADCs om bordcomplexiteit te reduceren. Gebruik de vereisten om kandidaat-families te selecteren, en vernauw dan tot specifieke modellen naarmate resource-schattingen duidelijker worden.
De FPGA-ontwerp implementeren
Met een kandidaat-device geselecteerd en functionaliteit gemapt, begin de implementatie met een vendor-tool-suite – gemeenschappelijk Xilinx Vivado of Intel Quartus. Het proces begint typisch met een top-level-ontwerp, dat kan worden uitgedrukt als een blokdiagram of direct geschreven in HDL (Verilog of VHDL) of high-level synthesis-talen zoals C/C++.
Itereer door de volgende fasen, het ontwerp verfijnend tot een werkende bitstream geproduceerd wordt:
Design Entry
Definieer systeemlogica met HDL, blokdiagrammen, of C/C++-code. Deze artefacten beschrijven het beoogde gedrag maar niet de fysieke integratie.
I/O-planning
Wijs I/O-pennen toe, stel signaalstandaarden in, en overweeg fysieke beperkingen zoals pin-plaatsing en trace-lengte voor hoge-snelheid signalen. I/O-beperkingen, samen met timing-beperkingen, sturen het synthetiseringsproces.
Synthese
Converteer HDL naar een netlist die logica afbeeldt op de gekozen FPGA's bronnen. Als beperkingen niet voldaan kunnen worden, faalt synthese en moet het ontwerp herzien worden.
Place and Route
Plaats de netlist's logica-elementen op specifieke FPGA-bronnen terwijl beperkingen geëerd worden. Route interconnects om de fysieke layout te finaliseren. Het resultaat is een volledig gespecificeerde configuratie.
Bitstream-generatie
Creëer het configuratiebestand dat de FPGA's interne SRAM laadt. Deze bitstream is analoog aan een software-executable en moet bij elke power-on-cyclus geladen worden, typisch van onboard flash of een externe bron.
Nadat de bitstream geproduceerd is, voer grondige tests uit om functionele correctheid te verifiëren.
De implementatie testen
Test op elk stadium: simuleer HDL-logica, valideer de gesynthetiseerde netlist, en voer hardware-in-the-loop-tests uit op het target-board. Uitgebreide testing mitigeert zeldzame bugs die productcredibiliteit kunnen ondermijnen.
De volgende sectie detailt een hands-on-voorbeeld met het Arty A7-board en de Vivado-tool-suite.
Her gedrukt met toestemming van Packt Publishing. Copyright © 2021 Packt Publishing
Jim Ledin is de CEO van Ledin Engineering, Inc. Hij brengt diepe expertise in embedded software- en hardware-ontwerp, -ontwikkeling, en -testing, en is een erkende autoriteit in embedded-systeem cybersecurity. Met een B.S. in luchtvaarttechniek van Iowa State University en een M.S. in elektrische en computer-engineering van Georgia Institute of Technology, is Jim een gelicenseerde professionele ingenieur in Californië, een CISSP, CEH, en CPT.
Gerelateerde inhoud:
- Embedded-ontwerp met FPGAs: Hardware-bronnen
- Embedded-ontwerp met FPGAs: Implementatietalen
- Open-source tools helpen FPGA-programmering vereenvoudigen
- Drijvende-komma algoritmes implementeren in FPGAs of ASICs
- FPGAs benutten voor deep learning
- Software-tools migreren GPU-code naar FPGAs voor AI-toepassingen
- FPGAs verdringen ASICs in Subaru Eyesight visie-gebaseerde ADAS
Voor meer Embedded, abonneer je op Embedded's wekelijkse e-mailnieuwsbrief.
Ingebed
- Productie maximaliseren met geavanceerde additieve productiesoftware
- Fail-Safe Besturingssystemen Ontwerpen voor Veiligheid en Betrouwbaarheid
- Embedded Systeem Programmeren: Talen, Architectuur en Toepassingen
- Chatbots 101: Ontwerpproces, Architectuur en Praktische Inzichten
- Embedded Systeemontwerp: Stappen, Principes en Praktische Toepassingen
- Embedded Systemen: Fundamenten en Praktische Toepassingen
- State machines bouwen met Test-Driven Development in Embedded C
- Analog Devices toont AI, industriële netwerken en power‑oplossingen op Embedded World 2019
- Axiomtek tBOX400-510-FL: dual-processor transport-PC met geïntegreerde 10-poort managed PoE-switch
- IBASE CMI300‑988: Ultra‑Compact Mini‑ITX PC met AMD Ryzen Embedded V1807B
- MicroSys lanceert miriac MPX‑LS1028A SoM: Edge Computing met IEEE TSN & 4K Graphics