Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Web Analytics
Cookie Policy Terms and Conditions Field Programmable Gate Array - Wikipedia

Field Programmable Gate Array

aus Wikipedia, der freien Enzyklopädie

Ein FPGA (Field Programmable Gate Array) ist ein mit Configware programmierbarer Halbleiterbaustein bzw. IC. Er beinhaltet programmierbare logische Komponenten (CLB: Configurable Logic Block, meist mit einer Pfadbreite von 1 Bit, weshalb FPGAs als feinkörnig rekonfigurierbar gelten) und programmierbare Verbindungen zwischen diesen Komponenten. Das ganze ist als Feld bzw. Matrix gefertigt. Die Komponenten können zu grundlegenden logischen Bausteinen wie AND, OR, NOR, NOT und NAND, programmiert werden. Sie können aber auch zu komplexerer Logik wie Decoder, Encoder oder mathematischen Funktionen programmiert und verknüpft werden. Der FPGA wird nach der Herstellung vom Anwender programmiert. Er kann meist im System, also in voll bestückter Platine, programmiert werden, um Firmware-Updates einzuspielen. Da die Funktion des FPGAs ausschließlich durch die Konfiguration festgelegt wird, kann der gleiche Baustein für viele verschiedene Schaltungen 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 im allgemeinen langsamer als ASICs und sie sind nicht beliebig tief bzw. kompliziert programmierbar. Vielmehr ist die Tiefe der programmierbaren Logik von der Vorbereitung des Herstellers abhängig. Gemessen wird dies an der Anzahl der logischen Komponenten, der I/O Ports, der Flip-Flops, der Gates usw.

Ein FPGA der Firma Altera
Ein FPGA der Firma Altera


Inhaltsverzeichnis

[Bearbeiten] Aufbau und Struktur

Logikblock eines FPGAs, mit LUT und Flipflop
Logikblock eines FPGAs, mit LUT und Flipflop

Die zentralen Elemente eines FPGAs sind programmierbare Logikblöcke. In diesen können logische Operationen wie AND, OR, NOT, XOR realisiert werden. Außerdem ist ihnen ein Speicherelement nachgeschaltet, das als Flipflop oder Latch verwendet werden kann bzw. überbrückt wird, wenn eine rein kombinatorische Funktion benötigt wird. Die kombinatorische Logik wird meist durch sog. LUTs (Look-Up-Table) gebildet, das heißt in einem kleinen Speicher wird für jeden Zustand der Eingänge der Wert abgelegt, den der Ausgang annehmen soll. Der LUT-Speicher kann auch als synchrones Schieberegister, als Speicher oder Teil von Rechenfunktionen eingesetzt werden.

An die Logikblöcke sind Schaltmatrizen angeschlossen, mit denen über Leitungen die Verbindung zu anderen Elementen des FPGAs hergestellt wird.

Eingangs-/Ausgangs-Blöcke dienen der Kommunikation mit der Außenwelt, über sie werden die Pins 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.

In vielen FPGAs sind außerdem noch zusätzliche fest verdrahtete Funktionen enthalten, wie z.B. Speicher (sog. Block RAM), der sich in vielfältiger Weise konfigurieren lässt. Rein konventionell organisierter Speicher kann hier untergebracht werden und belegt keine LUTs bzw. Logikzellen. Vor allem für Aufgaben der Signalverarbeitung sind Multiplizierer integriert, die resourcenschonender und schneller sind, als solche, die aus Logikzellen zusammengesetzt sind.

Hybrid-FPGAs wie z. B. Xilinx Virtex 4 FX besitzen außerdem Hardcores (fest integrierte IP-Cores) wie ein oder zwei CPUs (PPC 405) und MAC-Layer für Gigabit-Ethernet. Hardcores belegen sehr viel weniger Die-Fläche und sind CPU-typisch drei bis vier mal schneller als reine FPGAs, dafür jedoch nicht mehr so flexibel.

[Bearbeiten] Entwurfsschritte und -werkzeuge

Erstellt wird Firmware für einen FPGA entweder mittels einer Hardware-Beschreibungssprache, zum Beispiel VHDL oder Verilog, oder grafisch durch einen Schaltplan oder endlichen Automaten. Auch mit den grafischen Programmiersystemen LabVIEW oder Matlab Simulink ist eine Programmierung möglich. In den letzten Jahren gab es immer wieder Versuche FPGAs und CPLDs mit der Programmiersprache C zu beschreiben (HardwareC / SystemC) oder C in VHDL umzusetzen (Spark). Herstellerspezifische Sprachen wie Altera-HDL oder ABEL-HDL werden 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 –Softcore genannt– liegen im Quellcode (ggf. auch verschlüsselt) oder als 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.

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).

FPGAs erfordern beim Schaltungsentwurf ein synchrones Schaltungsdesign. Das bedeutet: An allen Flipflops in einer so genannten Clock-Domain liegt der gleiche Takt und 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). Dies vermeidet schwer handhabbare Laufzeiteffekte. Manche FPGAs bieten spezielle Taktumschalter an, welche das garantiert störungsfreie Umschalten (glitchfrei) zwischen verschiedenen Taktquellen im Betrieb erlauben.

[Bearbeiten] Anwendungsgebiete

Reprogrammierbare FPGA haben einen speziellen Bereich der Computertechnik erst in nutzbarem Umfang realisierbar gemacht: Selbstkonfigurierende Systeme. Diese konfigurieren sich zur Laufzeit entsprechend der geforderten Eigenschaften (z. B. spezielle mathematische Algorithmen) um und erreichen damit bisher unerreichte Verarbeitungsgeschwindigkeiten und Parallelität. Als besondere Herausforderung kann man hierbei die Compiler-Entwicklung sehen. Ziel ist es, objektorientiert Logik-Kapazitäten bei Bedarf zur Benutzung zu konfigurieren und nach der Benutzung freizugeben. (Siehe auch Java Hardware Definition Language[1])

FPGAs werden gerne zur Echtzeit-Verarbeitung einfacher Algorithmen genutzt, speziell zur Signalverarbeitung (z. B. FFT, FIR), Protokoll-Abarbeitung (Ethernet MAC-Layer, GPRS etc.), Kodierung, Fehlerkorrektur usw., das heißt immer dann, wenn die Bearbeitung eines Datenstroms nicht mehr von einer CPU bewältigt werden kann (Ausgangsdatenstrom gleich groß wie Eingangsdatenstrom, in der Regel mit einer gewissen Latenz). Besonders in Bereichen, in denen Algorithmen bzw. Protokolle einer schnellen Weiterentwicklung unterliegen, ist die Verwendung rekonfigurierbarer FPGAs statt ASICs angebracht (schnelle Marktreife, nachfolgende Fehlerbehebungen, Anpassung an neue Entwicklungen), weil dann nur noch die Firmware aktualisiert werden muss, anstatt der Neuanfertigung und dem Austausch eines ICs.

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 Parallelrechener 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.

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

[Bearbeiten] Unterschiede zu Prozessoren

Siehe auch unter Reconfigurable Computing. FPGAs bieten die Möglichkeit Informationen massiv parallel zu verarbeiten. Dadurch benötigen FPGAs nicht so hohe Taktfrequenzen wie Prozessoren, welche einen Programmfluß sequentiell verarbeiten. 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.

Viele Veröffentlichungen aus unterschiedlichsten Anwendungsgebieten berichten über Migration einer Anwendung von Software nach Configware mit Akzelerationsfaktoren von einer bis zu 4 Größenordnungen. Deshalb finden FPGAs neuerdings Eingang beim Reconfigurable Supercomputing. Eine der Veröffentlichungen, die einen Akzelerationsfaktor von nur 17 angibt, geht auch auf den Energie-Verbrauch ein und berichtet dabei eine Verminderung der Stromrechnung auf nur ein Zwölftel.

[Bearbeiten] Unterschiede zu Complex Programmable Logic Devices (CPLDs)

Die Unterschiede zu CPLDs sind im Wesentlichen:

  • durch Blockarchitektur und frei programmierbaren Signalfluss keine exakte Berechnung der Gatterlaufzeiten möglich
  • bei FPGAs, die auf SRAM-Technologie basieren, erfolgt eine Konfiguration bei jedem Start (heutzutage meist aus externem EEPROM oder via JTAG vom Prozessor her), bei CPLDs die auf Flash- oder Antifuse-Technologie basieren entfällt logischerweise die Konfiguration.

[Bearbeiten] Vorteile gegenüber ASICs

  • deutlich geringere Entwicklungskosten (im Ggs. zu ASICs 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

[Bearbeiten] Nachteile gegenüber ASICs

  • ab mittleren Stückzahlen höherer Stückpreis
  • geringere Taktraten (aktuell verfügbar bis 600 MHz)
  • geringere Logikdichte (ca. 10-facher Flächenbedarf gegenüber ASIC gleicher Technologie)
  • höherer Energiebedarf
  • weniger 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, verleitet 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 jedem Systemstart geladen werden. Es sind also zusätzliche externe Komponenten notwendig, z.B. ein herstellerspezifisches EEPROM, das die Konfiguration enthält, oder ein Mikrocontroller mit zusätzlichem Flash-Speicher, der den Ladevorgang durchführt. Das bedeutet auch, dass die Funktionalität eines FPGAs nicht direkt nach dem Einschalten zur Verfügung steht, sondern erst nach dem Laden, was je nach eingesetzter Technik einige Zeit dauern kann. Dieser Nachteil gilt nur für einige FPGAs.

[Bearbeiten] Siehe auch

Reconfigurable Computing

commons:Hauptseite
Commons
Commons: Field Programmable Gate Array – Bilder, Videos und/oder Audiodateien

[Bearbeiten] Weblinks

[Bearbeiten] Hersteller

[Bearbeiten] weiterführende Informationen

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu