Forum: FPGA, VHDL & Co. FPGA Board für Anfänger


von Alexander K. (ustus_alex)


Lesenswert?

Hallo zusammen,

während der Studiumzeit hatte ich einen „Crash Kurs“, bzw. Studienfach 
digitale Systeme basierend auf VHDL Programmierung. Jetzt möchte ich 
dieses Thema weiterentwickeln und mehr Erfahrung sammeln.

In Moment stehe ich vor der Auswahl einer Entwicklungsumgebung, bzw. 
eines Entwicklungsbordes.

Folgende Produkte von Xilinx, sowie auch von Altera gefallen mir gut:
1.  Zedboard (Digilent)
2.  SoCKit (Terasic)

Beide Platinen enthalten ARM Prozessoren, von denen ich überhaupt keine 
Ahnung habe (nie einen Mikrocontroller programmiert).

Aus diesem Grund stellt sich die Frage, ob ich mich in der ersten Zeit 
nur mit FPGA beschäftigen kann (ohne Nutzung von ARM Prozessoren)?

Oder soll man in diesem Fall in Richtung Nexys Video Artix-7 
FPGA/Cyclone V GX Starter Kit schauen?

Welches Board hat das beste Preis/Leistungsverhältnis

Ich freue mich auf eure Vorschläge.

von Mh. M. (mhm)


Lesenswert?

Erstmal schön, dass du dich mit dem Thema konfigurierbarer Logik weiter 
beschäftigen möchtest!

Ich stand vor einer Zeit vor der selben Frage wie du: privat musste 
irgendeine Evalplattform her, um Designs auch mal in realer Hardware 
testen zu können. Habe mich dann eine ganze Weile umgesehen und 
schlussendlich das erwähnte Cyclone V GX Starter Kit gekauft. Das Board 
ist prima, bietet einen recht neuen FPGA und ziemlich viel verfügbarer 
Peripherie. Jedoch muss ich dazu sagen: Ich mache recht viel mit 
FPGAs, auch privat. Dabei habe ich jedoch konkrete Projekte und spiele 
nicht einfach mehr oder minder ziellos herum. Und diese Projekte haben 
an benötiger Peripherie ziemlich wenig bis gar keine Überschneidungen 
mit der Peripherie, welche das Evalboard bietet. Ich benutze 
hauptsächlich den HSMC-Konnektor und den LPDDR2-RAM, sowie ein paar LEDs 
und Schiebeschalter zum Debuggen. Beim Kauf dachte ich gleich wie du: 
möglichst viel Peripherie on Board für möglichst wenig Geld. Inzwischen 
habe ich das Teil einige Zeit und musste feststellen, dass ich das 
allermeiste an Peripherie also gar nicht benötige und wohl auch in 
Zukunft nicht benötigen werde. Es kann also bei der Entscheidung für ein 
Evalboard durchaus praktisch sein, schon ein paar eventuelle Projekte im 
Hinterkopf zu haben und nicht einfach nach dem Kriterium möglichst viel 
universelle Peripherie pro Geld zu kaufen. Alles vor dem Gedanken 
natürlich, dass man nicht einfach nur die ganze Zeit rumspielen will.

Dennoch machst du mit dem Cyclone V GX Starter Kit wohl nichts falsch.
Falls du dir noch nicht endgültig sicher bist, ob du dich ernsthaft über 
längere Zeit mit der Thematik beschäftigen willst (und dementsprechend 
dann auch über Rumspielen mit ein paar Tastern und LEDs hinauskommst), 
würde ich wohl eher zu was günstigerem raten. Da bietet sich zum 
Beispiel das DE0-Nano (Cyclone IV) an, oder noch günstiger das 
MachXO2-Breakout Board von Lattice. Für beide Boards gibts das benötigte 
Synthese-Tool in einer kostenlosen Version (auch das bei der Auswahl auf 
jeden Fall beachten!).

Zum Thema SoC: Ich würde mir für den Anfang wohl kein Board mit einem 
SoC drauf zulegen, sofern du dich einfach mit konfigurierbarer Logik 
beschäftigen willst. So ein SoC macht einiges an Overhead, bis der 
(ARM)-Core da drin mal zuverlässig läuft. Und auch dann ist die Frage, 
was man damit machen will. Wenn du dann ein paar Zeilen baremetal C da 
drauf laufen lässt, ist das i.d.R. völlige Verschwendung. Da hätte es 
dann auch ein kleiner Softcore im FPGA getan. Falls du jetzt wirklich 
sagst, du willst mal was ala Handheld mit Linux und Bildverarbeitung 
bauen, dann ist ein SoC natürlich definitiv das Richtige.

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

Mh. M. schrieb:
> Erstmal schön, dass du dich mit dem Thema konfigurierbarer Logik weiter
> beschäftigen möchtest!

Schön für wen? Mit dem Ziel, das beruflich zu nutzen, würde ich es eher 
als Fehltritt bezeichnen. Als Privatbeschäftigung hingegen sind FPGAs 
das schönste Hobby der Welt :-)


> Zum Thema SoC: Ich würde mir für den Anfang wohl kein Board mit einem
> SoC drauf zulegen,

Das board hat ohnehin niemals ein SoC drin, denn das muss man ja 
bekanntlich selbst einbauen.

> du willst mal was ala Handheld mit Linux und Bildverarbeitung
> bauen, dann ist ein SoC natürlich definitiv das Richtige.

Dafür hätte ich gerne eine solide Begründung.

von Mh. M. (mhm)


Lesenswert?

Weltbester FPGA-Pongo schrieb im Beitrag #4553179:
> Mh. M. schrieb:
>> Erstmal schön, dass du dich mit dem Thema konfigurierbarer Logik weiter
>> beschäftigen möchtest!
>
> Schön für wen? Mit dem Ziel, das beruflich zu nutzen, würde ich es eher
> als Fehltritt bezeichnen. Als Privatbeschäftigung hingegen sind FPGAs
> das schönste Hobby der Welt :-)
Genau ;-)

>> Zum Thema SoC: Ich würde mir für den Anfang wohl kein Board mit einem
>> SoC drauf zulegen,
>
> Das board hat ohnehin niemals ein SoC drin, denn das muss man ja
> bekanntlich selbst einbauen.
Wikipedia: 'Unter System-on-a-Chip (SoC, dt. Ein-Chip-System), auch 
System-on-Chip, versteht man die Integration aller oder eines großen 
Teils der Funktionen eines Systems auf einem Chip (Die), also einem 
integrierten Schaltkreis (IC) auf einem Halbleiter-Substrat, auch 
monolithische Integration genannt.'
Wenn man als 'Funktion des Systems' Bereitstellung von CPU und 
FPGA-Fabric versteht, dann ist bereits der Chip an sich ein SoC. Oder 
habe ich deinen Einwand falsch verstanden?

>> du willst mal was ala Handheld mit Linux und Bildverarbeitung
>> bauen, dann ist ein SoC natürlich definitiv das Richtige.
>
> Dafür hätte ich gerne eine solide Begründung.
Nunja, wofür wird ein SoC FPGA denn verwendet? Wenn man eine möglichst 
integrierte Kombination von FPGA-Fabric und CPU benötigt. Nun sind die 
CPUs in den gängigen SoC FPGAs recht leistungsfähig, durchaus 
leistungsfähig genug um ein Linux drauf rennen zu lassen. Und in der 
Fabric kann man prima parallele Algorithmen mit hoher möglicher 
Datenrate implementieren. Dann ist doch ein bildverarbeitendes Device 
mit Linux drauf durchaus ein valider Anwendungsfall für einen solchen 
SoC? Ich weiß zum Beispiel von Flir Wärmebildkameras, welche auf einem 
Controller und einem FPGA basieren. Da könnte man genauso gut einen SoC 
FPGA einsetzen. Was stört dich also an diesem Vorschlag zur möglichen 
Verwendung eines SoC FPGAs?

von Fpgakuechle K. (Gast)


Lesenswert?

Mh. M. schrieb:

>>> du willst mal was ala Handheld mit Linux und Bildverarbeitung
>>> bauen, dann ist ein SoC natürlich definitiv das Richtige.
>>
>> Dafür hätte ich gerne eine solide Begründung.
> Nunja, wofür wird ein SoC FPGA denn verwendet? Wenn man eine möglichst
> integrierte Kombination von FPGA-Fabric und CPU benötigt. Nun sind die
> CPUs in den gängigen SoC FPGAs recht leistungsfähig, durchaus
> leistungsfähig genug um ein Linux drauf rennen zu lassen. Und in der
> Fabric kann man prima parallele Algorithmen mit hoher möglicher
> Datenrate implementieren. Dann ist doch ein bildverarbeitendes Device
> mit Linux drauf durchaus ein valider Anwendungsfall für einen solchen
> SoC? Ich weiß zum Beispiel von Flir Wärmebildkameras, welche auf einem
> Controller und einem FPGA basieren. Da könnte man genauso gut einen SoC
> FPGA einsetzen. Was stört dich also an diesem Vorschlag zur möglichen
> Verwendung eines SoC FPGAs?

Ich mich hier mal ein. Vor einigen Jahren hat ich mal mit einer 
Kamerabude zu tun, die im FPGA CMOS/Sensoransteuerung/32bit 
SoftCore/PC-Interface hatten. Das Linux aus dem FPGA wurde für die 
zweite Generation der Kamera rausgeworfen - braucht kein Mensch und 
macht nur den FPGA unnötig warm.

Das ganze war für die Automatisierungstechnik gedacht. mein persönliches 
Fazit. Linux und Co ist vielleicht gut fürs debugging am Prototypen aber 
im Embedded Bereich stört ein Desktop Betriebssystem mehr als das es 
nützt und treibt die Entwicklungskosten unnötig in der Höhe.

Und Im Embedded Bereich geht die Milchmädchenrechnung schnelle CPU = 
besseres System nicht mehr auf. Akku schnell leergelutscht, EMV 
Probleme, teueres mehrlagen-PCB Und wozu? Damit man die Versionsnummer 
per Linux über Ethernet auslessen kann??? Das kannst bei einer Kamera 
auch einfacher haben - für ein bisserl OSD brauchts kein OS.

MfG,

von Alexander K. (ustus_alex)


Lesenswert?

To Mh. M.

Vielen Dank für deine Erklärung.

Da ich mich beruflich in der letzten Zeit aktiv mit dem Thema 
Bildverarbeitung beschäftige, stelle ich mir das Hauptlernziel für FPGA 
– die Algorithmen der Bildverarbeitung in HDL zu beschreiben.

Als Beispiel, – Verbindung eines FPGA-Bausteins mit einer industriellen 
GigE-Kamera, Suche eines Patterns in ROI, Anzeige Videostreaming mit ROI 
Layout auf dem Bildschirm und Übergabe IO oder NIO Ergebnisse durch eine 
digitale Schnittstelle (z.B. GPIO).

Braucht man dafür wirklich ein Hard Prozessor und Linux „on Board“? Nach 
meiner Vermutung ist FPGA selbst für die Pixelmanipulationen 
ausreichend. Aber da ich noch keine Erfahrung mit der Verbindung eines 
FPGA’s mit der Peripherie habe, kann ich meine Frage leider nicht selbst 
beantworten.

Ein wichtiges Kriterium für die Entscheidung ist die 
Entwicklungsumgebung…
Mit ISE und Vivado habe ich schon ein bisschen Erfahrung bekommen. Ist 
die Benutzerfreundlichkeit von Quatrus Prime damit vergleichbar?

Gibst es auch Tutorien im Netz für nicht SoC Boards (für Zedboard gibst 
es genug Information auf zedboard.org / für SoCkit auf 
rocketboards.org)?

Vielen Dank im Voraus.

Mfg.
Alexander

von Strubi (Gast)


Lesenswert?

Moin,

die mir bekannten FPGA-Hard-SoCs glänzen ja nicht gerade durch Einhalten 
des "keep it simple"-Prinzips. Spass machen die auch erst, wenn man den 
Linux-Baukasten mal zusammen hat, und das kann schon 1-2 Jahre 
Vorlaufzeit benötigen, je nach Reife des Supports vom Hersteller.
Zum Spielen mit BV-Algos würde ich ev. noch das HDR-60 von Lattice 
evaluieren. Die Diamond-Toolchain läuft insgesamt etwas runder als das 
Xilinx-Patchwork. Für den Einstieg aber vielleicht etwas kostspieliger.
Auf der Altera-Seite ist auf den ersten Blick viel Videokram vorhanden 
und man kann mit Qsys schon "mal schnell" was zusammenstöpseln, aber 
auch schnell in der Ecke landen, wenn das eigenwillige Ding einfach 
macht, was es will.

Eine Soft-CPU ist als Konfig-Prozessor keine schlechte Idee, aber Linux 
auf Microblaze, naja. Schon allein virtuelles Memory aufm FPGA ist etwas 
overkill. Macht höchstens Sinn, wenn man einen robusten Netzwerkstack 
braucht oder mal eben eine library (OpenCV, o.ae.) portieren möchte.
Da kann man aber auch genausogut resourcensparendere uClinux-Varianten 
auf richtigen Hybriden (wie z.B. dem Blackfin) laufen lassen und das 
FPGA fürs "dumme" Präprozessing verwenden. Hängt halt davon ab, was man 
machen will..
Wo man immer mal wieder sieht, dass sich industrielle BV-Entwickler 
etwas von hinten durch die Brust ausbremsen, ist der Drang, alles auf 
dem FPGA in harter Logik umsetzen zu wollen. Da ist man mit dem hybriden 
Ansatz (CPU und auf die Anwendung optimiert designte Rechenpipelines) 
schon etwas eleganter unterwegs.

Wenn du am Anfang stehst, kannst du schon mit einem einfachen 
Spartan3-250k einen adretten Debayer basteln, es geht sogar ein 
JPEG-Encoder rein.
Wenn du Bilder aber flott über USB streamen willst, gibts schon etwas 
mehr Arbeit, und mit GigE "Eigenbau" würde ich erst gar nicht anfangen.


Gruss,

- Strubi

von Mh. M. (mhm)


Lesenswert?

Fpga K. schrieb:
> Linux und Co ist vielleicht gut fürs debugging am Prototypen aber
> im Embedded Bereich stört ein Desktop Betriebssystem mehr als das es
> nützt und treibt die Entwicklungskosten unnötig in der Höhe.

Alexander K. schrieb:
> Braucht man dafür wirklich ein Hard Prozessor und Linux „on Board“? Nach
> meiner Vermutung ist FPGA selbst für die Pixelmanipulationen
> ausreichend.

Da habt ihr beide mich ein wenig falsch verstanden (und "Weltbester 
FPGA-Pongo" vermutlich auch): Ich wollte nie die logischen Verknüpfungen 
'Bildverarbeitung benötigt ein Linux auf dem SoC' oder 'ein SoC ohne 
Linux auf den Cores zu betreiben macht keinen Sinn' herstellen. Das 
Linux auf dem oder den ARM-Cores war wirklich nur als Beispiel gedacht, 
wie man den Rechenwumms des SoCs ausfüllen könnte. Wobei es hier, wie 
"Fpga Kuechle" ganz richtig sagt, natürlich auf den jeweiligen 
Einsatzzweck ankommt. Baut man ein stationäres Gerät mit sowieso 
stromfressender restlicher HW, dann spielt der zusätzliche Verbauch 
eines Linux auf dem SoC keine wirkliche Rolle mehr, da kann sich sowas 
wirklich anbieten (auch mehrfach so schon gesehen). Soll das Gerät nun 
auf Teufel komm raus stromsparend sein, dann fährt man wohl besser mit 
ein wenig baremetal C oder einem kleinern RTOS auf den Cores, sofern es 
überhaupt ein SoC sein soll. Und wegen Bildverarbeitung und SoC: 
natürlich kann man sehr viel bei der Bildverarbeitung auch rein in der 
Fabric machen, vermutlich sogar das Allermeiste. Ein Prozessor bietet 
sich eben dann an, wenn man stark sequentielle Aufgaben erledigen will, 
wie zum Beispiel mit einem Benutzer interagieren (oder fertige 
Software-Libs verwenden, wie von Strubi angesprochen). Aber wie "Fpga 
Kuechle" auch hier richtig gesagt hat, benötigt man auch dafür oft kein 
Linux. Da tuts auch ein kleiner Softcore in der Fabric, oder im 
einfachsten Falle sogar nur Logik mit einer größeren Statemachine, je 
nach Anforderung eben.

Strubi schrieb:
> die mir bekannten FPGA-Hard-SoCs glänzen ja nicht gerade durch Einhalten
> des "keep it simple"-Prinzips. Spass machen die auch erst, wenn man den
> Linux-Baukasten mal zusammen hat, und das kann schon 1-2 Jahre
> Vorlaufzeit benötigen, je nach Reife des Supports vom Hersteller.
Genau das meinte ich: so ein FPGA SoC macht durchaus Aufwand, bis der 
mal läuft. Ob man sich diesen Overhead als Anfänger zumuten will sei 
jedem selbst überlassen, empfehlen würde ich es wohl nicht.

> Eine Soft-CPU ist als Konfig-Prozessor keine schlechte Idee, aber Linux
> auf Microblaze, naja. Schon allein virtuelles Memory aufm FPGA ist etwas
> overkill. Macht höchstens Sinn, wenn man einen robusten Netzwerkstack
> braucht oder mal eben eine library (OpenCV, o.ae.) portieren möchte.
> Da kann man aber auch genausogut resourcensparendere uClinux-Varianten
> auf richtigen Hybriden (wie z.B. dem Blackfin) laufen lassen und das
> FPGA fürs "dumme" Präprozessing verwenden. Hängt halt davon ab, was man
> machen will..
Das halte ich auch für die eleganteste Vorgehensweise.

von hardware-Freund (Gast)


Lesenswert?

Mh. M. schrieb:
> Und wegen Bildverarbeitung und SoC:
> natürlich kann man sehr viel bei der Bildverarbeitung auch rein in der
> Fabric machen, vermutlich sogar das Allermeiste. Ein Prozessor bietet
> sich eben dann an, wenn man stark sequentielle Aufgaben erledigen will,
> wie zum Beispiel mit einem Benutzer interagieren

Benutzerinteraktion programmiert man mit einem kleinen Microprozessor zu 
5,- oder nutzt ein fertiges HMI-Modul, wo der Displayprozessor agiert.

Bildverarbeitung macht man mit einem fertigen BV-Prozessor (DSP) zu 50,- 
Euro, für den es fertige Libs und eine getestete Umgebung gibt.

high-speed-BV macht man komplett im FPGA in dedizierter fabric logic.

Dazwischen gibt es eigentlich keine Anwendung, die ein Linux auf einem 
FPGA erfordert. Das kommt alles nur von den SW-Fuzzis, die programmieren 
wollen und nix von FPGAs verstehen.

Zur Frage:

Xilinx haut gerade kostengünstig die Spartan 6 Sachen weg. Die haben wir 
auch im Gebrauch.

von Joschua C. (Gast)


Lesenswert?

Ich benutze das

http://m.ebay.de/itm/Cyclone-IV-FPGA-Board-EP4CE6E22C8N-EP4CE6-Development-kit-CPLD-ALTERA-PLD-NiosII-/281188502846

Board. Es hat nur den CycloneIV FPGA mit den Stützkondensatoren, 
Spannungsversorgung und einen Konfigurationsspeicher. Alles was geht 
liegt auf Pinheadern. Dazu hab ich mir ein Displaymodul mit 
Touchcontroller und Sd-Slot und einen USB-UART Adapter geholt. Für mich 
reicht das dicke, um die Basics zu lernen. Über die Pinheader wird man 
ja kein HF Signal drüber bekommen, aber man hat dafür viel mehr Pins für 
eigene Hardware.

von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

Nachdem ich im Studium auch die Digilent-Boards kennengelernt hatte, 
habe ich mich dann für privat doch mal durch einen thread hier im Forum 
motiviert mal woanders umgeschaut, und bin bei einem Board von USB-Board 
von ZTEX gelandet. Insbesondere gefiel mir als Nur-Linuxer 
ehrlichgesagt, wie ZTEX sich eine IDE vorstellt. Sie besteht aus bash 
scripts. Genau mein Ding, weil ich von Xilinx nur das Systhesetool 
benutze und ansonsten ghdl und gtkwave. Außerdem ist die Form gut, falls 
man auch mal was handliches entwickeln möchte.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.