FPGA
FPGA ist die Abkürzung für "Field Programmable Gate Array".
Aufbau
Grundelemente
Ein 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, wobei die Zahl vom FPGA abhängig ist und meist zwischen 4 und 6 liegt. Für Funktionen, die mehr Eingänge erfordern, als eine einzige LUT besitzt (hohes Fan-In), werden mehrere LUTs direkt miteinander verschaltet. Das Verhältnis zwischen der Anzahl von LUTs und derjenigen der FF ist meist 1:1. Aktuelle FPGAs bestehen aus bis zu einigen zehntausend Logikelementen.
Die obigen logischen Schalter, welche die Funktion definieren, sind in den meisten FPGAs durch SRAM-Speicherzellen realisiert, in 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-basierenden) 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 besteht aus 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 AntiFuse FPGAs sind einmalig programmierbar.
I/O Anschlüsse
FPGAs 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.
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 einige 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 verschiedener Bitbreite erzeugt werden. Üblich sind mehrere (4 - 30) kleinere Dualport RAM-Blöcke von 4 - 16 kbit. Einge Familien besitzen einen grösseren 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 getaktetem Steuersignalen. Meist sind 2 - 8 Taktnetzwerke und PLL/DLLs gleicher Anzahl integriert. Siehe auch Taktung FPGA/CPLD.
CPU im FPGA
Immer beliebter wird es, einen FPGA mit einem oder mehreren Prozessoren (z.B. AVR bei Atmels FPSLIC oder PowerPC bei Xilinx' Virtex-4) auf einem IC zu integrieren, was neben der Platzeinsparung eine große Flexibiliät beim Lösen komplexer Aufgaben bietet (der FPGA kann z.B. spezielle IO-Funktionen für den Prozessorkern bereitstellen). Viele Hersteller bieten auch einen speziell für ihren jeweiligen FPGA optimierten Softcore an, z.B. Microblaze von Xilinx, und Nios von Altera. Als Programmspeicher werden die FPGA-internen RAM-Blöcke oder externe Speicher-ICs (SDRAM, SRAM) genutzt.
Beispiele für Soft-CPUs:
- Altera NIOS (32 bit, bis zu ca. 125 MHz)
- Xilinx Picoblaze (8 bit controller, bis ca. 88 - 200 MHz, nur Assembler, nur internen Programmspeicher)
- Xilinx Microblaze (32 bit, bis zu ca. 100MHz)
- LEON2, LEON3 (32 SPARC V8 kompatibel, GPL)
- Plasma MLITE (MIPS kompatibel, GPL)
- LatticeMico 32 (32 Bit, GCC Port vorhanden, Verilog, frei)
Die Taktfrequenzen sind stark vom FPGA-Typ und der FPGA-Auslastung (freie Logikressourcen) abhängig.
Die Hersteller stellen dazu eigene Compiler/Tools für die Programmierung in C oder Assembler zur Verfügung, bei Xilinx das Embedded Design Kit EDK. Diese Kits sind nicht immer in den kostenlosen Entwicklungstools enthalten und müssen getrennt erworben werden.
Der Vorteil der Integration einer soft CPU besteht dabei im Wesentlichen aus der Möglichkeit, vorhandene Software und Betriebssysteme nutzen zu können.
Eigenschaften
Geschwindigkeit
Die 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 jeder 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 Speedgrade 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 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 1us neue Daten liefern, die verarbeitet werden müssen. Bei der Nutzung von 5 solcher Wandler, 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.
Hersteller
Die größten Hersteller von FPGAs sind Xilinx und Altera. Weitere Hersteller sind Lattice, Actel und Atmel.
Anwendung
Der 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.
Entwicklungsboards
Boards für Xilinx-FPGAs
Raggedstone 1 - Spartan-3 Development Board
- Spartan-3 FPGA XC3S400, FG456-Package
- 32 bit, 33 MHz, 3.3/5V PCI interface
- 4Mbit Flash Memory
- 16KBit serial EEprom
- LM75 Temperature Sensor
- viele DIL-Header für eigene Erweiterungen, verschiedene werden auch durch Hersteller angeboten
- Mit dem PCI-Interface kann bei entsprechender Programmierung des FPGA auf den PCI-Bus eines Hostrechners zugegriffen werden, Beispieldesign unter http://projects.varxec.net/raggedstone1
- Auch mit XC3S1500 lieferbar
- Webseite: http://www.enterpoint.co.uk/moelbryn/raggedstone1.html
- Etwa €90,-
LiveDesign Evaluation Board von Altium
- Kompatibel mit den LiveDesign-fähigen Entwicklungstools von Altium
- Xilinx-Version direkt mit ISE Webpack nutzbar
- Xilinx XC3S1000-4FG456C, wahlweise aber auch mit Altera EP1C12F324C8 (s.u.)
- Mit Flachbandkabel für PC-Verbindung (Druckerport) sowie weiteren Kabeln und Verbindern
- Peripherie: LEDs, Dip-Schalter, 6-stellige Siebensegmentanzeige, Taster, Stereo-DAC, zwei 256K x 16 RAMs
- kein on-board Flash RAM für FPGA-Konfiguration, diese muss nach dem Einschalten neu geladen werden
- Ports: PS2-Maus & -Tastatur, RS232, VGA (512 Farben), 2x18 IO-Pins für allgemeine Zwecke
- Listenpreis $99,- Endpreis: ~150 Euro (inkl. MwSt. und Versand)
Spartan3-Board
Digilentinc Board
- Spartan-3 XC3S200 FPGA (optional XC3S400 oder XC3S1000)
- VGA, PS/2, RS232, 1 MiB SRAM, ...
- http://www.digilentinc.com/Products/Detail.cfm?Nav1=Products&Nav2=Programmable&Prod=S3BOARD
- Kleines Tutorial zum Spartan3 Starterkit
- LP= $99 (XC3S200) bis $149 (XC3S1000)
USBP Board
- Hersteller: Atrandomresearch
- XC3S400 ($139.95)
- Board wird komplett über USB gespeist
- Steckverbinder Pinkompatibel mit Digilentinc Board
- Open Source Python module USBP erlaubt:
- Laden von FPGA image
- Laden von neuer Firmware für den USB Chip
- Datenaustausch mit der Logik des FPGAs
- Code Beispiele verfügbar
Spartan3e-Starter Kit
- Spartan-3e FPGA XC3S500E
- CoolRunner-II PDL XC2C64A-5VQ44C
- Platform-Flash, 128 Mbit Parallel Flash, 16 Mbit SPI Flash
- 64 MByte DDR SDRAM
- VGA (3bit on/off = 8 Farben), PS/2, 2x RS232, RJ45
- 16x2-LCD-Display
- 1 Endlos-Dreh-Encoder, 8 LEDs, 4 Taster, 4 Schalter
- Programmierung über USB
- Weitere Infos unter http://www.xilinx.com/s3estarter
- ca 179 EUR bei trenz-electronic.de oder Segor
Xilinx Development Boards von Nu Horizons
http://www.nuhorizons.com/devboards/index.asp
Boards für Altera-FPGAs
LiveDesign Evaluation Board von Altium
- Kompatibel mit den LiveDesign-fähigen Entwicklungstools von Altium
- * Wahlweise mit Altera EP1C12F324C8 oder Xilinx XC3S1000-4FG456C
- Mit Flachbandkabel für PC-Verbindung (Druckerport) sowie weiteren Kabeln und Verbindern
- Peripherie: LEDs, Dip-Schalter, 6-stellige Siebensegmentanzeige, Taster, Stereo-DAC, zwei 256K x 16 RAMs
- kein on-board Flash RAM für FPGA-Konfiguration, diese muss nach dem Einschalten neu geladen werden
- Ports: PS2-Maus & -Tastatur, RS232, VGA (512 Farben), 2x18 IO-Pins für allgemeine Zwecke
- Endpreis: ~150 Euro (inkl. MwSt. und Versand)
Terasic TREX C1 Multimedia Development Kit
- Altera EP1C6Q240C8 & EP1S Serial Configuration Device
- Built-in USB Blaster programming circuitry (JTAG and AS mode)
- 1 MiB Flash Memory & 8 MiB SDRAM (1M x 4 x 16)
- CF Card Socket, 16-bit CD-quality Audio DAC
- TV Encoder, VGA, RS-232, PS/2, and more
- Many reference designs and C++ applications
- www.terasic.com.tw
- fertiger Core eines CPC6128 (8-Bit Homecomputer von 1984) für dieses Board, inlusive Sourcecode (eigener Z80 in AHDL, mit 24MHz eingesetzt): http://www.symbos.de/trex.htm
- Listenpreis $149,-
Altera Cyclone II 2C20
- Altera Cyclone II EP2C20F484C7N FPGA mit 20000 LEs
- USB-BlasterTM download cable (integriert)
- EPCS4 serial configuration Flash
- 8-Mbyte SDRAM, 512-Kb SRAM, 4-Mbyte flash
- externer SMA - Clock-Eingang
- 24-bit Audio coder/decoder (CODEC)
- 10 Schalter, 4 Druckknöpfe inkl Reset
- 4St. 7-Segmentanzeigen, 10 rote LEDs + 8 grüne LEDs
- VGA, RS-232, and PS/2 Stecker
- Zwei 40-pin expansion ports + SD/MMC socket
- USB-Kabel, externes Steckernetztteil, CD-Rom
- Reference designs
- Qartus II Web Edition + NIOS II Web Edition
- http://www.altera.com/products/devkits/altera/kit-cyc2-2C20N.html
- Listenpreis $150,-
Hpe Mini AC II - Altera Cyclone board von Gleichmann
- Altera Cyclone II EP2C35 FPGA (speed grade 6)
- Mit reprogrammierbarem Flash zur FPGA configuration
- 25 pin SUB-D connector (parallel) für direktes FPGA-Programmieren
- RS232 (9 pin SUB-D)
- VGA (15 pin SUB-D) mit 64 möglichen Farben
- Ethernet 10/100 Mbit/s, full/half duplex
- 1 USB 2.0 compatible full-speed target connector
- 3 USB 2.0 compatible full-speed host connectors
- Santa Cruz connector mit 40 nutzbaren I/Os
- Audio interface (line-in and line-out) mit CODEC
- SODIMM144 Sockel für (SDRAM)
- 25 MHz oscillator
- Prototyping area, Lötfläche
- 8 LEDs, grün, blau, 3x4 key matrix, 4-bit DIP switch
- LCD connector, 2-character 7-segment display
- Single step Knopf und Reset Knopf
- Parallelportkabel für PC
- Beispieldesign, Testprogramme, Datenblätter
- LEON3-CPU Design inkl. Source Code, IDE, SnapGear Linux
- Je nach Ausführung des Flashs €350,- bis €450,-
Altera DE2 - Development and Education Board
- Altera Cyclone II 2C35 FPGA mit 35000 LEs
- Altera Serial Configuration devices (EPCS16) für Cyclone II 2C35
- USB Blaster board zur Programmierung und User API
- 8 MB SDRAM, 4 MB Flash Memory, 512KB SRAM
- SD Card Sockel, RS-232, Ethernet, 10-bit VGA, 24-bit Audio CODEC
- TV Decoder (NTSC/PAL), IrDA, USB (Host + Slave)
- Viele Besipiel mit Source Code wie TV, SD Music Player)
- Kleines aber nettes Tutorial zum Altera DE2 Dev. Board
- Listenpreis US $495,-
NanoBoard-NB1 von Altium
- kompatibel mit den LiveDesign-fähigen Entwicklungstools von Altium
- Unterstützt eine breite Palette von Ziel-FPGAs durch Aufsteckplatinen
- Altera Cyclone (EP1C12-Q240C7) Aufsteckplatine enthalten
- Xilinx Spartan IIE (XC2S300E-PQ208) im Lieferumfang enthalten
- Enthält Stromversorgung mit verschiedenen Steckern für unterschiedliche Konfigurationen
- Mit Flachbandkabel für PC-Verbindung sowie weiteren Kabeln und Verbindern
- NanoBoard-NB1 Reference-Handbuch zur Hardware
- Peripherie: LCD, LEDs, Dip-Schalter, Tastenblock, Summer, ADC/DAC, 256K x 8 RAM, 8 MiB Serial Flash RAM, on-board Serial Flash RAM für FPGA-Konfig.
- Ports: PS2-Maus & -Tastatur, RS232, CAN, VGA, I2C, IO Stecker für allg. Zwecke
- Upgradefähige NanoBoard Controller Firmware
- Stabiler NanoBard-Sockel
- Listenpreis €995,-
Siehe auch
Weblinks
- FPGA4Fun - FPGA-Projekte, größtenteils mit Altera und Verilog
- Ein Vortrag, auf Englisch: General Purpose, Low Power Supercomputing Using Reconfiguration Logic
- [1] - FPGA-Projekte, Opensource, jeder kann seine Eigen einstellen und an andere Mitarbeiten. U.a. verschiede CPUs für FPGAs.