Spaß mit FPGAs: Unterschied zwischen den Versionen
Phip (Diskussion | Beiträge) (→Hardware: +XC3S250E) |
Phip (Diskussion | Beiträge) (→Hardware: => beta, +Boards, +kleine Änderungen) (Markierung: visualeditor-switched) |
||
Zeile 3: | Zeile 3: | ||
{{ProjektInfoBox | {{ProjektInfoBox | ||
|name = Spaß mit FPGAs | |name = Spaß mit FPGAs | ||
− | |status = | + | |status = beta |
− | |image = | + | |image = Artix-7_XC7A100T_CSG324ABX-00008265_crop.jpg |
|description = Wissen über FPGAs und derer Programmierung sammeln | |description = Wissen über FPGAs und derer Programmierung sammeln | ||
|author = phip | |author = phip | ||
Zeile 15: | Zeile 15: | ||
}} | }} | ||
− | [[Datei:Spartan3_entwicklerboard_2.jpg|300px|thumb|right|Ein | + | [[Datei:Spartan3_entwicklerboard_2.jpg|300px|thumb|right|Ein altes Spartan-3 FPGA-Entwicklerboard]] |
Das Projekt '''Spaß mit FPGAs''' ist eine konsequente Fortführung der aus der Spielerei mit Arduinos und Raspberry Pis gesammelten Erfahrungen. | Das Projekt '''Spaß mit FPGAs''' ist eine konsequente Fortführung der aus der Spielerei mit Arduinos und Raspberry Pis gesammelten Erfahrungen. | ||
Zeile 39: | Zeile 39: | ||
{| class="wikitable" | {| class="wikitable" | ||
− | |- style="background:#888888; color:#000000" | + | |- style="background:#888888; color:#000000 text-align:center" |
! FPGA Name | ! FPGA Name | ||
! Logik-Zellen Äquivalent | ! Logik-Zellen Äquivalent | ||
! DSP Slices | ! DSP Slices | ||
! Flipflops | ! Flipflops | ||
− | ! Verteilter RAM ( | + | ! Verteilter RAM (Kb) |
− | ! Block-RAM ( | + | ! Block-RAM (Kb) |
− | + | ! Preis [€] (Modul zum Stecken/Löten<ref name=":0" group="L" />) | |
− | ! Preis (Modul zum Stecken/Löten) | + | ! (GP) I/O |
− | ! | + | ! Preis [€] (Entwicklerboard) |
− | ! Preis (Entwicklerboard) | + | ! (GP) I/O<ref name=":2" group="L">auf dem Board sind noch zusätzlich andere Dinge über andere IOs abrufbar und ansprechbar</ref> |
− | ! | + | |- |
+ | | style="text-align:center" |XC3S50A | ||
+ | | style="text-align:center" |1.584 | ||
+ | | style="text-align:center" |– (3<ref name=":3" group="L">Multiplizierer</ref>) | ||
+ | | style="text-align:center" |? | ||
+ | | style="text-align:center" |11 | ||
+ | | style="text-align:center" |54 | ||
+ | | style="text-align:center" | | ||
+ | | style="text-align:center" | | ||
+ | | style="text-align:center" |Numato Lab Elbert V2<br />[http://numato.com/elbert-v2-spartan-3a-fpga-development-board/ 26,89] | ||
+ | | style="text-align:center" |39 | ||
|- | |- | ||
− | |style="text-align:center"| XC3S250E | + | | style="text-align:center" | XC3S250E |
− | |style="text-align:center"| 5 | + | | style="text-align:center" | 5.508 |
− | |style="text-align:center"| – | + | | style="text-align:center" |– (16<ref name=":3" group="L" />) |
− | + | | style="text-align:center" | ? | |
− | |style="text-align:center"| | + | | style="text-align:center" | 38 |
− | |style="text-align:center"| | + | | style="text-align:center" | 216 |
− | |style="text-align:center"| | + | | style="text-align:center" | Waveshare Evaluation Development Board<br />[https://www.amazon.de/Waveshare-Spartan-3E-XC3S250E-Evaluation-Development/dp/B00KM70X30/ref=sr_1_12?s=computers&ie=UTF8&qid=1466335106&sr=1-12&keywords=FPGA 28,99] |
− | |style="text-align:center"| Waveshare | + | | style="text-align:center" | 88 |
− | |style="text-align:center"| 88 | + | | style="text-align:center" | |
− | |style="text-align:center"| | + | | style="text-align:left" | |
− | |style="text-align:left" | + | |- |
+ | | style="text-align:center" |XC6SLX9 | ||
+ | | style="text-align:center" |9,152 | ||
+ | | style="text-align:center" |16 | ||
+ | | style="text-align:center" |11,440 | ||
+ | | style="text-align:center" |90 | ||
+ | | style="text-align:center" |576 | ||
+ | | style="text-align:center" | | ||
+ | | style="text-align:center" | | ||
+ | | style="text-align:center" |Numato Lab Mimas<br />[http://numato.com/mimas-spartan-6-fpga-development-board/ 31,38] | ||
+ | | style="text-align:center" |70 | ||
|- | |- | ||
− | |style="text-align:center"| XC6SLX9 | + | | style="text-align:center" | XC6SLX9 |
− | |style="text-align:center"| 9.152 | + | | style="text-align:center" | 9.152 |
− | |style="text-align:center"| 16 | + | | style="text-align:center" | 16 |
− | |style="text-align:center"| 11.440 | + | | style="text-align:center" | 11.440 |
− | |style="text-align:center"| 90 | + | | style="text-align:center" | 90 |
− | |style="text-align:center"| 576 | + | | style="text-align:center" | 576 |
− | |style="text-align:center"| | + | | style="text-align:center" | |
− | |style="text-align:center"| | + | | style="text-align:center" | |
− | |style="text-align:center"| | + | | style="text-align:center" | ZR TECH Espier III<ref name=":0" group="L">JTAG Benötigt (ca. 40-300 € oder Einzelteileprojekt)</ref><br />[http://www.ebay.de/itm/141762290694 54,00] |
− | + | | style="text-align:center" | 2<ref name=":4" group="L">insgesamt 22, jedoch teilen sich die IOs die FPGA-Pins mit PS/2 … und den Widerständen des VGAs</ref> | |
− | |style="text-align: | + | |
|- | |- | ||
− | |style="text-align:center"| XC7A15T | + | | style="text-align:center" | XC7A15T |
− | |style="text-align:center"| 16.640 | + | | style="text-align:center" | 16.640 |
− | |style="text-align:center"| 45 | + | | style="text-align:center" | 45 |
− | |style="text-align:center"| 20.800 | + | | style="text-align:center" | 20.800 |
− | |style="text-align:center"| 200 | + | | style="text-align:center" | 200 |
− | |style="text-align:center"| 900 | + | | style="text-align:center" | 900 |
− | |style="text-align:center"| | + | | style="text-align:center" | 2x50 Pin FPGA-Modul<br />[https://shop.trenz-electronic.de/de/TE0725-02-15-1C-Xilinx-Artix-7-2x50-Pin-FPGA-Modul-XC7A15T-1CSG324C?c=131 64,26] |
− | + | | style="text-align:center" | 87 | |
− | |style="text-align:center"| 87 | + | |
|- | |- | ||
− | |style="text-align:center"| XC7A35T | + | | style="text-align:center" | XC7A35T |
− | |style="text-align:center"| 33.280 | + | | style="text-align:center" | 33.280 |
− | |style="text-align:center"| 90 | + | | style="text-align:center" | 90 |
− | |style="text-align:center"| 41.600 | + | | style="text-align:center" | 41.600 |
− | |style="text-align:center"| 400 | + | | style="text-align:center" | 400 |
− | |style="text-align:center"| 1.800 | + | | style="text-align:center" | 1.800 |
− | |style="text-align:center"| | + | | style="text-align:center" | 2x50 Pin FPGA-Modul<br />[https://shop.trenz-electronic.de/de/TE0725-02-35-2C-Xilinx-Artix-7-2x50-Pin-FPGA-Modul-XC7A35T-2CSG324C?c=131 76,16] |
− | + | | style="text-align:center" | 87 | |
− | |style="text-align:center"| 87 | + | | style="text-align:center" | Digilent Basys 3<br />[https://shop.trenz-electronic.de/de/26084-Basys3-Artix-7-FPGA-Board?c=131 132,92]<br />83,87<ref name=":1" group="L">Preis gilt nur für Beschaffung als Student/Akademiker</ref> |
− | |style="text-align:center"| | + | | style="text-align:center" | 4×8 |
− | |style="text-align: | + | |
|- | |- | ||
− | |style="text-align:center"| XC7A100T | + | | style="text-align:center" | XC7A100T |
− | |style="text-align:center"| 101.440 | + | | style="text-align:center" | 101.440 |
− | |style="text-align:center"| 240 | + | | style="text-align:center" | 240 |
− | |style="text-align:center"| 126.800 | + | | style="text-align:center" | 126.800 |
− | |style="text-align:center"| 1.188 | + | | style="text-align:center" | 1.188 |
− | |style="text-align:center"| 4.860 | + | | style="text-align:center" | 4.860 |
− | |style="text-align:center"| | + | | style="text-align:center" | 2x50 Pin FPGA-Modul<br />[https://shop.trenz-electronic.de/de/TE0725-02-100-2C-Xilinx-Artix-7-2x50-Pin-FPGA-Modul-XC7A100T-2CSG324C?c=131 117,81] |
− | + | | style="text-align:center" | 87 | |
− | |style="text-align:center"| 87 | + | | style="text-align:center" | Digilent Nexys 4 DDR<br />[https://shop.trenz-electronic.de/de/25305-Nexys-4-FPGA-Board-Xilinx-Artix-7-100T?c=131&showb2c=1 339,71]<br />168,80<ref name=":1" group="L" /> |
− | |style="text-align:center"| Nexys 4 | + | | style="text-align:center" | 4×8, 1×8 LVDS |
− | |style="text-align:center"| | + | |
|} | |} | ||
− | + | <references group="L" /> | |
Die Entwicklerboards haben noch RAM und andere Faxen aufgelötet. Man hat die Qual der Wahl zwischen Chip (alles selber machen [lassen]), Modul (nur noch Pins verbinden) und Entwicklerboard (alles Fertig vorgekaut), je nach Anwendung (Lernen/Entwickeln/Projektimplementierung) | Die Entwicklerboards haben noch RAM und andere Faxen aufgelötet. Man hat die Qual der Wahl zwischen Chip (alles selber machen [lassen]), Modul (nur noch Pins verbinden) und Entwicklerboard (alles Fertig vorgekaut), je nach Anwendung (Lernen/Entwickeln/Projektimplementierung) | ||
Zeile 122: | Zeile 138: | ||
===Xilinx FPGAs=== | ===Xilinx FPGAs=== | ||
− | Bei Xilinx gibt es eine kostenlose WebPack-Lixenz zu haben. Einfach bei Xilinx registrieren und sich bei seiner Arbeit von Xilinx beschatten lassen | + | Bei Xilinx gibt es eine kostenlose WebPack-Lixenz zu haben. Einfach bei Xilinx registrieren und sich bei seiner Arbeit dank der nicht abschaltbaren WebTalk (Technologie) von Xilinx beschatten lassen. Xilinx ist bis jetzt der einzige FPGA-Hersteller, der seine Tools für Linux bereit stellt. |
====ISE==== | ====ISE==== | ||
ISE ist die alte (Oktober 2013) FPGA Design Suite. Sie wird für FPGA-Serien <7 benötigt. | ISE ist die alte (Oktober 2013) FPGA Design Suite. Sie wird für FPGA-Serien <7 benötigt. | ||
Zeile 128: | Zeile 144: | ||
Auf dem Datending bereits heruntergeladen: <code>/mnt/datending/software/Xilinx/ise/Xilinx_ISE_DS_14.7_1015_1/xsetup</code> ausführen (Für Windows gibt es dort auch eine EXE). Die Installation dauert eine Weile, mindestens 17 GiB freien Festplattenspeicher werden benötigt. | Auf dem Datending bereits heruntergeladen: <code>/mnt/datending/software/Xilinx/ise/Xilinx_ISE_DS_14.7_1015_1/xsetup</code> ausführen (Für Windows gibt es dort auch eine EXE). Die Installation dauert eine Weile, mindestens 17 GiB freien Festplattenspeicher werden benötigt. | ||
− | ====Ausführen==== | + | =====Ausführen===== |
. /opt/Xilinx/14.7/ISE_DS/settings64.sh | . /opt/Xilinx/14.7/ISE_DS/settings64.sh | ||
export XILINXD_LICENSE_FILE=1234@server | export XILINXD_LICENSE_FILE=1234@server | ||
Zeile 143: | Zeile 159: | ||
=====Installation===== | =====Installation===== | ||
Auf dem Datending bereits heruntergeladen: <code>/mnt/datending/software/Xilinx/vivado/2016.2/xsetup</code> ausführen. | Auf dem Datending bereits heruntergeladen: <code>/mnt/datending/software/Xilinx/vivado/2016.2/xsetup</code> ausführen. | ||
− | ====Ausführen==== | + | =====Ausführen===== |
Irgendwo in den Anwendungen sind neue Icons mit Namen aufgetaucht – einfach anklicken. | Irgendwo in den Anwendungen sind neue Icons mit Namen aufgetaucht – einfach anklicken. | ||
==Projektstatus== | ==Projektstatus== | ||
+ | Dies ist der derzeitige Stand der Dinge im /dev/tal. | ||
:{{Wertung|rot}}JTAG-Adapter beschaffen | :{{Wertung|rot}}JTAG-Adapter beschaffen | ||
:{{Wertung|rot}}FPGA beschaffen | :{{Wertung|rot}}FPGA beschaffen | ||
::{{Wertung|rot}}FPGA-Modul mit Spannungsversorgung verlöten | ::{{Wertung|rot}}FPGA-Modul mit Spannungsversorgung verlöten | ||
+ | Privat gibt es noch FPGAs bei [[Benutzer:Endres|Endres]] und [[Benutzer:phip|phip]]. | ||
[[Kategorie:Projekt]] | [[Kategorie:Projekt]] | ||
+ | [[Kategorie:FPGA]] |
Version vom 2. Juli 2016, 15:50 Uhr
Dieses Projekt befindet sich in der Evaluationsphase. Es folgt die Beschaffungsphase. Dann folgt die Spaß-mit-FPGAs-Phase.
Spaß mit FPGAs Release status: beta [box doku] | |
---|---|
Description | Wissen über FPGAs und derer Programmierung sammeln |
Author(s) | phip |
Platform | FPGA, PC/Laptop |
Das Projekt Spaß mit FPGAs ist eine konsequente Fortführung der aus der Spielerei mit Arduinos und Raspberry Pis gesammelten Erfahrungen.
Inhaltsverzeichnis
Eigenstudium
phip hilft bei Fragen und leiht Bücher zum Lernen aus.
Schaltungslogik
Grundlende Begriffe wie Gatter, Flipflop, XOR, uvm … sollten keine Fremdworte sein
Hardwarebeschreibungssprache
Um digitale Schaltungen in einem FPGA realisieren zu können, sind Kenntnisse einer Hardwarebeschreibungssprache (Hardware Description Language, HDL) notwendig, mit der die Logikgatter entworfen werden. Verilog und VHDL haben sich als HDL etabliert.
VHDL
VHDL ist in Europa sehr beliebt. Zur Übersicht der Sprache empfehlen sich folgende Quellen:
- Andreas Mäder – VHDL Kompakt und das Hamburg VHDL Archiv
- VHDL-Tutorium auf Wikibooks
- Pong P. Chu – FPGA Prototyping by VHDL Examples: Xilinx Spartan-3 Version (2008), ISBN 978-0-470-18531-5
- Peter J. Ashenden – The Designer’s Guide to VHDL, Third Edition (2008), ISBN 978-0-12-088785-9
Hardware
Für dieses Projekt muss mindestens ein FPGA beschaffen werden. Hier Auflistung der bisher gefundenen, günstigen Angebote. Module zum Stecken/Löten benötigen einen eigenen JTAG-Programmierer (ca. 50-300 €).
FPGA Name | Logik-Zellen Äquivalent | DSP Slices | Flipflops | Verteilter RAM (Kb) | Block-RAM (Kb) | Preis [€] (Modul zum Stecken/Löten[L 1]) | (GP) I/O | Preis [€] (Entwicklerboard) | (GP) I/O[L 2] |
---|---|---|---|---|---|---|---|---|---|
XC3S50A | 1.584 | – (3[L 3]) | ? | 11 | 54 | Numato Lab Elbert V2 26,89 |
39 | ||
XC3S250E | 5.508 | – (16[L 3]) | ? | 38 | 216 | Waveshare Evaluation Development Board 28,99 |
88 | ||
XC6SLX9 | 9,152 | 16 | 11,440 | 90 | 576 | Numato Lab Mimas 31,38 |
70 | ||
XC6SLX9 | 9.152 | 16 | 11.440 | 90 | 576 | ZR TECH Espier III[L 1] 54,00 |
2[L 4] | ||
XC7A15T | 16.640 | 45 | 20.800 | 200 | 900 | 2x50 Pin FPGA-Modul 64,26 |
87 | ||
XC7A35T | 33.280 | 90 | 41.600 | 400 | 1.800 | 2x50 Pin FPGA-Modul 76,16 |
87 | Digilent Basys 3 132,92 83,87[L 5] |
4×8 |
XC7A100T | 101.440 | 240 | 126.800 | 1.188 | 4.860 | 2x50 Pin FPGA-Modul 117,81 |
87 | Digilent Nexys 4 DDR 339,71 168,80[L 5] |
4×8, 1×8 LVDS |
- ↑ 1,0 1,1 JTAG Benötigt (ca. 40-300 € oder Einzelteileprojekt)
- ↑ auf dem Board sind noch zusätzlich andere Dinge über andere IOs abrufbar und ansprechbar
- ↑ 3,0 3,1 Multiplizierer
- ↑ insgesamt 22, jedoch teilen sich die IOs die FPGA-Pins mit PS/2 … und den Widerständen des VGAs
- ↑ 5,0 5,1 Preis gilt nur für Beschaffung als Student/Akademiker
Die Entwicklerboards haben noch RAM und andere Faxen aufgelötet. Man hat die Qual der Wahl zwischen Chip (alles selber machen [lassen]), Modul (nur noch Pins verbinden) und Entwicklerboard (alles Fertig vorgekaut), je nach Anwendung (Lernen/Entwickeln/Projektimplementierung)
Obwohl die Artix-7 FPGAs von Xilinx die „kleinsten“ FPGAs sind, haben sie für diesen Preis schon ganz viel zu bieten. Artix-7 FPGAs haben einiges direkt im Chip implementiert, was die Schaltungszeit erheblich erhöht und logische Zellen für andere Zwecke einspart, z. B. PCIe v2.0 mit 4 Lanes = 4×5 Gb/s (damit kann man PCIe-Karten an den FPGA anbinden oder den FPGA in einen PCIe-Slot stecken), Ver-/Entschlüsselung mit 256-bit AES; an den Pins können 211 Gb/s (Duplex) übertragen werden, die im FPGA enthaltenen Transceiver können 6.6 Gb/s übertragen, es ist sogar ein 12-bit 1 MSP/s (500 kHz) ADC enthalten (reicht zum Empfang eines FM Radiosenders mittels SDR). Kintex und Virtex können noch mehr, aber das ist eine andere Welt.
Werkzeuge
Als Freie Software zum Lernen von VHDL und als Testumgebung der geschriebenen Schaltungen bietet sich GHDL in Verbindung mit GTK-Wave an.
Für die Entwicklung auf einem FPGA sind die Tools der Hersteller leider immer noch die erste Wahl.
Xilinx FPGAs
Bei Xilinx gibt es eine kostenlose WebPack-Lixenz zu haben. Einfach bei Xilinx registrieren und sich bei seiner Arbeit dank der nicht abschaltbaren WebTalk (Technologie) von Xilinx beschatten lassen. Xilinx ist bis jetzt der einzige FPGA-Hersteller, der seine Tools für Linux bereit stellt.
ISE
ISE ist die alte (Oktober 2013) FPGA Design Suite. Sie wird für FPGA-Serien <7 benötigt.
Installation
Auf dem Datending bereits heruntergeladen: /mnt/datending/software/Xilinx/ise/Xilinx_ISE_DS_14.7_1015_1/xsetup
ausführen (Für Windows gibt es dort auch eine EXE). Die Installation dauert eine Weile, mindestens 17 GiB freien Festplattenspeicher werden benötigt.
Ausführen
. /opt/Xilinx/14.7/ISE_DS/settings64.sh export XILINXD_LICENSE_FILE=1234@server
Nachdem die Shell mit den Umgebungsvariablen eingerichtet wurde, einfach ise
eingeben.
Für Xilinx-Programmierkabel wird noch eine eigenst kompilierte LibUSB benötigt (git clone git://git.zerfleddert.de/usb-driver
). Lass die Finger davon, wenn Du es nicht brauchst.
export LD_PRELOAD=/mnt/vhdl/usbcable/usb-driver/libusb-driver.so
Vivado
ISE ist die neue FPGA Design Suite von Xilinx.
Installation
Auf dem Datending bereits heruntergeladen: /mnt/datending/software/Xilinx/vivado/2016.2/xsetup
ausführen.
Ausführen
Irgendwo in den Anwendungen sind neue Icons mit Namen aufgetaucht – einfach anklicken.
Projektstatus
Dies ist der derzeitige Stand der Dinge im /dev/tal.