Forum: FPGA, VHDL & Co. Masterarbeit FPGA-Koprozessor eines PC


von M. S. (tissi)


Lesenswert?

Hallo FPGA-Freunde,

aktuell bin ich auf der Suche nach einem Thema für meine Masterarbeit. 
Bislang habe ich mich ausschließlich mit Mikrocontrollern beschäftigt 
und noch nie mit FPGA's befasst. Um mich in neue Gebiete einzuarbeiten, 
würde ich mich in meiner Masterarbeit gerne mit FPGA's beschäftigen.

Mein Prof. hat mir vorgeschlagen, einen programmierbaren 
FPGA-Koprozessor für einen PC zu entwickeln. Als absoluter Neuling kann 
ich den Aufwand allerdings nicht einschätzen und habe die Befürchtung, 
dass mich das Thema erschlagen kann. Jetzt würde ich gerne eure Meinung 
dazu hören, ob dieses Projekt im Rahmen einer Masterarbeit (0,5 Jahre 
Vollzeit) zu realisieren ist.

Eine genauere Anforderungsspezifikation gibt es nicht. Es soll sich 
allerdings um ein Analogon zu z.B. einem Gleitkomma-Koprozessor handeln, 
wobei die tatsächliche Funktion programmierbar sein soll. Ich soll auch 
ein Anwendungsbeispiel implementieren wie z.B. eine schnelle 
Stringsuche.
Es soll ein Virtex II Pro Board verwendet werden.

Eine Konkrete Frage habe ich jetzt schon: Nach ersten Recherchen fand 
ich heraus, dass häufig der PCI-Bus als Schnittstelle verwendet wird. 
Muss ich die ganze PCI-Kommunikation Programmieren, oder werden hierfür 
Module vom Hersteller bereitgestellt?

Ich würde mich über eine Einschätzung oder erste Tipps von euch freuen.

Mfg
M.S.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

M. S. schrieb:
> Nach ersten Recherchen fand
> ich heraus, dass häufig der PCI-Bus als Schnittstelle verwendet wird.
Diese Daten dürften wohl schon etwas älter sein, denn aktuell sollte da 
eher PCIe stehen...

> Muss ich die ganze PCI-Kommunikation Programmieren, oder werden hierfür
> Module vom Hersteller bereitgestellt?
Jain.
Du bekommst IP-Cores, die idR. einen Teil des Protokolls abdecken. Eine 
andere Frage ist: was kostet das? Denn wenn jemand für dich eine Arbeit 
erledigt hat, will er evtl. auch was dafür...

Mir gibt allerdings sehr zu denken, dass der Virtex-II recht alt und 
ganz unten auf der "legacy devices" Liste steht:
http://www.xilinx.com/products/boards_kits/legacy_virtex.htm

M. S. schrieb:
> Als absoluter Neuling ... würde ich gerne eure Meinung dazu hören,
> ob dieses Projekt im Rahmen einer Masterarbeit (0,5 Jahre
> Vollzeit) zu realisieren ist.
Wieviel Zeit davon brauchst du für die Doku?

Wenn du vorher noch nie was mit FPGAs gemacht hast, dann brauchst du 
zwingend aktive Unterstützung, denn sonnst fliegst du in jeder Kurve 
(und da gibt es viele) raus. Und wenn dann das kommt:
> Eine genauere Anforderungsspezifikation gibt es nicht.
Das ist bedenklich...
Kennt sich der Prof sehr gut mit diesen Aufgaben aus?
(PC-Interface, FPGA-Beschreibung)
Kann er dir da helfen?
Sind schon (ähnliche) Vorarbeiten erledigt worden?
Welche Messgeräte (Oszi, LogikAnalyzer...) hast du?
Kannst du die Dinger bedienen?

von Christian R. (supachris)


Lesenswert?

Ganz ehrlich: Ist im Rahmen einer Masterarbeit nicht schaffbar, wenn man 
noch nie was mit FPGAs gemacht hat. Wenn man einige Erfahrung hat, 
eventuell, aber auch dann müsste sinnvollerweise die Umgebung stimmen, 
vor allem müsste die Kommunikation schon fix und fertig einsetzbar sein.

Mit einem Virtex II pro würd ich erst mal gar nix mehr anfangen. Der 
wird schon seit ein paar Jahren nicht mehr von der Xilinx Design 
Software unterstützt, du müsstest eine sehr alte Version nehmen. Das ist 
alles Murks und viel zu viel Einarbeitungszeit.

Mein Rat: Such dir ein anderes Thema.

Noch ein Rat für die schriftliche Arbeit dann: Lass das sogenannte 
Deppen-Apostroph weg. Im Deutschen wird das Mehrzahl-s ohne Apostroph 
angehängt.

von Iulius (Gast)


Lesenswert?

TU Delft : polymorphic instruction set computer
-> googlen

Damit bekommst du schonmal viel Einblick.

Machbar ist eine tatsächliche Unterstützung (Geschwindigkeitsgewinn) in 
der Zeit kaum.

Man kann (ohne Erfahrung mit FPGAs) vielleicht erreichen diverse 
Probleme mal auf PC und mal auf FPGA zu rechnen und dann zu vergleichen.

Mit Synchronisation zwischen PC und FPGA denke ich nicht das es klappt 
in der Zeit.


Bedenke auch das ein FPGA vor allem dort viel nützt, wo große 
Datenmengen parallel bearbeitet werden können.

Das funktioniert bei einer Kommunikation mit dem PC aber schlecht, weil 
die Datenlinks oft zu lahm sind.

Bsp: schon eine simple Berechnung von 8 Bit pro Takt und 100Mhz führt zu 
100Mbyte an Datenaufkommen pro Sekunde.

D.h. wiederum das PCI schon ohne Parallelisierung am Ende ist.


Gibt sinnvolle Aufgaben (z.b. Sortieren) wo man problemlos auf mehrere 
GByte/s käme die ein FPGA bewältigen kann. Die nimmt einem der PC aber 
weder ab, noch kann er sie liefern.


Besser also nicht verennen. Wenn du keine Erfahrung hast auf dem Gebiet, 
dann such dir lieber was leichteres.

Mal ganz davon abgesehen das dieses Thema nun auch kein Neuland ist und 
dein Ergebnis weit hinter den bereits vor Jahren gezeigten Ergebnissen 
zurückbleiben kann.

von M. S. (tissi)


Lesenswert?

Vielen Dank für die schnellen Antworten.

Aus den bisherigen Beiträgen kann ich ersehen, dass die Tendenz dahin 
geht, dass es sich bei dem Thema um einen ganz schönen Brocken handeln 
könnte.

Da bereits die Frage auftrat, ob ich mit einem Oszi umgehen kann, werde 
ich mal ausführlicher: Ja. Die Masterarbeit ist die Abschlussarbeit 
meines Zweitstudiums. Ich bin bereits Dipl.-Ing und habe das jetzige 
Studium eher als Hobby begonnen. Da es mir bei diesem Studium in erster 
Linie nicht um den Abschluss, sondern darum geht, dass ich mein Wissen 
erweitern kann, möchte ich mich halt in meiner Abschlussarbeit mit FPGAs 
beschäftigen. Das soll allerdings nicht bedeuten, dass ich mit einem zum 
Scheitern verurteilten Projekt beginnen möchte. Deshalb habe ich diesen 
Thread eröffnet um mal die Meinung von Profis zu hören.

Iulius schrieb bereits, dass dieses Thema kein Neuland ist. Da ich auf 
diesem Gebiet bislang leider nicht an vorderster Front mitreden kann, 
fällt mir auch kein anderes Thema für die Masterarbeit ein. Das Thema 
war das einzige, welches mir der Prof. im Zusammenhang mit einem FPGA 
zur Auswahl überlies. Prinzipiell denke ich aber, dass er auch mit 
anderen Themen einverstanden wäre, wenn es um Parallelität, Echtzeit, 
Sicherheit.... gehen würde.

Hat jemand von euch, die ihr euch damit beschäftigt, vielleicht eine 
andere Idee für eine Masterarbeit, bei der ich FPGA-Kentnisse sammeln 
könnte? Es sollte ein Thema sein, welches in sich abgeschlossen ist und 
welches ich zu Hause lösen kann.

Die Links, die ihr angegeben habt werde ich mir heute abend in Ruhe 
anschauen. Ganz so schnell gebe ich den Koprozessor ja auch nicht auf.

von Horst (Gast)


Lesenswert?

Hi,
in der letzten c't (Heft 26) wird ein 'Atom-Prozessor mit Altera-FPGA' 
kurz vorgestellt, also ein CPU mit 'angedocktem' FPGA.
Vielleicht wäre das ja was, den mal zu untersuchen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Horst schrieb:
> ein 'Atom-Prozessor mit Altera-FPGA'
> Vielleicht wäre das ja was, den mal zu untersuchen.
Ja, das würde mich auch interessieren...  ;-)

M. S. schrieb:
> Das Thema war das einzige, welches mir der Prof. im Zusammenhang
> mit einem FPGA zur Auswahl überlies.
Und wie sieht es mit Themen in der Industrie aus?

von M. S. (tissi)


Lesenswert?

@Horst:
Danke für den Tip. Ich werde später mal in die c't schauen. Hört sich 
interessant an.

@Lothar Miller:
Grundsätzlich hätte ich keine Schwierigkeiten damit ein Thema aus der 
Industrie zu bearbeiten, würde es allerdings vorerst vermeiden wollen, 
da ich Entwicklungsingenieur bin und es nicht so aussehen sollte, als 
würde ich für ein konkurrierendes Unternehmen arbeiten. Da mein 
Zweitstudium meiner Firma nicht bekannt ist und ich die rechtlichen 
Konsequenzen hier nicht Einschätzen kann, versuche ich lieber ein 
eigenständiges Thema an der Universität zu bearbeiten.

von faul (Gast)


Lesenswert?

Hi,

von wegen PCI-Schnittstelle: sicherlich kann man einen FPGA über PCI an 
die CPU anbinden, jedoch wird ein echter Co-Prozessor eher direkter an 
den Prozessor angeschlossen, z.B. Wishbone.

Dürfte aber bei Intel X86 schwierig werden.

Ich würde sagen, dass man bei einem Co-Prozessor wie z.B. einer 
Floating-Point-Unit ca. 1 Jahr einrechnen müsste inkl. allem und guter 
Unterstützung. (Erfahrungswert aus der eigenen Diplomarbeit mit VHDL und 
Prozessordesign)

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

M. S. schrieb:
> Eine genauere Anforderungsspezifikation gibt es nicht. Es soll sich
> allerdings um ein Analogon zu z.B. einem Gleitkomma-Koprozessor handeln,
> wobei die tatsächliche Funktion programmierbar sein soll.

Ich würde mir mal Gedanken darüber machen ob es überhaupt eine sinnvolle 
Anwendung gibt für die ein über langsames PCI angebundenes 
Mittelklasse-FPGA irgend einen Vorteil gegenüber CPU oder GPU hat.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

M. S. schrieb:
> Da mein Zweitstudium meiner Firma nicht bekannt ist...
M. S. schrieb:
> Rahmen einer Masterarbeit (0,5 Jahre Vollzeit)
Ich sehe da ernsthafte zeitliche Probleme auf dich zukommen, denn du 
bist ja z.B. 9 Std. in der Firma, dann solltest du noch ca. 6 Stunden 
schlafen, und "Vollzeit" bei der Masterarbeit bedeutet >8 Stunden 
Zeitaufwand/Tag...
Das wird hart.

von Kest (Gast)


Lesenswert?

Zum Atom + Altera FPGA:

Irgendwie ist das Ganze nicht das, was man sich darunter so vorstellt. 
Zum einem läuft ein Atom mit nur 600 MHz, zum anderen ist das FPGA über 
PCIe angebunden (ich glaube sogar nur ein Link). Wie groß das FPGA ist, 
kann ich jetzt nicht sagen, aber das Ganze hätte Altera auch sparen 
können :-/ (meine Meinung). Für embedded würde ich sowas nicht nehmen, 
da gibt es bessere Sachen.

Ich stimme Andreas zu, es gibt kaum bis gar keine sinnvolle Anwendung 
für ein FPGA als Coprocessor (über PCI/PCIe). Das FPGA ist meist 
Schnittstelle, um irgendwas anzusteuern und nicht um die CPU-Zeit zu 
sparen. Ich bin selber schon länger auf der Suche nach einer 
Killer-Applikation für das FPGA ;-)

Grüße,
Kest

von Hoho (Gast)


Lesenswert?

> Killer-Applikation für das FPGA

Codes knacken ;)

von M. S. (tissi)


Lesenswert?

Lothar Miller schrieb:
> Ich sehe da ernsthafte zeitliche Probleme auf dich zukommen, denn du
> bist ja z.B. 9 Std. in der Firma, dann solltest du noch ca. 6 Stunden
> schlafen, und "Vollzeit" bei der Masterarbeit bedeutet >8 Stunden
> Zeitaufwand/Tag...
> Das wird hart.

Mit 0,5 Jahre Vollzeit wollte ich lediglich den Umfang angeben. Ich 
mache das Studium in Teilzeit, habe also ein Jahr Zeit. Sicherlich ist 
auch das eine hohe zusätzliche Belastung, aber ich kann damit ziemlich 
gut umgehen. Ich habe die 4 bisher benötigten Module in den letzten 2 
Jahren gut bearbeiten können. Sicherlich hätte ich mir auch (für mich) 
einfachere Themen für die Masterarbeit aussuchen können, aber viele der 
anderen angebotenen Themen sind ziemlich verwandt mit Projekten die ich 
in der Firma bearbeite. Würde es mir nur um eine gute Note gehen, hätte 
ich etwas davon auswählen können, da ich aber meinen Wissensstand 
erweitern möchte, denke ich, dass FPGAs für mich die richtige Wahl sind.

von FPGA-Cortex (Gast)


Lesenswert?

Hallo M.S.,

ich persönlich finde z.B. FPGAs mit integriertem Cortex-M3 Kern
sehr spannend, siehe:

http://www.actel.com/products/smartfusion/default.aspx

mal ganz nach unten scrollen. Dort kann man seine Mikrocontroller-
Kenntnisse mit denen eines FPGA's erweitern.

Mikrocontroller haben ja immer zuwenig Uarts oder PWM-Ausgänge.

Da lassen sich bestimmt noch andere interessante Aufgebenfelder
finden.

Viele Grüße

von Michael O. (mischu)


Lesenswert?

Vor einigen Jahr(zehnt)en wäre eine aktive Unterstützung für die PC-CPU 
noch sehr sinnvoll gewesen - heute sind die jedoch so schnell und 
verfügen auch über DSP-ähnliche Befehle, dass der Anspruch einen 
Geschwindigkeitsvorteil zu erlangen sicher nicht erreichbar ist.

In einer Diplomarbeit muss man aber sicher nicht immer solche High-End 
Leistungen vollbringen, ich denke da geht es auch eher um das Prinzip.

Wovon ich an Deiner Stelle die Finger lassen würde, sind die Interfaces 
PCI  PCI-e  USB o.ä.  Die Komplexität ist hoch, Debuggen wird deutlich 
aufwendiger (ohne gute Tools fast unlösbar) und teilweise müssen 
spezielle Treiber mit entwickelt oder verwendet werden. Da würde ich dir 
eher ein autarkes System mit FPGA und uC vorschlagen.

Kannst z.B. ein nettes Multi-Core-System mit vielen kleinen uC Cores in 
einem FPGA aufbauen, die über entsprechende Busse miteinander 
kommunizieren können.

von (prx) A. K. (prx)


Lesenswert?

Wenn man so ein Projekt mal nicht aus Sicht des Studenten, sondern vom 
Standpunkt der Sinnhaftigkeit aus betrachtet, dann ist PCI ziemlicher 
Käse, weil am Absterben, und allenfalls PCI-Express brauchbar. Wirklich 
sinnvoll wäre aber erst Hypertransport (AMD) oder QPI (Intel).

von M. S. (tissi)


Lesenswert?

Michael O. schrieb:
> Kannst z.B. ein nettes Multi-Core-System mit vielen kleinen uC Cores in
> einem FPGA aufbauen, die über entsprechende Busse miteinander
> kommunizieren können.

An so etwas habe ich auch schon gedacht. Damit wäre ich vom PC 
unabhängig und müsste mich nicht um die PC-Kommunikationsschnittstellen 
kümmern. Meine Idee war es auf einem FPGA zwei Softcores zu 
implementieren und auf beiden diversitäre Software zu Schutz vor 
Soft-Errors laufen zu lassen. Hab aber im Internet schon gefunden, dass 
es so etwas in der Art auch schon gibt.

Hättest du noch eine andere Idee bzw.einen andren Anwendungsfall für ein 
Multi-Core-System? Eine Idee die ich noch hatte, wäre es, für jede Task, 
die ich auf einem Mikrocontroller ausführen würde, auf einem FPGA einen 
Softcore dynamisch zu erstellen und diese Task darauf auszuführen. Somit 
würden alle Tasks tatsächlich parallel ausgeführt. Ich glaube aber, dass 
das entwickeln eines solchen Systems wieder den Rahmen sprengen würde, 
oder?

Irgendwie glaube ich, dass der PC-Koprozessor für mich gestorben ist. 
Ich schaue mir jetzt die geposteten Links an und werde mich dann wohl 
entscheiden.

von Georg A. (Gast)


Lesenswert?

> Hab aber im Internet schon gefunden, dass
> es so etwas in der Art auch schon gibt.

Na und? Einzigartigkeit ist bei Masterarbeiten nicht gefordert, lässt 
sich bei Doktorarbeiten ja schon nur mit Mühe und Tricks machen (Nische 
einer Nische unter speziellen Vorausetzungen...). Wenn der Lehrstuhl zB. 
keine/wenig Erfahrung mit FPGAs hat, aber bekommen will, wäre ein 
kleineres System (Softcores mit etwas spezieller Peripherie mit 
Lehrstuhlbezug) gerade richtig, für nachfolgende Arbeiten mal die 
gesamte SW/HW-Chain durchzuarbeiten und schön zu dokumentieren. Was 
"wissenschaftliches" fällt dann aber eigentlich auch immer ab, zB. 
Performancemessungen, Optimierungen, etc.

Ganz persönliche Meinung: Versuche soweit wie möglich, "Black Boxes" aka 
IP-Cores zu vermeiden. Den Ärger, den man sich da mit deren Macken 
einfängt, für die man nichts kann und oft auch erst lange bei sich 
selbst sucht, ist ein paar Magengeschwüre wert. Soft-CPU-Cores ala 
Microblaze gehen grade noch, alles drüber hinaus 
(DDR*-Memory-Controller, PCI*-Controller, etc.) hat extrem viele Fallen. 
Am besten ist es IMO eigentlich, gleich alles selbst zu machen.

von D. I. (Gast)


Lesenswert?

Georg A. schrieb:

> (DDR*-Memory-Controller, PCI*-Controller, etc.) hat extrem viele Fallen.
> Am besten ist es IMO eigentlich, gleich alles selbst zu machen.

Nur dass man DDR/PCIe nicht selbst machen will geschweige denn ohne 
Erfahrung kann.
Aber mit dem Altera-Zeug habe ich nur ca. 4 Tage gebraucht um mit dem 
DDR-RAM vernünftig arbeiten zu können

von Herbert (Gast)


Lesenswert?

Hallo

Ich kann jetzt mal aus meiner Erfahrung sprechen. Derzeit arbeite ich 
auch an meiner Masterarbeit (Virtex-5 FX30T + DDR2 + Ethernet + 7 RS232 
+ 16 SPI + SD Karte + Linux portieren). Begonnen hab ich mit der Arbeit 
im März und hatte absolut keine Vorkenntnisse. Nach einer langen 
Einlesezeit und durchstöbern vieler Referenzedesigns bin ich nun am 
fertigstellen der Platine. Also mit einem halben Jahr wird es schon sehr 
knapp würde ich sagen. Aber machs einfach. Die Erfahrung die du dabei 
sammelst ist ein wahnsinn.

lg

von Duke Scarring (Gast)


Lesenswert?

Herbert schrieb:
> (Virtex-5 FX30T + DDR2 + Ethernet + 7 RS232 + 16 SPI + SD Karte + Linux 
portieren).
...
9 Monate später
...
> bin ich nun am fertigstellen der Platine

Hast Du bisher nur die Platine? Oder schon fertig simulierte Designs + 
angepasste Software?

Erfahrungsgemäß braucht man auch noch ein paar Testdesigns, bis die 
eigene Platine richtig funktioniert...

Die Zeitdauer eines Projektes wird auch von der Erfahrung bestimmt, die 
im jeweiligen Unternehmen/Institut schon vorhanden und evtl. nutzbar 
ist.

Duke

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Duke Scarring schrieb:
> Erfahrungsgemäß braucht man auch noch ein paar Testdesigns, bis die
> eigene Platine richtig funktioniert...
Und erfahrungsgemäß braucht man auch Erfahrung, um eine Platine mit den 
o.g. Anforderungen auf Anhieb zum Laufen zu bekommen...
Da kann schon bei so einfachen Sachen wie dem Versorgungskonzept einiges 
schiefgehen.

von ♪Geist (Gast)


Lesenswert?

>Eine genauere Anforderungsspezifikation gibt es nicht.
Dann Finger weg! Mach deine MA Arbeit lieber in einer Firma, das bring 
dich erfahrungsmäßig und etvl. Beruflich weiter.

von M. S. (tissi)


Lesenswert?

♪Geist schrieb:
>>Eine genauere Anforderungsspezifikation gibt es nicht.
> Dann Finger weg! Mach deine MA Arbeit lieber in einer Firma, das bring
> dich erfahrungsmäßig und etvl. Beruflich weiter.

Das geht leider nicht, weil sich meine Firma nicht mit diesem 
Themengebiet beschäftigt. Eine andere Firma scheidet aus, weil mein Chef 
da mit Sicherheit etwas dagegen haben wird.

von high_speed (Gast)


Lesenswert?

Ein SDR wehre zum Beispiel etwas für einen FPGA.
AM Eingang einen schnellen ADC, der den gewünschten Frequenzbereich 
direkt abtasten kann. (Verstärker und Filter müssen natürlich auch noch 
vor.)

Schaue mal beim HPSDR-Projekt.
http://openhpsdr.org/

Nächste Ausbaustufe mit mehreren parametrierbaren Radios im FPGA.

http://www.websdr.org/

MfG
Holger

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.