Dieser ArtikelBenutzerSuche |
FPGAFPGA ist die Abkürzung für "Field Programmable Gate Array". [bearbeiten] Aufbau[bearbeiten] GrundelementeEin FPGA besteht, ähnlich wie ein CPLD, aus vielen Logikelementen, hauptsächlich Flip-Flops (FF) und LUTs (LUT = Lookup-Table), die über elektronische "Schalter" entsprechend der vom Entwickler gewünschten Funktion miteinander verknüpft werden können. Eine LUT kann eine beliebige kombinatorische Funktion (NAND, XOR, AND, Multiplexer etc.) aus den Eingangssignalen realisieren. Die Anzahl der Eingangssignale pro LUT ist vom FPGA abhängig und liegt meist zwischen 4 und 6. Für Funktionen, die mehr Eingänge erfordern, als eine einzige LUT besitzt (hohes Fan-In), werden mehrere LUTs direkt miteinander verschaltet. Die Flip-Flops dienen dazu, Signalwerte zwischenzuspeichern, um sie im nächsten Takt weiterverarbeiten zu können. Das Verhältnis zwischen der Anzahl der LUTs und der Anzahl der Flip-Flops ist meist 1:1. Aktuelle FPGAs bestehen aus bis zu einigen zehntausend Logikelementen. Die logischen Schalter und Speicher sind in den meisten FPGAs durch SRAM-Speicherzellen realisiert, welche beim Bootprozess passend geladen werden. Das Laden dieser Konfigurationsdaten bzw. Verknüpfungsregeln geschieht dabei in der Regel aus einem speziellen Flash-ROM-Baustein heraus. Es kann aber auch ein Mikrocontroller benutzt werden. Die meisten (SRAM-basierten) FPGAs bieten daher für diesen Konfigurationsvorgang mehrere Modi (seriell, parallel, Master/Slave) an. Da die SRAM-Zellen ihren Inhalt beim Abschalten der Versorgungsspannung verlieren, muss ein SRAM-basierter FPGA bei jedem Einschalten neukonfiguriert werden. Daher benötigt ein solcher FPGA einige Millisekunden bis zur Betriebsbereitschaft. Eine FPGA-Familie beinhaltet Typen mit unterschiedlicher Anzahl und Komplexität von Logikzellen. So enthält ein Spartan3-1000 ca. 2,5 mal mehr Logik (FF, LUTs) als ein Spartan3-400. FPGAs mit nichtflüchtigem Speicher basieren auf EEPROM-, Flash- (einige Familien von Lattice) oder AntiFuse- (Actel) Technologie. Die sogenannten AntiFuse FPGAs sind einmalig programmierbar. [bearbeiten] I/O AnschlüsseFPGAs als universal einsetzbare Digital-ICs unterstützen eine Vielzahl von Signalstandards. Üblich sind verschiedene TTL-Pegel (5V, 3,3V, 2,5V), differentielle Signalstandards (LVDS, GTL) und im Hochpreisbereich serielle Standards bis zu 1 Gbps. Oftmals sind weitere Eigenschaften wie Treiberstärke und Flankensteilheit für jeden benutzerdefinierbaren Anschluss (User-IO) einstellbar. Meist sind die Pins in Bänke mit gleichem I/O Standard zusammengefasst. Innerhalb einer solchen Bank arbeiten alle Pins im gleichen I/O Standard und mit der selben I/O Spannung (H-Pegel). Ebenso können FPGA-interne Pull-Up und Pull-Down-Widerstände zugeschaltet werden, Terminierung wird ebenfalls unterstützt. Das I/O Verhalten wird mit den IO-Constraints in einem setting-File (Xilinx *.ucf, Altera *.acf) festgelegt. Einige Pins übernehmen zeitweilig oder allgemein besondere, nicht vom Anwender abschaltbare Funktionen. Darunter zählen die Pins zum Einlesen der Konfigurationsdaten. Oft sind einige wenige Pins (2 - 8) zum Einspeisen des Taktes für das Design reserviert. Die Hersteller bieten FPGAs mit gleicher Anzahl von Logikelementen in unterschiedlichen Gehäusen an. So kann der FPGA mit der passenden Anzahl von Pins eingesetzt werden. Das obere Ende markieren Chips mit über 1000 I/Os, die kleinsten bieten ca. 80(?) User-I/O. Oft werden nur BGA und QFP Gehäuse (bis ca. 240(?) Pins) angeboten. [bearbeiten] Komplexere Blöcke (Multiplizierer, RAM, PLL/DLL)Neben den einfachen Flip-Flops beinhalten FPGAs darüber hinaus komplexe Routing- und Speicherkonfigurationsoptionen innerhalb und außerhalb der logischen Elemente (LEs), die es gestatten, komplexe Schalt- und Rechenstrukturen aufzubauen. Für rechenintensive Designs, z.B. in der Signalverarbeitung, enthalten viele FPGAs Multiplizierer direkt auf dem Chip, die in einem einzigen Taktzyklus Multiplikationen durchführen können. Ferner haben FPGAs oft einen von den LEs getrennt verfügbaren RAM-Bereich integriert, der sich in vielfältiger Weise ansprechen lässt. So können damit Single- oder Dualport-RAMs mit variabler Bitbreite erzeugt werden. Üblich sind mehrere (4 - 30) kleinere Dualport RAM-Blöcke von 4 - 16 kbit. Einige Familien besitzen einen größeren internen RAM, andere spezielle FIFO-Blöcke. Zur Generierung spezieller Takte sind PLL-Komponenten (phase locked loop) auf dem FPGA integriert. Einige Hersteller setzen mit dem selben Ziel DLL-Blöcke (delay locked loop) ein. Mittels dieser Blöcke können aus einem Taktsignal weitere erzeugt werden. Typisch sind Taktverdopplung oder -vervielfachung. Ebenso kann der Takt geteilt werden oder ein Signal gleicher Frequenz, aber um eine halbe, viertel usw. Periode verschoben erzeugt werden. Typische Anwendungen sind die Ansteuerung von DDR-RAMs oder die Kompensation von Laufzeitunterschieden zwischen Takt und mit diesem getakteten Steuersignalen. Meist sind 2 - 8 Taktnetzwerke und PLL/DLLs gleicher Anzahl integriert. Siehe auch Taktung FPGA/CPLD. [bearbeiten] CPU im FPGAProgrammierbare Prozessoren sind auch häufig bei FPGA Designs unverzichtbar. Diese sind zwar im Allgemeinen langsamer und weniger effizient als eine vollständige Implementation aus Logik-Primitiven -- aber auch deutlich einfacher zu beherrschen. Insbesondere bei sequentiellen Aufgaben (Benutzerinterface, komplexe Steueraufgaben etc.) wird man gerne auf eine klassische CPU zurückgreifen. Manche FPGAs integrieren einem oder mehrere Prozessorkerne (z.B. AVR bei Atmels FPSLIC, PowerPC bei Xilinx' Virtex-4 oder ARM-Cortex-M1 bei IGLOO-FPGA von actel) als HardCores auf einem IC. Auf der anderen Seite gibt es auch SoftCores, Prozessorkerne die als Quelltext oder als vor-synthetisierte Netzliste vorliegen. In Abhänigkeit von den zur Verfügung stehenden Resourcen können diese SoftCores beliebig instantiiert werden. Es gibt eine Vielzahl verschiedener SoftCores -- Teilweise kompatibel zu etablierten Prozessorarchitekturen (MIPS, SPARC, AVR), zum Teil optimiert auf die FPGAs einzelner Hersteller. Auch auf vergleichsweise kleine aktuelle FPGAs kann man problemlos eine 32bit-RISC-CPU integrieren. Unter FPGA Soft Core findet man eine Liste einiger weit verbreiteter SoftCores Als Programmspeicher werden die FPGA-internen RAM-Blöcke oder externe Speicher-ICs (SDRAM, SRAM) genutzt. Für einige Prozessorkerne stehen Hochsprachen wie C, C++ etc. zur Verfügung, andere werden in Assembler programmiert. [bearbeiten] Eigenschaften[bearbeiten] GeschwindigkeitDie maximale „Geschwindigkeit“ eines FPGAs ist von der verwendeten Halbleitertechnologie (Prozess, Strukturgrößen), der Schaltungstopologie (Komplexität der LEs) und vor allem vom Design abhängig. Dabei sind je der sogenannte Datendurchsatz und die rein maximale Systemtaktfrequenz zu unterscheiden. Die erreichbare Taktfrequenz lässt sich ohne detaillierte Kenntnis des Designs nicht abschätzen, möglich sind je nach »Speed Grade« des ICs typischerweise Taktfrequenzen von 200-250 MHz für die Schaltgeschwindigkeit der reinen Logikelemente. Je nach der Anzahl und Komplexität der pro Takt durchzuführenden Operationen ergeben sich reale Systemtaktfrequenzen von meist 10-100 MHz. Maßgeblich ist, in wieweit das Design auf Fläche bzw. Geschwindigkeit designed und vom Tool synthetisiert wurde: Durch das Einbringen von zusätzlichen Registerstufen lassen sich z.B. zeitkritische Pfade entschärfen, sodass die Frequenz des Chips angehoben werden kann und der effektive Datendurchsatz trotz teilweise mehr CLKs zwischen Ein- und Ausgängen (Latenz) erhöht wird. Dieser lässt sich darüber hinaus durch die Nutzung paralleler Architekturen verbessern. Die Systemfrequenz kann-, muss aber nicht der Frequenz entsprechen, mit der Daten zyklisch eingetaktet und verarbeitet werden; zudem sind Schaltungsteile mit unterschiedlichen Taktfrequenzen zu unterscheiden: Mit einem Systemtakt1 von 20 MHz lassen sich z.B. 18-Bit AD-Wandler auslesen, die so z.B. alle 1 µs neue Daten liefern, die verarbeitet werden müssen. Bei der Nutzung von 5 solchen Wandlern, die sequentiell verarbeitet werden, lägen 5 MHz Datenfrequenz vor. Für andere Schaltungsteile, die z.B. asynchron an die Peripherie andocken, sowie reine »state machines« können Schaltungsteile auf der 2-4 fachen Frequenz betrieben werden. Generell sind Fläche und Geschwindigkeit konkurrierende Größen, zwischen denen ein Optimum gefunden werden muss. Für die preiswerten FPGA-Serien wie Spartan3 (Xilinx) und Cyclone II (Altera) sind aufgrund technologischer Randbedingungen etwa 10-20% weniger Taktgeschwindigkeit bei gleichem Design zu erwarten, bzw. muss mit mehr Verbrauch an Logikelementen und Taktzyklen gerechnet werden (weniger Routingreserven, geringere Zahl von LUT-Eingängen, weniger hard-ressourcen). Identische Chips werden oft in 2 oder mehr Geschwindigkeitsklassen angeboten, die sich meist durch Bauteilselektion bei der Produktion ergeben. Grob kann man ca. 5%-10% höhere Taktung zwischen zwei Speedgrades erwarten. [bearbeiten] HerstellerDie größten Hersteller von FPGAs sind Altera und Xilinx. Weitere Hersteller sind Lattice, Actel und Atmel. [bearbeiten] AnwendungDer Aufbau komplizierter, applikationsnaher Strukturen wird meist durch automatische Routing- und Synthesewerkzeuge erledigt, welche mit einer logischen, funktionellen Beschreibung der Architektur in einer Hardwarebeschreibungssprache wie z.B. VHDL "gefüttert" werden. Die Hardwarebeschreibung in VHDL gelingt ihrerseits z.B. mit VHDL-generierenden Werkzeugen, mittels derer zuvor Logikstrukturen, hardwarenahe Strukturen, Ablaufdiagramme und Zustandsautomaten formuliert wurden. Durch die Standardisierung der Architektur einerseits und die Entkoppplung von applikationsorientierter Beschreibung sowie Chip- und Hersteller-spezifischer Synthese andererseits, wird die Hardware quasi als Software gebaut. Dies wiederum schafft alle Optionen der Wiederverwendung und Austausch von "Hardwareteilen". So stehen inzwischen komplett nutzbare Schaltungen wie serielle Bausteine, RAM-Controller und vieles mehr als Open Source zur Verfügung. [bearbeiten] Entwicklungsboards und Starterkits[bearbeiten] Boards für Xilinx-FPGAs
[bearbeiten] Raggedstone 1 - Spartan-3 Development PCI-Karte
[bearbeiten] LiveDesign Evaluation Board von Altium
[bearbeiten] BurchEDhttp://www.burched.com/index.html australischer Anbieter von Xilinx-Evaluationsboards zur Zeit Webseite im Umbau [bearbeiten] Trenz-Electronichttp://www.trenz-electronic.de/products.html
[bearbeiten] Simple-Solutionshttp://www.simple-solutions.de/de/products/index.php Mehrere Spartan3-FPGAs - Boards [bearbeiten] CESYSCesys ist Entwickler und Hersteller von FPGA-boards mit Sitz in Deutschland.
[bearbeiten] Boards für Altera-FPGAs[bearbeiten] LiveDesign Evaluation Board von Altium
[bearbeiten] Terasic TREX C1 Multimedia Development Kit
[bearbeiten] Altera Cyclone II 2C20
[bearbeiten] Hpe Mini AC II - Altera Cyclone board von Gleichmann Research
[bearbeiten] Altera DE2 - Development and Education Board
[bearbeiten] Cyclone II EP2C35 Entwicklungsboard
[bearbeiten] NanoBoard-NB1 von Altium
[bearbeiten] Siehe auch
[bearbeiten] Weblinks
|