+1 500 000 produkter i udbud

7000 pakker om dagen

+300 000 kunder fra 150 lande

Quick Buy Favoritter
Vogn

Programmerbare digitale FPGA-kredsløb

Dato for offentliggørelse: 18-11-2025 Dato for opdatering: 18-05-2026 🕒 9 min læsning

FPGA-enheder har været kommercielt tilgængelige i mange år, men på trods af mange fordele kan de ikke siges at være populære i applikationer. Hovedårsagerne er de høje omkostninger ved løsningen og manglende viden om applikationerne. Den første af disse egenskaber påvirker designeren eller en anden beslutningstager vedrørende komponenter negativt, mens den sidste oftest påvirker programmøren eller den indlejrede systemdesigner, som er dygtig til objektorienterede sprog, men ikke forstår hardwarebeskrivelsessproget. I denne tekst vil vi undersøge udvalgte praktiske egenskaber ved FPGA-enheder og sammenligne dem med langt mere kendte og accepterede mikrocontrollere. Vi vil også pege på anvendelser, hvor brugen af FPGA er uundværlig, og hvor den bliver "overdreven".

FPGA er navnet på en gruppe af integrerede kredsløb, der stammer fra de første bogstaver i ordene Field-Programmable Gate Array. Disse enheder kan programmeres efter produktionen. Programmeringsprocessen for FPGA kaldes configuration, da den indebærer, at der oprettes forbindelser mellem færdige funktionelle blokke, der er tilgængelige inde i strukturen. I modsætning til typiske digitale integrerede kredsløb (gates, registre, flip-flops, tællere osv.), der har fast funktionalitet, kan FPGA'er programmeres gentagne gange, hvilket giver fleksibilitet til at designe og teste forskellige applikationer.

Køb FPGA-enheder

FPGA'er består af programmerbare logiske blokke og programmerbare forbindelser mellem dem. Disse enheder kan ikke kun indeholde digitale blokke, men også analoge-til-digitale konvertere, digitale-til-analoge konvertere, processorkerner (generelle-purpose eller DSP), grænsefladeblokke, der muliggør samarbejde med eksterne enheder, eller endda AI-supportenheder, der er forbundet via Network-on-Chip (NoC), et indlejret forbindelsesnetværk, der sender datapakker mellem blokke og komponenter i enheden. Takket være de mange funktioner og fleksible forbindelser kan FPGA-enheder konfigureres til at udføre forskellige funktioner, som f.eks. signalbehandling, indlejret systemkontrol eller databehandlingsacceleration.

En af de vigtigste fordele ved FPGA er beregningshastigheden. Disse enheder fungerer anderledes end en mikroprocessor, som henter og udfører instruktioner sekventielt. I FPGA kan behandlingsresultatet vises "med det samme", kun forsinket af en lille forplantningstid. Det er også vigtigt, at mange operationer kan udføres parallelt, i modsætning til i en mikrocontroller, som sjældent understøtter samtidig udførelse af mange instruktioner.

Hver FPGA-enhed består af tre grupper af komponenter:

  1. De grundlæggende byggesten i hver FPGA er logiske blokke. Hver blok indeholder et antal grundlæggende logiske funktorer og registre. Logiske funktorer udfører logiske operationer, mens registre gemmer data.
  2. Logiske blokke er forbundet med en forbindelsesbus. Dette udtryk må dog ikke forveksles med f.eks. en databus på en computers bundkort. I modsætning til kobberspor med fast topologi er dette fleksibelt programmerbare forbindelser mellem blokke, som gør det muligt at forbinde dem næsten vilkårligt.
  3. Hele konfigurationen gemmes i en ikke-flygtig konfigurationshukommelse. I de fleste FPGA'er er dette en ekstern Flash/EEPROM-hukommelse, som kan slettes og skrives gentagne gange. Nogle FPGA-enheder kan have indbygget konfigurationshukommelse, men det er mindre almindeligt. FPGA'en indlæser konfigurationen ved power-up eller hard reset. Tilgængeligheden af konfigurationshukommelse gør det nemt at konstruere og teste prototyper og, i tilfælde af en færdig, fungerende enhed, nemt at opdatere eller forbedre funktionaliteten. Dette er især værdifuldt i hardware, der produceres i små serier, hvor det er betydeligt mere omkostningseffektivt at bruge FPGA end at designe og producere dedikerede integrerede kredsløb (ASIC).

Figur 1. Forenklet blokdiagram, der illustrerer strukturen i en FPGA-enhed

Forskelle mellem FPGA og CPLD

CPLD-enheder (Complex Programmable Logic Device) var forløberne for FPGA-enheder og tilbydes i dag (på trods af mindre funktionalitet) til mindre komplekse anvendelser. De fleste større leverandører tilbyder et bredt udvalg, der starter med de enkleste versioner, der betegnes som PAL, og som indeholder programmerbare elementer og faste dele, der er disponeret til at udføre en bestemt logisk funktion. Det gør det muligt at bruge et enkelt integreret kredsløb i stedet for flere logiske funktioner, men det giver ikke stor fleksibilitet i anvendelsen.

Køb CPLD-enheder

Sammenlignet med PAL er CPLD-enheder mere komplekse. De indeholder flere gates og er udstyret med ikke-flygtig hukommelse og RAM, hvilket gør dem velegnede til mere komplekse anvendelser. For eksempel har Intel® placeret mange PAL-blokke kaldet macroceller i en enkelt, samlet kredsløbspakke, hvor alle indgange er tilgængelige for alle celler, og hver macrocelle kan styre alle udgange. Forbindelsesstrukturen gemmes i en elektrisk programmerbar hukommelse kaldet konfigurationshukommelse, ligesom i en FPGA. Så hvis CPLD'er har macroceller, en programmerbar forbindelsesbus og konfigurationshukommelse, hvordan adskiller de sig så fra FPGA'er?

Sammenlignet med FPGA'er indeholder CPLD'er betydeligt færre logiske elementer og har ikke LUT-arrays (look up tables). De har en mere integreret arkitektur med et meget mindre antal logiske blokke og implementerer mere komplekse logiske funktioner i hver blok. Mange forbindelser mellem blokke i CPLD'er er foruddefinerede i fremstillingsprocessen og kan ikke ændres under enhedens konfiguration. De bruges ikke til at skabe lige så komplekse applikationer som FPGA'er, der kan indeholde millioner af logikfunktioner. For at illustrere kan en FPGA modellere en processorkerne, mens en CPLD er nyttig til at implementere en adressedekoder, der samarbejder med den.

Figur 2. Macrocellen i MAX7000-serien (kilde: producentens dokumentation)

I de fleste FPGA-enheder gemmes konfigurationen i en ekstern hukommelse, der normalt er tilsluttet via et serielt interface. Konfigurationsdata kopieres til FPGA'ens RAM ved hver power-up eller hard reset. Dette skaber en forsinkelse ved opstart af enheden, som er større for mere komplekse FPGA'er, hvilket ikke er tilfældet med CPLD'er, der har lagret konfigurationen i indbygget EEPROM-hukommelse.

En ulempe ved FPGA'er sammenlignet med CPLD'er er de højere applikationsomkostninger.

  • FPGA kan kræve et særligt, effektivt strømsystem, hvor det er nødvendigt at kontrollere aktiveringssekvensen for individuelle spændinger og reagere på en bestemt måde i tilfælde af fejl.
  • Konfiguration, der er gemt i ekstern hukommelse, er modtagelig for uautoriseret adgang, hvilket kan være vigtigt for applikationens sikkerhed.
  • FPGA-applikationer, der kræver betydeligt flere eksterne komponenter, er meget dyrere.
  • Den høje pris på FPGA'er eliminerer praktisk talt mere komplekse enheder i populære applikationer. CPLD'er er ikke så dyre og kan med succes bruges i populære elektroniske enheder og erstatte flere eller endda et dusin logiske enheder. Men på trods af mange fordele vil mange designere stadig vælge den bedre kendte mikrocontroller, når en logisk funktion skal implementeres...

Tabel 1. Sammenligning af udvalgte parametre for FPGA- og CPLD-enheder

Funktion/parameter CPLD FPGA
Applikationsfleksibilitet Lav Høj
Pris Lav Høj eller meget høj
Applikationssikkerhed Høj Modtagelig for uautoriseret adgang
Driftshastighed Høj Høj
Kapacitet/applikationsstørrelse størrelse Lav Høj eller meget høj
Hardwareapplikation Enkel Kompleks eller meget kompleks
Programmering > I hardwarekonfigurationssprog eller ved funktionelle skemaer

Forskelle mellem FPGA og mikrocontroller

Funktionelle blokke indbygget i FPGA, især A/D-konvertere, D/A-konvertere, eller interface-moduler til eksterne enheder, kan ligne omgivelserne i en mikrocontroller-kerne. En FPGA kan have indbygget RAM og ikke-flygtig Flash-hukommelse, men denne lighed er vildledende.

Moderne, avancerede FPGA-enheder er funktionelt mere komplekse end avancerede, komplekse mikrocontrollere. For eksempel kan forbindelsen mellem funktionelle blokke inde i en FPGA bruge NoC-teknologi (Network on Chip), hvor datapakker overføres inden for den integrerede kredsløbsstruktur ved hjælp af busser, der styres af indbyggede switche. Dette er nyttigt til signalbehandling og -konditionering og til algoritmer, der anvender maskinlæring og kunstig intelligens.

Hastigheden af FPGA-drift sammenlignet med en mikrocontroller er virkelig forbløffende. Det skyldes, at en typisk mikrocontroller-kerne henter og udfører instruktioner en efter en. For at fremskynde databehandlingen overlader den nogle operationer til perifere enheder (f.eks. dataoverførsel til og fra hukommelsen via DMA), men det ændrer ikke dens driftsrytme. I FPGA'er, afhængigt af konfigurationen, sender FPGA'en normalt svaret umiddelbart efter modtagelse af data og kan desuden udføre mange tråde samtidigt. Husk for eksempel, at evaluering af et signal ikke involverer at tage en prøve og derefter evaluere den i næste trin, men henviser til et bestemt evalueringsskema, der er tilgængeligt som et netværk af forbundne logiske funktorer, så det kan være tilgængeligt med nøjagtighed op til enhedens udbredelsestid.

En mikrocontroller indeholder en processorkerne, RAM, ROM, Flash og periferiudstyr, såsom input/output-porte, timere, A/D- og D/A-konvertere på et enkelt integreret kredsløb. Den er designet til at udføre specifikke opgaver. Nogle moduler kan aktiveres/deaktiveres for at spare strøm, men deres funktionalitet kan ikke omdefineres. Den er fast under produktionen, inklusive betjening og tilslutning af blokke. En mikrocontroller er lidt som en mikrocomputer, der er monteret på et lille printkort i en enkelt pakke. Hvis man vil ændre dens konfiguration, skal man ændre printpladen, herunder kredsløbsspor, komponentplacering og deres indbyrdes forbindelser.

En FPGA-enhed er bygget af programmerbare logiske blokke, der er forbundet med konfigurerbare sammenkoblinger. Funktorer kan kombineres til forskellige funktionelle blokke, der kan udføre forskellige logiske operationer, og moderne avancerede FPGA-enheder anvender meget avancerede forbindelsesteknologier som NoC.

Programmering af FPGA'er (og CPLD'er) består i at definere logiske forbindelser og funktioner ved hjælp af hardwarebeskrivelsessprog (HDL) som VHDL eller Verilog. Konfiguration, især for enklere enheder, kan også udføres ved hjælp af et logisk skema, hvor man placerer og forbinder typiske logiske komponenter. Konfiguration af FPGA kræver viden om design af digitale kredsløb. Programmering af en mikrocontroller bruger strukturelle eller objektorienterede programmeringssprog. I dag bevæger de fleste applikationer sig væk fra assembler på lavt niveau til sprog på højt niveau som C, C++, Java og andre. Mikrocontrollerprogrammering ligner programmering af "store" computere, hvilket gør det lettere for de fleste programmører, som ofte mangler viden om drift og optimering af logiske blokke. FPGA'ens programhukommelse gemmer konfigurationen, mens mikrocontrollerens hukommelse gemmer kommandoer og parametre.

Tabel 2. Sammenligning af udvalgte parametre for mikrocontrollere og FPGA

Funktion/parameter Mikrocontroller FPGA
Applikationsfleksibilitet Høj Høj
Pris Lav eller middel Høj eller meget høj
Applikationssikkerhed Modtagelig for uautoriseret adgang Modtagelig for uautoriseret adgang
Driftshastighed Lav i forhold til FPGA Høj
Hukommelse kapacitet / applikationsstørrelse Fra meget lille til meget stor Høj eller meget høj
Hardwareapplikation Enkel Kompleks eller meget kompleks
Mulighed for analog drift > Ingen eller begrænset
Programmering I assembler- eller high-sprogniveau-sprog I hardwarekonfigurationssprog

Forskelle mellem FPGA og ASIC

Den vigtigste egenskab ved ASIC-enheder er, som navnet antyder, at de er designet til at udføre en bestemt opgave. Det kan f.eks. være modtagelse og afkodning af et radiosignal, styring af en bestemt skærmmodel eller andet. Bemærk, at ASIC ikke nødvendigvis behøver at være programmerbare, selvom der findes kommercielt tilgængelige ASIC'er, som indeholder en processorkerne, som man kan lave applikationer til.

Grænsen mellem et typisk integreret kredsløb og en ASIC-enhed er meget tynd. De adskilles hovedsageligt af produktionsvolumen; ASIC'er produceres i mindre antal sammenlignet med masseproducerede integrerede kredsløb. Mange producenter tilbyder integrerede kredsløb uden at angive, om de er masseproducerede eller ASIC'er.

Arkitekturen i en ASIC er defineret af designeren og kan ikke ændres efter fremstillingen. Når ASIC'er har en processorkerne, kræves der normalt ingen programudvikling, kun indstilling af nogle specifikke parametre. På samme måde defineres typen af kommunikation med omgivelserne og dataformaterne under designet, og selv om det er muligt at skifte mellem forskellige typer, kan der ikke indføres ændringer.

Sammenlignet med konfiguration af FPGA er ASIC-designprocessen mere kompleks og kostbar og kræver muligvis specialistviden ud over design af digitale kredsløb, men det endelige produkt er mere optimeret til specifikke anvendelser, ydeevne og energieffektivitet.

ASIC'er bruges i applikationer, der kræver høj ydeevne med lavt strømforbrug og miniaturedimensioner. Specialisering giver dem mulighed for at tilbyde fremragende praktiske parametre. Derudover er ASIC'er normalt klar til brug umiddelbart efter lodning eller placering i en sokkel og behøver ikke at indlæse konfiguration fra ekstern hukommelse. De kan også have blandet funktionalitet eller være rent analoge. Dette er ikke muligt med FPGA'er, som giver meget høj ydeevne ved parallel behandling af digitale data efter konvertering fra analog til digital og omvendt.

Ready-to-use ASIC'er kan være mange gange billigere end FPGA'er. De er meget dyrere og mere tidskrævende at designe, men disse omkostninger afskrives over typisk store mængder. Det sker på bekostning af manglende rekonfigurationsmuligheder, men det er ikke altid nødvendigt. På samme måde som mikrocontrollere kan FPGA'er bruges til at prototype ASIC'er, men ASIC'er kan ikke modellere FPGA-drift. Her mener vi selvfølgelig modellering, der gør det muligt at optage en brugbar konfiguration til FPGA, ikke bare at opnå lignende funktionalitet.

Tabel 3. Sammenligning af udvalgte parametre for ASIC og FPGA

Funktion/parameter ASIC FPGA
Applikationsfleksibilitet Meget lav Høj
Pris Lav eller middel Høj eller meget høj
Applikationssikkerhed Høj Modtagelig for uautoriseret adgang
Driftshastighed Høj Høj
Kapacitet/applikationsstørrelse Lav eller ingen Høj eller meget høj høj
Hardwareapplikation Enkel Kompleks eller meget kompleks
Mulighed for analog drift Afhænger af design Ingen eller begrænset
Programmering Begrænset kapacitet eller ikke påkrævet I hardwarekonfigurationssprog

Bibliografi:

  • Control Engineering Poland - FPGA in Automation- www.controlengineering.pl/uklady-fpga-w-automatyce-nowe-mozliwosci-i-zastosowania
  • Lattice Semiconductor - FPGA in Industry 4.0- www.latticesemi.com/en/Blog/2022/12/20/23/00/2022-Hvordan-FPGAs-Kan-Gøre-Industri-4-Arbejde
  • Wikipedia - Den fjerde industrielle revolution- www.pl.wikipedia.org/wiki/Czwarta_rewolucja_przemys%C5%82owa
  • Designing Embedded Systems in FPGA Devices- www.helion.pl/pobierz-fragment/projektowanie-systemow-wbudowanych-w-ukladach-fpga-valery-salauyou-adam-klimowicz,e_321i/pdf
  • The Power (of) Memory - Elektronika Praktyczna- www.ep.com.pl/files//2012.pdf
  • Wikipedia - Field-Programmable Gate Array- www.pl.wikipedia.org/wiki/Bezpośrednio_programowalna_macierz_bramek
  • FPGA-baseret systemdesign - Wayne Wolf - www.eeeforum.weebly.com/uploads/1/0/2/5/10254481/fpga1.pdf
  • "Real-Time Image Processing on FPGA" - SpringerLink- www.link.springer.com/chapter/10.1007/978-3-642-24106-2_18

Transfer Multisort Elektronik (TME) er en af verdens største globale distributører af elektroniske komponenter, elektrotekniske dele, værkstedsudstyr og industriel automatisering. Kataloget omfatter over 1.500.000 produkter fra 1.300 førende producenter. TME's moderne logistikcentre i Łódź og Rzgów (Polen), med et samlet areal på over 40.000 m², sender dagligt næsten 6.000 pakker til kunder i mere end 150 lande.

TME investerer også i udviklingen af viden og færdigheder hos unge ingeniører og elektronikentusiaster gennem TME Education-projektet og støtter teknologisamfundet ved at organisere TechMasterEvent -serien, der fremmer innovation og erfaringsudveksling.

rightColumnPicture rightColumnPicture

LÆS OGSÅ