+1 500 000 produkter som erbjuds
6000 paket skickas varje dag
+300 000 kunder från 150 länder
Datum för publicering: 18-11-2025 🕒 9 min lästid
FPGA-enheter har funnits kommersiellt tillgängliga i många år, men trots många fördelar kan de inte sägas vara populära i tillämpningar. De främsta orsakerna är den höga kostnaden för lösningen och bristen på kunskap om tillämpningarna. Den första av dessa egenskaper påverkar negativt designern eller en annan beslutsfattare angående komponenter, medan den senare oftast påverkar programmeraren eller designern av inbyggda system, som är skicklig i objektorienterade språk men inte förstår hårdvarubeskrivningsspråk. I denna text kommer vi att undersöka utvalda praktiska egenskaper hos FPGA-enheter och jämföra dem med mycket bättre kända och accepterade mikrokontroller. Vi kommer också att påpeka tillämpningar där användningen av FPGA är oumbärlig och de där den blir "överskott".
FPGA är namnet på en grupp integrerade kretsar som härstammar från de första bokstäverna i orden Field-Programmable Gate Array. Dessa enheter kan programmeras efter produktion. Programmeringsprocessen för FPGA kallas konfiguration, eftersom den involverar att göra anslutningar mellan färdiga funktionsblock som finns tillgängliga inuti strukturen. Till skillnad från typiska digitala integrerade kretsar (portar, register, flip-flops, räknare, etc.) som har fast funktionalitet, kan FPGAs programmeras upprepade gånger, vilket ger flexibilitet i design och testning av olika tillämpningar.
FPGAs består av programmerbara logikblock och programmerbara anslutningar mellan dem. Dessa enheter kan innehålla inte bara digitala block utan även analog-till-digitala omvandlare, digital-till-analoga omvandlare, processor-kärnor (allmänna eller DSP), gränssnittsblock som möjliggör samarbete med externa enheter, eller till och med AI-stödenheter kopplade via Network-on-Chip (NoC), ett inbäddat anslutningsnätverk som överför datapaket mellan block och komponenter i enheten. Tack vare rika funktioner och flexibla anslutningar kan FPGA-enheter konfigureras för att utföra olika funktioner, såsom signalbehandling, kontroll av inbyggda system eller acceleration av databehandling.
En av de viktigaste fördelarna med FPGA är hastigheten på beräkningarna. Dessa enheter fungerar annorlunda än en mikroprocessor, som hämtar och utför instruktioner sekventiellt. I FPGA kan bearbetningsresultatet dyka upp "omedelbart", fördröjt endast av en liten propagationsfördröjning. Det är också betydelsefullt att många operationer kan utföras parallellt, till skillnad från en mikrokontroller, som sällan stöder samtidig exekvering av många instruktioner.
Varje FPGA-enhet består av tre grupper av komponenter:
Figur 1. Förenklad blockdiagram som illustrerar strukturen av en FPGA-enhet
CPLD-enheter (Complex Programmable Logic Device) var föregångarna till FPGA-enheter och (trots att de har mindre funktionalitet) erbjuds idag för mindre komplexa tillämpningar. De flesta stora leverantörer erbjuder ett brett utbud, som börjar från de enklaste versionerna som kallas PAL, som innehåller programmerbara element och fasta delar som är predisponerade för att utföra en viss logisk funktion. Detta möjliggör användning av en enda integrerad krets istället för flera logiska funktorer men ger inte stor flexibilitet för tillämpningar.
Jämfört med PAL är CPLD-enheter mer komplexa. De innehåller fler portar, är utrustade med icke-flyktigt minne och RAM, vilket gör dem lämpliga för mer komplexa tillämpningar. Till exempel placerade Intel® många PAL-block som kallas makrocell i ett enda, enhetligt kretspaket, där alla ingångar är tillgängliga för varje cell, och varje makrocell kan styra vilken utgång som helst. Anslutningsstrukturen lagras i elektriskt programmerbart minne som kallas konfigurationsminne, precis som i FPGA. Så, om CPLD:er har makrocell, en programmerbar anslutningsbuss och konfigurationsminne, hur skiljer de sig från FPGAs?
Jämfört med FPGAs innehåller CPLD:er betydligt färre logiska element och har inga LUT-arrayer (look up tables). De har en mer integrerad arkitektur, med ett mycket mindre antal logikblock, och implementerar mer komplexa logiska funktioner i varje block. Många anslutningar mellan block i CPLD är fördefinierade i tillverkningsprocessen och kan inte ändras under enhetens konfiguration. De används inte för att skapa så komplexa tillämpningar som FPGAs, som kan innehålla miljontals logiska funktorer. För att illustrera kan en FPGA modellera en processor-kärna, medan en CPLD är användbar för att implementera en adressdecoder som samarbetar med den.
Figur 2. Makrocell av MAX7000-serien (källa: tillverkarens dokumentation)
I de flesta FPGA-enheter lagras konfigurationen i extern minne, vanligtvis ansluten via en seriell gränssnitt. Konfigurationsdata kopieras till FPGA:ns RAM vid varje uppstart eller hård återställning. Detta skapar en fördröjning vid enhetens uppstart, större för mer komplexa FPGAs, vilket inte är fallet med CPLD:er som har lagrad konfiguration i inbyggt EEPROM-minne.
En nackdel med FPGA jämfört med CPLD är den högre tillämpningskostnaden.
Tabell 1. Jämförelse av utvalda parametrar för FPGA och CPLD-enheter
| Egenskap/parameter | CPLD | FPGA |
|---|---|---|
| Tillämpningsflexibilitet | Låg | Hög |
| Pris | Låg | Hög eller mycket hög |
| Tillämpningssäkerhet | Hög | Känslig för obehörig åtkomst |
| Driftshastighet | Hög | Hög |
| Kapacitet/tillämpningsstorlek | Låg | Hög eller mycket hög |
| Hårdvarutillämpning | Enkel | Komplex eller mycket komplex |
| Programmering | I hårdvarukonfigurationsspråk eller genom funktionsscheman | |
Funktionsblock som är inbyggda i FPGA, särskilt A/D-omvandlare, D/A-omvandlare, eller gränssnittmoduler för externa enheter, kan likna omgivningen av en mikrokontrollerkärna. En FPGA kan ha inbyggd RAM och icke-flyktigt Flash-minne, men denna likhet är bedräglig.
Moderna, avancerade FPGA-enheter är funktionellt mer komplexa än avancerade, komplexa mikrokontroller. Till exempel kan anslutningen av funktionsblock inuti en FPGA använda NoC (Network on Chip) teknik, där inom den integrerade kretsstrukturen överförs datapaket med hjälp av bussar som hanteras av inbyggda switchar. Detta är användbart för signalbehandling och -konditionering och för algoritmer som använder maskininlärning och artificiell intelligens.
Hastigheten på FPGA:s drift jämfört med en mikrokontroller är verkligen förbluffande. Detta beror på att en typisk mikrokontrollerkärna hämtar och utför instruktioner en och en. För att snabba upp databehandlingen avlastar den vissa operationer till perifera enheter (t.ex. datatransmission till och från minnet via DMA), men detta förändrar inte dess driftsrytm. I FPGAs, beroende på konfiguration, överför FPGA:n vanligtvis svaret omedelbart efter att ha mottagit data och kan dessutom utföra många trådar samtidigt. Kom ihåg, till exempel, att utvärdering av en signal inte innebär att ta ett prov och sedan utvärdera det i nästa steg, utan hänvisar till ett visst utvärderingsschema som finns tillgängligt som ett nätverk av anslutna logiska funktorer, så det kan vara tillgängligt med noggrannhet upp till enhetens propagationsfördröjning.
En mikrokontroller innehåller en processor-kärna, RAM, ROM, Flash och perifera enheter, såsom ingångs-/utgångsportar, timers, A/D- och D/A-omvandlare på en enda integrerad krets. Den är utformad för att utföra specifika uppgifter. Medan vissa moduler kan aktiveras/inaktiveras för att spara energi, kan deras funktionalitet inte omdefinieras. Den är fast under produktionen, inklusive drift och anslutning av block. En mikrokontroller är något som en mikrodator monterad på en liten tryckt kretskort inom ett enda paket. Att ändra dess konfiguration kräver att man modifierar kortet, inklusive kretsbanor, komponentplacering och deras anslutningar.
En FPGA-enhet är byggd av programmerbara logikblock som är kopplade av konfigurerbara anslutningar. Funktorer kan kombineras till olika funktionsblock som kan utföra olika logiska operationer, och moderna avancerade FPGA-enheter använder mycket avancerade anslutningsteknologier som NoC.
Programmering av FPGA (och CPLD) består av att definiera logiska anslutningar och funktioner med hjälp av hårdvarubeskrivningsspråk (HDL) som VHDL eller Verilog. Konfiguration, särskilt för enklare enheter, kan också göras med hjälp av ett logiskt schema, där typiska logiska komponenter placeras och kopplas. Att konfigurera FPGA kräver kunskap om digital kretsdesign. Programmering av en mikrokontroller använder strukturella eller objektorienterade programmeringsspråk. Idag rör sig de flesta tillämpningar bort från lågnivåassembler mot hög-nivåspråk som C, C++, Java och andra. Programmering av mikrokontroller liknar programmering av "stora" datorer, vilket gör det lättare för de flesta programmerare, som ofta saknar kunskap om drift och optimering av logikblock. FPGA-programminnet lagrar konfiguration, medan mikrokontrollerns minne lagrar kommandon och parametrar.
Tabell 2. Jämförelse av utvalda parametrar för mikrokontroller och FPGA
| Egenskap/parameter | Mikrokontroller | FPGA |
|---|---|---|
| Tillämpningsflexibilitet | Hög | Hög |
| Pris | Låg eller medel | Hög eller mycket hög |
| Tillämpningssäkerhet | Känslig för obehörig åtkomst | Känslig för obehörig åtkomst |
| Driftshastighet | Låg jämfört med FPGA | Hög |
| Minne kapacitet / tillämpningsstorlek | Från mycket liten till mycket stor | Hög eller mycket hög |
| Hårdvarutillämpning | Enkel | Komplex eller mycket komplex |
| Möjlighet till analog drift | Ingen eller begränsad | |
| Programmering | I assembler eller hög-nivåspråk | I hårdvarukonfigurationsspråk |
Den viktigaste egenskapen hos ASIC-enheter, som anges av deras namn, är att de är utformade för att utföra en specifik uppgift. Detta kan till exempel vara att ta emot och avkoda en radiosignal, styra en specifik displaymodell, eller andra. Observera att ASIC inte nödvändigtvis behöver vara programmerbar, även om det finns kommersiellt tillgängliga som innehåller en processor-kärna för vilka applikationer kan skapas.
Gränsen mellan en typisk integrerad krets och en ASIC-enhet är mycket tunn. De separeras huvudsakligen av produktionsvolym; ASIC:er produceras i mindre antal jämfört med massproducerade integrerade kretsar. Många tillverkare erbjuder integrerade kretsar utan att ange om de är massproducerade eller ASIC:er.
Arkitekturen för en ASIC definieras av designern och kan inte ändras efter tillverkning. Vanligtvis, när ASIC:er har en processor-kärna, krävs ingen programutveckling, endast inställning av vissa specifika parametrar. På samma sätt definieras typen av kommunikation med omgivningen och dataformat under designen, och även om det är möjligt att växla mellan olika typer kan förändringar inte införas.
Jämfört med att konfigurera FPGA är ASIC-designprocessen mer komplex och kostsam, vilket kan kräva specialistkunskap utöver digital kretsdesign, men den slutliga produkten är mer optimerad för specifika tillämpningar, prestanda och energieffektivitet.
ASIC:er används i tillämpningar som kräver hög prestanda med låg energiförbrukning och små dimensioner. Specialisering gör att de kan erbjuda utmärkta praktiska parametrar. Dessutom är ASIC:er vanligtvis redo att använda omedelbart efter lödning eller placering i en sockel och behöver inte ladda konfiguration från extern minne. De kan också ha blandad funktionalitet eller vara helt analoga. Detta är inte möjligt med FPGAs, som erbjuder mycket hög prestanda genom parallell bearbetning av digital data, efter konvertering från analog till digital och vice versa.
Färdiga ASIC:er kan vara många gånger billigare än FPGAs. De är mycket dyrare och mer tidskrävande att designa, men dessa kostnader amorteras över typiskt stora volymer. Detta kommer på bekostnad av brist på omkonfigureringskapacitet, men det är inte alltid nödvändigt. På samma sätt som mikrokontroller kan FPGAs användas för att prototypa ASIC:er, men ASIC:er kan inte modellera FPGA-drift. Självklart menar vi här modellering som möjliggör inspelning av en användbar konfiguration för FPGA, inte bara att uppnå liknande funktionalitet.
Tabell 3. Jämförelse av utvalda parametrar för ASIC och FPGA
| Egenskap/parameter | ASIC | FPGA |
|---|---|---|
| Tillämpningsflexibilitet | Mycket låg | Hög |
| Pris | Låg eller medel | Hög eller mycket hög |
| Tillämpningssäkerhet | Hög | Känslig för obehörig åtkomst |
| Driftshastighet | Hög | Hög |
| Kapacitet/tillämpningsstorlek | Låg eller ingen | Hög eller mycket hög |
| Hårdvarutillämpning | Enkel | Komplex eller mycket komplex |
| Möjlighet till analog drift | Beroende på design | Ingen eller begränsad |
| Programmering | Begränsad kapacitet eller inte nödvändig | I hårdvarukonfigurationsspråk |
Bibliografi:
Transfer Multisort Elektronik (TME) är en av världens största globala distributörer av elektroniska komponenter, elektrotekniska delar, verkstadsutrustning och industriell automation. Katalogen innehåller över 1 500 000 produkter från 1 300 ledande tillverkare. TME:s moderna logistikcenter i Łódź och Rzgów (Polen), med en total yta på över 40 000 m², skickar nästan 6 000 paket dagligen till kunder i mer än 150 länder.
TME investerar också i utvecklingen av kunskap och färdigheter hos unga ingenjörer och elektronikentusiaster genom TME Education-projektet och stödjer teknikgemenskapen genom att organisera TechMasterEvent-serien, som främjar innovation och erfarenhetsutbyte.