Hvis der er uklarheder i denne artikel, bedes du se den originale engelske version.

Co-processorarkitekturen: En embedded systemarkitektur til hurtig prototypefremstilling

Af Noah Madinger, Colorado Electronic Product Design (CEPD)

Redaktørens note - Selv om den er kendt for sin digitale behandlingsydelse og gennemløb, giver co-processorarkitekturen designere af embeddede systemer mulighed for at implementere projektstyringsstrategier, som forbedrer både udviklingsomkostningerne og time-to-market. Denne artikel, der specifikt fokuserer på kombinationen af en diskret mikrocontroller (MCU) og et diskret feltprogrammerbart gate array (FPGA), viser, hvordan denne arkitektur egner sig til en effektiv og iterativ designproces. Ved hjælp af researchede kilder, empiriske resultater og casestudier undersøges fordelene ved denne arkitektur, og der gives eksempler på anvendelser. Når denne artikel er afsluttet, vil designeren af embeddede systemer have en bedre forståelse af, hvornår og hvordan denne alsidige hardwarearkitektur skal implementeres

Introduktion

Designeren af embeddede systemer befinder sig i en situation med designbegrænsninger, forventninger til ydeevne og tids- og budgetmæssige bekymringer. Faktisk understreger selv modsætningerne i moderne buzzwords i projektledelse og fraser, yderligere denne rolles usikre karakter: "fail fast", "vær agil", "fremtidssikret" og "vær forstyrrende!". Den akrobatik, der er forbundet med at forsøge at opfylde disse forventninger, kan være rystende, og alligevel er de blevet sagt og bliver fortsat forstærket på hele markedet. Der er behov for en designtilgang, som gør det muligt at gennemføre en evolutionær iterativ proces, og ligesom med de fleste embeddede systemer begynder det med hardwarearkitekturen.

Co-processorarkitekturen, en hardwarearkitektur, der er kendt for at kombinere styrkerne ved både mikrocontroller- (MCU) og FPGA-teknologier (FPGA), kan tilbyde den embeddede designer en proces, der er i stand til at opfylde selv de mest krævende krav, og samtidig giver den den fleksibilitet, der er nødvendig for at løse både kendte og ukendte udfordringer. Ved at levere hardware, der kan tilpasses iterativt, kan designeren demonstrere fremskridt, nå kritiske milepæle og drage fuld fordel af den hurtige prototypeproces.

Inden for denne proces er der vigtige projektmilepæle, som hver især har deres egen unikke værdi, der kan tilføre udviklingsarbejdet. I hele denne artikel vil der blive henvist til dem med følgende betegnelser: Milepælen "Digital Signal Processing with the Microcontroller", milepælen "System Management with the Microcontroller" og milepælen "Product Deployment".

Ved afslutningen af denne artikel vil det blive påvist, at en fleksibel hardwarearkitektur kan være bedre egnet til design af moderne embeddede systemer end en mere stiv tilgang. Desuden kan denne fremgangsmåde resultere i forbedringer af både projektomkostningerne og time-to-market. Argumenter, eksempler og casestudier vil blive brugt til at forsvare denne holdning. Ved at observere værdien af hver enkelt milepæl inden for den designfleksibilitet, som denne arkitektur giver, bliver det klart, at en adaptiv hardwarearkitektur er en stærk drivkraft i forbindelse med at skubbe design af embeddede systemer fremad.

Udforskning af styrkerne ved co-processor-arkitekturen: designfleksibilitet og højtydende behandling

En almindelig anvendelse for FPGA-designs er at have et direkte interface til en højhastigheds analog-til-digital-konverter (ADC). Signalet digitaliseres, læses ind i FPGA'en, og derefter anvendes nogle DSP-algoritmer (Digital Signal Processor) på dette signal. Til sidst træffer FPGA'en så beslutninger på grundlag af resultaterne.

En sådan applikation vil tjene som eksempel i hele denne artikel. Desuden illustrerer figur 1 en generisk co-processor-arkitektur, hvor MCU'en og FPGA'en er forbundet via MCU'ens eksterne hukommelses-interface. FPGA'en behandles som om den var et stykke ekstern statisk hukommelse med tilfældig adgang (SRAM). Signalerne kommer tilbage til MCU'en fra FPGA'en og tjener som hardwareafbrydelseslinjer og statusindikatorer. Dette gør det muligt for FPGA'en at angive kritiske tilstande til MCU'en, f.eks. at kommunikere, at en ADC-konvertering er klar, eller at en fejl er opstået, eller at en anden bemærkelsesværdig hændelse er sket.

Diagram af generisk co-processor-diagramFigur 1: Generisk co-processordiagram (MCU + FPGA). (Billedkilde: CEPD)

Styrkerne ved co-processortilgangen ses sandsynligvis bedst i de resultater, der skal leveres i forbindelse med hver af de ovennævnte milepæle. Værdien vurderes ikke kun ved at opregne resultaterne af en opgave eller fase, men også ved at vurdere den mulighed, som disse resultater giver mulighed for. Svarene på de følgende spørgsmål hjælper med at vurdere den samlede værdi af en milepæls leverancer:

  • Kan andre teammedlemmers fremskridt nu forbedres, da projektafhængigheder og flaskehalse er fjernet?
  • Hvordan muliggør milepælens resultater yderligere parallelle udførelsesveje?

Den digitale signalbehandling med mikrocontrolleren milepæl

Diagram over arkitekturen - digital signalbehandling med mikrocontrollerFigur 2: Arkitektur - digital signalbehandling med en mikrocontroller. (Billedkilde: CEPD)

Den første udviklingsfase, som denne hardwarearkitektur muliggør, placerer MCU'en helt i centrum. Alt andet lige er udvikling af MCU'er og eksekverbar software mindre ressource- og tidskrævende end udvikling af FPGA'er og HDL-programmer (hardware descriptive language). Ved at indlede produktudviklingen med MCU'en som primær processor kan algoritmer således implementeres, testes og valideres hurtigere. Dette gør det muligt at opdage algoritmiske og logiske fejl tidligt i designprocessen, og det giver også mulighed for at teste og validere store dele af signalkæden.

FPGA'ens rolle i denne indledende milepæl er at fungere som et interface til indsamling af højhastighedsdata. Dens opgave er at lede data fra højhastigheds-ADC'en pålideligt, advare MCU'en om, at data er tilgængelige, og præsentere disse data på MCU'ens eksterne hukommelsesinterface. Selv om denne rolle ikke omfatter implementering af HDL-baserede DSP-processer eller andre algoritmer, er den ikke desto mindre yderst vigtig.

FPGA-udviklingen i denne fase danner grundlaget for produktets endelige succes både i produktudviklingsarbejdet og ved frigivelsen til markedet. Ved kun at fokusere på interfacet på lavt niveau kan der afsættes tilstrækkelig tid til at teste disse vigtige operationer. Først når FPGA'en pålideligt og sikkert udfører denne interface-rolle, kan denne milepæl afsluttes med sikkerhed.

De vigtigste resultater af denne første milepæl omfatter følgende fordele:

  1. Hele signalvejen og alle forstærkninger, dæmpninger og konverteringer vil være blevet testet og valideret.
  2. Projektets udviklingstid og -indsats vil være blevet reduceret ved i første omgang at implementere algoritmerne i software (C/C++); dette er af stor værdi for ledelsen og andre interessenter, som skal se projektets gennemførlighed, før de godkender fremtidige designfaser.
  3. De erfaringer, der er gjort ved implementeringen af algoritmerne i C/C++, vil kunne overføres direkte til HDL-implementeringer ved hjælp af software-til-HDL-værktøjer, f.eks. Xilinx HLS.

Systemstyring med mikrocontroller milepæl

Diagram over arkitekturen - Systemstyring med mikrocontrollerFigur 3: Arkitektur - Systemstyring med mikrocontroller. (Billedkilde: CEPD)

Den anden udviklingsfase, som denne co-processortilgang tilbyder, er defineret ved at flytte DSP-processer og algoritmeimplementeringer fra MCU'en til FPGA'en. FPGA'en er stadig ansvarlig for højhastigheds-ADC-interfaces, men ved at påtage sig disse andre roller udnyttes FPGA'ens hastighed og parallelitet fuldt ud. I modsætning til MCU'en kan der desuden implementeres og køres flere instanser af DSP-processer og algoritmekanaler samtidigt.

Designeren bygger på erfaringerne fra implementeringen af MCU'en og tager denne tillid med sig videre til den næste milepæl. Værktøjer som f.eks. det førnævnte Vivado HLS fra Xilinx leverer en funktionel oversættelse fra den eksekverbare C/C++-kode til HDL, der kan syntetiseres. Nu skal tidsbegrænsninger, procesparametre og andre brugerpræferencer stadig defineres og implementeres, men kernefunktionaliteten er dog fastholdt og oversat til FPGA-stoffet.

I forbindelse med denne milepæl er MCU'ens rolle en systemadministrator. Status- og kontrolregistre i FPGA'en overvåges, opdateres og rapporteres af MCU'en. Desuden styrer MCU'en brugergrænsefladen (UI). Denne brugergrænseflade kan have form af en webserver med adgang via en ethernet- eller Wi-Fi-forbindelse, eller det kan være en industriel touchscreen-grænseflade, der giver brugerne adgang på brugsstedet. Det vigtigste resultat af MCU'ens nye, mere raffinerede rolle er følgende: Ved at blive fritaget for de beregningsintensive behandlingsopgaver udnyttes både MCU'en og FPGA'en nu til opgaver, som de er velegnede til.

De vigtigste leverancer udgør denne milepæl og omfatter disse fordele:

  1. FPGA'en sørger for hurtig, parallel udførelse af DSP-processer og algoritmeimplementeringer.MCU'en giver en responsiv og strømlinet brugergrænseflade og styrer produktets processer.
  2. Efter først at være blevet udviklet og valideret i MCU'en er de algoritmiske risici blevet reduceret, og disse reduktioner er blevet omsat til syntetiserbar HDL. Værktøjer som Vivado HLS gør denne oversættelse til en nemmere proces. Desuden kan FPGA-specifikke risici afbødes ved hjælp af integrerede simuleringsværktøjer som f.eks. Vivado-designpakken.
  3. Interessenterne er ikke udsat for nogen væsentlig risiko ved at flytte processerne over på FPGA'en. Tværtimod får de mulighed for at se og nyde godt af de fordele, som FPGA'ens hastighed og parallelitet giver dem. Der er observeret målbare forbedringer af ydeevnen, og der kan nu fokuseres på at gøre dette design klar til fremstilling.

Milepælen for implementering af produktet

Med den beregningsintensive behandling i FPGA'en og MCU'en, der varetager systemstyring og brugergrænseflade, er produktet klar til implementering. Dette dokument anbefaler ikke, at man går uden om Alpha- og Betaversioner; i denne milepæl lægges der imidlertid vægt på de muligheder, som co-processorarkitekturen giver for produktudrulning.

Både MCU'en og FPGA'en er enheder, der kan opdateres i marken. Der er sket flere fremskridt for at gøre FPGA-opdateringer lige så tilgængelige som softwareopdateringer. Da FPGA'en befinder sig inden for MCU'ens adresserbare hukommelsesområde, kan MCU'en desuden fungere som adgangspunkt for hele systemet: den modtager både opdateringer til sig selv og til FPGA'en. Opdateringer kan planlægges betinget, distribueres og tilpasses pr. slutbruger. Sidst men ikke mindst kan bruger- og use-case-logs vedligeholdes og knyttes til specifikke build-implementeringer. Ud fra disse datasæt kan ydeevnen fortsat forfines og forbedres, selv efter at produktet er blevet anvendt i marken.

Måske er styrken ved denne samlede systemopdateringsmulighed ikke mere fremhævet end i applikationer til rummet (space). Når et produkt er lanceret, skal vedligeholdelse og opdateringer udføres på afstand. Det kan være så enkelt som at ændre logiske betingelser eller så kompliceret som at opdatere en kommunikationsmodulationsordning. FPGA-teknologiernes programmerbarhed og co-processorarkitekturen kan rumme alle disse muligheder, samtidig med at der kan vælges strålingshærdede komponenter.

Den sidste vigtige pointe fra denne milepæl er en progressiv omkostningsreduktion. Omkostningsreduktioner, ændringer i materialebeskrivelsen (BOM) og andre optimeringer kan også finde sted ved denne milepæl. Under implementeringen i marken kan det vise sig, at produktet kan fungere lige så godt med en billigere MCU eller en mindre effektiv FPGA. På grund af co-processoren er designere af arkitekturen ikke fastlåst i at bruge komponenter, hvis kapacitet overstiger deres applikations behov. Hvis en komponent skulle blive utilgængelig, giver arkitekturen desuden mulighed for at integrere nye komponenter i designet. Dette er ikke tilfældet med en single-chip, system on a chip-arkitektur (SoC) eller med en højtydende DSP eller MCU, der forsøger at håndtere al produktets behandling. Co-processorarkitekturen er en god blanding af kapacitet og fleksibilitet, der giver designeren flere valgmuligheder og friheder både i udviklingsfaserne og ved markedsføringen.

Understøttende forskning og relaterede casestudier

Eksempel på satellitkommunikation

Kort sagt er værdien af en co-processor at aflaste den primære procesenhed, så opgaverne udføres på hardware, hvor der kan drages fordel af accelerationer og strømlining. Fordelen ved et sådant designvalg er en nettostigning i beregningshastighed og -kapacitet og, som det fremgår af denne artikel, en reduktion af udviklingsomkostningerne og -tiden. Et af de mest overbevisende områder for disse fordele er måske rumkommunikationssystemer.

I deres publikation FPGA-baseret hardware som coprocessor beskriver G. Prasad og N. Vasantha i detaljer, hvordan databehandling i en FPGA kombinerer satellitkommunikationssystemers beregningsbehov uden de høje engangsudgifter (NRE) til applikationsspecifikke integrerede kredsløb (ASIC'er) eller de applikationsspecifikke begrænsninger, som en processor med hård arkitektur medfører. Ligesom beskrevet i milepælen "Digital Signal Processing with the Microcontroller Milestone" begynder deres design med en applikationsprocessor, der udfører størstedelen af de beregningsintensive algoritmer. Ud fra dette udgangspunkt identificeres de vigtigste sektioner af softwaren, der bruger størstedelen af CPU-clockkens cyklusser, og overfører disse sektioner til HDL-implementering. Den grafiske repræsentation ligner i høj grad det, der er blevet præsenteret hidtil, men de har valgt at repræsentere applikationsprogrammet som sin egen uafhængige blok, da det enten kan realiseres i host'en (processoren) eller i FPGA-baseret hardware.

Billede af infotainment FPGA co-processor arkitektur eksempel 1Figur 4: Applikationsprogram, host-processor og FPGA-baseret hardware - anvendt i et eksempel på satellitkommunikation.

Ved at udnytte PCI-grænsefladen (Peripheral Component Interconnect) og host-processorens direkte hukommelsesadgang (DMA) øges den perifere processorens ydeevne dramatisk. Dette ses især i forbindelse med forbedringerne af Derandomiserings-processen. Da denne proces blev udført i host-processorens software, var der tydeligvis en flaskehals i systemets realtidsrespons. Men da de blev flyttet til FPGA'en, blev følgende fordele observeret:

  • Derandomiserings-processen blev udført i realtid uden at forårsage flaskehalse
  • Host-processorens beregningsmæssige overhead blev reduceret betydeligt, og den kunne nu bedre udføre den ønskede logningsfunktion.
  • Hele systemets samlede ydeevne blev opskaleret.

Alt dette blev opnået uden de omkostninger, der er forbundet med en ASIC, og samtidig med den fleksibilitet, der er forbundet med programmerbar logik [5]. Satellitkommunikation er forbundet med betydelige udfordringer, og denne fremgangsmåde kan påviseligt opfylde disse krav og fortsat give fleksibilitet i designet.

Eksempel på infotainment i biler

Underholdningssystemer i biler er et kendetegn for kræsne forbrugere. I modsætning til størstedelen af bilelektronikken er disse enheder meget synlige og forventes at give en exceptionel responstid og ydeevne. Designere er dog ofte klemt mellem de aktuelle behov for designet og den fleksibilitet, som fremtidige funktioner vil kræve. I dette eksempel vil gennemførelsesbehovene for signalbehandling og trådløs kommunikation blive brugt til at fremhæve styrkerne ved co-processor-hardwarearkitekturen.

En af de fremherskende arkitekturer for underholdningssystemer til biler blev offentliggjort af Delphi Delco Electronics Systems Corporation. Denne arkitektur anvendte en SH-4 MCU med en ledsagende ASIC, Hitachi's HD64404 Amanda perifer udstyr. Denne arkitektur opfyldte over 75 % af bilmarkedets grundlæggende underholdningsfunktionalitet, men den mangler evnen til at håndtere videobehandling og trådløs kommunikation. Ved at inkludere en FPGA i denne eksisterende arkitektur kan der tilføjes yderligere fleksibilitet og kapacitet til denne allerede eksisterende designtilgang.

Billede af infotainment FPGA co-processor arkitektur eksempel 2Figur 5: Eksempel på arkitektur for Infotainment FPGA co-processor 1.

Arkitekturen i figur 5 er velegnet til administration af både videobehandling og trådløs kommunikation. Ved at skubbe DSP-funktionerne over på FPGA'en kan Amanda-processoren fungere som systemadministrator og frigøres til at implementere en trådløs kommunikationsstack. Da både Amanda og FPGA'en har adgang til den eksterne hukommelse, kan data hurtigt udveksles mellem systemets processorer og komponenter.

Billede af infotainment FPGA co-processor arkitektur eksempel 2Figur 6: Eksempel på arkitektur for Infotainment FPGA co-processor 2.

Det andet infotainment i figur 6 fremhæver FPGA'ens evne til at håndtere både de indgående analoge data med høj hastighed og håndteringen af den komprimering og kodning, der er nødvendig for videoapplikationer. Faktisk kan al denne funktionalitet skubbes ind i FPGA'en, og ved hjælp af parallel behandling kan alle disse funktioner behandles i realtid.

Ved at inkludere en FPGA i en eksisterende hardwarearkitektur kan den eksisterende hardwares gennemprøvede ydeevne kombineres med fleksibilitet og fremtidssikring. Selv inden for eksisterende systemer giver co-processorarkitekturen designere muligheder, som ellers ikke ville være tilgængelige [6].

Fordele ved hurtig prototypefremstilling

I det centrale i processen for hurtig prototypefremstilling tilstræbes det at dække en betydelig del af produktudviklingsområdet ved at udføre opgaver parallelt, identificere "fejl" og designproblemer hurtigt og validere data- og signalveje, især dem inden for et projekts kritiske vej. Men for at denne proces virkelig kan give strømlinede, effektive resultater, skal der være tilstrækkelig ekspertise inden for de nødvendige projektområder.

Traditionelt betyder det, at der skal være en hardwareingeniør, en embedded software- eller DSP-ingeniør og en HDL-ingeniør. Nu er der masser af tværfaglige fagfolk, som måske kan udfylde flere roller, men der er stadig betydelige projektomkostninger forbundet med at koordinere disse bestræbelser.

I deres artikel, An FPGA based rapid prototyping platform for wavelet coprocessors, fremfører forfatterne ideen om, at en enkelt DSP-ingeniør ved hjælp af en co-processor-arkitektur kan udfylde alle disse roller på en effektiv og effektiv måde. I forbindelse med denne undersøgelse begyndte teamet at designe og simulere den ønskede DSP-funktionalitet i MATLAB's Simulink-værktøj. Dette havde to primære funktioner, idet det 1) verificerede den ønskede ydeevne gennem simulering og 2) være en basislinje, som fremtidige designvalg kunne sammenlignes med og refereres til.

Efter simulering blev kritiske funktionaliteter identificeret og opdelt i forskellige kerner - det er soft-core-komponenter og processorer, der kan syntetiseres i en FPGA. Det vigtigste skridt i dette arbejde var at definere interfaces mellem disse kerner og komponenter og at sammenligne dataudvekslingspræstationen med den ønskede, simulerede ydeevne. Denne designproces er nøje afstemt med Xilinx' designflow for embeddede systemer og er opsummeret i figur 7 nedenfor.

Billede af Xilinx Vivado HLS designflowFigur 7: Gennemførelsesdesignflow.

Ved at opdele systemet i syntetiserbare kerner kan DSP-ingeniøren fokusere på de mest kritiske aspekter af signalbehandlingskæden. Hun/han behøver ikke at være ekspert i hardware eller HDL for at ændre, route eller implementere forskellige soft-core-processorer eller komponenter i FPGA'en. Så længe designeren er klar over interfacet og dataformatet, har han/hun fuld kontrol over signalvejene og kan forbedre systemets ydeevne.

Empiriske resultater - Casestudie af den diskrete cosinus-transformation

De empiriske resultater bekræftede ikke blot den fleksibilitet, som co-processorarkitekturen giver designeren af embeddede systemer, men viste også de muligheder for at forbedre ydeevnen, der er tilgængelige med moderne FPGA-værktøjer. Forbedringer som dem, der er nævnt nedenfor, er måske ikke tilgængelige eller har måske mindre betydning for andre hardwarearkitekturer. Den diskrete cosintransformation (DCT) blev valgt som en beregningskrævende algoritme, og dens udvikling fra en C-baseret implementering til en HDL-baseret implementering var kernen i disse resultater. DCT blev valgt, da denne algoritme anvendes i digital signalbehandling til mønstergenkendelse og filtrering [8]. De empiriske resultater var baseret på en laboratorieøvelse, som blev gennemført af forfatteren og hans medarbejdere med henblik på at opnå Xilinx Alliance Partner-certificering for 2020-2021.

Følgende værktøjer og enheder blev anvendt i denne indsats:

  • Vivado HLS v2019
  • Enheden til vurdering og simulering var xczu7ev-ffvc1156-2-e

DCT-algoritmen, der begynder med den C-baserede implementering, accepterer to arrays med 16-bit tal; array "a" er input arrayet til DCT'en, og array "b" er output arrayet fra DCT'en. Databredden (DW) er derfor defineret som 16, og antallet af elementer i arrays (N) er 1024/DW, dvs. 64. Endelig er størrelsen af DCT-matrixen (DCT_SIZE) sat til 8, hvilket betyder, at der anvendes en 8 x 8-matrix.

I henhold til denne artikels præmis giver den C-baserede implementering af algoritmer designeren mulighed for hurtigt at udvikle og validere algoritmens funktionalitet. Selv om det er en vigtig overvejelse, vægter denne validering funktionalitet højere end eksekveringstid. Denne vægtning er tilladt, da den endelige implementering af denne algoritme vil finde sted i en FPGA, hvor hardwareacceleration, loop unrolling og andre teknikker er let tilgængelige.

Billede af Xilinx Vivado HLS designflowFigur 8: Xilinx Vivado HLS-designflow.

Når DCT-koden er blevet oprettet i Vivado HLS-værktøjet som et projekt, er det næste skridt at begynde at syntetisere designet til FPGA-implementering. Det er på dette næste trin, at nogle af de mest effektive fordele ved at flytte en algoritmes udførelse fra en MCU til en FPGA bliver mere tydelige, som reference svarer dette trin til den ovenfor omtalte milepæl System Management with the Microcontroller.

Moderne FPGA-værktøjer giver mulighed for en række optimeringer og forbedringer, der i høj grad forbedrer ydelsen af komplekse algoritmer. Før du analyserer resultaterne, er der nogle vigtige begreber, som du skal huske på:

  • Latency - Det antal clockcyklusser, der kræves for at udføre alle iterationer af loopet [10]
  • Interval - Antallet af clockcyklusser, før den næste iteration af en løkke begynder at behandle data [11]
  • BRAM - Block Random Access Memory (blokhukommelse med vilkårlig adgang)
  • DSP48E - Digital signalbehandling til UltraScale-arkitekturen
  • FF - Flipflop
  • LUT - Opslagstabel
  • URAM - Unified Random-Access Memory (kan bestå af en enkelt transistor)
Latency Interval
min max min max
Standard (løsning 1) 2935 2935 2935 2935
Pipeline indre loop (løsning 2) 1723 1723 1723 1723
Ydre loop i pipelinen (løsning 3) 843 843 843 843
Array-partition (løsning 4) 477 477 477 477
Dataflow (løsning 5) 476 476 343 343
Inline (løsning 6) 463 463 98 98

Tabel 1: Resultater af optimeringen af FPGA-algoritmeudførelsen (latenstid og interval).

BRAM_18K DSP48E FF LUT URAM
Standard (løsning 1 5 1 246 964 0
Pipeline indre loop (løsning 2) 5 1 223 1211 0
Ydre loop i pipelinen (løsning 3) 5 8 516 1356 0
Array-partition (løsning 4) 3 8 862 1879 0
Dataflow (løsning 5) 3 8 868 1654 0
Inline (løsning 6) 3 16 1086 1462 0

Tabel 2: Resultater af optimeringen af FPGA-algoritmeudførelsen (ressourceudnyttelse).

Standard

Standardindstillingen af optimering kommer fra det uændrede resultat af oversættelsen af den C-baserede algoritme til syntetiserbar HDL. Ingen optimeringer er aktiveret, og dette kan bruges som en reference for ydeevne for bedre at forstå de andre optimeringer.

Pipelines indre loop

PIPELINE-direktivet instruerer Vivado HLS om at afvikle de indre sløjfer, så nye data kan begynde at blive behandlet, mens eksisterende data stadig er i pipelinen. Nye data behøver således ikke at vente på, at de eksisterende data er færdige, før behandlingen kan begynde.

Ydre sløjfe i pipelinen

Ved at anvende PIPELINE-direktivet på den ydre sløjfe er den ydre sløjfes operationer nu i pipelinen. Men de indre løkker udføres nu samtidig i de indre sløjfer. Både latenstiden og intervaltiden halveres ved at anvende dette direkte på den ydre sløjfe.

Array-partition

Dette direktiv kortlægger indholdet af løkkerne til arrays og gør dermed al hukommelsesadgang til de enkelte elementer i disse arrays mere simpel. Dette medfører et større RAM-forbrug, men igen halveres algoritmens udførelsestid.

Dataflow

Dette direktiv giver designeren mulighed for at angive det ønskede antal clockcyklusser mellem hver af de indlæste inputlæsninger. Dette direktiv er kun understøttet for top-level-funktioner. Kun sløjfer og funktioner, der er udsat for dette niveau, vil drage fordel af dette direktiv.

Inline

INLINE-direktivet udjævner alle sløjfer, både indre og ydre. Både række- og kolonneprocesser kan nu udføres samtidigt. Antallet af nødvendige clockcyklusser holdes på et minimum, selv om det kræver flere FPGA-ressourcer.

Konklusion

Co-processor-hardwarearkitekturen giver den embeddede designer en højtydende platform, som bevarer sin designfleksibilitet under hele udviklingen og efter produktudgivelsen. Ved først at validere algoritmer i C eller C++ kan processer, data- og signalveje og kritisk funktionalitet verificeres på relativt kort tid. Ved at oversætte de processorintensive algoritmer til co-processor FPGA'en kan designeren derefter nyde godt af fordelene ved hardwareacceleration og et mere modulært design.

Hvis dele bliver forældede eller optimeringer er nødvendige, kan den samme arkitektur muliggøre disse ændringer. Nye MCU'er og nye FPGA'er kan indpasses i designet, mens interfaces kan forblive relativt uændrede. Da både MCU'en og FPGA'en kan opdateres i marken, kan der desuden foretages brugerspecifikke ændringer og optimeringer i marken og eksternt.

Til sidst vil jeg sige, at denne arkitektur kombinerer udviklingshastigheden og tilgængeligheden af en MCU med ydelsen og udvidelsesmulighederne af en FPGA. Med optimeringer og ydelsesforbedringer, der er tilgængelige i hvert udviklingstrin, kan co-processorarkitekturen opfylde selv de mest udfordrende krav, både i dagens design og i fremtiden.

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of Digi-Key Electronics or official policies of Digi-Key Electronics.

Om denne forfatter

Noah Madinger, Colorado Electronic Product Design (CEPD)

Noah Madinger is a Senior Engineer at Colorado Electronic Product Design (CEPD) and has been involved in bringing novel products to market since the early 2000’s. In his role, he is responsible for developing technical solutions, which cover a vast array of disciplines in both hardware and software design. This role also includes the managing projects and technical teams, as well as engaging in business development activities. Noah is actively involved in writing articles and publications, as these provide opportunities to dive deeper into interesting topics and to engage a broader audience.

Noah’s professional interests include feedback control systems, FPGA and MCU-based embedded designs, and aerospace applications. He is an advocate of process-driven and test-driven development paradigms and has worked to implement engineering processes into team dynamics. He cherishes the reward of seeing a new product come to maturity and to have it live up to everyone’s expectations.