Introductie FPGA


FPGA staat voor Field Programmable Gate Array. Een FPGA is een geïntegreerde schakeling bestaande uit programmeerbare logische componenten. Met deze componenten kunnen functies worden opgebouwd zoals een AND en OR poorten. De architectuur van een FPGA kan beschreven worden in VHDL.

De basis van een FPGA


De basis van een FPGA bestaat uit configureerbare logische blokken (CLB). Deze blokken kunnen op meerdere manieren met elkaar verbonden worden. Door deze keuze is het mogelijk de gewenste schakeling te implementeren. In het onderstaande figuur is een sterk vereenvoudigd schema te zien van een FPGA. De verbindingen kunnen door de gebruiker worden ingesteld.
Een CLB bestaat uit een aantal slices. Deze slices kunnen geconfigureerd worden om een bepaalde functie te vervullen. Elke slice bevat weer een aantal look up table’s (LUT’s) en een aantal flipflops afhankelijk van het type FPGA. Een LUT’s is een waarheidstabel geïntegreerd in een poortschema. Een flipflop is een klok getriggerd geheugen element.

bobz-01.gif



Naast de eerder genoemde elementen kan een FPGA nog extra toepassingen bevatten. Vaak worden de nieuwe FPGA’s uitgerust met multipliers en Block-RAM. Dit wordt gedaan om het aantal gebruikte LUT’s te verkleinen. Multipliers en Block-Ram gebruiken namelijk respectief veel LUT’s. Een multiplier blok is een blok dat vermenigvuldiging kan doen van 18 * 18 bits. Door extra toegevoegde paden kan deze vermenigvuldiging erg snel gebeuren. Een Block-Ram is een stuk geheugen waarin data kan worden opgeslagen.


De communicatie naar buiten verloopt met configureerbare in- en output pinnen. Er kan aangegeven worden van welk type signaalniveau de pin moet zijn. Ook zijn er een aantal pinnen die speciaal geschikt zijn voor kloksignalen. Het plaatsen van de logica en de pinlay-out kan handmatig worden uitgevoerd. Dit wordt meestal met een synthesetool gedaan.


Custom designed" of een "IP core"



In een FPGA is het mogelijk om een "IP core" te gebruiken. Een "IP core" is een digitale bouwsteen waarin al functionaliteit is opgenomen. Vaak zijn "IP cores" niet vrij te gebruiken. Het is dan nodig om een "license" te kopen. Wat ook vaak voorkomt is dat een "IP core" gebruikt kan worden, maar dan alleen als "black box". Dit wil zeggen dat het blok gebruikt kan worden, maar de functionaliteit kan niet bekeken worden. Dit zijn een aantal nadelen waarmee rekening moet worden gehouden als er gekozen wordt om een "IP core" te gebruiken. De trajectgenerator is geheel "Custom designed" opgebouwd. Dat wil zeggen dat de ontwerpen alles zelf ontwerpt om aan de eisen van de klant te voldoen. Er is voor gekozen om niet gebruik te maken van een "IP core". Dit om de eerder genoemde nadelen en de volgende redenen:


• De klant stelt zeer specifieke eisen aan het product, zoals een grote nauwkeurigheid en een groot bereik. Dit betekend dat de berekeningen die uitgevoerd moeten worden van een grote omvang zijn;
• Een tweede eis is om het product zo klein mogelijk te maken. "IP core" bevatten vaak veel functionaliteit waarvan delen vaak niet gebruikt worden. Deze delen kosten ruimte in een FPGA. (Om een indruk te geven hoeveel ruimte "IP cores" innemen is in bijlage 7 een klein overzicht gegeven;)
• De klant wil tevens een bibliotheek aanleggen van blokken die door iedereen gebruikt mogen worden. Het is natuurlijk niet de bedoeling dat iedereen die de trajectgenerator wil gebruiken een "license" moet kopen.


In een FPGA is het mogelijk om een "IP core" te gebruiken. Een "IP core" is een digitale bouwsteen waarin al functionaliteit is opgenomen. Vaak zijn "IP cores" niet vrij te gebruiken. Het is dan nodig om een "license" te kopen. Wat ook vaak voorkomt is dat een "IP core" gebruikt kan worden, maar dan alleen als "black box". Dit wil zeggen dat het blok gebruikt kan worden, maar de functionaliteit kan niet bekeken worden. Dit zijn een aantal nadelen waarmee rekening moet worden gehouden als er gekozen wordt om een "IP core" te gebruiken. De trajectgenerator is geheel "Custom designed" opgebouwd. Dat wil zeggen dat de ontwerpen alles zelf ontwerpt om aan de eisen van de klant te voldoen. Er is voor gekozen om niet gebruik te maken van een "IP core". Dit om de eerder genoemde nadelen en de volgende redenen:
• De klant stelt zeer specifieke eisen aan het product, zoals een grote nauwkeurigheid en een groot bereik. Dit betekend dat de berekeningen die uitgevoerd moeten worden van een grote omvang zijn;
• Een tweede eis is om het product zo klein mogelijk te maken. "IP core" bevatten vaak veel functionaliteit waarvan delen vaak niet gebruikt worden. Deze delen kosten ruimte in een FPGA. (Om een indruk te geven hoeveel ruimte "IP cores" innemen is in bijlage 7 een klein overzicht gegeven;)
• De klant wil tevens een bibliotheek aanleggen van blokken die door iedereen gebruikt mogen worden. Het is natuurlijk niet de bedoeling dat iedereen die de trajectgenerator wil gebruiken een "license" moet kopen.






Article: Configurable chips improve FPGA flexibility by Navanee Sundaramoorthy, Embedded Manager Xilinx Inc.