Field-programmable gate array

Een in het veld programmeerbare gate array (vaak ingekort tot FPGA) is een elektronische component die wordt gebruikt om herconfigureerbare digitale schakelingen te bouwen. Dat betekent dat een FPGA anders is dan een logische poort, omdat een logische poort een vaste functie heeft. Een FPGA heeft daarentegen een ongedefinieerde functie op het moment van fabricage. Voordat de FPGA in een schakeling kan worden gebruikt, moet deze eerst worden geprogrammeerd, dus opnieuw worden geconfigureerd.

FPGA's zijn geïntegreerde schakelingen in de categorie programmeerbare logische apparaten of PLD's. FPGA's zijn de hoogst presterende, meest flexibele en ook de duurste van de PLD-types. Een nadeel van FPGA's in vergelijking met andere PLD's is dat ze hun ontwerp niet onthouden wanneer de stroom wordt verwijderd. Een FPGA heeft daarom een aparte configuratie geheugenchip nodig die het FPGA-ontwerp vasthoudt. Wanneer de stroom terug wordt gegeven aan de FPGA leest een vast onderdeel van de FPGA de configuratie uit de configuratiegeheugenchip. Nadat de FPGA is geconfigureerd zal deze de functie kunnen uitvoeren die het ontwerp hem heeft gegeven.

Een FPGA is anders dan een microprocessor of microcontroller. Een FPGA in zijn basisvorm is niet in staat om software te draaien. Alleen wanneer de FPGA een configuratie krijgt die een processor-architectuur bevat, kan hij software draaien.

FPGA-fabrikanten leveren engineering software voor Windows en soms ook Linux, om ontwerpen voor FPGA's te ontwikkelen. Het ontwerp wordt meestal geschreven in menselijk leesbare computerbestanden die een Hardware Description Language (HDL) worden genoemd. De meest populaire zijn VHDL en Verilog. Hardwarebeschrijvingstalen zijn sterk vergelijkbaar met programmeertalen. Maar de bedoeling van HDL's is om digitale logische circuits te ontwerpen terwijl programmeertalen software ontwerpen.

De FPGA-engineeringssoftware moet de abstracte HDL-code vertalen naar de logische elementen die beschikbaar zijn in de geselecteerde FPGA. Dat heet logica synthese. Vervolgens wordt een proces van plaats en route gedaan om de logische elementen in de FPGA te positioneren. Het resultaat is een bitfile die in de FPGA of het configuratiegeheugen kan worden geprogrammeerd. Dit wordt meestal gedaan met een USB-programmeur die op de JTAG-poort van de FPGA is aangesloten.

Omdat de FPGA een geïntegreerde schakeling is, kan een FPGA-fabrikant besluiten om andere veelgebruikte componenten van de geïntegreerde schakeling toe te voegen. Deze vaste onderdelen worden kernen genoemd. Dit zijn bijvoorbeeld Ethernet-controllers of zelfs een complete processor-architectuur. Voor verschillende marktsegmenten zoals defensie, medisch, communicatie en robotica probeert de FPGA-fabrikant de meest waardevolle set van deze extra kernen toe te voegen.




Interne structuur

FPGA's zijn over het algemeen gebouwd op programmeerbare logische elementen en programmeerbare interconnects. Een bouwsteen van logische elementen is een programmeerbare opzoektabel (LUT). Een LUT kan worden geprogrammeerd om eender welke waarde uit te voeren. Op deze manier kan een LUT worden geprogrammeerd om elk type logica met hetzelfde aantal in- en uitgangen te zijn. Bijvoorbeeld, een 2-input, 1-uitput LUT kan worden geprogrammeerd om de logica van een 2-input EN, OR, NAND, NOR, XOR, etc. te emuleren. De uitgang van deze LUT kan worden opgeslagen met behulp van een register of worden aangesloten op de ingang van andere LUT's. Met behulp van een programmeerbare mux kan de FPGA worden geprogrammeerd om de geregistreerde of niet-geregistreerde uitgang te kiezen. Deze combinatie van een LUT, een register en een mux is de algemene structuur van een logisch element.

Om deze logische elementen met elkaar te verbinden worden pass transistors gebruikt. De transistor kan geprogrammeerd worden om een signaal al dan niet te verbinden, waardoor de FPGA de mogelijkheid heeft om zeer specifiek logische elementen met elkaar te verbinden. Als bijvoorbeeld de uitgang van een logisch element de ingang van een ander logisch element zal voeden, kan de pass transistor geprogrammeerd worden om deze twee draden met elkaar te verbinden en overeen te komen met de opgegeven logica. Tussen de logische elementen en de pass transistors kan een compiler een hardwarebeschrijving van een HDL nemen, de logica voor de logische elementen maken en deze met de pass transistors met elkaar verbinden.


AlegsaOnline.com - 2020 / 2021 - License CC3