Field Programmable Gate Array


Field Programmable Gate Array

Ein Field Programmable Gate Array (kurz: FPGA) ist ein Integrierter Schaltkreis (IC) der Digitaltechnik, in den eine logische Schaltung programmiert werden kann. Die englische Bezeichnung kann übersetzt werden als: im (Anwendungs-)Feld programmierbare (Logik-)Gatter-Anordnung.

Anders als bei der Programmierung von Computern oder Steuerungen bezieht sich hier der Begriff Programm nur in zweiter Linie auf die Vorgabe zeitlicher Abläufe im Baustein, sondern vor allem auf die Definition von dessen Funktionsstruktur. Durch die Programmierung von Strukturvorschriften wird zunächst die grundlegende Funktionsweise einzelner universeller Blöcke im FPGA und deren Verschaltung untereinander festgelegt. Man spricht daher auch von der Konfiguration eines FPGAs.

Ein FPGA der Firma Altera

Inhaltsverzeichnis

Funktionsprinzip

Durch die spezifische Konfiguration interner Strukturen können in einem FPGA verschiedene Schaltungen realisiert werden. Diese reichen von Schaltungen geringer Komplexität, wie z. B. einfacher Synchronzähler, bis zu hochkomplexen Schaltungen, wie Mikroprozessoren. FPGAs werden in allen Bereichen der Digitaltechnik eingesetzt, vor allem aber dort, wo es auf schnelle Signalverarbeitung und flexible Änderung der Schaltung ankommt, um beispielsweise nachträgliche Verbesserungen an den implementierten Funktionen vornehmen zu können, ohne dabei direkt die physische Hardware ändern zu müssen.

Mit der Einführung der FPGAs wurden kompakte, anwenderspezifische Schaltungen in geringen Stückzahlen ermöglicht. Heutzutage gestatten sie die preiswerte und flexible Fertigung komplexer Systeme wie Mobilfunk-Basisstationen als Alternative zur teureren Auftragsfertigung durch Halbleiterhersteller.

Neben den FPGAs existieren auch FPAAs (Field Programmable Analog Array), die keine digitalen, sondern analoge Funktionsblöcke enthalten, die vom Anwender programmiert und verschaltet werden können.

Aufbau und Struktur

Beispielhafter Logikblock eines FPGAs, mit LUT und Flipflop
Schaltmatrix als Verbindungsstruktur zwischen Logikblöcken

Die wesensbestimmende Grundstruktur des FPGAs ist ein Feld (engl.: Array) aus Basisblöcken mit jeweils einer einfachen programmierbaren Lookup-Tabelle (LUT) und einem 1-Bit-Register (Flipflop). Die LUTs können, je nach Anzahl der verfügbaren Eingänge, jede beliebige n-stellige Binärfunktion realisieren. Die Programmierung der gewünschten Funktion erfolgt durch die Hinterlegung der definierenden Wahrheitstabelle in den SRAM-Zellen der LUT, die Funktionsberechnung durch das Auslesen der durch die Eingänge bestimmten Speicheradresse. Lange Zeit waren LUT-Strukturen mit 4 binären Eingängen üblich. Neuere FPGAs gehen zur Verringerung des Aufwandes an LUT-zu-LUT-Verbindungen zur Realisierung von Funktionen mit mehr Eingängen auf LUTs mit bis zu 6 Eingängen über.

Neben den LUTs ist auf dem FPGA auch die Verschaltung der Komponenten in großen Freiheitsgraden konfigurierbar. Multiplexer-Strukturen in den Basisblöcken ermöglichen häufig sehr schnelle lokale Signalpfade, zur Einbindung oder Umgehung des Flipflops, zur Rückkopplung von dessen Ausgang, zur Verbindung von Nachbarblöcken und ähnlichem. Für die ferneren Verbindungen liegt zwischen den Basisblöcken ein Gitter aus immensen Busstrukturen, an das Ein- und Ausgänge angeschlossen werden können. Weitere programmierbare Schaltkomponenten in den Kreuzungspunkten des Gitters erlauben die Signalverteilung über den gesamten Chip.

Die Programmierung der LUTs und der Verbindungsstrukturen erfolgt typischerweise einmal vor jedem Einsatz, wodurch der FPGA auf eine konkrete Funktion konfiguriert wird. Diese verliert der FPGA jedoch wieder durch Abschalten der Betriebsspannung. Im Einsatz steht dem FPGA deshalb meist eine Art EPROM zur Seite, der die Konfiguration vorhält, dessen Inhalt aber selbst auch aktualisierbar ist. Die Unterstützung für die regionale Umprogrammierung von einzelnen FPGA-Bereichen im laufenden Betrieb nimmt zu.

Der Begriff Programmierung ist in diesem Kontext anders zu verstehen als bei der Erstellung von Software für einen Prozessor: In einem FPGA werden Schaltungsstrukturen mittels Hardwarebeschreibungssprachen oder in Form von Schaltplänen erstellt und nachfolgend diese Daten zwecks Konfiguration in den Baustein übertragen. Im FPGA werden dadurch bestimmte Schalterstellungen aktiviert bzw. deaktiviert, was dann eine konkret implementierte digitale Schaltung ergibt.

Da die Funktion des FPGAs ausschließlich durch die Konfiguration festgelegt wird, kann der gleiche Baustein für viele verschiedene Schaltungen und Anwendungen verwendet werden. Er kann deshalb in großen Stückzahlen produziert werden, was ihn bei Prototypen und Kleinserien sehr kostengünstig im Vergleich zu einer Anwendungsspezifischen Integrierten Schaltung (ASIC) macht. FPGAs sind dafür im allgemeinen langsamer als ASICs und nicht beliebig tief bzw. kompliziert programmierbar. Die Tiefe der programmierbaren Logik ist von der Vorbereitung durch den Hersteller abhängig. Gemessen wird das an der Anzahl der logischen Komponenten, der I/O-Ports und der Flipflops, die sich in einem FPGA befinden.

Weitere, meist übliche Elemente eines FPGAs sind:

  • Eingangs-/Ausgangs-Blöcke (engl. IO-Blocks) dienen der Kommunikation mit der Außenwelt. Über sie werden die Anschlüsse des FPGAs mit der Schaltmatrix verbunden. Auch diese Blöcke können an die jeweilige Anwendung angepasst werden, z. B. kann die Ausgangsspannung an den jeweiligen Standard angepasst werden (TTL/CMOS usw.).
  • Eine Taktaufbereitung sorgt dafür, dass überall auf dem Chip ein synchroner Takt zu Verfügung steht, zusätzlich kann dieser oft noch verdoppelt, reduziert oder die Phase verändert werden. Moderne FPGAs besitzen typischerweise eine oder mehrere Phase-locked loops (PLL), mit denen sich rational gebrochene Taktunterteilungen/-vervielfachungen erzeugen lassen. Den gleichen Zweck erfüllen Delay-locked loops (DLL) und digital frequency synthesizer (DFS), die mancher FPGA-Hersteller gegenüber der PLL bevorzugt.
  • In komplexen FPGAs sind zusätzliche fest verdrahtete Funktionen enthalten, wie z. B. Speicherblöcke (sog. Block RAM), die sich in vielfältiger Weise nutzen lassen.
  • Für Aufgaben der digitalen Signalverarbeitung wie bei digitalen Filtern sind in manchen FPGAs auch Multipliziereinheiten enthalten. Diese erlauben es, besonders schnell zwei Binärzahlen zu multiplizieren ohne dafür Logikzellen zu benötigen.
  • FPGAs, die im Bereich von System on a Chip (SoC) Anwendung finden, besitzen eine Reihe meist komplexer Hard-Cores um ein komplettes System aufzunehmen. Hard-Cores sind feste und unveränderliche Schaltungen von meist komplexen Funktionsblöcken, wie beispielsweise Mikrocontroller oder Ethernetschnittstellen. Komplexe Hard-Cores belegen sehr viel weniger Chipfläche als es die gleiche Funktion, realisiert mit Logikblöcken, benötigen würde und sind typischerweise drei- bis viermal schneller als die frei konfigurierbare Logik der FPGAs. Dafür sind diese Schaltungsteile nicht so flexibel und können in ihrer Funktion auch nicht mehr verändert werden.

Hersteller wie Xilinx bieten mittlerweile auch auf SRAM basierende FPGAs an, die bereits über im Chipgehäuse untergebrachten Flash-Speicher zur Konfiguration verfügen und keinen externen Flash-Speicher mehr benötigen. Man nennt solche integrierten Schaltungen mit mehreren Chips in einem Gehäuse auch Multi-Die. Die Lade- bzw. Startzeiten des FPGAs bleiben im Vergleich zu externem Speicher in etwa gleich, sind allerdings speziell vom Hersteller optimiert. Ein weiterer Vorteil ist der Schutz vor unrechtmäßigen Kopien durch das Auslesen des extern befindlichen Speichers. Derzeit und auf absehbare Zeit ist es technologisch nicht möglich, die SRAM-basierten Schalterzellen in einem FPGA direkt wie bei den viel kleineren CPLDs durch Flash- bzw. EEPROM-Zellen zu ersetzen.

Unterschiede zu CPLDs

Oft werden FPGAs mit den digitalen und ebenfalls rekonfigurierbaren CPLD-Bausteinen (Complex Programmable Logic Devices) gleichgesetzt bzw. verglichen. Die wesentlichen Unterschiede zwischen FPGAs und CPLDs sind:

  • CPLDs weisen im Vergleich zu FPGA eine wesentlich einfachere Struktur auf. CPLDs besitzen kein feinmaschiges Array (Feld) von Logikblöcken und Flip-Flops, sondern nur eine konfigurierbare Schaltmatrix, die verschiedene Eingangssignale zu verschiedenen Ausgangssignalen verbinden kann. Die Signale können dabei durch logische Operationen wie AND/OR verknüpft werden. Dadurch haben CPLDs eine vom jeweiligen Design unabhängige, konstante Signaldurchlaufzeit. Durch entsprechende Designmethoden kann auch bei FPGAs eine definierte maximale Durchlaufzeit erreicht werden (engl. timing constraints).
  • CPLDs weisen vergleichsweise wenige Flip-Flops auf. Vor allem längere Schieberegister, Zähler, Zustandsspeicher und ähnliche Schaltungen, die viele Flip-Flops benötigen, sind in CPLD nur ineffizient zu realisieren.
  • CPLDs besitzen, da jeder IO-Pin ein Flip-Flop besitzt, meist sehr viele IO-Pins, die in vielen Anwendungen nur teilweise verwendet werden. In Anwendungen, in denen nur vergleichsweise einfache digitale Schaltungen, sogenannte glue logic, mit einem hohen Bedarf an IO-Pins Verwendung findet, sind CPLDs meist die bessere Wahl.
  • CPLDs können durch ihre einfache Struktur technologisch mit Flash-Zellen in den Schaltmatrizen arbeiten. Damit ist ein CPLD sofort nach dem Einschalten (engl. Power-Up) betriebsbereit, während rekonfigurierbare FPGAs mit SRAM-basierenden Zellen erst einen Ladezyklus für die Konfiguration durchlaufen müssen. Von einigen Herstellern gibt es aber seit längerem auch FPGAs in Flash-Technik. Seit Ende der 1990er Jahre ist bei den CPLDs eine Annäherung an die FPGA-SRAM-Technologie zu beobachten. Heute arbeiten die meisten CPLDs intern SRAM-basiert. Bei einigen CPLD-Familien besteht inzwischen das logische Grundelement aus dem FPGA-typischen LUT4-Flipflop-Verbund (Altera MAX II Serie).
  • CPLDs weisen durch den einfacheren Aufbau und die geringere Größe auch einen wesentlich geringeren Stromverbrauch auf.

Entwurfsschritte und -werkzeuge

Ein FPGA der Firma Xilinx

Erstellt wird die Konfiguration eines FPGAs meist mittels einer Hardwarebeschreibungssprache, dies sind primär VHDL oder Verilog, welche die gesamte Funktion der Schaltung in Form von Strukturen und Abläufen beschreibt. Ein sogenanntes Synthesewerkzeug erstellt dann aus diesen Daten für einen gewünschten Baustein eine spezifische Netzliste unter Nutzung der in diesem Baustein verfügbaren Ressourcen. Zuvor wird im Rahmen des Entwicklungsprozesses die Hardwarebeschreibung mittels Simulationswerkzeugen in ihrem Verhalten simuliert und optimiert. Ein hierfür bekanntes Werkzeug ist ModelSIM.

Die Konfigurationsdaten können aus Übersichts- oder Vereinfachungsgründen bei meist einfachen Schaltungen auch grafisch mittels eines Schaltplans eingegeben werden. Die im FPGA erforderlichen Ablaufsteuerungen wiederum lassen sich durch endliche Automaten darstellen. Der hardwarebeschreibende Code wird dann in einem Zwischenschritt automatisch erzeugt. Darüber hinaus lassen sich mit grafischen Programmiersystemen wie LabVIEW oder Matlab / Simulink oder dem kostenfreien Logiflash[1] ebenfalls Schaltungsmodule für ein FPGA automatisch erstellen.

In den letzten Jahren versuchten mehrere Projekte, Hardwareimplementierungen für ASICs, FPGAs und CPLDs mit der Programmiersprache C (HardwareC, HandelC, BachC) zu beschreiben. Aktuelle Ansätze bauen hierbei direkt auf den weit verbreiteten Standardsprachen ANSI C bzw. C++ auf. Für SystemC existieren keine Synthesetools, der praktische Nutzen für konkrete FPGA-Entwicklungen liegt bei der abstrakten Verhaltensmodellierung und deutlich beschleunigten Systemsimulationen, weshalb es dort zum weitverbreiteten Industriestandard avanciert ist. Andere Ansätze verwenden High-Level Synthese Werkzeuge, um aus Hochsprachen (C/C++, MATLAB, Java, UML) einen Entwurf auf Registertransferebene (VHDL, Verilog) zu generieren. Beispielsweise sind dies Catapult C Synthesis von Mentor Graphics, CoDeveloper von Impulse Accelerated Technologies oder Cynthesizer von Forte Design Systems.

Herstellerspezifische Sprachen wie Altera-HDL (AHDL) oder auch die kaum noch verwendete Hardwarebeschreibungssprache ABEL wurden ebenso genutzt wie UDL/I (Japan).

Zur Implementierung eingebetteter Systeme in FPGAs gibt es mittlerweile Werkzeuge, die eine Konstruktion auf Funktionsblockebene anbieten, z. B. Xilinx EDK (Embedded Development Kit). Funktionsblöcke wie FIFOs, Prozessoren, serielle Schnittstellen, Ethernet-MAC-Layer, RAM-Controller, Parallel-IO etc. werden vom Hersteller zur Verfügung gestellt. Diese Funktionseinheiten, IP-Core genannt, liegen manchmal als Quellcode, oder meist als verschlüsselte Netzliste vor und sind in der Regel parametrisierbar (z. B. Baudrate bei seriellen asynchronen Schnittstellen oder Fifo-Tiefe oder Breite der Parallelschnittstelle). Diese werden über Busse mit anderen Funktionseinheiten verbunden.

Timing-Simulation einer digitalen Schaltung

Nach der Beschreibung innerhalb des Entwurfsflusses folgen weitere Schritte wie die funktionale Simulation, Synthese, die Implementierung (Place and Route) und laufzeitbasierende Simulation. Erst danach sollte die implementierte Schaltung am realen FPGA erprobt werden.

Die Programmierung der Logikbausteine kann je nach FPGA unterschiedlich gelöst werden. Man kann zwischen Methoden unterscheiden, die es ermöglichen, das FPGA mehrmals zu programmieren, und Methoden, die nur eine einmalige Programmierung zulassen. Bei den mehrmals programmierbaren FPGAs wird die Konfiguration in Speicherzellen (z. B. SRAM, EPROM, EEPROM, Flash) gespeichert. Bei den einmalig programmierbaren FPGAs werden die physikalischen Eigenschaften der Verbindungswege permanent geändert (Antifuse-Technologie). Diese Technologie bietet im Feld eine größere Sicherheit gegen äußere Störungen.

Für FPGAs wird beim Schaltungsentwurf ein synchrones Schaltungsdesign empfohlen, wenngleich nicht zwingend erforderlich. Das bedeutet: An allen Flipflops in einer so genannten Clock-Domain liegt der gleiche Takt. Gesteuert wird die Datenübernahme in ein Flipflop nur über die zusätzlich vorhandenen Clock Enable-Eingänge und nicht über geteilte Taktsignale (engl. gated clocks). Das vermeidet schwer handhabbare Laufzeiteffekte. Manche FPGAs bieten spezielle Taktumschalter an, die das garantiert störungsfreie Umschalten (glitch-frei) zwischen verschiedenen Taktquellen im Betrieb erlauben.

Anwendungsgebiete

FPGAs haben in den letzten Jahren ihren Anwendungsbereich von der klassischen „Glue-Logic“, also der reinen Verbindungslogik zwischen verschiedenen digitalen Bausteinen, zunehmend erweitert und werden heute auch bei mittleren Stückzahlen für die Realisierung komplexer digitaler Schaltungen bis hin zu kompletten digitalen Systemen eingesetzt. Durch die Rekonfigurierbarkeit von FPGAs direkt beim Endanwender besteht darüber hinaus der wesentliche Vorteil, auf aktuelle technische Entwicklungen reagieren zu können und die digitalen Schaltungen durch Updates anpassen zu können, ohne direkt die zugrundeliegende Hardware der FPGA-Chips verändern zu müssen.

FPGAs werden beispielsweise zur Echtzeit-Verarbeitung von einfachen bis komplexen Algorithmen genutzt, zur digitalen Signalverarbeitung im Rahmen von digitalen Filtern oder zur schnellen Fourier-Transformation. Aber auch Protokoll-Implementierungen wie Teile des Ethernet-MAC-Layers, die Kodierung von digitalen Videosignalen, die Verschlüsselung von Daten und Fehlerkorrekturverfahren sind Anwendungsgebiete.

Besonders in Bereichen, in denen Algorithmen bzw. Protokolle einer schnellen Weiterentwicklung unterliegen, ist die Verwendung rekonfigurierbarer FPGAs statt ASICs angebracht. Die Vorteile sind schnelle Marktreife, nachfolgende Fehlerbehebungen, Anpassung an neue Entwicklungen.

Für einige Klassen von Rechenproblemen sind auch FPGA-basierte Parallelcomputer sehr geeignet. Das wahrscheinlich bekannteste Beispiel sind FPGA-Rechner zum Brechen kryptographischer Verfahren, wie dem Data Encryption Standard (DES). Der aus 120 FPGAs bestehende Parallelrechner COPACOBANA ist ein solcher Parallelcomputer zum Codebrechen.

Die inzwischen erreichte Anzahl von Logikblöcken erlaubt die Integration mehrerer eingebetteter Computersysteme in einen einzigen FPGA-Baustein inklusive CPU(s), Bussystem(en), RAM, ROM, RAM-Controller, Peripherie-Controller etc. Solche kompletten Systeme werden als System on a Chip (SoC) bezeichnet. Auf Grund ihrer Rekonfigurierbarkeit bilden die SRAM- und Flash-basierten FPGAs die Grundlage für rekonfigurierbare Computer.

Digitale Speicheroszilloskope werden oft mit FPGAs realisiert, da deren Stückzahlen meist zu gering sind, um einen ASIC für diesen Anwendungsfall zu entwerfen. Schnelle digitale Speicheroszilloskope verwenden pro Kanal mehrere A/D-Umsetzer parallel, welche phasenverschoben das Messsignal abtasten. Dies erfordert ein sehr hohes Maß an parallelisierter Datenverarbeitung und -speicherung, für die FPGAs gut geeignet sind. Oszilloskope auf FPGA-Basis können beispielsweise prinzipiell auf einen Störimpuls, gemessen mit minimal einem Abtastwert (von beispielsweise 1 GS/s oder mehr), triggern, oder dessen Aufkommen zählen, unabhängig von den A/D-Umsetzern pro Kanal. Ein besonderer Vorteil von FPGAs bei Spezialanwendungen liegt neben dessen Funktionsumfang auch darin, dass gegenüber DSPs verhältnismäßig geringe Entwicklungskosten für einen Neuentwurf entstehen, falls einer der verwendeten ICs (FPGA, DSP, FIFO-RAM, …) der Anwendung nicht mehr erhältlich ist.

FPGAs werden auch als Entwicklungsplattform für den digitalen Teil von ASICs verwendet.

Ein besonders auf FPGAs zugeschnittener Tochterkartenstandard ist die FPGA Mezzanine Card.

Vergleich mit Mikroprozessoren

FPGAs bilden je nach Konfiguration beliebige Anordnungen digitaler Schaltungsfunktionen ab und bieten damit grundsätzlich die Möglichkeit, Informationen vollkommen parallel zu verarbeiten. So können die anfallenden Datenflüsse in Bandbreite und Informationstiefe optimal einander angepasst werden. Schnell zu erfassende Signale werden dabei oft voll parallel, langsamer auftretende Signale vermehrt zyklisch und damit platzsparend verarbeitet. Die dafür nötigen Strukturen werden geeignet erzeugt.

Allerdings können Prozessoren mit wenig Hardware lange Programme sequentiell abarbeiten. Bei einem FPGA muss für jede Operation ein Stück Hardware synthetisiert werden, wobei es eine eingeschränkte Anzahl an Logikgattern gibt.

Herkömmliche Prozessoren hingegen sind reine endliche Zustandsautomaten, die mit einer festgelegten Hardware auskommen müssen und ihr Programm sequentiell abarbeiten, woraus sich auch wesentliche Unterschiede in der Gestaltung bei der Implementierung von Algorithmen ergeben. Mikroprozessoren besitzen häufig eine fest vorgeschriebene Peripherie. Das ist Vor- und Nachteil zugleich. Einerseits muss die Peripherie nicht noch extra erzeugt werden, jedoch lässt sich diese in einem FPGA problemgerecht anpassen.

In einem FPGA können hunderte Additionen und Multiplikationen zur gleichen Zeit ausgeführt werden, während selbst moderne Prozessoren mit SIMD-Befehlen nur einige wenige Operanden parallel verarbeiten können. Damit können spezifische Aufgaben in gleicher Zeit mit wesentlich geringeren Taktraten erledigt werden. Ferner lassen sich die parallel existierenden Architekturen zu echten Pipelines zusammenschalten, welche die Daten mit jedem Clock weiterreichen. Hierdurch wird ein maximaler Datendurchsatz erzielt.

Mikroprozessoren haben häufig einen geringeren Stromverbrauch, sind oft deutlich billiger und lassen sich leicht auf eine Platine bringen, da sie oft ein Dual-Inline-Gehäuse haben. FPGAs besitzen meist ein Ball-Grid-Array und müssen von einem Leiterplattenhersteller aufgebracht werden. Da FPGAs des Öfteren keinen remanenten Speicher besitzen, ist ein zweiter, externer Chip notwendig, der wiederum die Kosten erhöht.

Viele Veröffentlichungen aus unterschiedlichsten Anwendungsgebieten berichten über Migration einer Anwendung von Software nach Configware mit Beschleunigungsfaktoren von einer bis zu 4 Größenordnungen. Deshalb finden FPGAs neuerdings Eingang beim Reconfigurable Computing.

Vergleich mit ASICs

Vorteile

  • deutlich geringere Entwicklungskosten (im Gegensatz zu ASICs werden keine Masken mit sehr hohen Fixkosten benötigt)
  • sehr kurze Implementierungszeiten
  • einfach korrigier- und erweiterbar (rekonfigurierbar)
  • geprüftes Silizium
  • geringeres Designrisiko, da es nicht Monate vor der Hardwareauslieferung fertig sein muss

Nachteile

  • ab mittleren Stückzahlen höherer Stückpreis
  • geringere Taktraten (aktuell verfügbar bis 1,5 GHz, typisch werden 20–500 MHz realisiert; digitale ASICs bieten >3 GHz)
  • geringere Logikdichte (ca. 10-facher Flächenbedarf gegenüber ASIC gleicher Technologie)
  • deutlich höherer Leistungsbedarf für gleiche Menge an Logik bzw. Funktionen
  • höhere Empfindlichkeit gegenüber Teilchenstrahlung und elektromagnetischen Wellen
  • geringere Flexibilität, was Ausstattung z. B. mit eingebettetem Speicher oder analogen Elementen angeht, aber auch bei IO-Buffern
  • der kürzere Designzyklus und die Möglichkeit, sehr spät noch Fehler korrigieren zu können, verleiten dazu, im Vorfeld weniger funktionale Tests durchzuführen.
  • SRAM-basierte FPGAs (das sind z. B. alle von den Marktführern Xilinx und Altera angebotenen) müssen bei jeder Spannungsunterbrechung neu geladen werden. Das bedeutet, dass die Funktionalität nicht direkt nach dem Einschalten zur Verfügung steht. Das Laden kann – je nach eingesetzter Technik – bis zu einigen Sekunden dauern. Handelt es sich nicht um spezielle FPGAs mit integriertem Flashspeicher, sind dazu zusätzliche, externe Komponenten notwendig, z. B. ein herstellerspezifisches EEPROM oder Flash-Speicher, das die Konfiguration enthält oder ein Mikrocontroller mit zusätzlichem Flash-Speicher, der den Ladevorgang durchführt.

Hersteller von FPGAs

  • Xilinx – Marktführer
  • Altera – Anbieter eines Migrationspfads vom FPGA zu strukturierten ASICs
  • Lattice – Anbieter eines freien 32 Bit Open Source SoftCore Prozessors sowie von GAL-Technik
  • Atmel – FPGAs, auch mit zusätzlich integriertem RAM und AVR Mikrocontroller
  • Actel – Bausteine in FLASH-Technologie sowie strahlungsresistente Antifuse-FPGAs
  • QuickLogic – Anbieter von stromsparenden FPGAs
  • Aeroflex – strahlungsresistente FPGAs
  • SiliconBlue – stromsparende FPGAs
  • Achronix Semiconductor – sehr schnelle FPGAs (bis 1,5 GHz)
  • Abound Logic – stromsparende FPGAs mit hoher Logikdichte

Neben den bestehenden Anbietern haben im März 2010 zwei Firmen neuartige FPGAs angekündigt, die jeweils auf unterschiedliche Art eine dreidimensionale (3D) Architektur enthalten: Tabula[2] und TierLogic[3]. Während Tabula mehrere Silizium-Chips (Dice) übereinander in ein Chipgehäuse verpacken möchte, will TierLogic die SRAM-Zellen zur Konfiguration des FPGA aus der aktiven Siliziumfläche herausnehmen und stattdessen als Dünnschichttransistoren (TFT, thin-film transistors) oberhalb der aktiven Siliziumfläche aufbringen.

Weblinks

 Commons: Field Programmable Gate Array – Sammlung von Bildern, Videos und Audiodateien

Einzelnachweise

  1. Logiksimulator LogiFlash
  2. Tabula FPGAs: this one could be game-changing Artikel in EDN vom 1. März 2010
  3. TierLogic lifts the veil: another take on the 3D FPGA Artikel in EDN vom 10. März 2010

Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Field programmable Gate Array —   [dt. »im (Praxis )Feld programmierbare Gatteranordnung«] (Field programmable Logic Array), FPGA …   Universal-Lexikon

  • Field-programmable gate array — FPGAs should not be confused with the flip chip pin grid array, a form of integrated circuit packaging. A field programmable gate array is a semiconductor device containing programmable logic components called logic blocks , and programmable… …   Wikipedia

  • Field-Programmable Gate Array — Circuit logique programmable FPGA de Xilinx (modèle Spartan XC3S400) avec 400 000 portes et une fréquence de 50 MHz Un circuit logique programmable, ou réseau logique programmable, est un circuit intégré logique qui peut être… …   Wikipédia en Français

  • field-programmable gate array — noun an gate array designed to be configured by the customer or designer after manufacturing in the field, i.e. after manufacturing. Syn: FPGA …   Wiktionary

  • Field Programmable Logic Array — Grundprinzip eines PLA Eine programmierbare logische Anordnung, häufig in deutschsprachiger Fachliteratur als Programmable Logic Array oder kurz PLA bezeichnet, ist ein Halbleiterschaltkreis, der aus insgesamt zwei hintereinander geschalteten AND …   Deutsch Wikipedia

  • Field-programmable analog array — A field programmable analog array (FPAA) is an integrated device containing configurable analog blocks (CAB) and interconnects between these blocks. Unlike their digital cousin, the FPGA, the devices tend to be more application driven than… …   Wikipedia

  • Gate Array — Gate Arrays, auch als Uncommitted Logic Array (ULA) bezeichnet, sind vorkonfektionierte Logikschaltungen, die kundenspezifisch gefertigt werden. Beim Gate Array werden die meisten Herstellungsschritte kundenunabhängig durchgeführt. Die Lage der… …   Deutsch Wikipedia

  • Field Programmable Nanowire Interconnect — (often abbreviated FPNI) is a new computer architecture developed by Hewlett Packard. This is a defect tolerant architecture, using the results of the Teramac experiment.Details: The design combines a nanoscale crossbar switch structure with… …   Wikipedia

  • Programmable Logic Array — Grundprinzip eines PLA Eine programmierbare logische Anordnung, häufig in deutschsprachiger Fachliteratur als Programmable Logic Array oder kurz PLA bezeichnet, ist ein Halbleiterschaltkreis, der aus insgesamt zwei hintereinander geschalteten AND …   Deutsch Wikipedia

  • Gate array — A gate array or uncommitted logic array (ULA) is an approach to the design and manufacture of application specific integrated circuits (ASICs). A gate array circuit is a prefabricated silicon chip circuit with no particular function in which… …   Wikipedia