<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=87.180.142.147</id>
	<title>Mikrocontroller.net - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=87.180.142.147"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/87.180.142.147"/>
	<updated>2026-04-11T03:16:12Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Liste_von_FPGA_Eval_boards&amp;diff=78917</id>
		<title>Liste von FPGA Eval boards</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Liste_von_FPGA_Eval_boards&amp;diff=78917"/>
		<updated>2013-10-13T13:03:33Z</updated>

		<summary type="html">&lt;p&gt;87.180.142.147: Typo korrigiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Evalboards, bzw. &amp;quot;Starter-Kits&amp;quot;, wie sie häufig bezeichnet werden, sind ein guter Ausgangspunkt für das Kennenlernen und eigene Entwicklungen. Diese boards sind meistens in grösseren Stückzahlen gefertigt und dienen den Herstellern zu Demonstrationszwecken, daher sind sie vergleichsweise billig.&lt;br /&gt;
&lt;br /&gt;
Aufpassen muss man bei Drittanbietern, die auf EBAY verkaufen. Die dort angebotenen Kits kommen vielfach von noname Herstellern aus China, die zwar oft sehr viel Zubehör enthalten, aber nicht selten den jeweils kleinst möglichen FPGA einer Baureihe einsetzen. Diese sind dann nur zum Kennenlernen gut.&lt;br /&gt;
&lt;br /&gt;
== Boards für Xilinx-FPGAs ==&lt;br /&gt;
Wichtig bei der Entscheidung, welches Board man nehmen sollte, ist die Verfügbarkeit von freier Software. Die kostenlose Webedition der Xilinx ISE ist für einige Virtex4, kleine Virtex5 (LX50), die Spartan 3E und Spartan 6 (LX45 + LX45) verfügbar.&lt;br /&gt;
&lt;br /&gt;
=== Einige Boards tabellarisch===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;sortable&amp;quot; id=&amp;quot;fpgaevalboards&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bezeichn.&lt;br /&gt;
! Preis (&amp;amp;euro;)&lt;br /&gt;
! FPGA&lt;br /&gt;
! RAM (MByte)&lt;br /&gt;
! Flash (MByte)&lt;br /&gt;
! USB&lt;br /&gt;
! Ethernet&lt;br /&gt;
! RS-232&lt;br /&gt;
! µC&lt;br /&gt;
! Eingabe&lt;br /&gt;
! sonst.&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.knjn.com/board_Xylo.html Xylo-L]&lt;br /&gt;
| 130&lt;br /&gt;
| XC3S500E&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 2.0&lt;br /&gt;
| 10base-T&lt;br /&gt;
| -&lt;br /&gt;
| LPC213x&lt;br /&gt;
| -&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.xilinx.com/products/boards-and-kits/HW-SPAR3A-SK-UNI-G.htm Spartan3A Starter Kit]&lt;br /&gt;
| 189&lt;br /&gt;
| XC3S700A-FG484&lt;br /&gt;
| 32M x 16 DDR2 SDRAM&lt;br /&gt;
| 4 Mbit Platform Flash PROM, 32MB parallel Flash, 2-16 Mbit SPI Flash&lt;br /&gt;
| (JTAG)&lt;br /&gt;
| 10/100&lt;br /&gt;
| 1 In + 1 Out&lt;br /&gt;
| -&lt;br /&gt;
| 4 Taster, 1 Drehgeber, 4 Schalter&lt;br /&gt;
| 4-ch D/A, 2-ch A/D, Signal amplifier, Coolrunner CPLD, 100-pin expansion connector, Stereo mini-jack, 8 LEDs, 15-Pin VGA (4096)&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.xilinx.com/s3estarter Digilent Spartan3e Starter Kit]&lt;br /&gt;
| 180&lt;br /&gt;
| XC3S500E, auch mit 1200er&lt;br /&gt;
| 64 DDR2-SDRAM&lt;br /&gt;
| 16&lt;br /&gt;
| (JTAG)&lt;br /&gt;
| 10/100&lt;br /&gt;
| 1 In + 1 Out&lt;br /&gt;
| -&lt;br /&gt;
| 4 Taster, 1 Drehgeber, 4 Schalter&lt;br /&gt;
| Coolrunner CPLD, LCD, 3-Bit VGA, PS/2&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.digilentinc.com/Products/Detail.cfm?Nav1=Products&amp;amp;Nav2=Programmable&amp;amp;Prod=S3BOARD Digilent Spartan-3]&lt;br /&gt;
| 100&lt;br /&gt;
| XC3S200 XC3S400 XC3S1000&lt;br /&gt;
| 16 SDRAM&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 1x&lt;br /&gt;
| -&lt;br /&gt;
| 4 Taster, 8 Schalter&lt;br /&gt;
| VGA, PS/2, 7seg&lt;br /&gt;
|-&lt;br /&gt;
| [[Digilent Nexys]]&lt;br /&gt;
| 100&lt;br /&gt;
| XC3S200/400/1000&lt;br /&gt;
| 16&lt;br /&gt;
| 4&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 4 Taster, 8 Schalter&lt;br /&gt;
| 7seg, Programmierung &amp;amp; Stromversorgung über USB&lt;br /&gt;
|-&lt;br /&gt;
| [[Digilent Nexys 2]]&lt;br /&gt;
| 92 (121)&lt;br /&gt;
| XC3S500E (1200E)&lt;br /&gt;
| 16&lt;br /&gt;
| 16&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| 1x&lt;br /&gt;
| Cypress FX2 &lt;br /&gt;
| 4 Taster, 8 Schalter, 8 LEDs, PS/2 Maus/Kbd.&lt;br /&gt;
| 4x7 Seg, Progr. &amp;amp; Versorg. über USB oder über Netzteil (5V-15V), VGA&lt;br /&gt;
|-&lt;br /&gt;
| Digilent Nexys 3&lt;br /&gt;
| 180 (acad.: 108)&lt;br /&gt;
| XC6SLX16&lt;br /&gt;
| 16&amp;lt;br&amp;gt;(Cellular RAM)&lt;br /&gt;
| 16 (parallel) +&amp;lt;br&amp;gt;16 (SPI)&lt;br /&gt;
| 3x:&amp;lt;br&amp;gt;USB prog.&amp;lt;br&amp;gt;USB Host&amp;lt;br&amp;gt;USB UART&lt;br /&gt;
| 10/100&amp;lt;br&amp;gt;Ethernet&amp;lt;br&amp;gt;PHY&lt;br /&gt;
| 1x&amp;lt;br&amp;gt;(virtueller COM-Port über USB)&lt;br /&gt;
| PIC24FJ192&amp;lt;br&amp;gt;(USB HID Host) &lt;br /&gt;
| 5 Taster, 8 Schalter, 8 LEDs, USB Maus/Kbd.&lt;br /&gt;
| Programmierbar über JTAG, USB Port oder USB Stick, 4x7 Seg, Versorg. über USB oder über Netzteil (5V), 8bit VGA, Clock: 100MHz, 4x PMOD Expansion, VHDC I/O-Port Connector&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.uxibo.de Uxibo]&lt;br /&gt;
| 88&lt;br /&gt;
| XC2S200E&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 1.1&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 4 Taster, 8 Schalter&lt;br /&gt;
| VGA I/O, Videomux, dual PS/2, 7seg, Buzzer, IOs auf Pinleisten, dual-channel FTDI2232C, 48 MHz + prog. Oszillator, Programmierung &amp;amp; Stromversorgung über USB&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.fpgaz.com/wiki/doku.php?id=fpgaz:usbp:hw FPGAz USBP]&lt;br /&gt;
| $135&lt;br /&gt;
| XC3S400&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| Cypress FX2&lt;br /&gt;
| 2 Taster&lt;br /&gt;
| 8 LEDs, I2C-EEPROM&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.cesys-shop.com/de/FPGA-Karten/USBS6.html Spartan-6 board] Cesys &lt;br /&gt;
| 298&lt;br /&gt;
| XC6SLX16&lt;br /&gt;
| 128&lt;br /&gt;
| 16&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| FX-2&lt;br /&gt;
| Drehschalter, Leds.&lt;br /&gt;
|115 I/O signale, einstellbarer IO Standard, zweiter USB Port (FT232), WIN 32&amp;amp;64 Bit und LINUX Treiber&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.cesys-shop.com/de/FPGA-Karten/Spartan-3/EFM-01.html Spartan-3E Miniaturmodul] Cesys &lt;br /&gt;
| 124&lt;br /&gt;
| XC3S500E&lt;br /&gt;
| -&lt;br /&gt;
| 4&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| FX-2&lt;br /&gt;
| -&lt;br /&gt;
| 28 x 44mm, 50 I/O auf 2.54mm Stiftleiste, WIN und LINUX Treiber&lt;br /&gt;
|-&lt;br /&gt;
| [http://shop.trenz-electronic.de/catalog/product_info.php?products_id=456 Avnet Spartan 3A Evaluation Kit]&lt;br /&gt;
| 50&lt;br /&gt;
| XC3S400A&lt;br /&gt;
| -&lt;br /&gt;
| 16&lt;br /&gt;
| 2.0&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| WIN und LINUX Treiber, 4 Sensortasten&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.ct-lab.de FPGA-Karte aus dem c´t-Lab]&lt;br /&gt;
| 92&lt;br /&gt;
| XC3S400&lt;br /&gt;
| -&lt;br /&gt;
| SD-Kartenslot (Bitstream-File wird über µC ins FPGA geladen, Dateiauswahl via Systembus oder Panel oder fest einstellbar)&lt;br /&gt;
| via IFP-Karte und Systembus an µC&lt;br /&gt;
| via IFP-Karte und Systembus an µC&lt;br /&gt;
| via IFP-Karte und Systembus an µC&lt;br /&gt;
| ATmega644&lt;br /&gt;
| optionales Bedienpanel mit LCD-Display, Drehgeber und Taster&lt;br /&gt;
| Bestandteil des Laborsystems c´t-Lab der Zeitschrift c´t.&lt;br /&gt;
VGA-Buchse, SD-Kartenslot (u.a. auch zum Laden des FPGA). Preis für FPGA-Platine mit verlöteten SMD-Bauteilen und Teilesatz. Optionale Erweiterungskarten mit schnellen DACs, Eingangskomparator, SRAM, Echtzeituhr, PS/2, RS232 (am FPGA). Optionaler JTAG-Adapter. &lt;br /&gt;
http://www.ct-lab.de, http://www.segor.de, http://thoralt.ehecht.com/phpbb&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Weitere Details zu einigen Boards:&lt;br /&gt;
&lt;br /&gt;
=== Avnet ===&lt;br /&gt;
==== Spartan 6 LX150T  ====&lt;br /&gt;
* Spartan-6 FPGA LX 150T&lt;br /&gt;
* 64 bit, 66 MHz, 3.3 PCIe interface&lt;br /&gt;
* 32Mbit Flash Memory&lt;br /&gt;
* serielles EEproms&lt;br /&gt;
* 8 LEDs&lt;br /&gt;
* 4 SMD Drucktaster&lt;br /&gt;
* 10/100/1000 Intel Ethernet PHY (Intel)&lt;br /&gt;
* USB Controller Host&lt;br /&gt;
* Serial Interface RS 232&lt;br /&gt;
* Serial GB Transceiver Interface (GTP)&lt;br /&gt;
* SD-Card Slot&lt;br /&gt;
* 2 Stk SAMTEC FMC SteckPorts mit 160 Pins belegt&lt;br /&gt;
* Webseite: http://www.avnet.com&lt;br /&gt;
* Preis ca. €999,- (inkl MwSt.)&lt;br /&gt;
* Erhältlich solo und auch im S6 Video Kit sowie S6 Ethernet Kit&lt;br /&gt;
* optionales Zubehör: Videokarte DVI IO, Transceiver Kit,&lt;br /&gt;
* Auslaufmodell!!&lt;br /&gt;
&lt;br /&gt;
==== Spartan-6 LX9 MicroBoard ====&lt;br /&gt;
* Spartan-6 LX9-2CSG324&lt;br /&gt;
* 64 MB LPDDR SDRAM &lt;br /&gt;
* 128 Mb Multi-I/O SPI Flash &lt;br /&gt;
* 10/100 Ethernet PHY &lt;br /&gt;
* USB-2-UART port &lt;br /&gt;
* On-board USB JTAG Schaltung &lt;br /&gt;
* Two 2x6 PMOD expansion ports &lt;br /&gt;
* Programmierbarer Taktgenerator &lt;br /&gt;
* USB-interface &lt;br /&gt;
* 4 User LEDs &lt;br /&gt;
* 4-fach DIP switch &lt;br /&gt;
* Reset und PROG buttons&lt;br /&gt;
&lt;br /&gt;
=== Altium Evaluation Boards ===&lt;br /&gt;
Die Firma Altium hat verschiedene FPGA Evaluationbords entwickelt:&lt;br /&gt;
* Board EB1 (LiveDesign), obsolet; manchmal beim großen Versteigerer zu haben für ca. 100 EUR&lt;br /&gt;
* Board NB1 (Nanoboard 1), dürfte obsolet sein&lt;br /&gt;
* Board NB2, immer noch aktuell, mehrere Erweiterungskarten verfügbar, Kosten ca. 1.800 EUR&lt;br /&gt;
* Board NB3000, sehr gut ausgestattetes, kompaktes Board, Kosten ca. 340 EUR ~ 400 EUR, je nach FPGA-Familie. Erhältlich mit Altera, Xilinx oder Lattice-Chip&lt;br /&gt;
&lt;br /&gt;
folgendes gilt für alle Altium FPGA Evaluation Boards:&lt;br /&gt;
* Kompatibel mit den LiveDesign-fähigen Entwicklungstools von Altium&lt;br /&gt;
* Die Altium-Software nutzt direkt die Programmier-Software des jeweiligen FPGA-Herstellers (nicht bei EB1)&lt;br /&gt;
* im Lieferumfang sind alle nötigen Kabeln und ein Netzteil, um mit dem entsprechenden Board loslegen zu können&lt;br /&gt;
* die Boards enthalten eine sogenannte &amp;quot;SoftDesign&amp;quot; Lizenz für Altium Designer, gültig 1 Jahr. Sehr große Software-Bibliothek, inkl. verschiedener 8Bit- und einem 32Bit-Softcore, mit passenden Compilern. Per JTAG sind auch eigene Boards programmierbar.&lt;br /&gt;
&lt;br /&gt;
speziell für das nicht mehr erhältliche EB1 LiveDesign Board gelten folgende Punkte:&lt;br /&gt;
* Xilinx XC3S1000-4FG456C, wahlweise aber auch mit Altera EP1C12F324C8&lt;br /&gt;
* Peripherie: LEDs, Dip-Schalter, 6-stellige Siebensegmentanzeige, Taster, Stereo-DAC, zwei 256K x 16 RAMs&lt;br /&gt;
* &#039;&#039;kein&#039;&#039; on-board Flash RAM für FPGA-Konfiguration, diese muss nach dem Einschalten neu geladen werden&lt;br /&gt;
* Ports: PS2-Maus &amp;amp; -Tastatur, RS232, VGA (512 Farben), 2x18 IO-Pins für eigene Erweiterungen&lt;br /&gt;
&lt;br /&gt;
=== CESYS ===&lt;br /&gt;
http://www.cesys-shop.com&lt;br /&gt;
&lt;br /&gt;
Cesys ist Entwickler und Hersteller von FPGA-boards mit Sitz in Deutschland.&lt;br /&gt;
&lt;br /&gt;
* Verschiedene FPGA boards mit USB, PCI und PCIe Schnittstellen im Lieferprogramm&lt;br /&gt;
* Je nach Ausführung mit Spartan-2/3/3E/6, Virtex2/2PRO/4&lt;br /&gt;
* verschiedene Speicherkonfigurationen (SO-DIMM, SRAM, SDRAM, DDR2)&lt;br /&gt;
* Auftragsentwicklungen nach Kundenwunsch möglich&lt;br /&gt;
&lt;br /&gt;
=== Digilent ===&lt;br /&gt;
www.digilent.com&lt;br /&gt;
Digilent ist der Produzent der Standardboards von/für Xilinx. Siehe Tabelle.&lt;br /&gt;
==== Atlys ====&lt;br /&gt;
Das Atlys ist das aktuellste Board. Es enthält einen Spartan S6LX45, einen Marvel Alaska PHY, DDR2-SDRAM sowie auch SRAM und einen USB-Controller. Auf das klassische VGA mit Widerständen wurde verzichtet. Stattdessen gibt es DVI/HDMI mit 2 Ein- und Ausgängen.&lt;br /&gt;
&lt;br /&gt;
==== Nexys ====&lt;br /&gt;
==== S3E ====&lt;br /&gt;
Das S3E Starterkit war das erste board für S3E. Es enthält standardmässig einen 500er Chip ist aber auch als 1500er erhältlich, was das mindeste für echte Entwicklungen ist. Es birgt einen 100MBi PHY, DDR2-RAM, Flash sowie sowie einen USB-Controller. VGA ist nur über 3 Pins realisierbar.&lt;br /&gt;
==== S3A ====&lt;br /&gt;
Das S3A Starterkit ist das aktuelle board für Spartan 3 FPGAs. Es enthält standardmässig einen GB-Phy, sowie einen USB-Controller. VGA ist über 12 Pins realisierbar.&lt;br /&gt;
&lt;br /&gt;
===  Enterpoint ===&lt;br /&gt;
Enterpoint is ein Hersteller von FPGA-Boards in GB. Er bietet insbesondere Arrays mit mehreren FPGAs an. Siehe http://enterpoint.co.uk/&lt;br /&gt;
&lt;br /&gt;
==== Raggedstone 1 - Spartan-3 PCI-Karte ====&lt;br /&gt;
* Spartan-3 FPGA FG456-Package&lt;br /&gt;
* 32 bit, 33 MHz, 3.3/5V PCI interface&lt;br /&gt;
* 4Mbit Flash Memory&lt;br /&gt;
* 16KBit serielles EEprom&lt;br /&gt;
* 4 x 7 Segment Anzeigen LED, abnehmbar&lt;br /&gt;
* LM75 Temperatursensor&lt;br /&gt;
* viele DIL-Header für eigene Erweiterungen, verschiedene werden auch durch Hersteller angeboten&lt;br /&gt;
* 2 Drucktaster&lt;br /&gt;
* 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&lt;br /&gt;
* Webseite: http://www.enterpoint.co.uk/moelbryn/raggedstone1.html&lt;br /&gt;
* Preis als Raggedstone1 RS1-400C £155.00 + £25 Versand -&amp;gt; ca 230 Euro inkl.&lt;br /&gt;
&lt;br /&gt;
==== Raggedstone 2 - Spartan-6 PCI-Karte ====&lt;br /&gt;
* XilinxTM SpartanTM-6 FPGA, FGG484 package mit XC6SLX25T bis XC6SLX150T&lt;br /&gt;
* PCI Express Interface&lt;br /&gt;
* PCIe Gen1 (2.5 GBits-raw) interface&lt;br /&gt;
* 128Mbit SPI Flash Memory (configuration)&lt;br /&gt;
* 1 Gbit, X16, DDR3 SDRAM memory&lt;br /&gt;
* 1 x 16KBit serial EEprom&lt;br /&gt;
* LM75 Temperature Sensor fitted.&lt;br /&gt;
* DIL Header 68 I/O with LVDS support&lt;br /&gt;
* 4 digit LED - removable&lt;br /&gt;
* 4 LEDs.&lt;br /&gt;
* LVDS Clock Module Header&lt;br /&gt;
* 2 push switches fitted.&lt;br /&gt;
* Preis als Raggedstone2 RS2-45T £250.00 + £25 Versand&lt;br /&gt;
&lt;br /&gt;
==== Merrick 1 - FPGA-Development Array ====&lt;br /&gt;
* 10 x 10 array mit Xilinx™ Spartan™-3A DSP XC3SD3400A-4CSG484C&lt;br /&gt;
* commercial -5 and industrial -4 grade&lt;br /&gt;
* auch mit XC3SD1800A alternativ bestückbar (free Webpack™ ISE™ software!)&lt;br /&gt;
* Controller FPGA – Xilinx™ Virtex™-5 XC5VLX30T.&lt;br /&gt;
&lt;br /&gt;
==== Merrick 3 - Development Plattform mit 24 FPGAs ====&lt;br /&gt;
* 24 array FPGAs – mit entweder XC6SLX45, XC6SLX75, XC6SLX100 or XC6SLX150&lt;br /&gt;
* bis zu 180 DSP48 (18×18 multiplier + adder + accumulator) slices per FPGA&lt;br /&gt;
* bis zu 184K flip-flops&lt;br /&gt;
* bis zu 147K logic elemente&lt;br /&gt;
* bis zu 268 block SRAMs (18Kb) per array FPGA&lt;br /&gt;
* 16 DDR3 memories X16 interface at 625-800 Mbits/s&lt;br /&gt;
&lt;br /&gt;
=== Trenz-Electronic ===&lt;br /&gt;
Trenz bietet im Bereich FPGAs vor allem Xilinx-Produkte an. Dazu zählen Eigenentwicklungen sowie der Vertrieb von Digilentboards. Siehe: http://www.trenz-electronic.de/products.html&lt;br /&gt;
&lt;br /&gt;
==== Spartan 3E-Serie ====&lt;br /&gt;
* Kleines FPGA Board mit ucLinux und Virtex-II PowerPC, optional: ucLinux und Microblaze Softprozessor im Spartan-3 FPGA&lt;br /&gt;
* TE0320 (Spartan-3A DSP) Industrial Micromodule mit bis zu 18000 / 34000 Systemgattern&lt;br /&gt;
* TE0300 (Spartan-3E) Industrial Micromodule mit 200 bis 1000 Systemgattern&lt;br /&gt;
==== Spartan 6-Serie ====&lt;br /&gt;
* TE0630 (Spartan-6) Industrial Micromodule mit bis zu 150000 Gattern mit den Typen LX45, LX75, LX100 und LX150&lt;br /&gt;
* GigaBee XC6SLX (Spartan-6LX) Industrial Micromodule, Typen LX45, LX100 und LX150&lt;br /&gt;
&lt;br /&gt;
==== Andere ====&lt;br /&gt;
* Pal/Gal kompatible FPGA und CPLD Module&lt;br /&gt;
&lt;br /&gt;
=== Simple-Solutions ===&lt;br /&gt;
http://www.simple-solutions.de/de/products/index.php&lt;br /&gt;
Mehrere Spartan3-FPGAs - Boards&lt;br /&gt;
&lt;br /&gt;
=== ZTEX ===&lt;br /&gt;
&lt;br /&gt;
ZTEX ist Entwickler und Hersteller von FPGA-boards mit Sitz in Deutschland. Siehe http://www.ztex.de&lt;br /&gt;
&lt;br /&gt;
==== Spartan 6 LX150 USB-FPGA Module 1.15 x====&lt;br /&gt;
* Xilinx Spartan 6 LX150 FPGA (XC6SLX150)&lt;br /&gt;
* High-Speed (480 MBit/s) USB interface&lt;br /&gt;
* Cypress CY7C68013A EZ-USB FX2 Microcontroller&lt;br /&gt;
* On-board power supply&lt;br /&gt;
* 128 KBit EEPROM (e.g. for Firmware)&lt;br /&gt;
* Memory mapped I/O between EZ-USB FX2 and FPGA&lt;br /&gt;
* Optimized for cryptographic computations&lt;br /&gt;
* Allows to build low cost FPGA clusters&lt;br /&gt;
&lt;br /&gt;
====Spartan 6 USB-FPGA Module 1.15====&lt;br /&gt;
* High-Speed (480 MBit/s) USB interface &lt;br /&gt;
* Cypress CY7C68013A EZ-USB FX2 Microcontroller &lt;br /&gt;
* Xilinx Spartan 6 XC6SLX45 to XC6SLX150 FPGA &lt;br /&gt;
* 128 MByte DDR2 SDRAM with up to 1600 MByte/s and integrated 6 port memory controller&lt;br /&gt;
* 99 General Purpose I/O&#039;s (GPIO) &lt;br /&gt;
* 15 special I/O&#039;s (SIO) &lt;br /&gt;
* 128 KBit EEPROM (e.g. for Firmware) &lt;br /&gt;
* microSD socket for Flash memory &lt;br /&gt;
* Fast FPGA configuration using CPLD &lt;br /&gt;
* Memory mapped I/O between EZ-USB FX2 and FPGA&lt;br /&gt;
&lt;br /&gt;
====Spartan 6 USB-FPGA Module 1.11====&lt;br /&gt;
* High-Speed (480 MBit/s) USB interface&lt;br /&gt;
* Cypress CY7C68013A EZ-USB FX2 Microcontroller&lt;br /&gt;
* Xilinx Spartan 6 XC6SLX9 to XC6SLX25 FPGA&lt;br /&gt;
* 64 MByte DDR SDRAM with up to 800 MByte/s and integrated 6 port memory controller&lt;br /&gt;
* 90 General Purpose I/O&#039;s (GPIO)&lt;br /&gt;
* 15 special I/O&#039;s (SIO)&lt;br /&gt;
* 128 KBit EEPROM (e.g. for Firmware)&lt;br /&gt;
* microSd socket for Flash memory&lt;br /&gt;
&lt;br /&gt;
====Spartan 3 USB-FPGA Module 1.2====&lt;br /&gt;
* High-Speed (480 MBit/s) USB interface&lt;br /&gt;
* Cypress CY7C68013A EZ-USB FX2 Microcontroller&lt;br /&gt;
* Xilinx Spartan 3 XC3S400 FPGA&lt;br /&gt;
* 60 General Purpose I/O&#039;s (GPIO)&lt;br /&gt;
* 20 special I/O&#039;s (SIO)&lt;br /&gt;
* 128 KBit EEPROM (e.g. for Firmware)&lt;br /&gt;
* Flash memory (optionally) &lt;br /&gt;
&lt;br /&gt;
* Open Source Firmware Kit zum Programmieren&lt;br /&gt;
&lt;br /&gt;
== Boards für Altera-FPGAs ==&lt;br /&gt;
&lt;br /&gt;
Bei Altera ist die kostenlose Webversion von Quartus für kleine Stratix und die meisten Cyclone verfügbar.&lt;br /&gt;
&lt;br /&gt;
=== Gleichmann Research ===&lt;br /&gt;
&lt;br /&gt;
==== Hpe Mini AC II - Cyclone II board ====&lt;br /&gt;
* Altera Cyclone II EP2C35 FPGA (speed grade 6)&lt;br /&gt;
* Mit reprogrammierbarem Flash zur automatischen FPGA-Konfiguration&lt;br /&gt;
* 25 pin SUB-D connector (parallel) für direktes FPGA-Programmieren&lt;br /&gt;
* RS232 (9 pin SUB-D) &lt;br /&gt;
* VGA (15 pin SUB-D) mit 64 möglichen Farben&lt;br /&gt;
* Ethernet 10/100 Mbit/s, full/half duplex&lt;br /&gt;
* 1 USB 2.0 compatible full-speed target connector&lt;br /&gt;
* 3 USB 2.0 compatible full-speed host connectors&lt;br /&gt;
* Santa Cruz connector mit 40 nutzbaren I/Os&lt;br /&gt;
* Audio interface (line-in and line-out) mit CODEC&lt;br /&gt;
* SODIMM144 Sockel für (SDRAM) 256MB&lt;br /&gt;
* SDRAM-Speichersockel mit nur 32-Bit angebunden, die Hälfte des Speichers bleibt nicht nutzbar&lt;br /&gt;
* 25 MHz oscillator&lt;br /&gt;
* Prototyping area, Lötfläche&lt;br /&gt;
* 8 LEDs, grün, blau, 3x4 key matrix, 4-bit DIP switch&lt;br /&gt;
* LCD connector, 2-character 7-segment display&lt;br /&gt;
* Single step Knopf und Reset Knopf&lt;br /&gt;
* Parallelportkabel für PC&lt;br /&gt;
* Beispieldesign, Testprogramme, Datenblätter&lt;br /&gt;
* LEON3-CPU Design inkl. Source Code, Quartus IDE, SnapGear Linux&lt;br /&gt;
* Nicht mehr im Programm - war ca 399,-&lt;br /&gt;
&lt;br /&gt;
====HM-ALC-AS3====&lt;br /&gt;
* Modul mit zwei Altera Stratix™ III EP3S50F780-C2N FPGA oder EP3S150F780-C2N&lt;br /&gt;
* 126 single ended interconnections plus 28 LVDS pairs&lt;br /&gt;
* ALTERA USB Blaster® on board&lt;br /&gt;
* temperature controlled fan&#039;s(PWM)&lt;br /&gt;
&lt;br /&gt;
=== Terasic ===&lt;br /&gt;
Terasic ist sozusagen der Haus- und Hoflieferant für Entwicklungsboards von Altera. Praktisch alle Altera Boards werden von Terasic (Taiwan) gebaut.&lt;br /&gt;
&lt;br /&gt;
==== Altera Cyclone II 2C20 ====&lt;br /&gt;
* Altera Cyclone II EP2C20F484C7N FPGA mit 20000 LEs&lt;br /&gt;
* USB-BlasterTM download cable (integriert)&lt;br /&gt;
* EPCS4 serial configuration Flash&lt;br /&gt;
* 8-Mbyte SDRAM, 512-Kb SRAM, 4-Mbyte flash &lt;br /&gt;
* externer SMA - Clock-Eingang&lt;br /&gt;
* 24-bit Audio coder/decoder (CODEC) &lt;br /&gt;
* 10 Schalter, 4 Druckknöpfe inkl Reset &lt;br /&gt;
* 4St. 7-Segmentanzeigen, 10 rote LEDs + 8 grüne LEDs&lt;br /&gt;
* VGA, RS-232, and PS/2 Stecker&lt;br /&gt;
* Zwei 40-pin expansion ports + SD/MMC socket&lt;br /&gt;
* USB-Kabel, externes Steckernetztteil, CD-Rom&lt;br /&gt;
* Reference designs&lt;br /&gt;
* Qartus II Web Edition + NIOS II Web Edition&lt;br /&gt;
* http://www.altera.com/products/devkits/altera/kit-cyc2-2C20N.html&lt;br /&gt;
* Listenpreis $150,-&lt;br /&gt;
&lt;br /&gt;
==== Altera DE2 - Development and Education Board V2 ====&lt;br /&gt;
* Altera Cyclone II 2C35 FPGA mit 35000 LEs&lt;br /&gt;
* Altera Serial Configuration devices (EPCS16) für Cyclone II 2C35&lt;br /&gt;
* USB Blaster board zur Programmierung und User API&lt;br /&gt;
* 8 MB SDRAM, 4 MB Flash Memory, 512KB SRAM&lt;br /&gt;
* SD Card Sockel, RS-232, Ethernet, 10-bit VGA, 24-bit Audio CODEC&lt;br /&gt;
* TV Decoder (NTSC/PAL), IrDA, USB (Host + Slave)&lt;br /&gt;
* Viele Besipiel mit Source Code wie TV, SD Music Player)&lt;br /&gt;
* [http://www.fh-wedel.de/fileadmin/mitarbeiter/bos/files/VHDL/VhdlEinfuehrung.pdf Kleines aber nettes Tutorial zum Altera DE2 Dev. Board]&lt;br /&gt;
* Listenpreis US $495,-&lt;br /&gt;
&lt;br /&gt;
==== Altera DE2-115 - Development and Education Board V3 ====&lt;br /&gt;
* Altera Cyclone IV FPGA mit 115000 LEs&lt;br /&gt;
* Altera Serial Configuration device EPCS64&lt;br /&gt;
* USB Blaster zur Programmierung und für User API&lt;br /&gt;
* User-Applikations und Steuerungssoftware&lt;br /&gt;
* 128 MB SDRAM, 8 MB Flash Memory, 2 MB SRAM&lt;br /&gt;
* SD Card Sockel, RS-232, 2x GBit-Ethernet, &lt;br /&gt;
* 8-bit VGA, 24-bit Audio CODEC&lt;br /&gt;
* TV Decoder (NTSC/PAL), IrDA, USB (Host + Slave)&lt;br /&gt;
* 18 Schalter, 4 Drucktasten, PS2-Maus/Tastatur-Anschluss&lt;br /&gt;
* 27 LEDs, 16x2-LCD-Display, 8 7-Segment-Anzeigen&lt;br /&gt;
* IR-Fernsteuerung&lt;br /&gt;
* HSMC-Stecker&lt;br /&gt;
* Viele Beispiele mit Source Code wie TV, SD Music Player, Audiorecorder&lt;br /&gt;
* Listenpreis US $595,- (academic = $299,-)&lt;br /&gt;
&lt;br /&gt;
==== Cyclone III Embedded Development Kit ====&lt;br /&gt;
* Altera Cyclone III EP3C25 FPGA&lt;br /&gt;
* 640x480 LCD Display mit Touchscreen-Function&lt;br /&gt;
* MiniSD-Card Sockel&lt;br /&gt;
* Audio Interface ADC CODEC&lt;br /&gt;
* 10/100 Mbit Fast Ethernet Schnittstelle&lt;br /&gt;
* FPGA-Konfiguration über USB&lt;br /&gt;
* NIOS II EVAL Lizenz&lt;br /&gt;
* IP LIB Altera&lt;br /&gt;
* Listenpreis US $495,-  über Altera Webseite&lt;br /&gt;
* Bei EBV €349,- inkl. MwSt.&lt;br /&gt;
&lt;br /&gt;
==== DE0-Nano ====&lt;br /&gt;
* Cyclone IV EP4CE22F17C6N &lt;br /&gt;
* 32MB SDRAM&lt;br /&gt;
* 2Kb I2C-EEPROM &lt;br /&gt;
* 3-Achsen-Beschleunigungssensor ADXL345 (Analog Devices)&lt;br /&gt;
* AD-Wandler ADC128S022 (National Semiconductor)&lt;br /&gt;
* Zwei 40-Pin-GPIO-Header mit 72 verfügbaren IO-Pins&lt;br /&gt;
* On-Board-USB-Blaster zum Programmieren/Debuggen&lt;br /&gt;
* Herstellerpreis (www.terasic.com.tw): $79,- (für Studenten: $59,-)&lt;br /&gt;
* erhältlich bei Digikey&lt;br /&gt;
&lt;br /&gt;
=== Andere ===&lt;br /&gt;
==== FPGA-DEV====&lt;br /&gt;
www.fpga-dev.de&lt;br /&gt;
* Altera Cyclone II EP2C35F484C6N&lt;br /&gt;
* DIMM - Sockel&lt;br /&gt;
* Flash&lt;br /&gt;
* Erweiterungssockel&lt;br /&gt;
&lt;br /&gt;
==== Sasco Holz PABLO ====&lt;br /&gt;
* Altera Cyclone II EP2C20F484C6N&lt;br /&gt;
* EPCS16SI16N serial configuration Flash&lt;br /&gt;
* 2x32 MByte mDDR-333 RAM (unabhängige Daten-/Adressbusse)&lt;br /&gt;
* externer SMA-Clock-Eingang&lt;br /&gt;
* 25 MHz Oszillator&lt;br /&gt;
* 3 Taster, kleiner Joystick, 4 LEDs&lt;br /&gt;
* AD7843 SPI touch controller&lt;br /&gt;
* RS-232&lt;br /&gt;
* 2x Santa Cruz connector&lt;br /&gt;
* 60-Pin TFT, 14-Pin GPIO Wannenstecker&lt;br /&gt;
* 10-Pin JTAG &amp;amp; 10-Pin Passiv Seriell Wannenstecker&lt;br /&gt;
* Netzteil, CD-ROM&lt;br /&gt;
* [http://web.archive.org/web/20080907191153/http://www.sascoholz.com/designsupport/solutions/pablo http://www.sascoholz.com/designsupport/solutions/pablo]&lt;br /&gt;
* kein Programmierkabel, kein Kaltgerätekabel&lt;br /&gt;
* Restmengen hin und wieder günstig beim großen E&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Boards für Lattice-FPGAs ==&lt;br /&gt;
=== LatticeXP2 Brevia Development Kit ===&lt;br /&gt;
* FPGA: LFXP2-5E-6TN144C (non-volatile Konfiguration!)&lt;br /&gt;
* 2 MBit SPI-Flash, 1 MBit SRAM&lt;br /&gt;
* JTAG-Interface, RS232 (Sub-D-Buchse)&lt;br /&gt;
* Pinleisten: 2x20 und 2x5&lt;br /&gt;
* 4 Taster (+1 Reset-Taster), 4 DIP-Schalter, 8 LEDs&lt;br /&gt;
* Inkl. parallelem ISP-Download-Kabel, seriellem Nullmodem-Kabel, 6V/1A-Schaltnetzteil&lt;br /&gt;
* Offizielle [http://www.latticesemi.com/products/developmenthardware/developmentkits/xp2breviadevelopmentkit.cfm Produktbeschreibung von Lattice]&lt;br /&gt;
* Lieferant: [http://de.mouser.com/ProductDetail/Lattice/LFXP2-5E-B2-EVN/?qs=sGAEpiMZZMtvzEnwIFtdJf1kwhjc34f7 Mouser Electronics] 40,43 Euro +MwSt. (Lieferung nach Deutschland ohne zusätzliche Kosten problemlos möglich)&lt;br /&gt;
* Software kostenlos bei [http://www.latticesemi.com/products/developmenthardware/developmentkits/xp2breviadevelopmentkit.cfm Lattice] (Quick-Start, User&#039;s Guide, EDA, Reference Designs, 8-/32-Bit Soft-Cores Mico8/Mico32 etc.)&lt;br /&gt;
=== Weitere ===&lt;br /&gt;
* www.hardware-design.de&lt;br /&gt;
* bietet verschiedene einfache Boards mit Lattice-Bausteinen an&lt;br /&gt;
* FPGA-Board mit XP2-17/XP2-8/XP2-5 -&amp;gt; 113,- bis 101,- Euro&lt;br /&gt;
* CPLD-Boards u.a. mit MachXO640 -&amp;gt; 89,- Euro&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Boards für Actel-FPGAs ==&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://papilio.cc/ Papilio FPGA]: Ein Arduino-kompatibles (aber nur 3.3V I/O) FPGA Board mit Spartan 3E, recht große Community, viele Beispiele&lt;br /&gt;
* [http://pin4.at/pro_misc.php#fdil Projekt &amp;quot;FDIL v2&amp;quot;]: sehr kleines 5V DIL-Ersatz Board mit Xilinx Spartan II FPGA, open-source, keine Levelshifter erforderlich! (Englisch)&lt;br /&gt;
* [http://www.trenz-electronic.de/de/produkte/fpga-boards/oho-elektronik.html GODIL]: etwas größeres DIL Board mit Xilinx Spartan 3E und 5V Levelshifter (bidirektional, &amp;quot;open-drain-like&amp;quot;) von Trenz Elektronik beziehbar&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FPGA-Boards]]&lt;br /&gt;
[[Kategorie:Listen]]&lt;/div&gt;</summary>
		<author><name>87.180.142.147</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=FPGA&amp;diff=78916</id>
		<title>FPGA</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=FPGA&amp;diff=78916"/>
		<updated>2013-10-13T13:01:04Z</updated>

		<summary type="html">&lt;p&gt;87.180.142.147: /* FPGA-Design aus Projektsicht */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FPGA ist die Abkürzung für &amp;quot;&#039;&#039;&#039;F&#039;&#039;&#039;ield &#039;&#039;&#039;P&#039;&#039;&#039;rogrammable &#039;&#039;&#039;G&#039;&#039;&#039;ate &#039;&#039;&#039;A&#039;&#039;&#039;rray&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Aufbau ==&lt;br /&gt;
&lt;br /&gt;
=== Grundelemente  ===&lt;br /&gt;
&lt;br /&gt;
Ein FPGA besteht, ähnlich wie ein [[CPLD]], aus vielen Logikelementen, hauptsächlich [[FlipFlop]]s (FF) und davor gelagerten kombinatorischen Logikschaltungen. Diese sind entweder Verknüpfungen verschiedener Logikgatter (Actel) oder sogenannten LUTs (Look-Up-Table), die über elektronische &amp;quot;Schalter&amp;quot; entsprechend der vom Entwickler gewünschten Funktion miteinander verknüpft werden können.&lt;br /&gt;
&lt;br /&gt;
Eine &#039;&#039;&#039;LUT&#039;&#039;&#039; 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 [[FlipFlop]]s 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.&lt;br /&gt;
&lt;br /&gt;
Die logischen Schalter und Speicher sind in den meisten FPGAs durch [[Speicher#SRAM | SRAM]]-Speicherzellen realisiert, welche beim Bootprozess passend geladen werden. Das Laden dieser Konfigurationsdaten bzw. Verknüpfungsregeln geschieht dabei in der Regel aus einem speziellen [[Speicher#Flash | Flash-ROM]]-Baustein heraus. Es kann aber auch ein Mikrocontroller benutzt werden. Die meisten FPGAs bieten daher für diesen Konfigurationsvorgang mehrere Modi an (seriell, parallel, Master/Slave). Da die SRAM-Zellen ihren Inhalt beim Abschalten der Versorgungsspannung verlieren, muss ein SRAM-basierter FPGA bei jedem Einschalten neu konfiguriert werden. Daher benötigt ein solcher FPGA einige Millisekunden bis zu einigen Sekunden, bevor er voll betriebsbereit ist.&lt;br /&gt;
&lt;br /&gt;
Eine FPGA-Familie beinhaltet Typen mit unterschiedlicher Anzahl und Komplexität von Logikzellen. So enthält ein Spartan3-1000 ca. 2,5 mal so viel Logik (FF, LUTs) wie ein Spartan3-400.  &lt;br /&gt;
&lt;br /&gt;
FPGAs mit nichtflüchtigem Speicher basieren auf [[Speicher#EEPROM | EEPROM]]-, [[Speicher#Flash | Flash]]-Speicher (einige Familien von Lattice und Actel) oder AntiFuse- Technologie (Actel). Die sogenannten AntiFuse FPGAs sind nur einmalig programmierbar.&lt;br /&gt;
&lt;br /&gt;
=== I/O Anschlüsse ===&lt;br /&gt;
&lt;br /&gt;
FPGAs unterstützen als universal einsetzbare Digital-ICs eine Vielzahl von Signalstandards. Üblich sind verschiedene TTL-Pegel (5V, 3,3V, 2,5V), differentielle Signalstandards (LVDS, GTL, GTP) und im Hochpreisbereich serielle Hochgeschwindigkeitsstandards mit bis zu 28 Gbit/s. Oftmals sind weitere Eigenschaften wie Treiberstärke und Flankensteilheit für jeden benutzerdefinierbaren Anschluss (User-IO) einstellbar. Meist sind die Pins zu Bänken 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. Für hohe Taktraten wird sowohl für Daten als auch die Takte der LVDS IO-Standard verwendet. Hier sind zwei komplementäre Buffer in unmittelbarer Nachbarschaft angeordnet. [[Ausgangsstufen Logik-ICs | Tristatebuffer]] werden implizit über VHDL definiert, indem einem Ausgang zeitabhängig der Zustand &amp;quot;Z&amp;quot; zugewiesen wird. Alternativ kann er explizit als Komponente eingefügt werden. Ebenso können je nach Hersteller und Typ interne Pull-Up und Pull-Down-Widerstände sowie Terminationswiderstände zugeschaltet werden, [[Wellenwiderstand | Terminierung]] wird ebenfalls unterstützt. Zudem befinden sich hinter vielen IO-Pads sog. [[Boundary_scan| Boundary Scan]] Zellen. Bei komplexeren FPGAs sind die Ein- und Ausgänge mit Verzögerungsgliedern versehen, die ein Anpassen des Timings bei Bussen wie z.B. schnellen Speichern ermöglichen. Einige Pins übernehmen besondere Funktionen und sind somit vom Anwender nicht uneingeschränkt oder z.T. auch gar nicht nutzbar. Dazu zählen neben der [[JTAG]]-Schnittstelle z.&amp;amp;nbsp;B. die Pins zum Einlesen der Konfigurationsdaten.  Ferner sind einige wenige Pins (2 - 8) zum Einspeisen des Taktes für das Design vorgesehen. Für schnelle Schaltungen sollten diese reservierten Pins benutzt werden. Sie enthalten kein Eingangs-FF und wirken über instanziierbare Buffer direkt auf Taktnetze / PLLs. Bei leistungsfähigen grossen Applikationen mit mehreren Takten müssen diese genutzt werden, da nur eine begrenzte Zahl von DCMs (Digital Clock Manager) zur Verfügung steht und benachbarte IO-Pins genutzt werden müssen. Für hohe Taktraten werden LVDS-Eingänge verwendet. Das I/O Verhalten wird zusammen mit vielen anderen Parametern in einer Datei festgelegt (Xilinx *.ucf, Altera *.acf, Lattice *.lpf). Alternativ können diese auch als Syntheseoption im Kommentarfeld des [[Verilog]]/[[VHDL]] Codes mit angegeben werden. 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 1500 I/Os, die kleinsten bieten ca. 50 User-I/O. Oft werden nur [[IC-Geh%C3%A4useformen#BGA|BGA]] und [[IC-Geh%C3%A4useformen#QFP|QFP]] Gehäuse (bis ca. 240 Pins) angeboten. Umgekehrt kann innerhalb einer Gehäusefamilie hochmigriert werden, d.h. bei gleichbleibendem Pinout, kann ein komplexerer FPGA eingesetzt werden. Das Layout muss dann nicht verändert werden, um eine Schaltung mit mehr Funktionen auszustatten.&lt;br /&gt;
&lt;br /&gt;
=== Komplexe Funktionsblöcke ===&lt;br /&gt;
&lt;br /&gt;
Neben den einfachen FlipFlops 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.&amp;amp;nbsp;B. in der Signalverarbeitung, enthalten viele FPGAs &#039;&#039;&#039;Multiplizierer&#039;&#039;&#039; direkt auf dem Chip, die in einem einzigen Taktzyklus Multiplikationen durchführen können.&lt;br /&gt;
&lt;br /&gt;
Ferner haben FPGAs oft einen von den LEs getrennt verfügbaren &#039;&#039;&#039;RAM&#039;&#039;&#039;-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 [[Speicher#BRAM | RAM-Blöcke]] von 4 - 16 kbit. Einige Familien besitzen einen größeren internen RAM, andere spezielle FIFO-Blöcke.&lt;br /&gt;
&lt;br /&gt;
Zur Generierung spezieller Takte sind &#039;&#039;&#039;PLL&#039;&#039;&#039;s (Phase Locked Loop) auf dem FPGA integriert. Einige Hersteller setzen mit dem selben Ziel &#039;&#039;&#039;DLL&#039;&#039;&#039;s (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 [[Speicher#DDR-RAM | 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]].&lt;br /&gt;
&lt;br /&gt;
=== CPU im FPGA ===&lt;br /&gt;
&lt;br /&gt;
Programmierbare Prozessoren sind auch bei FPGA-Designs immer häufiger anzutreffen. CPUs sind zwar im Allgemeinen langsamer und weniger effizient, als eine vollständige Implementation aus Logik-Primitiven - aber bei komplexen Abläufen auch deutlich einfacher zu programmieren. Insbesondere bei sequentiellen Aufgaben (Benutzerinterface, komplexe Steueraufgaben etc.) wird man gerne auf eine klassische CPU zurückgreifen. &lt;br /&gt;
&lt;br /&gt;
Manche FPGAs integrieren dazu einen oder mehrere Prozessorkerne (z. B. [[AVR]] bei Atmels FPSLIC oder PowerPC bei Xilinx&#039; Virtex) als &#039;&#039;HardCores&#039;&#039; auf einem IC.&lt;br /&gt;
&lt;br /&gt;
Auf der anderen Seite gibt es auch [[FPGA Soft Core | SoftCores]] (z. B. ARM-Cortex-M1 bei IGLOO-FPGA von [http://www.actel.com ACTEL]), Prozessorkerne die als Quelltext oder als vorsynthetisierte Netzliste vorliegen. In Abhängigkeit von den zur Verfügung stehenden Ressourcen können diese &#039;&#039;SoftCores&#039;&#039; beliebig instanziiert werden. Es gibt eine Vielzahl verschiedener &#039;&#039;SoftCores&#039;&#039;. &lt;br /&gt;
 &lt;br /&gt;
Teilweise kompatibel zu etablierten Prozessorarchitekturen (MIPS, SPARC, AVR), zum Teil optimiert auf die FPGAs einzelner Hersteller. Auch auf vergleichsweise &lt;br /&gt;
kleinen aktuellen FPGAs kann man problemlos eine 32bit-RISC-CPU integrieren.&lt;br /&gt;
&lt;br /&gt;
Als Programmspeicher werden die FPGA-internen [[Speicher#BRAM | RAM-Blöcke]] oder externe [[Speicher]] (SDRAM, SRAM) genutzt. Für einige Prozessorkerne stehen Hochsprachen wie C, C++ etc. zur Verfügung, andere werden in Assembler programmiert.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
=== Chipausnutzung ===&lt;br /&gt;
Aufgrund des Umstandes, dass FPGAs eine Reihe von allgemeinen Funktionsblöcken, wie BRAM, Multipliers, Transceivern beinhalten, die naturgemäß nie voll ausgenutzt werden können und zudem viele Routing-Resourcen benötigen, um die gewünschten Verschaltungen zu ermöglichen, nutzen FPGAs die Chipfläche relativ schlecht aus, was zu entsprechende geringer finanzieller Effizienz führt.&lt;br /&gt;
&lt;br /&gt;
=== Taktgeschwindigkeit ===&lt;br /&gt;
Die maximale „Geschwindigkeit“ eines FPGAs ist von der verwendeten Halbleitertechnologie (Prozess, Strukturgrößen), der internen Schaltungstopologie (Komplexität der LEs), Vorhandensein von harten Strukturen und vor allem vom Design abhängig. Dabei sind 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 300-600 MHz für die Schaltgeschwindigkeit der reinen Logikelemente. Je nach der Anzahl und Komplexität der pro Takt durchzuführenden Operationen ergeben sich dann reale Systemtaktfrequenzen von meist 10-100 MHz für global operierende Einheiten und bis zu 300 MHz für schnelle lokale Module. Maßgeblich ist in wieweit das Design auf Fläche bzw. Geschwindigkeit hin optimiert und vom Tool synthetisiert wurde: Durch das Einbringen von zusätzlichen Registerstufen lassen sich z.&amp;amp;nbsp;B. zeitkritische Pfade entschärfen (Pipelining), sodass die Frequenz des Chips angehoben werden kann und somit der effektive Datendurchsatz erhöht wird, mit dem Nachteil der gesteigerten Latenz durch das Mehr an Takten. Der Datendurchsatz lässt sich darüber hinaus durch die Nutzung paralleler Architekturen verbessern.&lt;br /&gt;
&lt;br /&gt;
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 Systemtakt von 20 MHz lassen sich z.&amp;amp;nbsp;B. 18-Bit AD-Wandler auslesen, die so z.&amp;amp;nbsp;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.&amp;amp;nbsp;B. asynchron an die Peripherie andocken, sowie reine »state machines« können Schaltungsteile auf der 2-4 fachen Frequenz betrieben werden.&lt;br /&gt;
&lt;br /&gt;
Generell sind Fläche und Geschwindigkeit konkurrierende Größen, zwischen denen ein Optimum gefunden werden muss. Für die preiswerten FPGA-Serien wie Spartan (Xilinx) und Cyclone (Altera) sind aufgrund technologischer Randbedingungen etwa 10-30% weniger Taktgeschwindigkeit bei gleichem Design zu erwarten als bei den großen Brüdern der Virtex- (Xilinx) bzw. Stratix-Familie (Altera). Es muss mit mehr Verbrauch an Logikelementen und Taktzyklen gerechnet werden (weniger Routingreserven, geringere Zahl von LUT-Eingängen, langsamere Logikelemente). Dafür sind sie sehr preiswert.&lt;br /&gt;
&lt;br /&gt;
Funktionstechnisch identische Chips werden oft in zwei oder mehr Geschwindigkeitsklassen (speed grades) angeboten, die sich meist durch Bauteilselektion bei der Produktion ergeben. Grob kann man ca. 5%-10% höhere Taktung zwischen zwei speed grades erwarten.&lt;br /&gt;
&lt;br /&gt;
== Herstellung ==&lt;br /&gt;
&lt;br /&gt;
FPGAs heutiger Bauart sind hochkomplexe Strukturen, da sie einerseits sehr hochgetaktet werden müssen, umfangreiche Funktionen bewerkstelligen sollen und damit genügend Resourcen haben müssen, andererseits aber preisgünstig und flexibel sein sollen, was umfangreiche Umschaltmöglichkeiten erfordert. Damit sind FPGAs als universelles Bauteil vergleichsweise teuer. Umso problematischer ist deren Fertigung:&lt;br /&gt;
&lt;br /&gt;
=== Herstellungsprozess ===&lt;br /&gt;
FPGAs werden als Analogschaltkreis unter Verwendung von Standardbibliotheken entwickelt, indem fertige, mehrfach simulierte und getestete Blöcke zusammengeschaltet werden. Dabei haben IO-Zellen, Schaltmatritzen und vor allem Controller, RAM-Blöcke und hardcores ihre Funktion mehrfach auf Silizium bewiesen.&lt;br /&gt;
&lt;br /&gt;
=== Hersteller ===&lt;br /&gt;
&lt;br /&gt;
Die größten Hersteller von FPGAs sind [http://www.altera.com Altera] und [http://www.xilinx.com Xilinx]. Weitere Hersteller sind [http://www.latticesemi.com/ Lattice], [http://www.actel.com Actel] und [http://www.atmel.com Atmel].&lt;br /&gt;
&lt;br /&gt;
Einige  Hersteller wie Altera verfügen über keine eigene Fabrik (-&amp;gt; &amp;quot;fabless&amp;quot;), sondern lassen ihre entwickelten FPGAs und ASICs bei wechselnden Halbleiterherstellern fertigen. Dies führt zu jeweils günstigen Produktionskosten, allerdings auch zu Qualitätsschwankungen. Auch Liefergarantien sind schwerer zu erhalten, besonders, wenn man darauf angewiesen ist, dass ein Chip auch in 25 Jahren noch zu bekommen ist.&lt;br /&gt;
&lt;br /&gt;
== Anwendung und Programmierung ==&lt;br /&gt;
=== Erstellung der FPGA firmware===&lt;br /&gt;
&lt;br /&gt;
==== Design Flow ====&lt;br /&gt;
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]] oder [[Verilog]] &amp;quot;gefüttert&amp;quot; werden. Die Hardwarebeschreibung gelingt ihrerseits z.B. mit Code-generierenden Werkzeugen, mittels derer zuvor Logikstrukturen, hardwarenahe Strukturen, Ablaufdiagramme und Zustandsautomaten formuliert wurden.&lt;br /&gt;
&lt;br /&gt;
Die Korrektheit der Funktion einzelner Blöcke wie der gesamten Schaltung wird mit Simulationswerkzeugen geprüft und im Sinne der Validierung formell nachgewiesen und dokumentiert.&lt;br /&gt;
&lt;br /&gt;
==== Wiederverwendbarkeit ====&lt;br /&gt;
Durch die Standardisierung der Architektur einerseits und die Entkopplung 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 &amp;quot;Hardwareteilen&amp;quot;. So stehen inzwischen komplett nutzbare Schaltungen wie serielle Bausteine, RAM-Controller und vieles mehr zur Verfügung - teilweise sogar in Form von Open Source Projekten.&lt;br /&gt;
&lt;br /&gt;
Andererseits ist eine Tendenz erkennbar, dass Hersteller ihre Software und damit erstellbare VHDL, speziell bei IP-Cores, immer stärker schützen und abkapseln. Diese produzieren kaum noch allgemeine VHDL, sondern nur noch herstellerspezifische Scripte. Zudem führen immer grösser werdende Unterschiede in den Chipstrukturen und Resourcen in grösseren FPGAs dazu, dass die Portierbarkeit weiter eingeschränkt ist. Dies ist besonders bezüglich der Integration von Peripherie-Controllern oder ganzer Mikrocontroller der Fall. Bei SOPC-Systemen wiederum sind die generierten Strukturen praktisch überhaupt nicht mehr von einem FPGA-Hersteller zum anderen zu portieren und oftmals nicht einmal mehr zwischen FPGA-Familien desselben Herstellers kompatiblel.&lt;br /&gt;
&lt;br /&gt;
=== Anbindung an Mikrocontroller ===&lt;br /&gt;
Es gibt unterschiedliche Art, wie ein FPGA mit einem Controller verbunden sein kann. In der Regel ist der Controller der Master und arbeitet auf den FPGA. Dabei ist zwischen direkten impulsiven Zugriffen auf den FPGA nach Massgabe des internen Ablaufs im Prozessor, die jederzeit und wortweise an irgendeine Adresse erfolgen können und blockweisem Schreiben, also permanentem Datenfluss ohne Adressierung zu unterscheiden.&lt;br /&gt;
&lt;br /&gt;
Das wortweise Schreiben und Lesen erfolgt in Form eines klassischen Speicherinterfaces durch aktiven Zugriff auf den FPGA oder den FPGA hindurch auf einen RAM-Bereich, in den der FPGA seinen Speicher einblendet.&lt;br /&gt;
&lt;br /&gt;
==== Memory Mapped ====&lt;br /&gt;
Hierunter versteht man den Zugriff des Mikrocontrollers auf das FPGA in Form eines Speichers. Dabei muss der FPGA ein klassisches Speicherinterface zur Verfügung stellen. In einzelnen Fällen reicht es auch, wenn dieser ein internes Blockram im dual ported Modus an die Ports des Mikrocontrollers heranführt.&lt;br /&gt;
&lt;br /&gt;
==== Streaming IO ====&lt;br /&gt;
Liefert ein Mikrocontroller häufig grosse Datenmengen an einen FPGA, ist es mitunter sinnvoll auf einen aktiven Zugriff mit Wortadressierung zu verzichten und einen pipeline-Zugriff zu implementieren. Der FPGA &amp;quot;hört&amp;quot; dazu den Datenbus des FPGA ab und erkennt anhand z.B. der Aktivierung nur einer Schreibleitung den Beginn des Sendens und empfängt dann mit jedem Takt ein Wort. Was die Daten zu bedeuten haben und wohin sie zu schreiben sind, muss dann in den Daten codiert werden. Auch ist es denkbar den FPGA so zu konfigurieren, dass beim Schreiben auf eine ganz bestimmte Adresse ein grösserer Datenblock übergeben wird. &lt;br /&gt;
&lt;br /&gt;
In beiden Fällen wird im FPGA ein FiFo eingesetzt, der synchron mit dem Mikroprozessortakt beschrieben wird. Auf der Seite des FPGAs muss eine FSM überwachen, ob Daten ankommen und diese geeignet verarbeiten.&lt;br /&gt;
&lt;br /&gt;
==== Indirekte Busverbindung ====&lt;br /&gt;
Oftmals sind FPGAs und MCUs in grösseren Systemen über Busse verschaltet. So kann der FPGA an einem klassischen Daten-Adress-Bus parallel zu einem RAM und anderen Bausteinen über Adressdekodierung und Chip-Select betrieben werden, oder er wird über ein logisches Interface wie SPI angebunden.&lt;br /&gt;
&lt;br /&gt;
=== Anbindung an RAMs und ROMs ===&lt;br /&gt;
&lt;br /&gt;
==== DDR2 / DDR3 - RAM ====&lt;br /&gt;
Während die Ansteuerung eines normalen SRAMS mittels eines klassischen memory mapped interface recht reinfach ist, bedürfen DRAMS- speziell mit DDR-Funktion einer aufwändigeren Schaltung, welche die komplizierte Kommoandostruktur der DDR-Ansteuerung versteht, pipelining und gfs cashing praktiziert und das RAM entsprechend bedient. Dabei sind RAM-spezifische Randbedingungen (refresh / self refreh) zu beachten. Für FPGAs existieren hier eine Reihe von konfigurierbaren IP-Cores&lt;br /&gt;
&lt;br /&gt;
==== SPI-Flash ====&lt;br /&gt;
Die Anbindung über SPI erfolgt meist über serielle Verbindungen wie I2C, da nur wenig Bandbreite benötigt wird. In selteneren Fällen werden FPGAs parallel mit einem Flash verbunden, z.B. bei grossen FPGAs mit umfangreichem image, welches aus einem Flash schnell geladen werden soll.&lt;br /&gt;
&lt;br /&gt;
=== Anbindung an Peripherie ===&lt;br /&gt;
Typische Anwendungen für FPGAs sind die breitbandige (grosse Busbreite und/oder hohe Taktfrequenz) Gewinnung- und Verarbeitung von Daten, bei denen DSPs oder MCUs nicht mehr (effektiv) eingesetzt werden können. Typische Beispiele dafür sind:&lt;br /&gt;
&lt;br /&gt;
==== Videotechnik ====&lt;br /&gt;
[[Bildsensor]]en produzieren traditionell die grössten Datenmengen je Zeiteinheit und sind ohne FPGAs praktisch nicht mit der Aussenwelt in Kontakt zu bringen. FPGAs arbeiten hier entweder auf der Kunden- oder auch der Herstellerseite, um die komplexen Datenströme anzunehmen, vorzuverarbeiten und in eine reduziertes, praktikableres Datenformat umzusetzen. Auch die Annahme eines Videoformates ist praktisch nur mit FPGAs möglich.&lt;br /&gt;
&lt;br /&gt;
Die benötigten Datenschnittstellen können mit Hilfe von Transceiver-Ports / LVDS manuell realisiert werden, oder es werden Umsetzer-Chips verwendet. Beispiele:&lt;br /&gt;
&lt;br /&gt;
* HDMI-Transceiver für FPGAs ohne Gigabit-Transceiver&lt;br /&gt;
* SERDES-Transceiver für mittelpreise FPGAs ohne SERDES / sehr hohe Frequenzen&lt;br /&gt;
* Camera-Link-Deserializer (für langsame FPGAs)&lt;br /&gt;
* LVDS-Buffer-Deserializer (für langsame FPGAs ohne LVDS buffer)&lt;br /&gt;
* DVI-Buffer&lt;br /&gt;
&lt;br /&gt;
Für Analoge Daten benötigt man selbstredend noch Video-ADCs / Video-DACs, die überhaupt erst ein digitales Signal erzeugen.&lt;br /&gt;
&lt;br /&gt;
==== Gigabit-Ethernet ====&lt;br /&gt;
Für die Umsetzung auf den (praktisch analogen) [[Ethernet]]-Standard braucht es immer einen sogenannten [[Glossar#p|PHY]], also einen physikalischen Zusatzchip. Dieser vollzieht die [[Glossar#p|5PAM]]-Modulation und die Codierung im 10/8-Format. Die Ankopplung an den FPGA erfolgt direkt.&lt;br /&gt;
&lt;br /&gt;
Während althergebrachte 100MBit-Verbindungen dabei oft noch mit UCs und softcores zu bedienen waren, können 1GBit-Netzwerke nur noch mit FPGAs sinnvoll angesteuert werden. Umgekehrt ist das Gigabit-Netzwerk eine gute Lösung, um Daten effektiv und billig in einen PC zu transportieren, da moderne PCs alle eine GBit-Karte besitzen und die Datenrate bei schnellen CPUs auch weitgehend ausgenutzt werden kann. Typische Bandbreiten bewegen sich für Linux mit unmodifizierten Treibern bei 700MBit-800MBit.&lt;br /&gt;
&lt;br /&gt;
Der [[Glossar#m|MAC]], bzw MAC-ähnliche Funktionen, sind im FPGA direkt implementierbar (z.B. mit IP-Cores) und können mit einfachen [[Glossar#f|FSM]]s angesteuert werden. Für die Verwendung von C-Software ist es notwendig, einen hardcore zu verwenden, da mit softcores die Bandbreite kaum erreicht werden kann. Besonders das Verpacken der Daten, die Abarbeitung des Protokolls sowie die Bildung der Ethernet-header mit Checksummen, CRC und zusätzlichen Prüf- und Steuerinformationen sind in VHDL sehr einfach und entspannt zu erzeugen, weil parallel gearbeitet werden kann.&lt;br /&gt;
&lt;br /&gt;
Die Bandbreite einer typischen [[Glossar#g|GMII]]-Verbindung mit [[Glossar#d|DDR]] beträgt 2x150MHz x 8 Bit, was mit mittleren FPGAs gut zu machen ist. Die interne Bandbreite ohne header beträgt dann typisch etwa 800MBit, z.B. 50MHz x 16 Bit für die Daten. Ab diesem Punkt ist dann wieder ein schneller softcore einsetzbar.&lt;br /&gt;
&lt;br /&gt;
==== High-Speed-USB ====&lt;br /&gt;
Für die Übersetzung auf den immer schnelleren USB-Bus (inzwischen bis 5Gb Bandbreite!) stehen Chips zur Verfügung, die sich in vergleichsweise einfacher Weise ansteuern lassen. Eine passende Sende- und Empfangsarchtiktur ist in FPGAs relativ rasch zu implementieren.&lt;br /&gt;
&lt;br /&gt;
=== Implementierung von Steuerfunktionen ===&lt;br /&gt;
In den meisten FPGA-Applikationen sind mehr oder weniger komplizierte Abläufe zu integrieren, die den Datenfluss steuern und die einzelnen Komponenten so mit einenander verschalten, dass sie wunschgemäss aufeinander reagieren.&lt;br /&gt;
&lt;br /&gt;
Mit nativem VHDL sind einfache sequenzielle Abläufe mit überschaubaren Verschlachtelungstiefen und Schleifen direkt in Form von Zählersteuerungen oder abstrakten State Machines realisierbar. Dazu kann auf die automatische Codegeneration aus state machine designern heraus oder die halbautomatische Erzeugung von Code mit z.B. Excel zurückgreifen, die die Enumeration von states, die Abfragen und die Sprünge zu den nächsten states automatisch vollzieht. Dies hat aber seine Grenzen, weil dies früher oder später unübersichtlich wird und nicht mehr so gut pflegbar ist. Zudem kann sich der Code stark aufblähen und die Zusammenfassung etwaiger Redundanz durch die Synthese zu hohen Synthesezeiten führen.&lt;br /&gt;
&lt;br /&gt;
Applikationen, die nicht ganz so zeitkritisch sind, sollten lieber mit einer flexiblen, verschachtelten Struktur von 2 state machines abgearbeitet werden, bei denen der Ablauf von der Generation des Timings für die Hardware getrennt ist. In reinen Ablaufsteuerung stehen dann wie in einem Befehlsspeicher abstrakte Codes hintereinander und werden mittels einer intelligenten Struktur sequenziell abgearbeitet werden. Diese agiert wie ein Befehlsinterpreter und  stösst eine untergeordnete state machine an. Damit wird zwar mehr Zeit für die Verwaltung benötigt, es führt aber letztlich zu quantitav weniger Steuer-Code. Die Befehlsfolgen lassen sich z.B. günstig in einem ROM realisieren. Die gesamte Steuerung wird intelligenter und insgesamt kleiner.&lt;br /&gt;
&lt;br /&gt;
Eine deartige Steuerlogik lässt sich soweit ausbauen, dass untergeordnete state machines wie Unterprogramme ablaufen und durch ein flexibles Hauptprogramm gesteuert werden, womit sie sich immer mehr einer Prozessorarchitektur annähert.&lt;br /&gt;
&lt;br /&gt;
Wenn die Komplexität viele &amp;quot;Befehle&amp;quot; erfordert, gfs noch gerechnet und viel entschieden werden muss, lohnt der Rückgriff auf einen vorgefertigen Softcore. Dies hat den Vorteil, dass eine Standardstruktur verwendet wird, für die es erweiterte Entwicklungs- und Debugging-Software gibt. Spätestens, wenn man mit virtuellen Datenstrukturen und rekursiven Funktionen arbeitet, oder z.B. Zeichenkettenverarbeitung braucht, ist ein Softcore unerlässlich, &lt;br /&gt;
weil man dann alle Methoden-, Variablen und sonstige Aspekte der jeweiligen Hochsprache verwendet werden können.&lt;br /&gt;
&lt;br /&gt;
=== Beispiele von VHDL Code ===&lt;br /&gt;
Siehe [[VHDL_Softwarepool]]&lt;br /&gt;
&lt;br /&gt;
== Einsatz in elektronischen Schaltungen ==&lt;br /&gt;
Der Einsatz von modernen FPGAs erfordert neben dem grundsätzlichen Wissen im Bezug auf den design flow und den für FPGAs optimierten Schaltungs- und Rechenstrukturen auch grosses Knowhow im Bereich der analogen Schaltungstechnik sowie auch der effektiven Vorgehensweise beim Design. &lt;br /&gt;
&lt;br /&gt;
=== FPGA aus analoger Sicht ===&lt;br /&gt;
FPGAs bedürfen heute eines perfekten Layouts, um mit RAMs und externen Chips zusammenarbeiten zu können, da sowohl die internen, als auch externen Taktfrequenzen rapide angestiegen sind. Ferner ist grosses Augenmerk auf die Spannungsversorgungen zu legen.&lt;br /&gt;
&lt;br /&gt;
=== Integration ins PCB ===&lt;br /&gt;
Weiter ist es heute kaum noch möglich, FPGA-Design vom board-Design funktionell zu trennen, wie man es mit Blick auf den scheinbar rein logischen Schaltungsentwurf glauben könnte und früher auch der Fall war. Da FPGAs heute stark dedizierte Funktionen enthalten, die nicht in jeder IO-Zelle zur Verfügung stehen oder spezielle Bank-Konfigurationen erforden, muss der Schaltungsentwurf und das Layouten des FPGAs und des Boards einhergehen.&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsboards und Starter-Kits ===&lt;br /&gt;
Von mehren Seiten gibt es im Markt eine ganze Palette von sogenanten Entwicklungs- und Evaluierungboards. Diese eignen sich nicht nur zum Kennenlernen des Chips, bez. zur Validierung der Lösung (ob die Schaltung wie gebaut auch im konkreten Ziel-FPGAs arbeitet) sondern werden immer öfter auch in bestehenden Systemen verbaut, weil aufgrund einer geringen Stückzahl die Selbstentwicklung nicht lohnt.&lt;br /&gt;
&lt;br /&gt;
Siehe [[Liste von FPGA Eval boards]]&lt;br /&gt;
&lt;br /&gt;
=== FPGA als Ersatz von alten digitalen ICs und Prozessoren ===&lt;br /&gt;
Es gibt vielfach den Wunsch, ICs, die nicht mehr direkt zu beschaffen sind, durch FPGAs (oder wenn möglich CPLDs) zu ersetzen. Gerade ältere Schaltungen&lt;br /&gt;
basieren aber durchaus noch auf 5V TTL und CMOS Logik. Oft sind die Systeme nicht ohne sehr hohen Aufwand und Verlust der Wirtschaftlichkeit zu ersetzen (wie ältere, produktive Industrieanalagen oder komplexe Rechensysteme - aber auch wenn es um die Erhaltung alter Hardware bei &amp;quot;retro-computing&amp;quot; geht).&lt;br /&gt;
&lt;br /&gt;
Nun bieten heute erhältliche (und günstige) FPGAs - aufgrund ihrer verwendeten Technologie - keine direkte 5V Kompatibilität mehr. FPGAs wie die Spartan II (nicht IIe), erlauben zumindest noch &amp;quot;5V Toleranz&amp;quot; auf den I/O-Pins. Das heißt: das FPGA wird zwar mit 3.3V versorgt und kann daher nur 3.3V am Ausgang treiben, erlaubt aber 5V von externen Bausteinen am Pin - dies ist nach wie vor TTL kompatibel, aber auch viele CMOS-Schaltungen können so durchaus noch betrieben werden.&lt;br /&gt;
&lt;br /&gt;
Für neueste 3.3V (oder weniger) FPGAs kann man Levelshifter-Schaltungen verwenden, die entweder bidirektional ausgeführt sind und ein &amp;quot;open-drain-artiges&amp;quot; Verhalten zeigen (also beide Seiten können die Leitung nur auf Lowpegel treiben, der Highpegel wird durch pull-up Widerstände erreicht) oder die unidirektional (mit optionaler Richtungsumkehr und/oder Treiberdeaktivierung über Kontrolleingänge) gebaut sind. Verwendung von Spannungsteilern, Zenerdioden-Schaltungen oder Ausnutzung von Diodenlimitierungen der I/O Treiber des FPGAs (und Verwendung eines Serienwiderstands zur Stromlimitierung) sind zumeist nur für niedrige Schaltfrequenzen gut geeignet und sorgen für eine erhöhte Stromaufnahme.&lt;br /&gt;
&lt;br /&gt;
Siehe auch: [[Pegelwandler]]&lt;br /&gt;
&lt;br /&gt;
== Debugging-Hilfen ==&lt;br /&gt;
=== Soft-Debugging ===&lt;br /&gt;
&lt;br /&gt;
=== Logikanalysatoren ===&lt;br /&gt;
Gerade beim [[Debugging]] größerer FPGA-Designs ist es oft notwendig, auf interne Signale und Busse zuzugreifen, die aus routing- oder Platzgründen nicht an Pins des FPGAs gelegt - und mit konventionellen Analysatoren beobachtet werden können. Nebst den einschlägigen Tools der Hersteller, welche Signal probing über JTAG gestatten (z.&amp;amp;nbsp;B. ChipsScope und SignalTap), werden in FPGAs oft mehr oder weniger komplexe [[Logic Analyzer]] integriert, welche die internen Signale in vielfältiger Weise aufzeichnen. Diese werden in Block-RAMs oder FIFOs gespeichert und durch externe Master ausgelesen. Hier kommen auf der Platine befindliche MCUs oder fremd zugreifende FPGAs / CPUs in Betracht, welche über unterschiedliche Kommunikationsverbindungen (seriell, parallel, LVDS) angeschlossen sind. Dazu werden in die FPGAs entsprechende Cores und state machines instanziiert und mit Software auf PC-Seite ausgelesen.&lt;br /&gt;
&lt;br /&gt;
Nachfolgend einige Beispiele:&lt;br /&gt;
&lt;br /&gt;
==== Automatisch instanziierte Logic Analyzer ====&lt;br /&gt;
Praktisch alle FPGA-Hersteller bieten die Möglichkeit, mit einem internen Tool ein script zu erzeugen, welches der Synthese übergeben wird, welche dann anhand von Signallisten und diversen Randbedingungen einen LA automatisiert aufbaut und verdrahtet. SampleZeit und -Takt sind dabei genauso einstellbar, wie RAM-Tiefe und -Breite. Die so generierten Datenpakete können dann mittels JTAG ausgelesen werden. Im Continous-Betrieb können so sogar permanente Datenausgaben wie bei einem Oszilloskop vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
==== Proprietärer serieller Logic Analyzer ====&lt;br /&gt;
&lt;br /&gt;
Die einfachste Möglichkeit ist die direkte Instanziierung eines Blockrams als FIFO mit &amp;quot;breitem&amp;quot; Busanschluss: Linksseitig besitzt das FIFO eine Breite von z.&amp;amp;nbsp;B. 256 Bit (Xilinx-Rams lassen sich ohne weitere Umbeschaltung über den Wizzard mit bis zu 1024 Bits deklarieren und nutzen). Rechtsseitig einen 16- oder 32 Bit breiten Busanschluss für einen Prozessor bzw Parallelinterface oder einen 1 Bit breiten Anschluss für ein serielles streaming interface. Mit einem FiFo-enable können die zu sampelnden Zeiten (Busphasen) festgelegt werden, z.&amp;amp;nbsp;B. anhand eines Kriteriums wie die Erfüllung einer bestimmten mathematischen Bedingung, die man in VHDL formuliert, oder es wird einfach ein Trigger gesetzt. Solange das FiFo nicht voll ist, kann geschrieben werden, was durch die interne FiFo-Verwaltung selbst bereits komplett geregelt wird.&lt;br /&gt;
&lt;br /&gt;
Beim einfachen seriellen Logic Analyzer benötigt man nur noch einen kleinen Core, der permanent das FiFo liest, und den seriellen Overhead (Startbit, Stoppbit, Parity und gfs CRC) hinzufügt. Mit einem einfach Pegelwandler kann so ein PC direkt angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
Auch denkbar ist die Anbindung an ein fremdes FPGA-board mit viel Speicher über (LV-)DS-Kommunikation. In komplexeren Systemen wird ein CAN- oder USB-Core eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Wenn mittels des Kriteriums nur ganz bestimmte kritische Phasen herausgesampelt werden (z.&amp;amp;nbsp;B. das Auftauchen eines bestimmten Rechenfehlers im FPGA) und so das Datenaufkommen je Zeiteinheit über längere Zeit betrachtet eher gering ist, kann bei geeignetem Datendurchsatz in Echtzeit dauerhaft mitprotokolliert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== BusProbe ====&lt;br /&gt;
Mit der BusProbe, dem Debugging Core von abaxor engineering, kann der Entwickler den Signalfluss im FPGA-Design auch über einen längeren Zeitraum überwachen und am PC aufzeichnen. Der Core verarbeitet an jedem Eingang einen kompletten Bus. &lt;br /&gt;
&lt;br /&gt;
Die Daten werden gemultiplext zum PC geschickt und dort per Software demultiplext. Im PC erfolgt auch die Auswertung mit beliebigen Analyse-Tools.&lt;br /&gt;
&lt;br /&gt;
Gegenüber dem Betriebssystem verhält sich die BusProbe wie eine Festplatte, von der die Daten mit gewöhnlichen Zugriffen gelesen werden können.&lt;br /&gt;
&lt;br /&gt;
* Streaming der Daten zum PC mit mehr als 20 MByte/s&lt;br /&gt;
* keine Treiber im PC da Nutzung von Standardschnittstellen (USB oder IDE)&lt;br /&gt;
* Hot-Plugging&lt;br /&gt;
* Visualisierung mit beliebigen Programmen&lt;br /&gt;
* geringer Logikaufwand&lt;br /&gt;
&lt;br /&gt;
[http://www.abaxor.de/produkte.html abaxor.de-Webseite]&lt;br /&gt;
&lt;br /&gt;
==== open source Logikanalysator ====&lt;br /&gt;
===== sump.org =====&lt;br /&gt;
Ein einfacher, übersichtlicher Logikanalysator findet sich auf sump.org. Er liegt im Quelltext vor wird mit ins Design einsynthetisiert. Als Speicher dient wahlweise SRAM oder internes RAM. Es können 32 Kanäle mit 100 MHz (oder weniger) gesampelt werden. Die Bediensoftware läuft platformunabhängig unter Java und benötigt eine serielle Schnittstelle (auch über USB-seriell Wandler) zum Core.&lt;br /&gt;
&lt;br /&gt;
[http://de.sump.org/projects/analyzer/ sump.org-Webseite]&lt;br /&gt;
&lt;br /&gt;
===== Weitere =====&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/articles/Logic_Analyzer&lt;br /&gt;
&lt;br /&gt;
== FPGA-Design aus Projektsicht ==&lt;br /&gt;
Vielfach wird die Aufassung vertreten, die FPGA-Entwicklung gehöre zur Hardwareentwicklung, da es sich um ein elektronisches Bauteil handle, welches lediglich konfiguriert werde. Man spricht bei der FPGA-Entwicklung oft auch ausdrücklich  nicht vom &amp;quot;programmieren&amp;quot;. Beides ist aus folgenden Gründen unrichtig:&lt;br /&gt;
&lt;br /&gt;
* Die Vorgehensweise, die Funktion einer Schaltung allein durch virtuelle Konstrukte wie Logikgatter, Multiplexer und Schalter zu definieren, die in der Praxis so nicht exisiteren, sondern in Form von LUTs realisiert werden, ist bereits eine abstrahierte Handlung.&lt;br /&gt;
&lt;br /&gt;
* Der erzeugte output des Designers besteht aus Grafiken, Skripten, Anweisungen, Einstellungen der Synthesesoftware und Strukturvorgaben, die nicht selbst Hardware sind, sondern Anweisungen an einer Erzeugersoftware und stellen damit ein Programm (lat. &amp;quot;Vorschrift&amp;quot;) dar.&lt;br /&gt;
&lt;br /&gt;
* Der erzeugte output der Erzeugersoftware wiederum ist selbst ein Programm und wird zusammen wie die Quellinformation des designers archiviert, versioniert und wie übliche Software gehandhabt.&lt;br /&gt;
&lt;br /&gt;
* Neben den allein schon durch die Nutzung bestimmter Funktionen wie RAMs, MCBs und Soft-Cores implizit vorgegebenen Abläufen im FPGA, werden fast immer auch noch weitere, explizite Handlungsabläufe mit Reaktionen auf äussere Einflüsse implementiert, die als klassische Software aufzufassen sind.&lt;br /&gt;
&lt;br /&gt;
Damit erfüllt die FPGA-Entwicklung formell mehrere Bedingungen, als Softwareentwicklung aufgefasst und eingruppiert zu werden. Andererseits ergeben sich durch die weiter oben erwähnten, sehr ausgeprägten Themen im Bereich der Elektronik (z.B. der Nachrichten- und HF-Technik) sowie der Physik eine Vielzahl von harten Anforderungen, der klassischen Hardwareentwicklung.&lt;br /&gt;
&lt;br /&gt;
Zusammengefasst kann man daher 2 grundlegende Aspekte des FPGA-Designs konstatieren, die je nach Anwendungsfall als mehr oder weniger unabhängig von einander gesehen werden können.&lt;br /&gt;
&lt;br /&gt;
=== Logikdesign ===&lt;br /&gt;
Das funktionslogische Design besteht aus dem Entwurf des Systems, der benötigten Abläufe und der zu realisierenden Protokolle und Berechnungsverfahren. Hierbei sind Kenntnisse im Systementwurf, gfs. von SOPC-Systemen, der üblichen Bussysteme und der Software generell nötig. Hinzu treten Kenntnisse in der elementaren und/oder der komplexen abstrakten Mathematik und der Signalverarbeitung sowie der theoretischen Nachrichtentechnik. Ferner sind Methoden des Sript- und Softwareentwurfes, sowie Handhabung von Software nötig.&lt;br /&gt;
&lt;br /&gt;
Dies alle stellt den Anteil dar, der klassischerweise als Softwareentwicklung aufgefasst wird. Es ist die Schnittstelle zur Funktionsschicht, also der grundsätzlichen Funktion eines Gerätes.&lt;br /&gt;
&lt;br /&gt;
=== Schaltungsdesign ===&lt;br /&gt;
Das praktische, hardwaretechnische Anteil des Designens erstreckt sich zudem über die physikalischen Themen der Temperatur- und Betriebsstabilität, der Strahlungs- und Störsicherheit, der Produzier- und Herstellbarkeit, des Wirkens und der Fehleranfälligkeit interner Schaltungsstrukturen, der Art und Weise der Resourennutzung bei unterschiedlichen Realisationsformen - besonders, wenn es auch Kostenoptimierung ankommt, des Analogverhalten der IOs und internen Strukturen im Bezug auf Frequenz und Pegel, der Signalintegrität der FPGAs und der Leiterbahnen sowie alle Anfordernisse im Umfeld der anzubindenen Chips.&lt;br /&gt;
&lt;br /&gt;
Dies ist der Anteil der gerne als Hardwareentwicklung eingestuft wird. Er stellt die Schnittstelle zur Physik und der Fertigung dar.&lt;br /&gt;
&lt;br /&gt;
=== Fazit ===&lt;br /&gt;
Die Verwendung von FPGAs ist heute komplexer denn je und erfordert in aller Regel starke Kenntnisse in beiden Feldern. FPGA-Entwicklung kann praktisch wie die Einbindung eines komplexen Evaluierungsboards oder einer programierbaren Steuerplatine mit festgelegten Funktionen aufgefasst werden.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Hardwarebeschreibungssprachen]]&lt;br /&gt;
* [[Reset für FPGA/CPLD]]&lt;br /&gt;
* [[Taktung FPGA/CPLD]]&lt;br /&gt;
* Projekt [[Audio-DSP mit Spartan 3-FPGA]]&lt;br /&gt;
* Projekt [[FPGA Lab]]&lt;br /&gt;
&lt;br /&gt;
== Forumlinks ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/274159 Tonleiter im PLD] - Beispiel einer einfachen Musikapplikation&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.fpga4fun.com/index.html FPGA4Fun] - FPGA-Projekte, größtenteils mit Altera und Verilog&lt;br /&gt;
* [http://video.google.com/videoplay?docid=-4969729965240981475 Ein Vortrag, auf Englisch: General Purpose, Low Power Supercomputing Using Reconfiguration Logic]&lt;br /&gt;
* http://www.opencores.org - FPGA-Projekte, Opensource, jeder kann seine Eigenen einstellen und an anderen mitarbeiten. U.a. gibt es verschiedene CPUs für FPGAs.&lt;br /&gt;
* [http://pin4.at/pro_misc.php#fdil Projekt &amp;quot;FDIL v2&amp;quot;]: 5V DIL-Ersatz mit 100kGates Spartan II FPGA (Englisch)&lt;br /&gt;
* [http://members.optushome.com.au/jekent/FPGA.htm John&#039;s FPGA Page]&lt;br /&gt;
* [http://www.embedded.com/columns/whatsnew/197003073 More about designing with embedded FPGAs] by Bernard Cole, Embedded.com&lt;br /&gt;
* [http://chaosradio.ccc.de/cre117.html Chaosradio Express - FPGA]&lt;br /&gt;
* [http://www.pin4.at/pro_custom.php Custom IC replacements] - DIL / TTL-Replacements mit FPGA (Englisch)&lt;br /&gt;
&lt;br /&gt;
[[Category:FPGA und Co|Grundlagen|Bauteile]]&lt;/div&gt;</summary>
		<author><name>87.180.142.147</name></author>
	</entry>
</feed>